| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- #nop vim: set filetype=tt:;
- #var lib_ui_keyboard[META] {
- {NAME} {键盘绑定}
- {DESC} {允许玩家在正常输入模式和翻屏模式之间切换}
- {AUTHOR} {担子炮}
- };
- #var keyboard-mode {};
- #alias {keyboard.LessMode} {
- #if { "$keyboard-mode" == "less" } {
- #return;
- };
- keyboard.DisableAllKeys;
- #var keyboard-mode {less};
- #class keyboard-less-mode open;
- #macro {g} {#buffer home};
- #macro {G} {#buffer end};
- #macro {j} {#buffer down 1};
- #macro {k} {#buffer up 1};
- #macro {\cf} {#buffer down 20};
- #macro {\cb} {#buffer up 20};
- #macro {n} {keyboard.Search next};
- #macro {N} {keyboard.Search prev};
- #macro {\cc} {keyboard.NormalMode};
- #macro {?} {keyboard.SearchMode up};
- #macro {/} {keyboard.SearchMode down};
- #local mode {};
- #if { {$keyboard-search-pattern} == {} } {
- #local mode {<139>【翻页模式】<299>};
- };
- #elseif { "$keyboard-search-dir" == "down" } {
- #local mode {<159>【向下搜索】<299>};
- };
- #else {
- #local mode {<129>【向上搜索】<299>};
- };
- prompt.Change {$mode<169>Ctrl+b<299>/<169>Ctrl+f<299> 前后翻页
- <169>j<299>/<169>k<299> 上下滚动
- <169>g<299>/<169>G<299> 到开头/结尾
- <169>Ctrl+C<299> 回到正常模式
- <169>?<299>/<169>/<299> 输入搜索条件
- <169>n<299>/<169>N<299> 前后搜索};
- #class keyboard-less-mode close;
- };
- #alias {keyboard.NormalMode} {
- #if { "$keyboard-mode" == "normal" } {
- #return;
- };
- #if { "$keyboard-mode" != "" } {
- keyboard.restore-macro;
- };
- #var keyboard-mode {normal};
- #var keyboard-search-pattern {};
- #var keyboard-search-dir {};
- #buffer end;
- prompt.Set {{search}{}};
- prompt.Change {};
- #class {keyboard-normal-mode} assign {#macro {\cb} {keyboard.LessMode; #buffer up 20}};
- };
- #alias {keyboard.backup-macro} {
- #info macro {save};
- #var macro-backup {};
- #local count {&info[MACROS][]};
- #if { $count > 0 } {
- #local id {};
- #loop {1} {&info[MACROS][]} {id} {
- #var key {$info[MACROS][+$id][arg1]};
- #var action {$info[MACROS][+$id][arg2]};
- #var class {$info[MACROS][+$id][class]};
- #list {macro-backup} {add} {{
- {key} {$key}
- {class} {$class}
- {action}{$action}
- }};
- };
- };
- #unvar key;
- };
- #alias {keyboard.restore-macro} {
- #kill macro;
- #local count {¯o-backup[]};
- #if { $count > 0 } {
- #local idx {};
- #loop {1} {$count} {idx} {
- #local key {$macro-backup[+$idx][key]};
- #local class {$macro-backup[+$idx][class]};
- #local action {$macro-backup[+$idx][action]};
- #line sub var #class {$class} {assign} {#macro {$key} {$action}};
- };
- };
- };
- #alias {keyboard.DisableAllKeys} {
- #if { "$keyboard-mode" == "normal" } {
- keyboard.backup-macro;
- };
- #local ch {};
- #parse {abcdefghijklmnopqrstuvwxyz} {ch} {
- #macro {\c$ch} {#0} {1.000};
- #macro {$ch} {#0} {1.000};
- };
- #parse {ABCDEFGHIJKLMNOPQRSTUVWXYZ} {ch} {
- #macro {$ch} {#0} {1.000};
- };
- #parse {`1234567890-=~!@#$%^&*()_+} {ch} {
- #macro {$ch} {#0} {1.000};
- };
- #parse {,./<>?;':"[]\\|} {ch} {
- #macro {$ch} {#0} {1.000};
- };
- #macro {\x7B} {#0} {1.000};
- #macro {\x7D} {#0} {1.000};
- #macro { } {#0} {1.000};
- };
- #alias {keyboard.checkBufferEnd} {
- #local info {};
- #buffer info save info;
- #if { $info[LINE] < 0 || $info[LINE] >= $info[USED] } {
- keyboard.NormalMode;
- };
- };
- #nop 搜索条件;
- #var keyboard-search-pattern {};
- #nop 进入搜索模式;
- #alias {keyboard.SearchMode} {
- #local dir {%1};
- #if { "$keyboard-mode" == "search" } {
- #return;
- };
- #kill macro;
- #class keyboard-search-mode open;
- #var keyboard-mode {search};
- #var keyboard-search-dir {$dir};
- #macro {\cc} {keyboard.LessMode};
- #macro {\n} {
- #local input {};
- #cursor get input;
- #if { {$input} != {} } {
- #var keyboard-search-pattern {$input};
- #cursor clear;
- };
- keyboard.LessMode;
- keyboard.Search next;
- #if { "$keyboard-search-dir" == "down" } {
- prompt.Set {{search}{<159>$keyboard-search-pattern}};
- };
- #else {
- prompt.Set {{search}{<129>$keyboard-search-pattern}};
- };
- };
- #if { "$dir" == "up" } {
- #if { $keyboard-search-skip > 0 } {
- #var keyboard-search-skip {0};
- #var keyboard-search-last-find {0};
- };
- prompt.Change {<129>向上搜索<299>: };
- };
- #else {
- #if { $keyboard-search-skip < 0 } {
- #var keyboard-search-last-find {0};
- #var keyboard-search-skip {0};
- };
- prompt.Change {<159>向下搜索<299>: };
- };
- #class keyboard-search-mode close;
- };
- #var keyboard-search-skip {0};
- #var keyboard-search-last-find {0};
- #alias {keyboard.Search} {
- #local dir {%1};
- #if { {$keyboard-search-pattern} == {} } {
- #return;
- };
- #local old {$keyboard-search-skip};
- #switch {"$keyboard-search-dir/$dir"} {
- #case {"up/next"} {#math keyboard-search-skip {$keyboard-search-skip - 1}};
- #case {"up/prev"} {#math keyboard-search-skip {$keyboard-search-skip + 1}};
- #case {"down/next"} {#math keyboard-search-skip {$keyboard-search-skip + 1}};
- #case {"down/prev"} {#math keyboard-search-skip {$keyboard-search-skip - 1}};
- };
- #local line {};
- #line quiet #buffer find {$keyboard-search-skip} {$keyboard-search-pattern} {line};
- #if { "$line" == "{|0|$keyboard-search-last-find}" } {
- #var keyboard-search-skip {$old};
- };
- #else {
- #var keyboard-search-last-find {$line};
- #buffer jump $line;
- };
- };
- keyboard.NormalMode;
|