#!/bin/dash load_layout () { if test -f "${XDG_RUNTIME_DIR}/.setkeys_layout"; then cat "${XDG_RUNTIME_DIR}/.setkeys_layout" fi } save_layout () { printf '%s\n' "$1" > "${XDG_RUNTIME_DIR}/.setkeys_layout" } if test "$1" = "greek"; then layout=gr elif test "$1" = "swedish"; then layout=se elif test "$1" = "english"; then layout=en_US elif test "$1" = "toggle"; then layout="$(load_layout)" if test "$layout" = se; then layout=gr else layout=se fi elif test $# = 0; then layout="$(load_layout)" else layout="$1" fi if test -z "$layout"; then layout=se fi save_layout "$layout" setxkbmap \ -rules evdev \ -model pc105 \ -layout "$layout" \ -variant '' \ -option '' \ -option terminate:ctrl_alt_bksp,compose:rwin,keypad:future \ -types complete \ -compat complete \ -synch { # Assign LeftCtrl to CapsLock printf '%s\n' 'keycode 66 = Control_L Control_L Control_L Control_L' # Assign LeftHyper to LeftCtrl printf '%s\n' 'keycode 37 = Hyper_L Hyper_L Hyper_L Hyper_L' # Assign remove layout switch from LeftShift printf '%s\n' 'keycode 50 = Shift_L Shift_L Shift_L Shift_L' if test -z "${NO_UNICOMP}"; then # Unicomp's newer versions of New Model M swapped AltGr and RSuper # making it a torture device for even someone with as big hands as mine if cat /sys/class/input/*/name | grep Unicomp > /dev/null; then # Assign Compose to AltGr printf '%s\n' 'keycode 108 = Multi_key Multi_key Multi_key Multi_key' # Assign AltGr to RightSuper printf '%s\n' 'keycode 134 = ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift' fi fi cat < /dev/null; then # Turn off numlock LED input="$(grep Unicomp /sys/class/input/*/name | sed 's|^/sys/class/input/\(.*\)/name:.*$|\1|g' | sed 1q)" if ! echo 0 | sponge "/sys/class/leds/${input}::numlock/brightness" 2>/dev/null; then if isfg; then # TODO do at boot asroot chown ${USER}:${USER} "/sys/class/leds/${input}::numlock/brightness" echo 0 | sponge "/sys/class/leds/${input}::numlock/brightness" fi fi fi # Esc = 9 # F1…F10 = 67…76 # F11…F12 = 95…96 # § = 49 # 1…9 = 10…18 # 0+´ = 19…21 # Backspace = 22 # Tab = 23 # qwertyuiopå¨ = 24…35 # Enter = 36 # CapsLock = 66 # asdfghjklöä = 38…48 # ' = 51 # LeftShift = 50 # < = 94 # zxcvbnm,.- = 52…61 # RightShift = 62 # LeftCtrl = 37 # LeftSuper = 133 # Alt = 64 # Space = 65 # AltGr = 108 # RightSuper = 134 # Menu = 135 # RightCtrl = 105 # SysReq = 107 # ScrlLock = 78 # Break = 127 # Insert = 118 # Home = 110 # PageUp = 112 # Delete = 119 # End = 115 # PageDown = 117 # Up = 111 # Left = 113 # Down = 116 # Right = 114 # NumLock = 77 # Num/ = 106 # Num* = 63 # Num- = 82 # Num7 = 79 # Num8 = 80 # Num9 = 81 # Num+ = 86 # Num4 = 83 # Num5 = 84 # Num6 = 85 # Num1 = 87 # Num2 = 88 # Num3 = 89 # NumEnter = 104 # Num0 = 90 # Num, = 91