keyboard.tin 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #nop vim: set filetype=tt:;
  2. #var lib_ui_keyboard[META] {
  3. {NAME} {键盘绑定}
  4. {DESC} {允许玩家在正常输入模式和翻屏模式之间切换}
  5. {AUTHOR} {担子炮}
  6. };
  7. #var keyboard-mode {normal};
  8. /*
  9. TODO: 缺搜索功能,缺 history 翻页功能,缺当前模式的显示
  10. */
  11. #alias {keyboard.LessMode} {
  12. #if { "$keyboard-mode" == "less" } {
  13. #return;
  14. };
  15. #var keyboard-mode {less};
  16. keyboard.DisableAllKeys;
  17. #class mouse-less-mode open;
  18. #macro {g} {#buffer home};
  19. #macro {G} {keyboard.NormalMode};
  20. #macro {j} {#buffer down 1};
  21. #macro {k} {#buffer up 1};
  22. #macro {\cf} {#buffer down 20};
  23. #macro {\cb} {#buffer up 20};
  24. #macro {\cc} {keyboard.NormalMode};
  25. #class mouse-less-mode close;
  26. };
  27. #alias {keyboard.NormalMode} {
  28. #if { "$keyboard-mode" == "normal" } {
  29. #return;
  30. };
  31. #var keyboard-mode {normal};
  32. #kill macro;
  33. #local count {&macro-backup[]};
  34. #if { $count > 0 } {
  35. #local idx {};
  36. #loop {1} {$count} {idx} {
  37. #local key {*macro-backup[+$idx]};
  38. #local action {$macro-backup[+$idx]};
  39. #line sub var #macro {$key} {$action};
  40. };
  41. };
  42. #class mode-disable-all-keys kill;
  43. #class mouse-less-mode kill;
  44. #buffer end;
  45. };
  46. #alias {keyboard.DisableAllKeys} {
  47. #class mouse-disable-all-keys open;
  48. #info macro {save};
  49. #var macro-backup {};
  50. #local count {&info[MACROS][]};
  51. #if { $count > 0 } {
  52. #local id {};
  53. #loop {1} {&info[MACROS][]} {id} {
  54. #line sub var #var key {$info[MACROS][+$id][arg1]};
  55. #replace key {\\} {\\};
  56. #var action {$info[MACROS][+$id][arg2]};
  57. #line sub var #var {macro-backup[$key]} {$action};
  58. };
  59. };
  60. #unvar key;
  61. #local ch {};
  62. #parse {abcdefghijklmnopqrstuvwxyz} {ch} {
  63. #macro {\c$ch} {#0} {1.000};
  64. #macro {$ch} {#0} {1.000};
  65. };
  66. #parse {ABCDEFGHIJKLMNOPQRSTUVWXYZ} {ch} {
  67. #macro {$ch} {#0} {1.000};
  68. };
  69. #parse {`1234567890-=~!@#$%^&*()_+} {ch} {
  70. #macro {$ch} {#0} {1.000};
  71. };
  72. #parse {,./<>?;':"[]\\|} {ch} {
  73. #macro {$ch} {#0} {1.000};
  74. };
  75. #macro {\x7B} {#0} {1.000};
  76. #macro {\x7D} {#0} {1.000};
  77. #class mouse-disable-all-keys close;
  78. };