🗝
summary refs log tree commit diff
path: root/zsh/init-keymap.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/init-keymap.zsh')
-rwxr-xr-xzsh/init-keymap.zsh53
1 files changed, 53 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"