aboutsummaryrefslogtreecommitdiff
path: root/bin/executable_icd
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbin/executable_icd112
1 files changed, 112 insertions, 0 deletions
diff --git a/bin/executable_icd b/bin/executable_icd
new file mode 100755
index 0000000..367b87f
--- /dev/null
+++ b/bin/executable_icd
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+XKB_DIR=${HOME}/.xkb
+[ -d ${XKB_DIR}/keymap ] || mkdir -p ${XKB_DIR}/keymap
+
+GLOBAL_OPTIONS="\
+ -I${XKB_DIR} \
+ -layout icd,ru \
+ -variant icd, \
+ -option terminate:ctrl_alt_bksp \
+ -option nbsp:level3n \
+ -option lalt_meta:lalt_meta \
+ -option grp:shifts_toggle"
+
+LAPTOP_OPTIONS="\
+ ${GLOBAL_OPTIONS} \
+ -option lv3:ralt_switch_multikey"
+
+KIN_OPTIONS="\
+ ${GLOBAL_OPTIONS} \
+ -option lv3:switch \
+ -option caps:swapescape"
+
+SUN_OPTIONS="\
+ ${GLOBAL_OPTIONS} \
+ -geometry sun(type6unix) \
+ -option caps:escape \
+ -option lv3:menu_switch \
+ -option myswap:switch_lalt_lsuper"
+
+ERG_OPTIONS="\
+ ${GLOBAL_OPTIONS} \
+ -option lv3:switch \
+ -option caps:escape"
+
+
+case `uname` in
+ OpenBSD)
+ LAPTOP_ID=$(xinput | grep "/dev/wskbd" | sed -e 's/.*id=\([0-9]\+\).*/\1/g')
+ ;;
+ Linux)
+ LAPTOP_ID=$(xinput | grep "AT Translated Set 2 keyboard" | sed -e 's/.*id=\([0-9]\+\).*/\1/g')
+ KIN_USB_ID=$(lsusb | grep -i "Kinesis Advantage Pro" | awk '{ print $6 }')
+ ERG_USB_ID=$(lsusb | grep -i "feed:1307" | awk '{ print $6 }')
+ SUN_USB_ID=$(lsusb | grep -i "Sun Microsystems, Inc. Type 6 Keyboard" | awk '{ print $6 }')
+ ;;
+ *)
+ ;;
+esac
+
+echo "Setting up laptop"
+setxkbmap ${LAPTOP_OPTIONS} -device ${LAPTOP_ID} -print > ${XKB_DIR}/keymap/icd.laptop
+# xkbcomp -I${HOME}/.xkb -i ${LAPTOP_ID} -synch \
+xkbcomp -I${HOME}/.xkb -synch \
+ ${HOME}/.xkb/keymap/icd.laptop $DISPLAY # 2> /dev/null
+
+if [ "x${KIN_USB_ID}" != "x" ]; then
+ echo "Setting up Kinesis"
+ KIN_XINPUT_ID=$(xinput | grep ${KIN_USB_ID} | sed -e 's/.*id=\([0-9]\+\).*/\1/g')
+ for XID in $KIN_XINPUT_ID; do
+ echo $XID
+ setxkbmap \
+ -I${XKB_DIR} \
+ -device ${XID} \
+ ${KIN_OPTIONS} \
+ -print | sed -e 's@+ctrl(nocaps)@@g;s@bksp)@bksp)+lalt_meta(lalt_meta)@g' > ${HOME}/.xkb/keymap/icd.kin
+ xkbcomp -I${HOME}/.xkb -i ${XID} -synch \
+ ${HOME}/.xkb/keymap/icd.kin ${DISPLAY} # 2> /dev/null
+ done
+ xkbcomp -I${HOME}/.xkb -synch \
+ ${HOME}/.xkb/keymap/icd.kin ${DISPLAY} # 2> /dev/null
+ xmodmap -e "remove mod1 = Alt_R"
+ xmodmap -e "add mod4 = Alt_R"
+fi
+
+if [ "x${SUN_USB_ID}" != "x" ]; then
+ echo "Setting up Sun Type 6"
+ SUN_XINPUT_ID=$(xinput | grep ${SUN_USB_ID} | sed -e 's/.*id=\([0-9]\+\).*/\1/g')
+ echo "ID: ${SUN_XINPUT_ID}"
+ for XID in $SUN_XINPUT_ID; do
+ echo $XID
+ setxkbmap \
+ -I${XKB_DIR} \
+ -device ${XID} \
+ ${SUN_OPTIONS} \
+ -print | sed -e '/xkb_keycodes/s/"[[:space:]]/+sunt6fix&/' > ${HOME}/.xkb/keymap/icd.sun
+ xkbcomp -I${HOME}/.xkb -i ${XID} -synch \
+ ${HOME}/.xkb/keymap/icd.sun ${DISPLAY} # 2> /dev/null
+ done
+fi
+
+echo ${ERG_USB_ID}
+if [ "x${ERG_USB_ID}" != "x" ]; then
+ echo "Setting up ergodox"
+ ERG_XINPUT_ID=$(xinput | grep "ErgoDox EZ" | grep keyboard | sed -e 's/.*id=\([0-9]\+\).*/\1/g')
+ echo "ID: ${ERG_XINPUT_ID}"
+ for XID in $ERG_XINPUT_ID; do
+ echo $XID
+ setxkbmap \
+ -I${XKB_DIR} \
+ -device ${XID} \
+ ${ERG_OPTIONS} \
+ -print > ${HOME}/.xkb/keymap/icd.erg
+ # -print | sed -e 's@+group(shifts_toggle)@+ctrl(nocaps)&@g' > ${HOME}/.xkb/keymap/icd.erg
+ # xkbcomp -I${HOME}/.xkb -i ${XID} -synch \
+ xkbcomp -I${HOME}/.xkb -synch \
+ ${HOME}/.xkb/keymap/icd.erg ${DISPLAY} # 2> /dev/null
+ done
+fi
+
+
+echo icd > ${HOME}/.xmonad/layout