🗝
summary refs log tree commit diff
path: root/zsh/init-keymap.zsh
blob: b3c3c905cf57643e19687fb4706faac5934b47fc (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
#!/bin/zsh

keymap_file="$1"

# taken from zkbd
emulate -RL zsh
trap "return 1" 1 2 15
function getseq() {    
    trap "stty ${$(stty -g 2>/dev/null):-echo -raw}" 0 1 2 15
    stty raw -echo
    local k='' seq='' i
    for ((i=10; i>0; --i))
    do
        read -t -k 1 k && break
        sleep 1
    done
    [[ -n $k ]] || exit
    [[ $k = $'\012' || $k = $'\015' || $k = ' ' ]] && exit
    seq=$k
    while read -t -k 1 k
    do
       seq=$seq$k
    done
    print -Rn ${(V)seq}
}

function entry() {
    echo -n "$1: "
    seq="$(getseq)"
    echo
    echo "key[$1]='$seq'" >> "$keymap_file.tmp"
}

echo "keymap time!"
echo 'typeset -g -A key' > "$keymap_file.tmp"
entry Backspace
entry CtrlBackspace
entry Insert
entry Delete
entry PageUp
entry PageDown
entry Home
entry End
entry Up
entry Left
entry Down
entry Right
entry CtrlUp
entry CtrlLeft
entry CtrlDown
entry CtrlRight

mv "$keymap_file.tmp" "$keymap_file"