From c3362aefa2e762211409923cfff065541bebf9e7 Mon Sep 17 00:00:00 2001 From: Saumit Dinesan Date: Sun, 22 May 2022 00:37:40 +0530 Subject: ble.sh & z4h addition --- .local/src/blesh/lib/init-cmap.sh | 186 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 .local/src/blesh/lib/init-cmap.sh (limited to '.local/src/blesh/lib/init-cmap.sh') diff --git a/.local/src/blesh/lib/init-cmap.sh b/.local/src/blesh/lib/init-cmap.sh new file mode 100644 index 0000000..1a2b4ef --- /dev/null +++ b/.local/src/blesh/lib/init-cmap.sh @@ -0,0 +1,186 @@ +# this script is a part of blesh (https://github.com/akinomyoga/ble.sh) under BSD-3-Clause license +function ble/init:cmap/bind-single-csi { + ble-bind -k "ESC [ $1" "$2" + ble-bind -k "CSI $1" "$2" +} +function ble/init:cmap/bind-single-ss3 { + ble-bind -k "ESC O $1" "$2" + ble-bind -k "SS3 $1" "$2" +} +function ble/init:cmap/bind-keypad-key { + local Ft=$1 name=$2 + (($3&4)) && ble-bind --csi "$Ft" "$name" + (($3&1)) && ble/init:cmap/bind-single-ss3 "$Ft" "$name" + (($3&2)) && ble-bind -k "ESC ? $Ft" "$name" +} +function ble/init:cmap/initialize { + ble/edit/info/immediate-show text "ble/lib/init-cmap.sh: updating key sequences..." + ble-decode-kbd/generate-keycode insert + ble-decode-kbd/generate-keycode home + ble-decode-kbd/generate-keycode prior + ble-decode-kbd/generate-keycode delete + ble-decode-kbd/generate-keycode end + ble-decode-kbd/generate-keycode next + ble-decode-kbd/generate-keycode find + ble-decode-kbd/generate-keycode select + local kend; ble/util/assign kend 'tput @7 2>/dev/null || tput kend 2>/dev/null' + if [[ $kend == $'\e[5~' ]]; then + ble-bind --csi '1~' insert + ble-bind --csi '2~' home + ble-bind --csi '3~' prior + ble-bind --csi '4~' delete + ble-bind --csi '5~' end + ble-bind --csi '6~' next + else + if [[ $kend == $'\e[F' && ( $TERM == xterm || $TERM == xterm-* || $TERM == kvt ) ]]; then + ble-bind --csi '1~' find + ble-bind --csi '4~' select + else + ble-bind --csi '1~' home + ble-bind --csi '4~' end + fi + ble-bind --csi '2~' insert + ble-bind --csi '3~' delete + ble-bind --csi '5~' prior + ble-bind --csi '6~' next + fi + ble-bind --csi '7~' home + ble-bind --csi '8~' end + local kdch1; ble/util/assign kdch1 'tput kD 2>/dev/null || tput kdch1 2>/dev/null' + [[ $kdch1 == $'\x7F' || $TERM == sun* ]] && ble-bind -k 'DEL' delete + ble-bind --csi '11~' f1 + ble-bind --csi '12~' f2 + ble-bind --csi '13~' f3 + ble-bind --csi '14~' f4 + ble-bind --csi '15~' f5 + ble-bind --csi '17~' f6 + ble-bind --csi '18~' f7 + ble-bind --csi '19~' f8 + ble-bind --csi '20~' f9 + ble-bind --csi '21~' f10 + ble-bind --csi '23~' f11 + ble-bind --csi '24~' f12 + ble-bind --csi '25~' f13 + ble-bind --csi '26~' f14 + ble-bind --csi '28~' f15 + ble-bind --csi '29~' f16 + ble-bind --csi '31~' f17 + ble-bind --csi '32~' f18 + ble-bind --csi '33~' f19 + ble-bind --csi '34~' f20 + ble-bind --csi '200~' paste_begin + ble-bind --csi '201~' paste_end + ble/init:cmap/bind-keypad-key 'SP' SP 3 # kpspace + ble/init:cmap/bind-keypad-key 'A' up 5 + ble/init:cmap/bind-keypad-key 'B' down 5 + ble/init:cmap/bind-keypad-key 'C' right 5 + ble/init:cmap/bind-keypad-key 'D' left 5 + ble/init:cmap/bind-keypad-key 'E' begin 5 + ble/init:cmap/bind-keypad-key 'F' end 5 + ble/init:cmap/bind-keypad-key 'H' home 5 + ble/init:cmap/bind-keypad-key 'I' TAB 3 # kptab (Note: CSI I は xterm SM(?1004) focus と重複) + ble/init:cmap/bind-keypad-key 'M' RET 7 # kpent + ble/init:cmap/bind-keypad-key 'P' f1 5 # kpf1 # Note: 普通の f1-f4 + ble/init:cmap/bind-keypad-key 'Q' f2 5 # kpf2 # に対してこれらの + ble/init:cmap/bind-keypad-key 'R' f3 5 # kpf3 # シーケンスを送る + ble/init:cmap/bind-keypad-key 'S' f4 5 # kpf4 # 端末もある。 + ble/init:cmap/bind-keypad-key 'j' '*' 7 # kpmul + ble/init:cmap/bind-keypad-key 'k' '+' 7 # kpadd + ble/init:cmap/bind-keypad-key 'l' ',' 7 # kpsep + ble/init:cmap/bind-keypad-key 'm' '-' 7 # kpsub + ble/init:cmap/bind-keypad-key 'n' '.' 7 # kpdec + ble/init:cmap/bind-keypad-key 'o' '/' 7 # kpdiv + ble/init:cmap/bind-keypad-key 'p' '0' 7 # kp0 + ble/init:cmap/bind-keypad-key 'q' '1' 7 # kp1 + ble/init:cmap/bind-keypad-key 'r' '2' 7 # kp2 + ble/init:cmap/bind-keypad-key 's' '3' 7 # kp3 + ble/init:cmap/bind-keypad-key 't' '4' 7 # kp4 + ble/init:cmap/bind-keypad-key 'u' '5' 7 # kp5 + ble/init:cmap/bind-keypad-key 'v' '6' 7 # kp6 + ble/init:cmap/bind-keypad-key 'w' '7' 7 # kp7 + ble/init:cmap/bind-keypad-key 'x' '8' 7 # kp8 + ble/init:cmap/bind-keypad-key 'y' '9' 7 # kp9 + ble/init:cmap/bind-keypad-key 'X' '=' 7 # kpeq + ble/init:cmap/bind-keypad-key 'I' focus 4 # Note: 1 (= SS3) は TAB と重複するので設定しない + ble/init:cmap/bind-keypad-key 'O' blur 5 + ble/init:cmap/bind-single-csi 'Z' S-TAB + ble/init:cmap/bind-single-ss3 'a' C-up + ble/init:cmap/bind-single-csi 'a' S-up + ble/init:cmap/bind-single-ss3 'b' C-down + ble/init:cmap/bind-single-csi 'b' S-down + ble/init:cmap/bind-single-ss3 'c' C-right + ble/init:cmap/bind-single-csi 'c' S-right + ble/init:cmap/bind-single-ss3 'd' C-left + ble/init:cmap/bind-single-csi 'd' S-left + ble/init:cmap/bind-single-csi '2 $' S-insert # ECMA-48 違反 + ble/init:cmap/bind-single-csi '3 $' S-delete # ECMA-48 違反 + ble/init:cmap/bind-single-csi '5 $' S-prior # ECMA-48 違反 + ble/init:cmap/bind-single-csi '6 $' S-next # ECMA-48 違反 + ble/init:cmap/bind-single-csi '7 $' S-home # ECMA-48 違反 + ble/init:cmap/bind-single-csi '8 $' S-end # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 3 $' S-f11 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 4 $' S-f12 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 5 $' S-f13 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 6 $' S-f14 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 8 $' S-f15 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '2 9 $' S-f16 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '3 1 $' S-f17 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '3 2 $' S-f18 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '3 3 $' S-f19 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '3 4 $' S-f20 # ECMA-48 違反 + ble/init:cmap/bind-single-csi '[ A' f1 + ble/init:cmap/bind-single-csi '[ B' f2 + ble/init:cmap/bind-single-csi '[ C' f3 + ble/init:cmap/bind-single-csi '[ D' f4 + ble/init:cmap/bind-single-csi '[ E' f5 + ble/init:cmap/bind-single-csi '2 4 7 z' insert + ble/init:cmap/bind-single-csi '2 1 4 z' home + ble/init:cmap/bind-single-csi '2 2 0 z' end + ble/init:cmap/bind-single-csi '2 2 2 z' prior + ble/init:cmap/bind-single-csi '2 1 6 z' next + ble/init:cmap/bind-single-csi '2 2 4 z' f1 + ble/init:cmap/bind-single-csi '2 2 5 z' f2 + ble/init:cmap/bind-single-csi '2 2 6 z' f3 + ble/init:cmap/bind-single-csi '2 2 7 z' f4 + ble/init:cmap/bind-single-csi '2 2 8 z' f5 + ble/init:cmap/bind-single-csi '2 2 9 z' f6 + ble/init:cmap/bind-single-csi '2 3 0 z' f7 + ble/init:cmap/bind-single-csi '2 3 1 z' f8 + ble/init:cmap/bind-single-csi '2 3 2 z' f9 + ble/init:cmap/bind-single-csi '2 3 3 z' f10 + ble/init:cmap/bind-single-csi '2 3 4 z' f11 + ble/init:cmap/bind-single-csi '2 3 5 z' f12 + ble/init:cmap/bind-single-csi '1 z' find # from xterm ctlseqs + ble/init:cmap/bind-single-csi '4 z' select # from xterm ctlseqs + ble/init:cmap/bind-single-csi '2 J' S-home + ble/init:cmap/bind-single-csi 'J' C-end + ble/init:cmap/bind-single-csi 'K' S-end + ble/init:cmap/bind-single-csi '4 l' S-insert + ble/init:cmap/bind-single-csi 'L' C-insert + ble/init:cmap/bind-single-csi '4 h' insert + ble/init:cmap/bind-single-csi '2 K' S-delete + ble/init:cmap/bind-single-csi 'P' delete + _ble_decode_csimap_kitty_u=( + [57358]=capslock [57359]=scrolllock [57360]=numlock [57361]=print [57362]=pause [57363]=menu + [57376]=f13 [57377]=f14 [57378]=f15 [57379]=f16 [57380]=f17 [57381]=f18 [57382]=f19 [57383]=f20 + [57384]=f21 [57385]=f22 [57386]=f23 [57387]=f24 [57388]=f25 [57389]=f26 [57390]=f27 [57391]=f28 + [57392]=f29 [57393]=f30 [57394]=f31 [57395]=f32 [57396]=f33 [57397]=f34 [57398]=f35 + [57399]=0 [57400]=1 [57401]=2 [57402]=3 [57403]=4 [57404]=5 [57405]=6 [57406]=7 [57407]=8 [57408]=9 + [57409]='.' [57410]='/' [57411]='*' [57412]='-' [57413]='+' [57414]=RET [57415]='=' [57416]=',' + [57417]=left [57418]=right [57419]=up [57420]=down + [57421]=prior [57422]=next [57423]=home [57424]=end [57425]=insert [57426]=delete [57427]=begin + [57428]=media_play [57429]=media_pause [57430]=media_play_pause [57431]=media_reverse + [57432]=media_stop [57433]=media_fast_forward [57434]=media_rewind [57435]=media_track_next + [57436]=media_track_prev [57437]=media_record [57438]=lower_volume [57439]=raise_volume + [57440]=mute_volume + [57441]=lshift [57442]=lcontrol [57443]=lalter [57444]=lsuper [57445]=lhyper [57446]=lmeta + [57447]=rshift [57448]=rcontrol [57449]=ralter [57450]=rsuper [57451]=rhyper [57452]=rmeta + [57453]=iso_shift3 [57454]=iso_shift5 + ) + local keyname + for keyname in "${_ble_decode_csimap_kitty_u[@]}"; do + ble-decode-kbd/generate-keycode "$keyname" + done + ble/edit/info/immediate-show text "ble/lib/init-cmap.sh: updating key sequences... done" +} +ble/init:cmap/initialize -- cgit v1.2.3