1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
#[repr(transparent)]
#[derive(Clone, Copy, PartialEq, Eq)]
pub struct NcKey(pub u32);
mod std_impls {
use super::NcKey;
use core::fmt;
impl fmt::Display for NcKey {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.name())
}
}
impl fmt::Debug for NcKey {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "NcKey::{}", self)
}
}
impl From<NcKey> for u32 {
fn from(k: NcKey) -> Self {
k.0
}
}
}
impl NcKey {
pub const Invalid: NcKey = NcKey(c_api::NCKEY_INVALID);
pub const Resize: NcKey = NcKey(c_api::NCKEY_RESIZE);
pub const Up: NcKey = NcKey(c_api::NCKEY_UP);
pub const Right: NcKey = NcKey(c_api::NCKEY_RIGHT);
pub const Down: NcKey = NcKey(c_api::NCKEY_DOWN);
pub const Left: NcKey = NcKey(c_api::NCKEY_LEFT);
pub const Ins: NcKey = NcKey(c_api::NCKEY_INS);
pub const Del: NcKey = NcKey(c_api::NCKEY_DEL);
pub const Backspace: NcKey = NcKey(c_api::NCKEY_BACKSPACE);
pub const PgDown: NcKey = NcKey(c_api::NCKEY_PGDOWN);
pub const PgUp: NcKey = NcKey(c_api::NCKEY_PGUP);
pub const Home: NcKey = NcKey(c_api::NCKEY_HOME);
pub const End: NcKey = NcKey(c_api::NCKEY_END);
pub const F00: NcKey = NcKey(c_api::NCKEY_F00);
pub const F01: NcKey = NcKey(c_api::NCKEY_F01);
pub const F02: NcKey = NcKey(c_api::NCKEY_F02);
pub const F03: NcKey = NcKey(c_api::NCKEY_F03);
pub const F04: NcKey = NcKey(c_api::NCKEY_F04);
pub const F05: NcKey = NcKey(c_api::NCKEY_F05);
pub const F06: NcKey = NcKey(c_api::NCKEY_F06);
pub const F07: NcKey = NcKey(c_api::NCKEY_F07);
pub const F08: NcKey = NcKey(c_api::NCKEY_F08);
pub const F09: NcKey = NcKey(c_api::NCKEY_F09);
pub const F10: NcKey = NcKey(c_api::NCKEY_F10);
pub const F11: NcKey = NcKey(c_api::NCKEY_F11);
pub const F12: NcKey = NcKey(c_api::NCKEY_F12);
pub const F13: NcKey = NcKey(c_api::NCKEY_F13);
pub const F14: NcKey = NcKey(c_api::NCKEY_F14);
pub const F15: NcKey = NcKey(c_api::NCKEY_F15);
pub const F16: NcKey = NcKey(c_api::NCKEY_F16);
pub const F17: NcKey = NcKey(c_api::NCKEY_F17);
pub const F18: NcKey = NcKey(c_api::NCKEY_F18);
pub const F19: NcKey = NcKey(c_api::NCKEY_F19);
pub const F20: NcKey = NcKey(c_api::NCKEY_F20);
pub const F21: NcKey = NcKey(c_api::NCKEY_F21);
pub const F22: NcKey = NcKey(c_api::NCKEY_F22);
pub const F23: NcKey = NcKey(c_api::NCKEY_F23);
pub const F24: NcKey = NcKey(c_api::NCKEY_F24);
pub const F25: NcKey = NcKey(c_api::NCKEY_F25);
pub const F26: NcKey = NcKey(c_api::NCKEY_F26);
pub const F27: NcKey = NcKey(c_api::NCKEY_F27);
pub const F28: NcKey = NcKey(c_api::NCKEY_F28);
pub const F29: NcKey = NcKey(c_api::NCKEY_F29);
pub const F30: NcKey = NcKey(c_api::NCKEY_F30);
pub const F31: NcKey = NcKey(c_api::NCKEY_F31);
pub const F32: NcKey = NcKey(c_api::NCKEY_F32);
pub const F33: NcKey = NcKey(c_api::NCKEY_F33);
pub const F34: NcKey = NcKey(c_api::NCKEY_F34);
pub const F35: NcKey = NcKey(c_api::NCKEY_F35);
pub const F36: NcKey = NcKey(c_api::NCKEY_F36);
pub const F37: NcKey = NcKey(c_api::NCKEY_F37);
pub const F38: NcKey = NcKey(c_api::NCKEY_F38);
pub const F39: NcKey = NcKey(c_api::NCKEY_F39);
pub const F40: NcKey = NcKey(c_api::NCKEY_F40);
pub const F41: NcKey = NcKey(c_api::NCKEY_F41);
pub const F42: NcKey = NcKey(c_api::NCKEY_F42);
pub const F43: NcKey = NcKey(c_api::NCKEY_F43);
pub const F44: NcKey = NcKey(c_api::NCKEY_F44);
pub const F45: NcKey = NcKey(c_api::NCKEY_F45);
pub const F46: NcKey = NcKey(c_api::NCKEY_F46);
pub const F47: NcKey = NcKey(c_api::NCKEY_F47);
pub const F48: NcKey = NcKey(c_api::NCKEY_F48);
pub const F49: NcKey = NcKey(c_api::NCKEY_F49);
pub const F50: NcKey = NcKey(c_api::NCKEY_F50);
pub const F51: NcKey = NcKey(c_api::NCKEY_F51);
pub const F52: NcKey = NcKey(c_api::NCKEY_F52);
pub const F53: NcKey = NcKey(c_api::NCKEY_F53);
pub const F54: NcKey = NcKey(c_api::NCKEY_F54);
pub const F55: NcKey = NcKey(c_api::NCKEY_F55);
pub const F56: NcKey = NcKey(c_api::NCKEY_F56);
pub const F57: NcKey = NcKey(c_api::NCKEY_F57);
pub const F58: NcKey = NcKey(c_api::NCKEY_F58);
pub const F59: NcKey = NcKey(c_api::NCKEY_F59);
pub const F60: NcKey = NcKey(c_api::NCKEY_F60);
pub const Enter: NcKey = NcKey(c_api::NCKEY_ENTER);
pub const Cls: NcKey = NcKey(c_api::NCKEY_CLS);
pub const DLeft: NcKey = NcKey(c_api::NCKEY_DLEFT);
pub const DRight: NcKey = NcKey(c_api::NCKEY_DRIGHT);
pub const ULeft: NcKey = NcKey(c_api::NCKEY_ULEFT);
pub const URight: NcKey = NcKey(c_api::NCKEY_URIGHT);
pub const Center: NcKey = NcKey(c_api::NCKEY_CENTER);
pub const Begin: NcKey = NcKey(c_api::NCKEY_BEGIN);
pub const Cancel: NcKey = NcKey(c_api::NCKEY_CANCEL);
pub const Close: NcKey = NcKey(c_api::NCKEY_CLOSE);
pub const Command: NcKey = NcKey(c_api::NCKEY_COMMAND);
pub const Copy: NcKey = NcKey(c_api::NCKEY_COPY);
pub const Exit: NcKey = NcKey(c_api::NCKEY_EXIT);
pub const Print: NcKey = NcKey(c_api::NCKEY_PRINT);
pub const Refresh: NcKey = NcKey(c_api::NCKEY_REFRESH);
pub const CapsLock: NcKey = NcKey(c_api::NCKEY_CAPS_LOCK);
pub const ScrollLock: NcKey = NcKey(c_api::NCKEY_SCROLL_LOCK);
pub const NumLock: NcKey = NcKey(c_api::NCKEY_NUM_LOCK);
pub const PrintScreen: NcKey = NcKey(c_api::NCKEY_PRINT_SCREEN);
pub const Pause: NcKey = NcKey(c_api::NCKEY_PAUSE);
pub const Menu: NcKey = NcKey(c_api::NCKEY_MENU);
pub const MediaPlay: NcKey = NcKey(c_api::NCKEY_MEDIA_PLAY);
pub const MediaPause: NcKey = NcKey(c_api::NCKEY_MEDIA_PAUSE);
pub const MediaPPause: NcKey = NcKey(c_api::NCKEY_MEDIA_PPAUSE);
pub const MediaRev: NcKey = NcKey(c_api::NCKEY_MEDIA_REV);
pub const MediaStop: NcKey = NcKey(c_api::NCKEY_MEDIA_STOP);
pub const MediaFF: NcKey = NcKey(c_api::NCKEY_MEDIA_FF);
pub const MediaRewind: NcKey = NcKey(c_api::NCKEY_MEDIA_REWIND);
pub const MediaNext: NcKey = NcKey(c_api::NCKEY_MEDIA_NEXT);
pub const MediaPrev: NcKey = NcKey(c_api::NCKEY_MEDIA_PREV);
pub const MediaRecord: NcKey = NcKey(c_api::NCKEY_MEDIA_RECORD);
pub const MediaLVol: NcKey = NcKey(c_api::NCKEY_MEDIA_LVOL);
pub const MediaRVol: NcKey = NcKey(c_api::NCKEY_MEDIA_RVOL);
pub const MediaMute: NcKey = NcKey(c_api::NCKEY_MEDIA_MUTE);
pub const LShift: NcKey = NcKey(c_api::NCKEY_LSHIFT);
pub const LCtrl: NcKey = NcKey(c_api::NCKEY_LCTRL);
pub const LAlt: NcKey = NcKey(c_api::NCKEY_LALT);
pub const LSuper: NcKey = NcKey(c_api::NCKEY_LSUPER);
pub const LHyper: NcKey = NcKey(c_api::NCKEY_LHYPER);
pub const LMeta: NcKey = NcKey(c_api::NCKEY_LMETA);
pub const RShift: NcKey = NcKey(c_api::NCKEY_RSHIFT);
pub const RCtrl: NcKey = NcKey(c_api::NCKEY_RCTRL);
pub const RAlt: NcKey = NcKey(c_api::NCKEY_RALT);
pub const RSuper: NcKey = NcKey(c_api::NCKEY_RSUPER);
pub const RHyper: NcKey = NcKey(c_api::NCKEY_RHYPER);
pub const RMeta: NcKey = NcKey(c_api::NCKEY_RMETA);
pub const L3Shift: NcKey = NcKey(c_api::NCKEY_L3SHIFT);
pub const L5Shift: NcKey = NcKey(c_api::NCKEY_L5SHIFT);
pub const Motion: NcKey = NcKey(c_api::NCKEY_MOTION);
pub const Button1: NcKey = NcKey(c_api::NCKEY_BUTTON1);
pub const Button2: NcKey = NcKey(c_api::NCKEY_BUTTON2);
pub const Button3: NcKey = NcKey(c_api::NCKEY_BUTTON3);
pub const Button4: NcKey = NcKey(c_api::NCKEY_BUTTON4);
pub const Button5: NcKey = NcKey(c_api::NCKEY_BUTTON5);
pub const Button6: NcKey = NcKey(c_api::NCKEY_BUTTON6);
pub const Button7: NcKey = NcKey(c_api::NCKEY_BUTTON7);
pub const Button8: NcKey = NcKey(c_api::NCKEY_BUTTON8);
pub const Button9: NcKey = NcKey(c_api::NCKEY_BUTTON9);
pub const Button10: NcKey = NcKey(c_api::NCKEY_BUTTON10);
pub const Button11: NcKey = NcKey(c_api::NCKEY_BUTTON11);
pub const Signal: NcKey = NcKey(c_api::NCKEY_SIGNAL);
pub const Eof: NcKey = NcKey(c_api::NCKEY_EOF);
pub const Tab: NcKey = NcKey(c_api::NCKEY_TAB);
pub const Esc: NcKey = NcKey(c_api::NCKEY_ESC);
pub const Space: NcKey = NcKey(c_api::NCKEY_SPACE);
}
impl NcKey {
pub const ScrollUp: NcKey = NcKey(c_api::NCKEY_SCROLL_UP);
pub const Scrolldown: NcKey = NcKey(c_api::NCKEY_SCROLL_DOWN);
pub const Return: NcKey = NcKey(c_api::NCKEY_RETURN);
}
impl NcKey {
pub fn is(num: u32) -> bool {
crate::c_api::nckey_synthesized_p(num) || num == NcKey::Esc.0 || num == NcKey::Tab.0
}
pub fn new(num: u32) -> Option<Self> {
if Self::is(num) {
Some(Self(num))
} else {
None
}
}
pub fn is_function(&self) -> bool {
matches!(self.0, c_api::NCKEY_F00..=c_api::NCKEY_F60)
}
pub fn is_media(&self) -> bool {
matches!(self.0, c_api::NCKEY_MEDIA_PLAY..=c_api::NCKEY_MEDIA_MUTE)
}
pub fn is_mouse(&self) -> bool {
matches!(self.0, c_api::NCKEY_MOTION..=c_api::NCKEY_BUTTON11)
}
pub fn is_resize(&self) -> bool {
matches!(self.0, c_api::NCKEY_RESIZE)
}
pub fn name(&self) -> &'static str {
Self::check_name(self.0)
}
pub fn check_name(num: u32) -> &'static str {
if Self::is(num) {
match Self(num) {
Self::Invalid => "Invalid",
Self::Resize => "Resize",
Self::Up => "Up",
Self::Right => "Right",
Self::Down => "Down",
Self::Left => "Left",
Self::Ins => "Ins",
Self::Del => "Del",
Self::Backspace => "Backspace",
Self::PgDown => "PgDown",
Self::PgUp => "PgUp",
Self::Home => "Home",
Self::End => "End",
Self::F00 => "F00",
Self::F01 => "F01",
Self::F02 => "F02",
Self::F03 => "F03",
Self::F04 => "F04",
Self::F05 => "F05",
Self::F06 => "F06",
Self::F07 => "F07",
Self::F08 => "F08",
Self::F09 => "F09",
Self::F10 => "F10",
Self::F11 => "F11",
Self::F12 => "F12",
Self::F13 => "F13",
Self::F14 => "F14",
Self::F15 => "F15",
Self::F16 => "F16",
Self::F17 => "F17",
Self::F18 => "F18",
Self::F19 => "F19",
Self::F20 => "F20",
Self::F21 => "F21",
Self::F22 => "F22",
Self::F23 => "F23",
Self::F24 => "F24",
Self::F25 => "F25",
Self::F26 => "F26",
Self::F27 => "F27",
Self::F28 => "F28",
Self::F29 => "F29",
Self::F30 => "F30",
Self::F31 => "F31",
Self::F32 => "F32",
Self::F33 => "F33",
Self::F34 => "F34",
Self::F35 => "F35",
Self::F36 => "F36",
Self::F37 => "F37",
Self::F38 => "F38",
Self::F39 => "F39",
Self::F40 => "F40",
Self::F41 => "F41",
Self::F42 => "F42",
Self::F43 => "F43",
Self::F44 => "F44",
Self::F45 => "F45",
Self::F46 => "F46",
Self::F47 => "F47",
Self::F48 => "F48",
Self::F49 => "F49",
Self::F50 => "F50",
Self::F51 => "F51",
Self::F52 => "F52",
Self::F53 => "F53",
Self::F54 => "F54",
Self::F55 => "F55",
Self::F56 => "F56",
Self::F57 => "F57",
Self::F58 => "F58",
Self::F59 => "F59",
Self::F60 => "F60",
Self::Enter => "Enter",
Self::Cls => "Cls",
Self::DLeft => "DLeft",
Self::DRight => "DRight",
Self::ULeft => "ULeft",
Self::URight => "URight",
Self::Center => "Center",
Self::Begin => "Begin",
Self::Cancel => "Cancel",
Self::Close => "Close",
Self::Command => "Command",
Self::Copy => "Copy",
Self::Exit => "Exit",
Self::Print => "Print",
Self::Refresh => "Refresh",
Self::CapsLock => "CapsLock",
Self::ScrollLock => "ScrollLock",
Self::NumLock => "NumLock",
Self::PrintScreen => "PrintScreen",
Self::Pause => "Pause",
Self::Menu => "Menu",
Self::MediaPlay => "MediaPlay",
Self::MediaPause => "MediaPause",
Self::MediaPPause => "MediaPPause",
Self::MediaRev => "MediaRev",
Self::MediaStop => "MediaStop",
Self::MediaFF => "MediaFF",
Self::MediaRewind => "MediaRewind",
Self::MediaNext => "MediaNext",
Self::MediaPrev => "MediaPrev",
Self::MediaRecord => "MediaRecord",
Self::MediaLVol => "MediaLVol",
Self::MediaRVol => "MediaRVol",
Self::MediaMute => "MediaMute",
Self::LShift => "LShift",
Self::LCtrl => "LCtrl",
Self::LAlt => "LAlt",
Self::LSuper => "LSuper",
Self::LHyper => "LHyper",
Self::LMeta => "LMeta",
Self::RShift => "RShift",
Self::RCtrl => "RCtrl",
Self::RAlt => "RAlt",
Self::RSuper => "RSuper",
Self::RHyper => "RHyper",
Self::RMeta => "RMeta",
Self::L3Shift => "L3Shift",
Self::L5Shift => "L5Shift",
Self::Motion => "Motion",
Self::Button1 => "Button1",
Self::Button2 => "Button2",
Self::Button3 => "Button3",
Self::Button4 => "Button4",
Self::Button5 => "Button5",
Self::Button6 => "Button6",
Self::Button7 => "Button7",
Self::Button8 => "Button8",
Self::Button9 => "Button9",
Self::Button10 => "Button10",
Self::Button11 => "Button11",
Self::Eof => "Eof",
Self::Tab => "Tab",
Self::Esc => "Esc",
Self::Space => "Space",
_ => "",
}
} else {
""
}
}
}
pub(crate) mod c_api {
pub const PRETERUNICODEBASE: u32 = 1_115_000;
const fn preterunicode(w: u32) -> u32 {
w + PRETERUNICODEBASE
}
pub const NCKEY_INVALID: u32 = preterunicode(0);
pub const NCKEY_RESIZE: u32 = preterunicode(1);
pub const NCKEY_UP: u32 = preterunicode(2);
pub const NCKEY_RIGHT: u32 = preterunicode(3);
pub const NCKEY_DOWN: u32 = preterunicode(4);
pub const NCKEY_LEFT: u32 = preterunicode(5);
pub const NCKEY_INS: u32 = preterunicode(6);
pub const NCKEY_DEL: u32 = preterunicode(7);
pub const NCKEY_BACKSPACE: u32 = preterunicode(8);
pub const NCKEY_PGDOWN: u32 = preterunicode(9);
pub const NCKEY_PGUP: u32 = preterunicode(10);
pub const NCKEY_HOME: u32 = preterunicode(11);
pub const NCKEY_END: u32 = preterunicode(12);
pub const NCKEY_F00: u32 = preterunicode(20);
pub const NCKEY_F01: u32 = preterunicode(21);
pub const NCKEY_F02: u32 = preterunicode(22);
pub const NCKEY_F03: u32 = preterunicode(23);
pub const NCKEY_F04: u32 = preterunicode(24);
pub const NCKEY_F05: u32 = preterunicode(25);
pub const NCKEY_F06: u32 = preterunicode(26);
pub const NCKEY_F07: u32 = preterunicode(27);
pub const NCKEY_F08: u32 = preterunicode(28);
pub const NCKEY_F09: u32 = preterunicode(29);
pub const NCKEY_F10: u32 = preterunicode(30);
pub const NCKEY_F11: u32 = preterunicode(31);
pub const NCKEY_F12: u32 = preterunicode(32);
pub const NCKEY_F13: u32 = preterunicode(33);
pub const NCKEY_F14: u32 = preterunicode(34);
pub const NCKEY_F15: u32 = preterunicode(35);
pub const NCKEY_F16: u32 = preterunicode(36);
pub const NCKEY_F17: u32 = preterunicode(37);
pub const NCKEY_F18: u32 = preterunicode(38);
pub const NCKEY_F19: u32 = preterunicode(39);
pub const NCKEY_F20: u32 = preterunicode(40);
pub const NCKEY_F21: u32 = preterunicode(41);
pub const NCKEY_F22: u32 = preterunicode(42);
pub const NCKEY_F23: u32 = preterunicode(43);
pub const NCKEY_F24: u32 = preterunicode(44);
pub const NCKEY_F25: u32 = preterunicode(45);
pub const NCKEY_F26: u32 = preterunicode(46);
pub const NCKEY_F27: u32 = preterunicode(47);
pub const NCKEY_F28: u32 = preterunicode(48);
pub const NCKEY_F29: u32 = preterunicode(49);
pub const NCKEY_F30: u32 = preterunicode(50);
pub const NCKEY_F31: u32 = preterunicode(51);
pub const NCKEY_F32: u32 = preterunicode(52);
pub const NCKEY_F33: u32 = preterunicode(53);
pub const NCKEY_F34: u32 = preterunicode(54);
pub const NCKEY_F35: u32 = preterunicode(55);
pub const NCKEY_F36: u32 = preterunicode(56);
pub const NCKEY_F37: u32 = preterunicode(57);
pub const NCKEY_F38: u32 = preterunicode(58);
pub const NCKEY_F39: u32 = preterunicode(59);
pub const NCKEY_F40: u32 = preterunicode(60);
pub const NCKEY_F41: u32 = preterunicode(61);
pub const NCKEY_F42: u32 = preterunicode(62);
pub const NCKEY_F43: u32 = preterunicode(63);
pub const NCKEY_F44: u32 = preterunicode(64);
pub const NCKEY_F45: u32 = preterunicode(65);
pub const NCKEY_F46: u32 = preterunicode(66);
pub const NCKEY_F47: u32 = preterunicode(67);
pub const NCKEY_F48: u32 = preterunicode(68);
pub const NCKEY_F49: u32 = preterunicode(69);
pub const NCKEY_F50: u32 = preterunicode(70);
pub const NCKEY_F51: u32 = preterunicode(71);
pub const NCKEY_F52: u32 = preterunicode(72);
pub const NCKEY_F53: u32 = preterunicode(73);
pub const NCKEY_F54: u32 = preterunicode(74);
pub const NCKEY_F55: u32 = preterunicode(75);
pub const NCKEY_F56: u32 = preterunicode(76);
pub const NCKEY_F57: u32 = preterunicode(77);
pub const NCKEY_F58: u32 = preterunicode(78);
pub const NCKEY_F59: u32 = preterunicode(79);
pub const NCKEY_F60: u32 = preterunicode(80);
pub const NCKEY_ENTER: u32 = preterunicode(121);
pub const NCKEY_CLS: u32 = preterunicode(122);
pub const NCKEY_DLEFT: u32 = preterunicode(123);
pub const NCKEY_DRIGHT: u32 = preterunicode(124);
pub const NCKEY_ULEFT: u32 = preterunicode(125);
pub const NCKEY_URIGHT: u32 = preterunicode(126);
pub const NCKEY_CENTER: u32 = preterunicode(127);
pub const NCKEY_BEGIN: u32 = preterunicode(128);
pub const NCKEY_CANCEL: u32 = preterunicode(129);
pub const NCKEY_CLOSE: u32 = preterunicode(130);
pub const NCKEY_COMMAND: u32 = preterunicode(131);
pub const NCKEY_COPY: u32 = preterunicode(132);
pub const NCKEY_EXIT: u32 = preterunicode(133);
pub const NCKEY_PRINT: u32 = preterunicode(134);
pub const NCKEY_REFRESH: u32 = preterunicode(135);
pub const NCKEY_CAPS_LOCK: u32 = preterunicode(150);
pub const NCKEY_SCROLL_LOCK: u32 = preterunicode(151);
pub const NCKEY_NUM_LOCK: u32 = preterunicode(152);
pub const NCKEY_PRINT_SCREEN: u32 = preterunicode(153);
pub const NCKEY_PAUSE: u32 = preterunicode(154);
pub const NCKEY_MENU: u32 = preterunicode(155);
pub const NCKEY_MEDIA_PLAY: u32 = preterunicode(158);
pub const NCKEY_MEDIA_PAUSE: u32 = preterunicode(159);
pub const NCKEY_MEDIA_PPAUSE: u32 = preterunicode(160);
pub const NCKEY_MEDIA_REV: u32 = preterunicode(161);
pub const NCKEY_MEDIA_STOP: u32 = preterunicode(162);
pub const NCKEY_MEDIA_FF: u32 = preterunicode(163);
pub const NCKEY_MEDIA_REWIND: u32 = preterunicode(164);
pub const NCKEY_MEDIA_NEXT: u32 = preterunicode(165);
pub const NCKEY_MEDIA_PREV: u32 = preterunicode(166);
pub const NCKEY_MEDIA_RECORD: u32 = preterunicode(167);
pub const NCKEY_MEDIA_LVOL: u32 = preterunicode(168);
pub const NCKEY_MEDIA_RVOL: u32 = preterunicode(169);
pub const NCKEY_MEDIA_MUTE: u32 = preterunicode(170);
pub const NCKEY_LSHIFT: u32 = preterunicode(171);
pub const NCKEY_LCTRL: u32 = preterunicode(172);
pub const NCKEY_LALT: u32 = preterunicode(173);
pub const NCKEY_LSUPER: u32 = preterunicode(174);
pub const NCKEY_LHYPER: u32 = preterunicode(175);
pub const NCKEY_LMETA: u32 = preterunicode(176);
pub const NCKEY_RSHIFT: u32 = preterunicode(177);
pub const NCKEY_RCTRL: u32 = preterunicode(178);
pub const NCKEY_RALT: u32 = preterunicode(179);
pub const NCKEY_RSUPER: u32 = preterunicode(180);
pub const NCKEY_RHYPER: u32 = preterunicode(181);
pub const NCKEY_RMETA: u32 = preterunicode(182);
pub const NCKEY_L3SHIFT: u32 = preterunicode(183);
pub const NCKEY_L5SHIFT: u32 = preterunicode(184);
pub const NCKEY_MOTION: u32 = preterunicode(200);
pub const NCKEY_BUTTON1: u32 = preterunicode(201);
pub const NCKEY_BUTTON2: u32 = preterunicode(202);
pub const NCKEY_BUTTON3: u32 = preterunicode(203);
pub const NCKEY_BUTTON4: u32 = preterunicode(204);
pub const NCKEY_BUTTON5: u32 = preterunicode(205);
pub const NCKEY_BUTTON6: u32 = preterunicode(206);
pub const NCKEY_BUTTON7: u32 = preterunicode(207);
pub const NCKEY_BUTTON8: u32 = preterunicode(208);
pub const NCKEY_BUTTON9: u32 = preterunicode(209);
pub const NCKEY_BUTTON10: u32 = preterunicode(210);
pub const NCKEY_BUTTON11: u32 = preterunicode(211);
pub const NCKEY_SIGNAL: u32 = preterunicode(400);
pub const NCKEY_EOF: u32 = preterunicode(500);
pub const NCKEY_SCROLL_UP: u32 = NCKEY_BUTTON4;
pub const NCKEY_SCROLL_DOWN: u32 = NCKEY_BUTTON5;
pub const NCKEY_RETURN: u32 = NCKEY_ENTER;
pub const NCKEY_TAB: u32 = 0x09;
pub const NCKEY_ESC: u32 = 0x1b;
pub const NCKEY_SPACE: u32 = 0x20;
}