summaryrefslogtreecommitdiff
path: root/.local/src/blesh/lib/init-cmap.sh
diff options
context:
space:
mode:
authorSaumit Dinesan <justsaumit@protonmail.com>2022-05-22 00:37:40 +0530
committerSaumit Dinesan <justsaumit@protonmail.com>2022-05-22 00:37:40 +0530
commitc3362aefa2e762211409923cfff065541bebf9e7 (patch)
treee48e225190fc0bb1a2db18ae2510a89a6f0d8653 /.local/src/blesh/lib/init-cmap.sh
parent4df17a688ba54d710a1d46ee47cb65b5c9e75764 (diff)
ble.sh & z4h addition
Diffstat (limited to '.local/src/blesh/lib/init-cmap.sh')
-rw-r--r--.local/src/blesh/lib/init-cmap.sh186
1 files changed, 186 insertions, 0 deletions
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