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
/// A representation for a position on a modern keyboard.
/// Source: <https://en.wikipedia.org/wiki/Keyboard_layout#/media/File:Qwerty.svg>
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum KeyPosition {
  Escape,

  F1,
  F2,
  F3,
  F4,
  F5,
  F6,
  F7,
  F8,
  F9,
  F10,
  F11,
  F12,

  PrintScreen,
  ScrollLock,
  Pause,

  Grave,
  Digit1,
  Digit2,
  Digit3,
  Digit4,
  Digit5,
  Digit6,
  Digit7,
  Digit8,
  Digit9,
  Digit0,
  Minus,
  Equals,
  Backspace,

  Insert,
  Home,
  PageUp,

  NumLock,
  NumDivide,
  NumMultiply,
  NumMinus,

  Tab,
  Q,
  W,
  E,
  R,
  T,
  Y,
  U,
  I,
  O,
  P,
  LeftBracket,
  RightBracket,
  Backslash,

  Delete,
  End,
  PageDown,

  Num7,
  Num8,
  Num9,
  NumPlus,

  CapsLock,
  A,
  S,
  D,
  F,
  G,
  H,
  J,
  K,
  L,
  Semicolon,
  Apostrophe,
  Enter,

  Num4,
  Num5,
  Num6,

  LShift,
  Z,
  X,
  C,
  V,
  B,
  N,
  M,
  Comma,
  Period,
  Slash,
  RShift,

  UpArrow,

  Num1,
  Num2,
  Num3,
  NumEnter,

  LControl,
  LSuper,
  LAlt,
  Space,
  RAlt,
  RSuper,
  Menu,
  RControl,

  LeftArrow,
  DownArrow,
  RightArrow,

  Num0,
  NumPeriod,
}