From: R. Steve McKown Date: Fri, 23 Jan 2015 11:02:37 +0000 (-0700) Subject: Call setctrl to swap keys X-Git-Url: https://oss.titaniummirror.com/gitweb?p=dispcfg.git;a=commitdiff_plain;h=8f54067720ffa7f2457ed77ee9a8fc78b3d3611a Call setctrl to swap keys Works based on the presence of a CM Storm keyboard --- diff --git a/configure_displays b/configure_displays index 34f3762..dac1204 100755 --- a/configure_displays +++ b/configure_displays @@ -189,5 +189,8 @@ if __name__ == '__main__': enabled_count -= disable_an_entry(outputs) enabled_count += enable_an_entry(outputs, enabled_count < 2) + # A hack to set Control/Win key mapping + subprocess.call('/usr/local/bin/setctrl') + main(sys.argv) diff --git a/setctrl b/setctrl new file mode 100755 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