keytab_default.dart 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import 'package:xterm/input/keytab/keytab_parse.dart';
  2. import 'package:xterm/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. key Right -Shift+AnyMod+Ansi-Mac : "\E[1;5C"
  61. key Left -Shift+AnyMod+Ansi-Mac : "\E[1;5D"
  62. key Right -Shift+AnyMod+Ansi+Mac : "\Ef"
  63. key Left -Shift+AnyMod+Ansi+Mac : "\Eb"
  64. key Up +Shift+AppScreen : "\E[1;*A"
  65. key Down +Shift+AppScreen : "\E[1;*B"
  66. key Left +Shift+AppScreen : "\E[1;*D"
  67. key Right +Shift+AppScreen : "\E[1;*C"
  68. # Keypad keys with NumLock ON
  69. # (see https://web.archive.org/web/20070807181942/http://www.nw.com/nw/WWW/products/wizcon/vt100.html
  70. # https://vt100.net/docs/vt100-ug/chapter3.html)
  71. #
  72. # Not enabled for now because it breaks the keypad in Vim.
  73. #
  74. #key 0 +KeyPad+AppKeyPad : "\EOp"
  75. #key 1 +KeyPad+AppKeyPad : "\EOq"
  76. #key 2 +KeyPad+AppKeyPad : "\EOr"
  77. #key 3 +KeyPad+AppKeyPad : "\EOs"
  78. #key 4 +KeyPad+AppKeyPad : "\EOt"
  79. #key 5 +KeyPad+AppKeyPad : "\EOu"
  80. #key 6 +KeyPad+AppKeyPad : "\EOv"
  81. #key 7 +KeyPad+AppKeyPad : "\EOw"
  82. #key 8 +KeyPad+AppKeyPad : "\EOx"
  83. #key 9 +KeyPad+AppKeyPad : "\EOy"
  84. #key + +KeyPad+AppKeyPad : "\EOl"
  85. #key - +KeyPad+AppKeyPad : "\EOm"
  86. #key . +KeyPad+AppKeyPad : "\EOn"
  87. #key * +KeyPad+AppKeyPad : "\EOM"
  88. #key Enter +KeyPad+AppKeyPad : "\r"
  89. # Keypad keys with NumLock Off
  90. key Up -Shift+Ansi+AppCuKeys+KeyPad : "\EOA"
  91. key Down -Shift+Ansi+AppCuKeys+KeyPad : "\EOB"
  92. key Right -Shift+Ansi+AppCuKeys+KeyPad : "\EOC"
  93. key Left -Shift+Ansi+AppCuKeys+KeyPad : "\EOD"
  94. key Up -Shift+Ansi-AppCuKeys+KeyPad : "\E[A"
  95. key Down -Shift+Ansi-AppCuKeys+KeyPad : "\E[B"
  96. key Right -Shift+Ansi-AppCuKeys+KeyPad : "\E[C"
  97. key Left -Shift+Ansi-AppCuKeys+KeyPad : "\E[D"
  98. key Home +AppCuKeys+KeyPad : "\EOH"
  99. key End +AppCuKeys+KeyPad : "\EOF"
  100. key Home -AppCuKeys+KeyPad : "\E[H"
  101. key End -AppCuKeys+KeyPad : "\E[F"
  102. key Insert +KeyPad : "\E[2~"
  103. key Delete +KeyPad : "\E[3~"
  104. key PgUp -Shift+KeyPad : "\E[5~"
  105. key PgDown -Shift+KeyPad : "\E[6~"
  106. # the key labelled 5 on the Keypad, is Qt::Key_Clear (a very intuitive
  107. # and discoverable name...)
  108. key Clear +KeyPad : "\E[E"
  109. # other grey PC keys
  110. key Enter+NewLine : "\r\n"
  111. key Enter-NewLine : "\r"
  112. key Home -AnyMod-AppCuKeys : "\E[H"
  113. key End -AnyMod-AppCuKeys : "\E[F"
  114. key Home -AnyMod+AppCuKeys : "\EOH"
  115. key End -AnyMod+AppCuKeys : "\EOF"
  116. key Home +AnyMod : "\E[1;*H"
  117. key End +AnyMod : "\E[1;*F"
  118. key Insert -AnyMod : "\E[2~"
  119. key Delete -AnyMod : "\E[3~"
  120. key Insert +AnyMod : "\E[2;*~"
  121. key Delete +AnyMod : "\E[3;*~"
  122. key PgUp -Shift-AnyMod : "\E[5~"
  123. key PgDown -Shift-AnyMod : "\E[6~"
  124. key PgUp -Shift+AnyMod : "\E[5;*~"
  125. key PgDown -Shift+AnyMod : "\E[6;*~"
  126. # Function keys
  127. key F1 -AnyMod : "\EOP"
  128. key F2 -AnyMod : "\EOQ"
  129. key F3 -AnyMod : "\EOR"
  130. key F4 -AnyMod : "\EOS"
  131. key F5 -AnyMod : "\E[15~"
  132. key F6 -AnyMod : "\E[17~"
  133. key F7 -AnyMod : "\E[18~"
  134. key F8 -AnyMod : "\E[19~"
  135. key F9 -AnyMod : "\E[20~"
  136. key F10 -AnyMod : "\E[21~"
  137. key F11 -AnyMod : "\E[23~"
  138. key F12 -AnyMod : "\E[24~"
  139. key F1 +AnyMod : "\EO*P"
  140. key F2 +AnyMod : "\EO*Q"
  141. key F3 +AnyMod : "\EO*R"
  142. key F4 +AnyMod : "\EO*S"
  143. key F5 +AnyMod : "\E[15;*~"
  144. key F6 +AnyMod : "\E[17;*~"
  145. key F7 +AnyMod : "\E[18;*~"
  146. key F8 +AnyMod : "\E[19;*~"
  147. key F9 +AnyMod : "\E[20;*~"
  148. key F10 +AnyMod : "\E[21;*~"
  149. key F11 +AnyMod : "\E[23;*~"
  150. key F12 +AnyMod : "\E[24;*~"
  151. # Work around dead keys
  152. key Space +Control : "\x00"
  153. # Some keys are used by konsole to cause operations.
  154. # The scroll* operations refer to the history buffer.
  155. key Up +Shift-AppScreen : scrollLineUp
  156. key PgUp +Shift-AppScreen : scrollPageUp
  157. key Home +Shift-AppScreen : scrollUpToTop
  158. key Down +Shift-AppScreen : scrollLineDown
  159. key PgDown +Shift-AppScreen : scrollPageDown
  160. key End +Shift-AppScreen : scrollDownToBottom
  161. ''';
  162. void main() {
  163. final tokens = tokenize(kDefaultKeytab).toList();
  164. final parser = KeytabParser()..addTokens(tokens);
  165. print(parser.result);
  166. }