fatty 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/.envrc +2 -0
  3. data/.simplecov +23 -0
  4. data/.yardopts +4 -0
  5. data/CHANGELOG.md +34 -0
  6. data/CHANGELOG.org +38 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +31 -0
  9. data/README.org +166 -0
  10. data/Rakefile +15 -0
  11. data/TODO.org +163 -0
  12. data/examples/markdown/native-markdown.md +370 -0
  13. data/examples/markdown/ox-gfm-markdown.md +373 -0
  14. data/examples/markdown/ox-gfm-markdown.org +376 -0
  15. data/exe/fatty +275 -0
  16. data/fatty.gemspec +42 -0
  17. data/lib/fatty/accept_env.rb +32 -0
  18. data/lib/fatty/action.rb +103 -0
  19. data/lib/fatty/action_environment.rb +42 -0
  20. data/lib/fatty/actionable.rb +73 -0
  21. data/lib/fatty/alert.rb +93 -0
  22. data/lib/fatty/ansi/renderer.rb +168 -0
  23. data/lib/fatty/ansi.rb +352 -0
  24. data/lib/fatty/colors/color.rb +379 -0
  25. data/lib/fatty/colors/pairs.rb +73 -0
  26. data/lib/fatty/colors/palette.rb +73 -0
  27. data/lib/fatty/colors/rgb.txt +788 -0
  28. data/lib/fatty/colors.rb +5 -0
  29. data/lib/fatty/config.rb +86 -0
  30. data/lib/fatty/config_files/config.yml +50 -0
  31. data/lib/fatty/config_files/help.md +120 -0
  32. data/lib/fatty/config_files/help.org +124 -0
  33. data/lib/fatty/config_files/keybindings.yml +49 -0
  34. data/lib/fatty/config_files/keydefs.yml +23 -0
  35. data/lib/fatty/config_files/themes/mono.yml +76 -0
  36. data/lib/fatty/config_files/themes/nordic.yml +77 -0
  37. data/lib/fatty/config_files/themes/solarized_dark.yml +77 -0
  38. data/lib/fatty/config_files/themes/terminal.yml +90 -0
  39. data/lib/fatty/config_files/themes/wordperfect.yml +77 -0
  40. data/lib/fatty/config_files/themes/wordperfect_light.yml +77 -0
  41. data/lib/fatty/core_ext/string.rb +21 -0
  42. data/lib/fatty/core_ext.rb +3 -0
  43. data/lib/fatty/counter.rb +81 -0
  44. data/lib/fatty/curses/context.rb +279 -0
  45. data/lib/fatty/curses/curses_coder.rb +684 -0
  46. data/lib/fatty/curses/event_source.rb +230 -0
  47. data/lib/fatty/curses/key_decoder.rb +183 -0
  48. data/lib/fatty/curses/patch.rb +116 -0
  49. data/lib/fatty/curses/window_styling.rb +32 -0
  50. data/lib/fatty/curses.rb +16 -0
  51. data/lib/fatty/env.rb +100 -0
  52. data/lib/fatty/help.rb +41 -0
  53. data/lib/fatty/history/entry.rb +71 -0
  54. data/lib/fatty/history.rb +289 -0
  55. data/lib/fatty/input_buffer.rb +998 -0
  56. data/lib/fatty/input_field.rb +507 -0
  57. data/lib/fatty/key_event.rb +342 -0
  58. data/lib/fatty/key_map.rb +392 -0
  59. data/lib/fatty/keymaps/emacs.rb +189 -0
  60. data/lib/fatty/log_formats/json.rb +47 -0
  61. data/lib/fatty/log_formats/text.rb +67 -0
  62. data/lib/fatty/logger.rb +142 -0
  63. data/lib/fatty/markdown/ansi_renderer.rb +373 -0
  64. data/lib/fatty/markdown/render.rb +22 -0
  65. data/lib/fatty/markdown.rb +4 -0
  66. data/lib/fatty/menu_env.rb +22 -0
  67. data/lib/fatty/mouse_event.rb +32 -0
  68. data/lib/fatty/output_buffer.rb +78 -0
  69. data/lib/fatty/pager.rb +801 -0
  70. data/lib/fatty/prompt.rb +40 -0
  71. data/lib/fatty/renderer/curses.rb +697 -0
  72. data/lib/fatty/renderer/truecolor.rb +607 -0
  73. data/lib/fatty/renderer.rb +419 -0
  74. data/lib/fatty/screen.rb +96 -0
  75. data/lib/fatty/search.rb +43 -0
  76. data/lib/fatty/session/alert_session.rb +52 -0
  77. data/lib/fatty/session/input_session.rb +99 -0
  78. data/lib/fatty/session/isearch_session.rb +172 -0
  79. data/lib/fatty/session/keytest_session.rb +236 -0
  80. data/lib/fatty/session/modal_session.rb +61 -0
  81. data/lib/fatty/session/output_session.rb +105 -0
  82. data/lib/fatty/session/popup_session.rb +540 -0
  83. data/lib/fatty/session/prompt_session.rb +157 -0
  84. data/lib/fatty/session/search_session.rb +136 -0
  85. data/lib/fatty/session/shell_session.rb +566 -0
  86. data/lib/fatty/session.rb +173 -0
  87. data/lib/fatty/sessions.rb +14 -0
  88. data/lib/fatty/terminal/popup_owner.rb +26 -0
  89. data/lib/fatty/terminal/progress.rb +374 -0
  90. data/lib/fatty/terminal.rb +1067 -0
  91. data/lib/fatty/themes/loader.rb +136 -0
  92. data/lib/fatty/themes/manager.rb +71 -0
  93. data/lib/fatty/themes/registry.rb +64 -0
  94. data/lib/fatty/themes/resolver.rb +224 -0
  95. data/lib/fatty/themes/themes.rb +131 -0
  96. data/lib/fatty/themes.rb +6 -0
  97. data/lib/fatty/version.rb +5 -0
  98. data/lib/fatty/view/alert_view.rb +14 -0
  99. data/lib/fatty/view/cursor_view.rb +18 -0
  100. data/lib/fatty/view/input_view.rb +9 -0
  101. data/lib/fatty/view/output_view.rb +9 -0
  102. data/lib/fatty/view/status_view.rb +14 -0
  103. data/lib/fatty/view.rb +33 -0
  104. data/lib/fatty/viewport.rb +90 -0
  105. data/lib/fatty/views.rb +9 -0
  106. data/lib/fatty.rb +55 -0
  107. data/sig/fatty.rbs +4 -0
  108. metadata +250 -0
