Switch behaviour of Capslock
On my happy hacking keyboard the control-key is located where you “usually” find the caps-lock key. My new laptop (Samsung X20) has a function-key at the left side and next to it (on the right side of it) the control-key. I often misplaced my fingers and as I like the caps-lock-is-control-key-setup I modified the setup using xmodmap. But it sucks if you don’t have the same setup on pure console, therefore I used the well known tool loadkeys to modify this as well. But switching between caps-lock-is-caps-lock and the “original setting” (for capitalization) sucks. Especially because “setxkbmap -option caps:shift” and “setxkbmap -option ctrl:nocaps” are not reliable enough. :-/ And whereas documentation for switching caps-to-ctrl exists you probably won’t find it for the other way around. So I wrote a small script namend caps-ctrl which automatically finds out whether it’s running in X or on console and switches the current setup to “the another one”:
#!/bin/sh if [ -z $DISPLAY ] ; then if [ $UID != 0 ] ; then echo 'Sorry, you need root permissions for running $0 on console using loadkeys. Run this program with root permissions. Exiting.' exit -1 fi dumpkeys | grep -q '^keycode 58 = Caps_Lock' && \ ( echo 'Caps lock mapped to shift-function. Switching caps lock key to control key.' echo 'keycode 58 = Control Control Control Control Control Control Control' | loadkeys ) || ( echo 'Caps lock mapped to control-function. Switching caps lock key to shift key.' echo 'keycode 58 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock' | loadkeys ) else xmodmap -pm | grep -q 'control.*Caps_Lock' && \ ( echo 'Caps lock mapped to control-function. Switching caps lock key to shift key.' xmodmap -e 'add lock = Caps_Lock' echo 'clear Lock keycode 66 = Shift_Lock add Lock = Shift_Lock' | xmodmap - echo 'Problems? Try to run 'setxkbmap -option caps:shift' manually.' ) || ( echo 'Caps lock mapped to shift-function. Switching caps lock key to control key' xmodmap -e 'keycode 66 = Caps_Lock' xmodmap -e 'remove lock = Caps_Lock' -e 'add control = Caps_Lock' echo 'Problems? Try to run 'setxkbmap -option ctrl:nocaps' manually.' ) fi
As there are some more people out there who like the caps-lock-is-control behaviour (hey jimmy!) I put the script into the package grml-scripts and it will be part of the next grml-release.