X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_bin%2Fcaps-ctrl;h=b0d8f649778b89f1d792ba986f560e9392ce7241;hb=2378c65d20e15a10d3a062fd75bc54f205eacc61;hp=502b46c4fee0a1faf9bd6c45dc91edd68fc2a2d1;hpb=e720deae78f1eda5e6f62629606c194f16796762;p=grml-scripts.git diff --git a/usr_bin/caps-ctrl b/usr_bin/caps-ctrl index 502b46c..b0d8f64 100755 --- a/usr_bin/caps-ctrl +++ b/usr_bin/caps-ctrl @@ -1,39 +1,72 @@ -#!/bin/sh +#!/bin/zsh # Filename: caps-ctrl -# Purpose: switch setting of caps-control key (switch between ctrl + shift) -# Authors: grml-team (grml.org), (c) Michael Prokop +# Purpose: switch caps to control key and vice versa for linux console and X +# Authors: grml-team (grml.org), (c) Matthias Kopfermann # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Sun Jan 15 22:45:27 CET 2006 [mika] ################################################################################ -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 Control Control Control Control Control Control Control Control\nkeycode 29 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock' | 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 Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock\nkeycode 29 = Control Control Control Control Control Control Control ' | 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." - ) +if . /etc/grml/script-functions ; then + check4progs xmodmap loadkeys dumpkeys || exit 1 fi +. /etc/grml/lsb-functions || ( alias einfo=echo ; alias eerror=echo; alias eend=echo ) + +emulate zsh +autoload -U colors ; colors + +if [[ -z $DISPLAY ]] ; then # test if X is not running when calling us + if [[ $UID != 0 ]] ; then # test if user root did invoke this command + eerror "As of Linux 2.6.15 you need root permissions for changing" + eerror "the keyboard on console using loadkeys for security reasons." + eerror "Run this program with root permissions. Exiting." ; eend 1 + exit 1 + fi + dumpkeys | grep -q '^keycode 58 = Caps_Lock' && \ + ( einfo "caps-ctrl - switching caps lock and control key." + + loadkeys <<- EOT + keycode 58 = `repeat 15 echo -n 'Control '` + keycode 29 = `repeat 7 echo -n 'Caps_Lock '` + EOT + eend $? + + ) || ( + einfo "caps-ctrl - switching caps lock and control key." + + loadkeys <<- EOT + keycode 58 = `repeat 15 echo -n 'Caps_Lock '` + keycode 29 = `repeat 7 echo -n 'Control '` + EOT + eend $? + ) + +else # running under X + ( + einfo "caps-ctrl - switching caps lock and control key." + einfo "If you notice errors, please make sure the xmodmap you have is right" + einfo "or use e.g. \"setxkbmap us\" beforehand." + xmodmap -pke | grep 'Caps_Lock' > /dev/null || ( + xmodmap - <<- EOT + keycode 66 = Caps_Lock + EOT + ) + + xmodmap - <<- EOT + remove Lock = Caps_Lock + remove Control = Control_L + !remove Control = Control_R + + keysym Control_L = Caps_Lock + keysym Caps_Lock = Control_L + !keysym Control_R = Caps_Lock + !keysym Caps_Lock = Control_R + + add lock = Caps_Lock + add Control = Control_L + !add Control = Control_R + EOT + eend $? + ) +fi # end of test if X or console is used ## END OF FILE #################################################################