summaryrefslogtreecommitdiffstats
path: root/bin/hush/numkeys
blob: 9d037f5e5e86a6bf64ba923828d5a87f2b511b88 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/sh
set -eu
set -o pipefail

on() {
    xmodmap -e 'keycode 10 = exclam 1'
    xmodmap -e 'keycode 11 = at 2'
    xmodmap -e 'keycode 12 = numbersign 3'
    xmodmap -e 'keycode 13 = dollar 4'
    xmodmap -e 'keycode 14 = percent 5'
    xmodmap -e 'keycode 15 = asciicircum 6'
    xmodmap -e 'keycode 16 = ampersand 7'
    xmodmap -e 'keycode 17 = asterisk 8'
    xmodmap -e 'keycode 18 = parenleft 9'
    xmodmap -e 'keycode 19 = parenright 0'
    xmodmap -e 'keycode 20 = underscore minus'
    xmodmap -e 'keycode 34 = braceleft bracketleft'
    xmodmap -e 'keycode 35 = braceright bracketright'
    xmodmap -e 'keycode 49 = asciitilde grave'
    xmodmap -e 'keycode 51 = bar backslash'
}

off() {
    xmodmap -e 'keycode 10 = 1 exclam'
    xmodmap -e 'keycode 11 = 2 at'
    xmodmap -e 'keycode 12 = 3 numbersign'
    xmodmap -e 'keycode 13 = 4 dollar'
    xmodmap -e 'keycode 14 = 5 percent'
    xmodmap -e 'keycode 15 = 6 asciicircum'
    xmodmap -e 'keycode 16 = 7 ampersand'
    xmodmap -e 'keycode 17 = 8 asterisk'
    xmodmap -e 'keycode 18 = 9 parenleft'
    xmodmap -e 'keycode 19 = 0 parenright'
    xmodmap -e 'keycode 20 = minus underscore'
    xmodmap -e 'keycode 34 = bracketleft braceleft'
    xmodmap -e 'keycode 35 = bracketright braceright'
    xmodmap -e 'keycode 49 = grave asciitilde'
    xmodmap -e 'keycode 51 = backslash bar'
}

toggle() {
    if xmodmap -pk | grep -q '(1).*(exclam).*(1).*(exclam)'; then
        on
    else
        off
    fi
}

case "$1" in
    on) on ;;
    off) off ;;
    toggle) toggle ;;
    *) echo invalid 1>&2; exit 1 ;;
esac