diff options
Diffstat (limited to 'zsh')
-rwxr-xr-x | zsh/init-keymap.zsh | 53 | ||||
-rw-r--r-- | zsh/keymap/xterm-256color | 17 |
2 files changed, 70 insertions, 0 deletions
diff --git a/zsh/init-keymap.zsh b/zsh/init-keymap.zsh new file mode 100755 index 0000000..b3c3c90 --- /dev/null +++ b/zsh/init-keymap.zsh @@ -0,0 +1,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" diff --git a/zsh/keymap/xterm-256color b/zsh/keymap/xterm-256color new file mode 100644 index 0000000..47207d8 --- /dev/null +++ b/zsh/keymap/xterm-256color @@ -0,0 +1,17 @@ +typeset -g -A key +key[Backspace]='^?' +key[CtrlBackspace]='^H' +key[Insert]='^[[2~' +key[Delete]='^[[3~' +key[Home]='^[[H' +key[End]='^[[F' +key[PageUp]='^[[5~' +key[PageDown]='^[[6~' +key[Up]='^[[A' +key[Left]='^[[D' +key[Down]='^[[B' +key[Right]='^[[C' +key[CtrlUp]='^[[1;5A' +key[CtrlDown]='^[[1;5B' +key[CtrlRight]='^[[1;5C' +key[CtrlLeft]='^[[1;5D' |