@@ -0,0 +1,684 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # These are the constants the Curses library defines for keys:
5
+ #
6
+ # - KEY_A1 :: A1 Upper left of keypad
7
+ # - KEY_A3 :: A3 Upper right of keypad
8
+ # - KEY_B2 :: B2 Center of keypad
9
+ # - KEY_BACKSPACE :: BACKSPACE Backspace
10
+ # - KEY_BEG :: BEG Beginning key
11
+ # - KEY_BREAK :: BREAK Break key
12
+ # - KEY_BTAB :: KEY_BTAB Back tab key
13
+ # - KEY_C1 :: C1 Lower left of keypad
14
+ # - KEY_C3 :: C3 Lower right of keypad
15
+ # - KEY_CANCEL :: CANCEL Cancel key
16
+ # - KEY_CATAB :: CATAB Clear all tabs
17
+ # - KEY_CLEAR :: CLEAR Clear Screen
18
+ # - KEY_CLOSE :: CLOSE Close key
19
+ # - KEY_COMMAND :: COMMAND Cmd (command) key
20
+ # - KEY_COPY :: COPY Copy key
21
+ # - KEY_CREATE :: CREATE Create key
22
+ # - KEY_CTAB :: CTAB Clear tab
23
+ # - KEY_CTRL_A :: Control A
24
+ # - KEY_CTRL_B :: Control B
25
+ # - KEY_CTRL_C :: Control C
26
+ # - KEY_CTRL_D :: Control D
27
+ # - KEY_CTRL_E :: Control E
28
+ # - KEY_CTRL_F :: Control F
29
+ # - KEY_CTRL_G :: Control G
30
+ # - KEY_CTRL_H :: Control H
31
+ # - KEY_CTRL_I :: Control I
32
+ # - KEY_CTRL_J :: Control J
33
+ # - KEY_CTRL_K :: Control K
34
+ # - KEY_CTRL_L :: Control L
35
+ # - KEY_CTRL_M :: Control M
36
+ # - KEY_CTRL_N :: Control N
37
+ # - KEY_CTRL_O :: Control O
38
+ # - KEY_CTRL_P :: Control P
39
+ # - KEY_CTRL_Q :: Control Q
40
+ # - KEY_CTRL_R :: Control R
41
+ # - KEY_CTRL_S :: Control S
42
+ # - KEY_CTRL_T :: Control T
43
+ # - KEY_CTRL_U :: Control U
44
+ # - KEY_CTRL_V :: Control V
45
+ # - KEY_CTRL_W :: Control W
46
+ # - KEY_CTRL_X :: Control X
47
+ # - KEY_CTRL_Y :: Control Y
48
+ # - KEY_CTRL_Z :: Control Z
49
+ # - KEY_DC :: DC Delete character
50
+ # - KEY_DL :: DL Delete line
51
+ # - KEY_DOWN :: DOWN the down arrow key
52
+ # - KEY_EIC :: EIC Enter insert char mode
53
+ # - KEY_END :: END End key
54
+ # - KEY_ENTER :: ENTER Enter or send
55
+ # - KEY_EOL :: EOL Clear to end of line
56
+ # - KEY_EOS :: EOS Clear to end of screen
57
+ # - KEY_EXIT :: EXIT Exit key
58
+ # - KEY_F0 :: Function 0
59
+ # - KEY_F1 :: Function 1
60
+ # - KEY_F10 :: Function 10
61
+ # - KEY_F11 :: Function 11
62
+ # - KEY_F12 :: Function 12
63
+ # - KEY_F13 :: Function 13
64
+ # - KEY_F14 :: Function 14
65
+ # - KEY_F15 :: Function 15
66
+ # - KEY_F16 :: Function 16
67
+ # - KEY_F17 :: Function 17
68
+ # - KEY_F18 :: Function 18
69
+ # - KEY_F19 :: Function 19
70
+ # - KEY_F2 :: Function 2
71
+ # - KEY_F20 :: Function 20
72
+ # - KEY_F21 :: Function 21
73
+ # - KEY_F22 :: Function 22
74
+ # - KEY_F23 :: Function 23
75
+ # - KEY_F24 :: Function 24
76
+ # - KEY_F25 :: Function 25
77
+ # - KEY_F26 :: Function 26
78
+ # - KEY_F27 :: Function 27
79
+ # - KEY_F28 :: Function 28
80
+ # - KEY_F29 :: Function 29
81
+ # - KEY_F3 :: Function 3
82
+ # - KEY_F30 :: Function 30
83
+ # - KEY_F31 :: Function 31
84
+ # - KEY_F32 :: Function 32
85
+ # - KEY_F33 :: Function 33
86
+ # - KEY_F34 :: Function 34
87
+ # - KEY_F35 :: Function 35
88
+ # - KEY_F36 :: Function 36
89
+ # - KEY_F37 :: Function 37
90
+ # - KEY_F38 :: Function 38
91
+ # - KEY_F39 :: Function 39
92
+ # - KEY_F4 :: Function 4
93
+ # - KEY_F40 :: Function 40
94
+ # - KEY_F41 :: Function 41
95
+ # - KEY_F42 :: Function 42
96
+ # - KEY_F43 :: Function 43
97
+ # - KEY_F44 :: Function 44
98
+ # - KEY_F45 :: Function 45
99
+ # - KEY_F46 :: Function 46
100
+ # - KEY_F47 :: Function 47
101
+ # - KEY_F48 :: Function 48
102
+ # - KEY_F49 :: Function 49
103
+ # - KEY_F5 :: Function 5
104
+ # - KEY_F50 :: Function 50
105
+ # - KEY_F51 :: Function 51
106
+ # - KEY_F52 :: Function 52
107
+ # - KEY_F53 :: Function 53
108
+ # - KEY_F54 :: Function 54
109
+ # - KEY_F55 :: Function 55
110
+ # - KEY_F56 :: Function 56
111
+ # - KEY_F57 :: Function 57
112
+ # - KEY_F58 :: Function 58
113
+ # - KEY_F59 :: Function 59
114
+ # - KEY_F6 :: Function 6
115
+ # - KEY_F60 :: Function 60
116
+ # - KEY_F61 :: Function 61
117
+ # - KEY_F62 :: Function 62
118
+ # - KEY_F63 :: Function 63
119
+ # - KEY_F7 :: Function 7
120
+ # - KEY_F8 :: Function 8
121
+ # - KEY_F9 :: Function 9
122
+ # - KEY_FIND :: FIND Find key
123
+ # - KEY_HELP :: HELP Help key
124
+ # - KEY_HOME :: HOME Home key (upward+left arrow)
125
+ # - KEY_IC :: IC Insert char or enter insert mode
126
+ # - KEY_IL :: IL Insert line
127
+ # - KEY_LEFT :: LEFT the left arrow key
128
+ # - KEY_LL :: LL Home down or bottom (lower left)
129
+ # - KEY_MARK :: MARK Mark key
130
+ # - KEY_MAX :: MAX The maximum allowed curses key value.
131
+ # - KEY_MESSAGE :: MESSAGE Message key
132
+ # - KEY_MIN :: MIN The minimum allowed curses key value.
133
+ # - KEY_MOUSE :: MOUSE Mouse event read
134
+ # - KEY_MOVE :: MOVE Move key
135
+ # - KEY_NEXT :: NEXT Next object key
136
+ # - KEY_NPAGE :: NPAGE Next page
137
+ # - KEY_OPEN :: OPEN Open key
138
+ # - KEY_OPTIONS :: OPTIONS Options key
139
+ # - KEY_PPAGE :: PPAGE Previous page
140
+ # - KEY_PREVIOUS :: PREVIOUS Previous object key
141
+ # - KEY_PRINT :: PRINT Print or copy
142
+ # - KEY_REDO :: REDO Redo key
143
+ # - KEY_REFERENCE :: REFERENCE Reference key
144
+ # - KEY_REFRESH :: REFRESH Refresh key
145
+ # - KEY_REPLACE :: REPLACE Replace key
146
+ # - KEY_RESET :: RESET Reset or hard reset
147
+ # - KEY_RESIZE :: RESIZE Screen Resized
148
+ # - KEY_RESTART :: RESTART Restart key
149
+ # - KEY_RESUME :: RESUME Resume key
150
+ # - KEY_RIGHT :: RIGHT the right arrow key
151
+ # - KEY_SAVE :: SAVE Save key
152
+ # - KEY_SBEG :: SBEG Shifted beginning key
153
+ # - KEY_SCANCEL :: SCANCEL Shifted cancel key
154
+ # - KEY_SCOMMAND :: SCOMMAND Shifted command key
155
+ # - KEY_SCOPY :: SCOPY Shifted copy key
156
+ # - KEY_SCREATE :: SCREATE Shifted create key
157
+ # - KEY_SDC :: SDC Shifted delete char key
158
+ # - KEY_SDL :: SDL Shifted delete line key
159
+ # - KEY_SELECT :: SELECT Select key
160
+ # - KEY_SEND :: SEND Shifted end key
161
+ # - KEY_SEOL :: SEOL Shifted clear line key
162
+ # - KEY_SEXIT :: SEXIT Shifted exit key
163
+ # - KEY_SF :: SF Scroll 1 line forward
164
+ # - KEY_SFIND :: SFIND Shifted find key
165
+ # - KEY_SHELP :: SHELP Shifted help key
166
+ # - KEY_SHOME :: SHOME Shifted home key
167
+ # - KEY_SIC :: SIC Shifted input key
168
+ # - KEY_SLEFT :: SLEFT Shifted left arrow key
169
+ # - KEY_SMESSAGE :: SMESSAGE Shifted message key
170
+ # - KEY_SMOVE :: SMOVE Shifted move key
171
+ # - KEY_SNEXT :: SNEXT Shifted next key
172
+ # - KEY_SOPTIONS :: SOPTIONS Shifted options key
173
+ # - KEY_SPREVIOUS :: SPREVIOUS Shifted previous key
174
+ # - KEY_SPRINT :: SPRINT Shifted print key
175
+ # - KEY_SR :: SR Scroll 1 line backward (reverse)
176
+ # - KEY_SREDO :: SREDO Shifted redo key
177
+ # - KEY_SREPLACE :: SREPLACE Shifted replace key
178
+ # - KEY_SRESET :: SRESET Soft (partial) reset
179
+ # - KEY_SRIGHT :: SRIGHT Shifted right arrow key
180
+ # - KEY_SRSUME :: SRSUME Shifted resume key
181
+ # - KEY_SSAVE :: SSAVE Shifted save key
182
+ # - KEY_SSUSPEND :: SSUSPEND Shifted suspend key
183
+ # - KEY_STAB :: STAB Set tab
184
+ # - KEY_SUNDO :: SUNDO Shifted undo key
185
+ # - KEY_SUSPEND :: SUSPEND Suspend key
186
+ # - KEY_UNDO :: UNDO Undo key
187
+ # - KEY_UP :: UP the up arrow key
188
+
189
+ # These are the integers returned by the constants in my experiments.
190
+ #
191
+ # KEY_SYM_MAP = {
192
+ # 409 => :KEY_MOUSE,
193
+ # 257 => :KEY_BREAK,
194
+ # 258 => :KEY_DOWN,
195
+ # 259 => :KEY_UP,
196
+ # 260 => :KEY_LEFT,
197
+ # 261 => :KEY_RIGHT,
198
+ # 262 => :KEY_HOME,
199
+ # 263 => :KEY_BACKSPACE,
200
+ # 264 => :KEY_F0,
201
+ # 265 => :KEY_F1,
202
+ # 266 => :KEY_F2,
203
+ # 267 => :KEY_F3,
204
+ # 268 => :KEY_F4,
205
+ # 269 => :KEY_F5,
206
+ # 270 => :KEY_F6,
207
+ # 271 => :KEY_F7,
208
+ # 272 => :KEY_F8,
209
+ # 273 => :KEY_F9,
210
+ # 274 => :KEY_F10,
211
+ # 275 => :KEY_F11,
212
+ # 276 => :KEY_F12,
213
+ # 277 => :KEY_F13,
214
+ # 278 => :KEY_F14,
215
+ # 279 => :KEY_F15,
216
+ # 280 => :KEY_F16,
217
+ # 281 => :KEY_F17,
218
+ # 282 => :KEY_F18,
219
+ # 283 => :KEY_F19,
220
+ # 284 => :KEY_F20,
221
+ # 285 => :KEY_F21,
222
+ # 286 => :KEY_F22,
223
+ # 287 => :KEY_F23,
224
+ # 288 => :KEY_F24,
225
+ # 289 => :KEY_F25,
226
+ # 290 => :KEY_F26,
227
+ # 291 => :KEY_F27,
228
+ # 292 => :KEY_F28,
229
+ # 293 => :KEY_F29,
230
+ # 294 => :KEY_F30,
231
+ # 295 => :KEY_F31,
232
+ # 296 => :KEY_F32,
233
+ # 297 => :KEY_F33,
234
+ # 298 => :KEY_F34,
235
+ # 299 => :KEY_F35,
236
+ # 300 => :KEY_F36,
237
+ # 301 => :KEY_F37,
238
+ # 302 => :KEY_F38,
239
+ # 303 => :KEY_F39,
240
+ # 304 => :KEY_F40,
241
+ # 305 => :KEY_F41,
242
+ # 306 => :KEY_F42,
243
+ # 307 => :KEY_F43,
244
+ # 308 => :KEY_F44,
245
+ # 309 => :KEY_F45,
246
+ # 310 => :KEY_F46,
247
+ # 311 => :KEY_F47,
248
+ # 312 => :KEY_F48,
249
+ # 313 => :KEY_F49,
250
+ # 314 => :KEY_F50,
251
+ # 315 => :KEY_F51,
252
+ # 316 => :KEY_F52,
253
+ # 317 => :KEY_F53,
254
+ # 318 => :KEY_F54,
255
+ # 319 => :KEY_F55,
256
+ # 320 => :KEY_F56,
257
+ # 321 => :KEY_F57,
258
+ # 322 => :KEY_F58,
259
+ # 323 => :KEY_F59,
260
+ # 324 => :KEY_F60,
261
+ # 325 => :KEY_F61,
262
+ # 326 => :KEY_F62,
263
+ # 327 => :KEY_F63,
264
+ # 328 => :KEY_DL,
265
+ # 329 => :KEY_IL,
266
+ # 330 => :KEY_DC,
267
+ # 331 => :KEY_IC,
268
+ # 332 => :KEY_EIC,
269
+ # 333 => :KEY_CLEAR,
270
+ # 334 => :KEY_EOS,
271
+ # 335 => :KEY_EOL,
272
+ # 336 => :KEY_SF,
273
+ # 337 => :KEY_SR,
274
+ # 338 => :KEY_NPAGE,
275
+ # 339 => :KEY_PPAGE,
276
+ # 340 => :KEY_STAB,
277
+ # 341 => :KEY_CTAB,
278
+ # 342 => :KEY_CATAB,
279
+ # 343 => :KEY_ENTER,
280
+ # 344 => :KEY_SRESET,
281
+ # 345 => :KEY_RESET,
282
+ # 346 => :KEY_PRINT,
283
+ # 347 => :KEY_LL,
284
+ # 348 => :KEY_A1,
285
+ # 349 => :KEY_A3,
286
+ # 350 => :KEY_B2,
287
+ # 351 => :KEY_C1,
288
+ # 352 => :KEY_C3,
289
+ # 353 => :KEY_BTAB,
290
+ # 354 => :KEY_BEG,
291
+ # 355 => :KEY_CANCEL,
292
+ # 356 => :KEY_CLOSE,
293
+ # 357 => :KEY_COMMAND,
294
+ # 358 => :KEY_COPY,
295
+ # 359 => :KEY_CREATE,
296
+ # 360 => :KEY_END,
297
+ # 361 => :KEY_EXIT,
298
+ # 362 => :KEY_FIND,
299
+ # 363 => :KEY_HELP,
300
+ # 364 => :KEY_MARK,
301
+ # 365 => :KEY_MESSAGE,
302
+ # 366 => :KEY_MOVE,
303
+ # 367 => :KEY_NEXT,
304
+ # 368 => :KEY_OPEN,
305
+ # 369 => :KEY_OPTIONS,
306
+ # 370 => :KEY_PREVIOUS,
307
+ # 371 => :KEY_REDO,
308
+ # 372 => :KEY_REFERENCE,
309
+ # 373 => :KEY_REFRESH,
310
+ # 374 => :KEY_REPLACE,
311
+ # 375 => :KEY_RESTART,
312
+ # 376 => :KEY_RESUME,
313
+ # 377 => :KEY_SAVE,
314
+ # 378 => :KEY_SBEG,
315
+ # 379 => :KEY_SCANCEL,
316
+ # 380 => :KEY_SCOMMAND,
317
+ # 381 => :KEY_SCOPY,
318
+ # 382 => :KEY_SCREATE,
319
+ # 383 => :KEY_SDC,
320
+ # 384 => :KEY_SDL,
321
+ # 385 => :KEY_SELECT,
322
+ # 386 => :KEY_SEND,
323
+ # 387 => :KEY_SEOL,
324
+ # 388 => :KEY_SEXIT,
325
+ # 389 => :KEY_SFIND,
326
+ # 390 => :KEY_SHELP,
327
+ # 391 => :KEY_SHOME,
328
+ # 392 => :KEY_SIC,
329
+ # 393 => :KEY_SLEFT,
330
+ # 394 => :KEY_SMESSAGE,
331
+ # 395 => :KEY_SMOVE,
332
+ # 396 => :KEY_SNEXT,
333
+ # 397 => :KEY_SOPTIONS,
334
+ # 398 => :KEY_SPREVIOUS,
335
+ # 399 => :KEY_SPRINT,
336
+ # 400 => :KEY_SREDO,
337
+ # 401 => :KEY_SREPLACE,
338
+ # 402 => :KEY_SRIGHT,
339
+ # 403 => :KEY_SRSUME,
340
+ # 404 => :KEY_SSAVE,
341
+ # 405 => :KEY_SSUSPEND,
342
+ # 406 => :KEY_SUNDO,
343
+ # 407 => :KEY_SUSPEND,
344
+ # 408 => :KEY_UNDO,
345
+ # 410 => :KEY_RESIZE,
346
+ # 511 => :KEY_MAX,
347
+ # 1 => :KEY_CTRL_A,
348
+ # 2 => :KEY_CTRL_B,
349
+ # 3 => :KEY_CTRL_C,
350
+ # 4 => :KEY_CTRL_D,
351
+ # 5 => :KEY_CTRL_E,
352
+ # 6 => :KEY_CTRL_F,
353
+ # 7 => :KEY_CTRL_G,
354
+ # 8 => :KEY_CTRL_H,
355
+ # 9 => :KEY_CTRL_I,
356
+ # 10 => :KEY_CTRL_J,
357
+ # 11 => :KEY_CTRL_K,
358
+ # 12 => :KEY_CTRL_L,
359
+ # 13 => :KEY_CTRL_M,
360
+ # 14 => :KEY_CTRL_N,
361
+ # 15 => :KEY_CTRL_O,
362
+ # 16 => :KEY_CTRL_P,
363
+ # 17 => :KEY_CTRL_Q,
364
+ # 18 => :KEY_CTRL_R,
365
+ # 19 => :KEY_CTRL_S,
366
+ # 20 => :KEY_CTRL_T,
367
+ # 21 => :KEY_CTRL_U,
368
+ # 22 => :KEY_CTRL_V,
369
+ # 23 => :KEY_CTRL_W,
370
+ # 24 => :KEY_CTRL_X,
371
+ # 25 => :KEY_CTRL_Y,
372
+ # 26 => :KEY_CTRL_Z
373
+ # }
374
+
375
+ # MAP = {
376
+ # 9 => Fatty::KeyEvent.new(key: :tab),
377
+ # 353 => Fatty::KeyEvent.new(key: :backtab),
378
+ # 265 => Fatty::KeyEvent.new(key: :f1),
379
+ # 277 => Fatty::KeyEvent.new(key: :f1, shift: true),
380
+ # 289 => Fatty::KeyEvent.new(key: :f1, ctrl: true),
381
+ # 301 => Fatty::KeyEvent.new(key: :f1, shift: true, ctrl: true),
382
+ # 313 => Fatty::KeyEvent.new(key: :f1, meta: true),
383
+ # 325 => Fatty::KeyEvent.new(key: :f1, shift: true, meta: true),
384
+ # 266 => Fatty::KeyEvent.new(key: :f2),
385
+ # 278 => Fatty::KeyEvent.new(key: :f2, shift: true),
386
+ # 290 => Fatty::KeyEvent.new(key: :f2, ctrl: true),
387
+ # 302 => Fatty::KeyEvent.new(key: :f2, shift: true, ctrl: true),
388
+ # 314 => Fatty::KeyEvent.new(key: :f2, meta: true),
389
+ # 326 => Fatty::KeyEvent.new(key: :f2, shift: true, meta: true),
390
+ # 267 => Fatty::KeyEvent.new(key: :f3),
391
+ # 279 => Fatty::KeyEvent.new(key: :f3, shift: true),
392
+ # 291 => Fatty::KeyEvent.new(key: :f3, ctrl: true),
393
+ # 303 => Fatty::KeyEvent.new(key: :f3, shift: true, ctrl: true),
394
+ # 315 => Fatty::KeyEvent.new(key: :f3, meta: true),
395
+ # 327 => Fatty::KeyEvent.new(key: :f3, shift: true, meta: true),
396
+ # 268 => Fatty::KeyEvent.new(key: :f4),
397
+ # 280 => Fatty::KeyEvent.new(key: :f4, shift: true),
398
+ # 292 => Fatty::KeyEvent.new(key: :f4, ctrl: true),
399
+ # 304 => Fatty::KeyEvent.new(key: :f4, shift: true, ctrl: true),
400
+ # 316 => Fatty::KeyEvent.new(key: :f4, meta: true),
401
+ # 328 => Fatty::KeyEvent.new(key: :f4, shift: true, meta: true),
402
+ # 269 => Fatty::KeyEvent.new(key: :f5),
403
+ # 281 => Fatty::KeyEvent.new(key: :f5, shift: true),
404
+ # 293 => Fatty::KeyEvent.new(key: :f5, ctrl: true),
405
+ # 305 => Fatty::KeyEvent.new(key: :f5, shift: true, ctrl: true),
406
+ # 317 => Fatty::KeyEvent.new(key: :f5, meta: true),
407
+ # 329 => Fatty::KeyEvent.new(key: :f5, shift: true, meta: true),
408
+ # 270 => Fatty::KeyEvent.new(key: :f6),
409
+ # 282 => Fatty::KeyEvent.new(key: :f6, shift: true),
410
+ # 294 => Fatty::KeyEvent.new(key: :f6, ctrl: true),
411
+ # 306 => Fatty::KeyEvent.new(key: :f6, shift: true, ctrl: true),
412
+ # 318 => Fatty::KeyEvent.new(key: :f6, meta: true),
413
+ # # 330 duplicates the :delete key
414
+ # # 330 => Fatty::KeyEvent.new(key: :f6, shift: true, meta: true),
415
+ # 271 => Fatty::KeyEvent.new(key: :f7),
416
+ # 283 => Fatty::KeyEvent.new(key: :f7, shift: true),
417
+ # 295 => Fatty::KeyEvent.new(key: :f7, ctrl: true),
418
+ # 307 => Fatty::KeyEvent.new(key: :f7, shift: true, ctrl: true),
419
+ # 319 => Fatty::KeyEvent.new(key: :f7, meta: true),
420
+ # # 331 duplicates the :insert key
421
+ # # 331 => Fatty::KeyEvent.new(key: :f7, shift: true, meta: true),
422
+ # 272 => Fatty::KeyEvent.new(key: :f8),
423
+ # 284 => Fatty::KeyEvent.new(key: :f8, shift: true),
424
+ # 296 => Fatty::KeyEvent.new(key: :f8, ctrl: true),
425
+ # 308 => Fatty::KeyEvent.new(key: :f8, shift: true, ctrl: true),
426
+ # 320 => Fatty::KeyEvent.new(key: :f8, meta: true),
427
+ # 332 => Fatty::KeyEvent.new(key: :f8, shift: true, meta: true),
428
+ # 273 => Fatty::KeyEvent.new(key: :f9),
429
+ # 285 => Fatty::KeyEvent.new(key: :f9, shift: true),
430
+ # 297 => Fatty::KeyEvent.new(key: :f9, ctrl: true),
431
+ # 309 => Fatty::KeyEvent.new(key: :f9, shift: true, ctrl: true),
432
+ # 321 => Fatty::KeyEvent.new(key: :f9, meta: true),
433
+ # 333 => Fatty::KeyEvent.new(key: :f9, shift: true, meta: true),
434
+ # 274 => Fatty::KeyEvent.new(key: :f10),
435
+ # 286 => Fatty::KeyEvent.new(key: :f10, shift: true),
436
+ # 298 => Fatty::KeyEvent.new(key: :f10, ctrl: true),
437
+ # 310 => Fatty::KeyEvent.new(key: :f10, shift: true, ctrl: true),
438
+ # 322 => Fatty::KeyEvent.new(key: :f10, meta: true),
439
+ # 334 => Fatty::KeyEvent.new(key: :f10, shift: true, meta: true),
440
+ # 275 => Fatty::KeyEvent.new(key: :f11),
441
+ # 287 => Fatty::KeyEvent.new(key: :f11, shift: true),
442
+ # 299 => Fatty::KeyEvent.new(key: :f11, ctrl: true),
443
+ # 311 => Fatty::KeyEvent.new(key: :f11, shift: true, ctrl: true),
444
+ # 323 => Fatty::KeyEvent.new(key: :f11, meta: true),
445
+ # 335 => Fatty::KeyEvent.new(key: :f11, shift: true, meta: true),
446
+ # 276 => Fatty::KeyEvent.new(key: :f12),
447
+ # 288 => Fatty::KeyEvent.new(key: :f12, shift: true),
448
+ # 300 => Fatty::KeyEvent.new(key: :f12, ctrl: true),
449
+ # 312 => Fatty::KeyEvent.new(key: :f12, shift: true, ctrl: true),
450
+ # 324 => Fatty::KeyEvent.new(key: :f12, meta: true),
451
+ # # 336 duplicates the :down key
452
+ # # 336 => Fatty::KeyEvent.new(key: :f12, shift: true, meta: true),
453
+
454
+ # 331 => Fatty::KeyEvent.new(key: :insert),
455
+ # 392 => Fatty::KeyEvent.new(key: :insert, shift: true),
456
+ # 550 => Fatty::KeyEvent.new(key: :insert, meta: true),
457
+ # 551 => Fatty::KeyEvent.new(key: :insert, shift: true, meta: true),
458
+ # 552 => Fatty::KeyEvent.new(key: :insert, ctrl: true),
459
+ # 553 => Fatty::KeyEvent.new(key: :insert, shift: true, ctrl: true),
460
+ # 330 => Fatty::KeyEvent.new(key: :delete),
461
+ # 383 => Fatty::KeyEvent.new(key: :delete, shift: true),
462
+ # 531 => Fatty::KeyEvent.new(key: :delete, meta: true),
463
+ # 532 => Fatty::KeyEvent.new(key: :delete, shift: true, meta: true),
464
+ # 533 => Fatty::KeyEvent.new(key: :delete, ctrl: true),
465
+ # 534 => Fatty::KeyEvent.new(key: :delete, shift: true, ctrl: true),
466
+ # 262 => Fatty::KeyEvent.new(key: :home),
467
+ # 391 => Fatty::KeyEvent.new(key: :home, shift: true),
468
+ # 545 => Fatty::KeyEvent.new(key: :home, meta: true),
469
+ # 546 => Fatty::KeyEvent.new(key: :home, shift: true, meta: true),
470
+ # 547 => Fatty::KeyEvent.new(key: :home, ctrl: true),
471
+ # 548 => Fatty::KeyEvent.new(key: :home, shift: true, ctrl: true),
472
+ # 360 => Fatty::KeyEvent.new(key: :end),
473
+ # 386 => Fatty::KeyEvent.new(key: :end, shift: true),
474
+ # 540 => Fatty::KeyEvent.new(key: :end, meta: true),
475
+ # 541 => Fatty::KeyEvent.new(key: :end, shift: true, meta: true),
476
+ # 542 => Fatty::KeyEvent.new(key: :end, ctrl: true),
477
+ # 543 => Fatty::KeyEvent.new(key: :end, shift: true, ctrl: true),
478
+ # 339 => Fatty::KeyEvent.new(key: :page_up),
479
+ # 398 => Fatty::KeyEvent.new(key: :page_up, shift: true),
480
+ # 565 => Fatty::KeyEvent.new(key: :page_up, meta: true),
481
+ # 566 => Fatty::KeyEvent.new(key: :page_up, shift: true, meta: true),
482
+ # 567 => Fatty::KeyEvent.new(key: :page_up, ctrl: true),
483
+ # 568 => Fatty::KeyEvent.new(key: :page_up, shift: true, ctrl: true),
484
+ # 338 => Fatty::KeyEvent.new(key: :page_down),
485
+ # 396 => Fatty::KeyEvent.new(key: :page_down, shift: true),
486
+ # 560 => Fatty::KeyEvent.new(key: :page_down, meta: true),
487
+ # 561 => Fatty::KeyEvent.new(key: :page_down, shift: true, meta: true),
488
+ # 562 => Fatty::KeyEvent.new(key: :page_down, ctrl: true),
489
+ # 563 => Fatty::KeyEvent.new(key: :page_down, shift: true, ctrl: true),
490
+
491
+ # 258 => Fatty::KeyEvent.new(key: :down),
492
+ # 336 => Fatty::KeyEvent.new(key: :down, shift: true),
493
+ # 535 => Fatty::KeyEvent.new(key: :down, meta: true),
494
+ # 536 => Fatty::KeyEvent.new(key: :down, shift: true, meta: true),
495
+ # 537 => Fatty::KeyEvent.new(key: :down, ctrl: true),
496
+ # 538 => Fatty::KeyEvent.new(key: :down, shift: true, ctrl: true),
497
+ # 259 => Fatty::KeyEvent.new(key: :up),
498
+ # 337 => Fatty::KeyEvent.new(key: :up, shift: true),
499
+ # 576 => Fatty::KeyEvent.new(key: :up, meta: true),
500
+ # 577 => Fatty::KeyEvent.new(key: :up, shift: true, meta: true),
501
+ # 578 => Fatty::KeyEvent.new(key: :up, ctrl: true),
502
+ # 579 => Fatty::KeyEvent.new(key: :up, shift: true, ctrl: true),
503
+ # 260 => Fatty::KeyEvent.new(key: :left),
504
+ # 393 => Fatty::KeyEvent.new(key: :left, shift: true),
505
+ # 555 => Fatty::KeyEvent.new(key: :left, meta: true),
506
+ # 556 => Fatty::KeyEvent.new(key: :left, shift: true, meta: true),
507
+ # 557 => Fatty::KeyEvent.new(key: :left, ctrl: true),
508
+ # 558 => Fatty::KeyEvent.new(key: :left, shift: true, ctrl: true),
509
+ # 261 => Fatty::KeyEvent.new(key: :right),
510
+ # 402 => Fatty::KeyEvent.new(key: :right, shift: true),
511
+ # 570 => Fatty::KeyEvent.new(key: :right, meta: true),
512
+ # 571 => Fatty::KeyEvent.new(key: :right, shift: true, meta: true),
513
+ # 572 => Fatty::KeyEvent.new(key: :right, ctrl: true),
514
+ # 573 => Fatty::KeyEvent.new(key: :right, shift: true, ctrl: true),
515
+ # }
516
+
517
+ # require_relative "../../key_event"
518
+
519
+ require 'curses'
520
+
521
+ module Fatty
522
+ module Curses
523
+ # These come from special handling in KeyDecoder#fallback_decode.
524
+ COMMON_KEYNAMES = %i[
525
+ enter
526
+ escape
527
+ return
528
+ space
529
+ ].freeze
530
+
531
+ # After this list is read in, return an Array of the known key names.
532
+ def self.valid_keynames
533
+ (
534
+ CURSES_TO_EVENT.values.filter_map(&:key) +
535
+ COMMON_KEYNAMES
536
+ ).map(&:to_s).uniq.sort
537
+ end
538
+
539
+ CURSES_TO_EVENT = {
540
+ # Special case for TAB. Curses::KEY_CTRL_I may not get defined on all
541
+ # platforms.
542
+ 9 => Fatty::KeyEvent.new(key: :tab, raw: 9),
543
+ ::Curses::KEY_RESIZE => Fatty::KeyEvent.new(key: :resize, raw: ::Curses::KEY_RESIZE),
544
+ ::Curses::KEY_BTAB => Fatty::KeyEvent.new(key: :tab, shift: true, raw: ::Curses::KEY_BTAB),
545
+ ::Curses::KEY_BACKSPACE => Fatty::KeyEvent.new(key: :backspace, raw: ::Curses::KEY_BACKSPACE),
546
+ ::Curses::KEY_F1 => Fatty::KeyEvent.new(key: :f1, raw: ::Curses::KEY_F1),
547
+ ::Curses::KEY_F13 => Fatty::KeyEvent.new(key: :f1, shift: true, raw: ::Curses::KEY_F13),
548
+ ::Curses::KEY_F25 => Fatty::KeyEvent.new(key: :f1, ctrl: true, raw: ::Curses::KEY_F25),
549
+ ::Curses::KEY_F37 => Fatty::KeyEvent.new(key: :f1, shift: true, ctrl: true, raw: ::Curses::KEY_F37),
550
+ ::Curses::KEY_F49 => Fatty::KeyEvent.new(key: :f1, meta: true, raw: ::Curses::KEY_F49),
551
+ ::Curses::KEY_F61 => Fatty::KeyEvent.new(key: :f1, shift: true, meta: true, raw: ::Curses::KEY_F61),
552
+ ::Curses::KEY_F2 => Fatty::KeyEvent.new(key: :f2, raw: ::Curses::KEY_F2),
553
+ ::Curses::KEY_F14 => Fatty::KeyEvent.new(key: :f2, shift: true, raw: ::Curses::KEY_F14),
554
+ ::Curses::KEY_F26 => Fatty::KeyEvent.new(key: :f2, ctrl: true, raw: ::Curses::KEY_F26),
555
+ ::Curses::KEY_F38 => Fatty::KeyEvent.new(key: :f2, shift: true, ctrl: true, raw: ::Curses::KEY_F38),
556
+ ::Curses::KEY_F50 => Fatty::KeyEvent.new(key: :f2, meta: true, raw: ::Curses::KEY_F50),
557
+ ::Curses::KEY_F62 => Fatty::KeyEvent.new(key: :f2, shift: true, meta: true, raw: ::Curses::KEY_F62),
558
+ ::Curses::KEY_F3 => Fatty::KeyEvent.new(key: :f3, raw: ::Curses::KEY_F3),
559
+ ::Curses::KEY_F15 => Fatty::KeyEvent.new(key: :f3, shift: true, raw: ::Curses::KEY_F15),
560
+ ::Curses::KEY_F27 => Fatty::KeyEvent.new(key: :f3, ctrl: true, raw: ::Curses::KEY_F27),
561
+ ::Curses::KEY_F39 => Fatty::KeyEvent.new(key: :f3, shift: true, ctrl: true, raw: ::Curses::KEY_F39),
562
+ ::Curses::KEY_F51 => Fatty::KeyEvent.new(key: :f3, meta: true, raw: ::Curses::KEY_F51),
563
+ ::Curses::KEY_F63 => Fatty::KeyEvent.new(key: :f3, shift: true, meta: true, raw: ::Curses::KEY_F63),
564
+ ::Curses::KEY_F4 => Fatty::KeyEvent.new(key: :f4, raw: ::Curses::KEY_F4),
565
+ ::Curses::KEY_F16 => Fatty::KeyEvent.new(key: :f4, shift: true, raw: ::Curses::KEY_F16),
566
+ ::Curses::KEY_F28 => Fatty::KeyEvent.new(key: :f4, ctrl: true, raw: ::Curses::KEY_F28),
567
+ ::Curses::KEY_F40 => Fatty::KeyEvent.new(key: :f4, shift: true, ctrl: true, raw: ::Curses::KEY_F40),
568
+ ::Curses::KEY_F52 => Fatty::KeyEvent.new(key: :f4, meta: true, raw: ::Curses::KEY_F52),
569
+ # KEY_DL: 328 => Fatty::KeyEvent.new(key: :f4, shift: true, meta: true, raw: KEY_DL: 328),
570
+ ::Curses::KEY_F5 => Fatty::KeyEvent.new(key: :f5, raw: ::Curses::KEY_F5),
571
+ ::Curses::KEY_F17 => Fatty::KeyEvent.new(key: :f5, shift: true, raw: ::Curses::KEY_F17),
572
+ ::Curses::KEY_F29 => Fatty::KeyEvent.new(key: :f5, ctrl: true, raw: ::Curses::KEY_F29),
573
+ ::Curses::KEY_F41 => Fatty::KeyEvent.new(key: :f5, shift: true, ctrl: true, raw: ::Curses::KEY_F41),
574
+ ::Curses::KEY_F53 => Fatty::KeyEvent.new(key: :f5, meta: true, raw: ::Curses::KEY_F53),
575
+ # KEY_IL: 329 => Fatty::KeyEvent.new(key: :f5, shift: true, meta: true, raw: KEY_IL: 329),
576
+ ::Curses::KEY_F6 => Fatty::KeyEvent.new(key: :f6, raw: ::Curses::KEY_F6),
577
+ ::Curses::KEY_F18 => Fatty::KeyEvent.new(key: :f6, shift: true, raw: ::Curses::KEY_F18),
578
+ ::Curses::KEY_F30 => Fatty::KeyEvent.new(key: :f6, ctrl: true, raw: ::Curses::KEY_F30),
579
+ ::Curses::KEY_F42 => Fatty::KeyEvent.new(key: :f6, shift: true, ctrl: true, raw: ::Curses::KEY_F42),
580
+ ::Curses::KEY_F54 => Fatty::KeyEvent.new(key: :f6, meta: true, raw: ::Curses::KEY_F54),
581
+ # 330 duplicates the :delete key
582
+ # KEY_DC: 330 => Fatty::KeyEvent.new(key: :f6, shift: true, meta: true, raw: 330 duplicates the :delete key
583
+ # KEY_DC: 330),
584
+ ::Curses::KEY_F7 => Fatty::KeyEvent.new(key: :f7, raw: ::Curses::KEY_F7),
585
+ ::Curses::KEY_F19 => Fatty::KeyEvent.new(key: :f7, shift: true, raw: ::Curses::KEY_F19),
586
+ ::Curses::KEY_F31 => Fatty::KeyEvent.new(key: :f7, ctrl: true, raw: ::Curses::KEY_F31),
587
+ ::Curses::KEY_F43 => Fatty::KeyEvent.new(key: :f7, shift: true, ctrl: true, raw: ::Curses::KEY_F43),
588
+ ::Curses::KEY_F55 => Fatty::KeyEvent.new(key: :f7, meta: true, raw: ::Curses::KEY_F55),
589
+ # 331 duplicates the :insert key
590
+ # KEY_IC: 331 => Fatty::KeyEvent.new(key: :f7, shift: true, meta: true),
591
+ ::Curses::KEY_F8 => Fatty::KeyEvent.new(key: :f8, raw: ::Curses::KEY_F8),
592
+ ::Curses::KEY_F20 => Fatty::KeyEvent.new(key: :f8, shift: true, raw: ::Curses::KEY_F20),
593
+ ::Curses::KEY_F32 => Fatty::KeyEvent.new(key: :f8, ctrl: true, raw: ::Curses::KEY_F32),
594
+ ::Curses::KEY_F44 => Fatty::KeyEvent.new(key: :f8, shift: true, ctrl: true, raw: ::Curses::KEY_F44),
595
+ ::Curses::KEY_F56 => Fatty::KeyEvent.new(key: :f8, meta: true, raw: ::Curses::KEY_F56),
596
+ # KEY_EIC: 332 => Fatty::KeyEvent.new(key: :f8, shift: true, meta: true),
597
+ ::Curses::KEY_F9 => Fatty::KeyEvent.new(key: :f9, raw: ::Curses::KEY_F9),
598
+ ::Curses::KEY_F21 => Fatty::KeyEvent.new(key: :f9, shift: true, raw: ::Curses::KEY_F21),
599
+ ::Curses::KEY_F33 => Fatty::KeyEvent.new(key: :f9, ctrl: true, raw: ::Curses::KEY_F33),
600
+ ::Curses::KEY_F45 => Fatty::KeyEvent.new(key: :f9, shift: true, ctrl: true, raw: ::Curses::KEY_F45),
601
+ ::Curses::KEY_F57 => Fatty::KeyEvent.new(key: :f9, meta: true, raw: ::Curses::KEY_F57),
602
+ # KEY_CLEAR: 333 => Fatty::KeyEvent.new(key: :f9, shift: true, meta: true),
603
+ ::Curses::KEY_F10 => Fatty::KeyEvent.new(key: :f10, raw: ::Curses::KEY_F10),
604
+ ::Curses::KEY_F22 => Fatty::KeyEvent.new(key: :f10, shift: true, raw: ::Curses::KEY_F22),
605
+ ::Curses::KEY_F34 => Fatty::KeyEvent.new(key: :f10, ctrl: true, raw: ::Curses::KEY_F34),
606
+ ::Curses::KEY_F46 => Fatty::KeyEvent.new(key: :f10, shift: true, ctrl: true, raw: ::Curses::KEY_F46),
607
+ ::Curses::KEY_F58 => Fatty::KeyEvent.new(key: :f10, meta: true, raw: ::Curses::KEY_F58),
608
+ # KEY_EOS: 334 => Fatty::KeyEvent.new(key: :f10, shift: true, meta: true),
609
+ ::Curses::KEY_F11 => Fatty::KeyEvent.new(key: :f11, raw: ::Curses::KEY_F11),
610
+ ::Curses::KEY_F23 => Fatty::KeyEvent.new(key: :f11, shift: true, raw: ::Curses::KEY_F23),
611
+ ::Curses::KEY_F35 => Fatty::KeyEvent.new(key: :f11, ctrl: true, raw: ::Curses::KEY_F35),
612
+ ::Curses::KEY_F47 => Fatty::KeyEvent.new(key: :f11, shift: true, ctrl: true, raw: ::Curses::KEY_F47),
613
+ ::Curses::KEY_F59 => Fatty::KeyEvent.new(key: :f11, meta: true, raw: ::Curses::KEY_F59),
614
+ # KEY_EOL: 335 => Fatty::KeyEvent.new(key: :f11, shift: true, meta: true),
615
+ ::Curses::KEY_F12 => Fatty::KeyEvent.new(key: :f12, raw: ::Curses::KEY_F12),
616
+ ::Curses::KEY_F24 => Fatty::KeyEvent.new(key: :f12, shift: true, raw: ::Curses::KEY_F24),
617
+ ::Curses::KEY_F36 => Fatty::KeyEvent.new(key: :f12, ctrl: true, raw: ::Curses::KEY_F36),
618
+ ::Curses::KEY_F48 => Fatty::KeyEvent.new(key: :f12, shift: true, ctrl: true, raw: ::Curses::KEY_F48),
619
+ ::Curses::KEY_F60 => Fatty::KeyEvent.new(key: :f12, meta: true, raw: ::Curses::KEY_F60),
620
+ # 336 duplicates the :down key
621
+ # KEY_SF: 336 => Fatty::KeyEvent.new(key: :f12, shift: true, meta: true),
622
+ ::Curses::KEY_IC => Fatty::KeyEvent.new(key: :insert, raw: ::Curses::KEY_IC),
623
+ ::Curses::KEY_SIC => Fatty::KeyEvent.new(key: :insert, shift: true, raw: ::Curses::KEY_SIC),
624
+ # 550 => Fatty::KeyEvent.new(key: :insert, meta: true, raw: 550),
625
+ # 551 => Fatty::KeyEvent.new(key: :insert, shift: true, meta: true),
626
+ # 552 => Fatty::KeyEvent.new(key: :insert, ctrl: true),
627
+ # 553 => Fatty::KeyEvent.new(key: :insert, shift: true, ctrl: true),
628
+ ::Curses::KEY_DC => Fatty::KeyEvent.new(key: :delete, raw: ::Curses::KEY_DC),
629
+ ::Curses::KEY_SDC => Fatty::KeyEvent.new(key: :delete, shift: true, raw: ::Curses::KEY_SDC),
630
+ # 531 => Fatty::KeyEvent.new(key: :delete, meta: true),
631
+ # 532 => Fatty::KeyEvent.new(key: :delete, shift: true, meta: true),
632
+ # 533 => Fatty::KeyEvent.new(key: :delete, ctrl: true),
633
+ # 534 => Fatty::KeyEvent.new(key: :delete, shift: true, ctrl: true),
634
+ ::Curses::KEY_HOME => Fatty::KeyEvent.new(key: :home, raw: ::Curses::KEY_HOME),
635
+ ::Curses::KEY_SHOME => Fatty::KeyEvent.new(key: :home, shift: true, raw: ::Curses::KEY_SHOME),
636
+ # 545 => Fatty::KeyEvent.new(key: :home, meta: true),
637
+ # 546 => Fatty::KeyEvent.new(key: :home, shift: true, meta: true),
638
+ # 547 => Fatty::KeyEvent.new(key: :home, ctrl: true),
639
+ # 548 => Fatty::KeyEvent.new(key: :home, shift: true, ctrl: true),
640
+ ::Curses::KEY_END => Fatty::KeyEvent.new(key: :end, raw: ::Curses::KEY_END),
641
+ ::Curses::KEY_SEND => Fatty::KeyEvent.new(key: :end, shift: true, raw: ::Curses::KEY_SEND),
642
+ # 540 => Fatty::KeyEvent.new(key: :end, meta: true),
643
+ # 541 => Fatty::KeyEvent.new(key: :end, shift: true, meta: true),
644
+ # 542 => Fatty::KeyEvent.new(key: :end, ctrl: true),
645
+ # 543 => Fatty::KeyEvent.new(key: :end, shift: true, ctrl: true),
646
+ ::Curses::KEY_PPAGE => Fatty::KeyEvent.new(key: :page_up, raw: ::Curses::KEY_PPAGE),
647
+ ::Curses::KEY_SPREVIOUS => Fatty::KeyEvent.new(key: :page_up, shift: true, raw: ::Curses::KEY_SPREVIOUS),
648
+ # 565 => Fatty::KeyEvent.new(key: :page_up, meta: true),
649
+ # 566 => Fatty::KeyEvent.new(key: :page_up, shift: true, meta: true),
650
+ # 567 => Fatty::KeyEvent.new(key: :page_up, ctrl: true),
651
+ # 568 => Fatty::KeyEvent.new(key: :page_up, shift: true, ctrl: true),
652
+ ::Curses::KEY_NPAGE => Fatty::KeyEvent.new(key: :page_down, raw: ::Curses::KEY_NPAGE),
653
+ ::Curses::KEY_SNEXT => Fatty::KeyEvent.new(key: :page_down, shift: true, raw: ::Curses::KEY_SNEXT),
654
+ # 560 => Fatty::KeyEvent.new(key: :page_down, meta: true),
655
+ # 561 => Fatty::KeyEvent.new(key: :page_down, shift: true, meta: true),
656
+ # 562 => Fatty::KeyEvent.new(key: :page_down, ctrl: true),
657
+ # 563 => Fatty::KeyEvent.new(key: :page_down, shift: true, ctrl: true),
658
+ ::Curses::KEY_DOWN => Fatty::KeyEvent.new(key: :down, raw: ::Curses::KEY_DOWN),
659
+ ::Curses::KEY_SF => Fatty::KeyEvent.new(key: :down, shift: true, raw: ::Curses::KEY_SF),
660
+ # 535 => Fatty::KeyEvent.new(key: :down, meta: true),
661
+ # 536 => Fatty::KeyEvent.new(key: :down, shift: true, meta: true),
662
+ # 537 => Fatty::KeyEvent.new(key: :down, ctrl: true),
663
+ # 538 => Fatty::KeyEvent.new(key: :down, shift: true, ctrl: true),
664
+ ::Curses::KEY_UP => Fatty::KeyEvent.new(key: :up, raw: ::Curses::KEY_UP),
665
+ ::Curses::KEY_SR => Fatty::KeyEvent.new(key: :up, shift: true, raw: ::Curses::KEY_SR),
666
+ # 576 => Fatty::KeyEvent.new(key: :up, meta: true),
667
+ # 577 => Fatty::KeyEvent.new(key: :up, shift: true, meta: true),
668
+ # 578 => Fatty::KeyEvent.new(key: :up, ctrl: true),
669
+ # 579 => Fatty::KeyEvent.new(key: :up, shift: true, ctrl: true),
670
+ ::Curses::KEY_LEFT => Fatty::KeyEvent.new(key: :left, raw: ::Curses::KEY_LEFT),
671
+ ::Curses::KEY_SLEFT => Fatty::KeyEvent.new(key: :left, shift: true, raw: ::Curses::KEY_SLEFT),
672
+ # 555 => Fatty::KeyEvent.new(key: :left, meta: true),
673
+ # 556 => Fatty::KeyEvent.new(key: :left, shift: true, meta: true),
674
+ # 557 => Fatty::KeyEvent.new(key: :left, ctrl: true),
675
+ # 558 => Fatty::KeyEvent.new(key: :left, shift: true, ctrl: true),
676
+ ::Curses::KEY_RIGHT => Fatty::KeyEvent.new(key: :right, raw: ::Curses::KEY_RIGHT),
677
+ ::Curses::KEY_SRIGHT => Fatty::KeyEvent.new(key: :right, shift: true, raw: ::Curses::KEY_SRIGHT),
678
+ # 570 => Fatty::KeyEvent.new(key: :right, meta: true),
679
+ # 571 => Fatty::KeyEvent.new(key: :right, shift: true, meta: true),
680
+ # 572 => Fatty::KeyEvent.new(key: :right, ctrl: true),
681
+ # 573 => Fatty::KeyEvent.new(key: :right, shift: true, ctrl: true),
682
+ }
683
+ end
684
+ end