]> oss.titaniummirror.com Git - dispcfg.git/blobdiff - setctrl
Call setctrl to swap keys
[dispcfg.git] / setctrl
diff --git a/setctrl b/setctrl
new file mode 100755 (executable)
index 0000000..77d5ae3
--- /dev/null
+++ b/setctrl
@@ -0,0 +1,42 @@
+#!/bin/bash
+# Set the Control/Win key swap state.  This is a hack of a script.
+# If the CM Storm keyboard is present, swap Control and Win (Super) keys.  If
+# this keyboard is not present, unswap.  Steve's CM Storm keyboard has had its
+# Control and Win keycaps swapped, as the proper Control key locations are, on
+# this keyboard, where the Windows keys are by default.
+
+swapctrl()
+{
+xmodmap -e "clear Control"
+xmodmap -e "clear Mod4"
+xmodmap -e "keycode 133 = Control_L NoSymbol Control_L"
+xmodmap -e "keycode  37 = Super_L NoSymbol Super_L"
+xmodmap -e "keycode 134 = Control_R NoSymbol Control_R"
+xmodmap -e "keycode 105 = Super_R NoSymbol Super_R"
+xmodmap -e "keycode 206 ="
+xmodmap -e "add Control = Control_L Control_R"
+xmodmap -e "add Mod4 = Super_L Super_R"
+}
+
+unswapctrl()
+{
+xmodmap -e "clear Control"
+xmodmap -e "clear Mod4"
+xmodmap -e "keycode  37 = Control_L NoSymbol Control_L"
+xmodmap -e "keycode 133 = Super_L NoSymbol Super_L"
+xmodmap -e "keycode 206 = NoSymbol Super_L NoSymbol Super_L"
+xmodmap -e "keycode 105 = Control_R NoSymbol Control_R"
+xmodmap -e "keycode 134 = Super_R NoSymbol Super_R"
+xmodmap -e "add Control = Control_L Control_R"
+xmodmap -e "add Mod4 = Super_L Super_R"
+}
+
+
+if xinput --list --name-only | grep -q "CM Storm"; then
+    echo 'Swapping Control and Windows/Super keys'
+    swapctrl
+else
+    echo 'Restoring Control and Windows/Super keys'
+    unswapctrl
+fi
+exit 0