keytab_default.dart 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. import 'package:xterm/core/input/keytab/keytab_parse.dart';
  2. import 'package:xterm/core/input/keytab/keytab_token.dart';
  3. const kDefaultKeytab = r'''
  4. # [README.default.Keytab] Default Keyboard Table
  5. #
  6. # To customize your keyboard, copy this file to something ending with
  7. # .keytab and change it to meet you needs.
  8. #
  9. # Please read the README-KeyTab and the doc/user/README.keyboard files
  10. # in this case.
  11. #
  12. # --------------------------------------------------------------
  13. keyboard "Default (XFree 4)"
  14. # --------------------------------------------------------------
  15. #
  16. # Note that this particular table is a "risc" version made to
  17. # ease customization without bothering with obsolete details.
  18. # See VT100.keytab for the more hairy stuff.
  19. #
  20. # --------------------------------------------------------------
  21. # common keys
  22. key Escape : "\E"
  23. key Tab -Shift : "\t"
  24. key Tab +Shift+Ansi : "\E[Z"
  25. key Tab +Shift-Ansi : "\t"
  26. key Backtab +Ansi : "\E[Z"
  27. key Backtab -Ansi : "\t"
  28. key Return-Shift-NewLine : "\r"
  29. key Return-Shift+NewLine : "\r\n"
  30. key Return+Shift : "\EOM"
  31. key Backspace +Alt : "\x17"
  32. # Backspace and Delete codes are preserving CTRL-H.
  33. #
  34. # Backspace without CTRL sends '^?'; this matches XTerm behaviour, so that
  35. # pressing Alt+Backspace will send \E + Del, which is the expected behaviour
  36. # in some apps (e.g. emacs), and it was the behaviour before the commit
  37. # that add the Backspace +Control rule
  38. key Backspace -Control : "\x7f"
  39. # Match xterm behaviour: Backspace sends '^H' when Control is pressed
  40. # BS, hex \x08, \b
  41. key Backspace +Control : "\b"
  42. # Arrow keys in VT52 mode
  43. # shift up/down are reserved for scrolling.
  44. # shift left/right are reserved for switching between tabs (this is hardcoded).
  45. key Up -Shift-Ansi : "\EA"
  46. key Down -Shift-Ansi : "\EB"
  47. key Right-Shift-Ansi : "\EC"
  48. key Left -Shift-Ansi : "\ED"
  49. # Arrow keys in ANSI mode with Application - and Normal Cursor Mode)
  50. key Up -Shift-AnyMod+Ansi+AppCuKeys : "\EOA"
  51. key Down -Shift-AnyMod+Ansi+AppCuKeys : "\EOB"
  52. key Right -Shift-AnyMod+Ansi+AppCuKeys : "\EOC"
  53. key Left -Shift-AnyMod+Ansi+AppCuKeys : "\EOD"
  54. key Up -Shift-AnyMod+Ansi-AppCuKeys : "\E[A"
  55. key Down -Shift-AnyMod+Ansi-AppCuKeys : "\E[B"
  56. key Right -Shift-AnyMod+Ansi-AppCuKeys : "\E[C"
  57. key Left -Shift-AnyMod+Ansi-AppCuKeys : "\E[D"
  58. key Up -Shift+AnyMod+Ansi : "\E[1;5A"
  59. key Down -Shift+AnyMod+Ansi : "\E[1;5B"
  60. # Right / Left with Control
  61. key Right -Shift-Alt+Control+Ansi : "\E[1;5C"
  62. key Left -Shift-Alt+Control+Ansi : "\E[1;5D"
  63. # Right / Left with Alt not on a Mac
  64. key Right -Shift+Alt-Control+Ansi-Mac : "\E[1;5C"
  65. key Left -Shift+Alt-Control+Ansi-Mac : "\E[1;5D"
  66. # Right / Left with Alt on a Mac
  67. key Right -Shift+Alt-Control+Ansi+Mac : "\Ef"
  68. key Left -Shift+Alt-Control+Ansi+Mac : "\Eb"
  69. key Up +Shift+AppScreen : "\E[1;*A"
  70. key Down +Shift+AppScreen : "\E[1;*B"
  71. key Left +Shift+AppScreen : "\E[1;*D"
  72. key Right +Shift+AppScreen : "\E[1;*C"
  73. # Keypad keys with NumLock ON
  74. # (see https://web.archive.org/web/20070807181942/http://www.nw.com/nw/WWW/products/wizcon/vt100.html
  75. # https://vt100.net/docs/vt100-ug/chapter3.html)
  76. #
  77. # Not enabled for now because it breaks the keypad in Vim.
  78. #
  79. #key 0 +KeyPad+AppKeyPad : "\EOp"
  80. #key 1 +KeyPad+AppKeyPad : "\EOq"
  81. #key 2 +KeyPad+AppKeyPad : "\EOr"
  82. #key 3 +KeyPad+AppKeyPad : "\EOs"
  83. #key 4 +KeyPad+AppKeyPad : "\EOt"
  84. #key 5 +KeyPad+AppKeyPad : "\EOu"
  85. #key 6 +KeyPad+AppKeyPad : "\EOv"
  86. #key 7 +KeyPad+AppKeyPad : "\EOw"
  87. #key 8 +KeyPad+AppKeyPad : "\EOx"
  88. #key 9 +KeyPad+AppKeyPad : "\EOy"
  89. #key + +KeyPad+AppKeyPad : "\EOl"
  90. #key - +KeyPad+AppKeyPad : "\EOm"
  91. #key . +KeyPad+AppKeyPad : "\EOn"
  92. #key * +KeyPad+AppKeyPad : "\EOM"
  93. #key Enter +KeyPad+AppKeyPad : "\r"
  94. # Keypad keys with NumLock Off
  95. key Up -Shift+Ansi+AppCuKeys+KeyPad : "\EOA"
  96. key Down -Shift+Ansi+AppCuKeys+KeyPad : "\EOB"
  97. key Right -Shift+Ansi+AppCuKeys+KeyPad : "\EOC"
  98. key Left -Shift+Ansi+AppCuKeys+KeyPad : "\EOD"
  99. key Up -Shift+Ansi-AppCuKeys+KeyPad : "\E[A"
  100. key Down -Shift+Ansi-AppCuKeys+KeyPad : "\E[B"
  101. key Right -Shift+Ansi-AppCuKeys+KeyPad : "\E[C"
  102. key Left -Shift+Ansi-AppCuKeys+KeyPad : "\E[D"
  103. key Home +AppCuKeys+KeyPad : "\EOH"
  104. key End +AppCuKeys+KeyPad : "\EOF"
  105. key Home -AppCuKeys+KeyPad : "\E[H"
  106. key End -AppCuKeys+KeyPad : "\E[F"
  107. key Insert +KeyPad : "\E[2~"
  108. key Delete +KeyPad : "\E[3~"
  109. key PgUp -Shift+KeyPad : "\E[5~"
  110. key PgDown -Shift+KeyPad : "\E[6~"
  111. # the key labelled 5 on the Keypad, is Qt::Key_Clear (a very intuitive
  112. # and discoverable name...)
  113. key Clear +KeyPad : "\E[E"
  114. # other grey PC keys
  115. key Enter+NewLine : "\r\n"
  116. key Enter-NewLine : "\r"
  117. key Home -AnyMod-AppCuKeys : "\E[H"
  118. key End -AnyMod-AppCuKeys : "\E[F"
  119. key Home -AnyMod+AppCuKeys : "\EOH"
  120. key End -AnyMod+AppCuKeys : "\EOF"
  121. key Home +AnyMod : "\E[1;*H"
  122. key End +AnyMod : "\E[1;*F"
  123. key Insert -AnyMod : "\E[2~"
  124. key Delete -AnyMod : "\E[3~"
  125. key Insert +AnyMod : "\E[2;*~"
  126. key Delete +AnyMod : "\E[3;*~"
  127. key PgUp -Shift-AnyMod : "\E[5~"
  128. key PgDown -Shift-AnyMod : "\E[6~"
  129. key PgUp -Shift+AnyMod : "\E[5;*~"
  130. key PgDown -Shift+AnyMod : "\E[6;*~"
  131. # Function keys
  132. key F1 -AnyMod : "\EOP"
  133. key F2 -AnyMod : "\EOQ"
  134. key F3 -AnyMod : "\EOR"
  135. key F4 -AnyMod : "\EOS"
  136. key F5 -AnyMod : "\E[15~"
  137. key F6 -AnyMod : "\E[17~"
  138. key F7 -AnyMod : "\E[18~"
  139. key F8 -AnyMod : "\E[19~"
  140. key F9 -AnyMod : "\E[20~"
  141. key F10 -AnyMod : "\E[21~"
  142. key F11 -AnyMod : "\E[23~"
  143. key F12 -AnyMod : "\E[24~"
  144. key F1 +AnyMod : "\EO*P"
  145. key F2 +AnyMod : "\EO*Q"
  146. key F3 +AnyMod : "\EO*R"
  147. key F4 +AnyMod : "\EO*S"
  148. key F5 +AnyMod : "\E[15;*~"
  149. key F6 +AnyMod : "\E[17;*~"
  150. key F7 +AnyMod : "\E[18;*~"
  151. key F8 +AnyMod : "\E[19;*~"
  152. key F9 +AnyMod : "\E[20;*~"
  153. key F10 +AnyMod : "\E[21;*~"
  154. key F11 +AnyMod : "\E[23;*~"
  155. key F12 +AnyMod : "\E[24;*~"
  156. # Work around dead keys
  157. key Space +Control : "\x00"
  158. # Some keys are used by konsole to cause operations.
  159. # The scroll* operations refer to the history buffer.
  160. key Up +Shift-AppScreen : scrollLineUp
  161. key PgUp +Shift-AppScreen : scrollPageUp
  162. key Home +Shift-AppScreen : scrollUpToTop
  163. key Down +Shift-AppScreen : scrollLineDown
  164. key PgDown +Shift-AppScreen : scrollPageDown
  165. key End +Shift-AppScreen : scrollDownToBottom
  166. ''';
  167. void main() {
  168. final tokens = tokenize(kDefaultKeytab).toList();
  169. final parser = KeytabParser()..addTokens(tokens);
  170. print(parser.result);
  171. }