Skip to content

Commit 8c71d0f

Browse files
core-graphics: Add CGKeyCodes for numpad keys (#712)
* core-graphics: Add CGKeyCodes for numkey as well as ANSI, ISO and JIS keys * Fix tiny English nit Signed-off-by: Martin Robinson <[email protected]> --------- Signed-off-by: Martin Robinson <[email protected]> Co-authored-by: Martin Robinson <[email protected]>
1 parent f6e7580 commit 8c71d0f

File tree

1 file changed

+99
-13
lines changed

1 file changed

+99
-13
lines changed

core-graphics/src/event.rs

Lines changed: 99 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,92 @@ bitflags! {
4343
}
4444
}
4545

46-
/// Key codes for keys that are independent of keyboard layout.
46+
/// Constants for the virtual key codes
4747
///
48-
/// [Ref](https://github.com/phracker/MacOSX-SDKs/blob/master/MacOSX10.13.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h)
48+
/// These constants are the virtual keycodes defined originally in
49+
/// Inside Mac Volume V, pg. V-191. They identify physical keys on a
50+
/// keyboard. The struct contains the values of the ANSIKeyCode,
51+
/// KeyCode, ISOKeyCode and JISKeyCode of the original Carbon headers.
52+
///
53+
/// Those constants with "ANSI" in the name are labeled
54+
/// according to the key position on an ANSI-standard US keyboard.
55+
/// For example, `ANSI_A` indicates the virtual keycode for the key
56+
/// with the letter 'A' in the US keyboard layout. Other keyboard
57+
/// layouts may have the 'A' key label on a different physical key;
58+
/// in this case, pressing 'A' will generate a different virtual
59+
/// keycode. Constants with the 'JIS_' or 'ISO_' prefix behave
60+
/// analogously. Keys without a prefix are independent of the
61+
/// keyboard layout.
62+
///
63+
/// [Ref](https://github.com/phracker/MacOSX-SDKs/blob/master/MacOSX10.13.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h#L197-L327)
4964
#[repr(C)]
5065
pub struct KeyCode;
5166
impl KeyCode {
67+
pub const ANSI_A: CGKeyCode = 0x00;
68+
pub const ANSI_S: CGKeyCode = 0x01;
69+
pub const ANSI_D: CGKeyCode = 0x02;
70+
pub const ANSI_F: CGKeyCode = 0x03;
71+
pub const ANSI_H: CGKeyCode = 0x04;
72+
pub const ANSI_G: CGKeyCode = 0x05;
73+
pub const ANSI_Z: CGKeyCode = 0x06;
74+
pub const ANSI_X: CGKeyCode = 0x07;
75+
pub const ANSI_C: CGKeyCode = 0x08;
76+
pub const ANSI_V: CGKeyCode = 0x09;
77+
pub const ANSI_B: CGKeyCode = 0x0B;
78+
pub const ANSI_Q: CGKeyCode = 0x0C;
79+
pub const ANSI_W: CGKeyCode = 0x0D;
80+
pub const ANSI_E: CGKeyCode = 0x0E;
81+
pub const ANSI_R: CGKeyCode = 0x0F;
82+
pub const ANSI_Y: CGKeyCode = 0x10;
83+
pub const ANSI_T: CGKeyCode = 0x11;
84+
pub const ANSI_1: CGKeyCode = 0x12;
85+
pub const ANSI_2: CGKeyCode = 0x13;
86+
pub const ANSI_3: CGKeyCode = 0x14;
87+
pub const ANSI_4: CGKeyCode = 0x15;
88+
pub const ANSI_6: CGKeyCode = 0x16;
89+
pub const ANSI_5: CGKeyCode = 0x17;
90+
pub const ANSI_EQUAL: CGKeyCode = 0x18;
91+
pub const ANSI_9: CGKeyCode = 0x19;
92+
pub const ANSI_7: CGKeyCode = 0x1A;
93+
pub const ANSI_MINUS: CGKeyCode = 0x1B;
94+
pub const ANSI_8: CGKeyCode = 0x1C;
95+
pub const ANSI_0: CGKeyCode = 0x1D;
96+
pub const ANSI_RIGHT_BRACKET: CGKeyCode = 0x1E;
97+
pub const ANSI_O: CGKeyCode = 0x1F;
98+
pub const ANSI_U: CGKeyCode = 0x20;
99+
pub const ANSI_LEFT_BRACKET: CGKeyCode = 0x21;
100+
pub const ANSI_I: CGKeyCode = 0x22;
101+
pub const ANSI_P: CGKeyCode = 0x23;
102+
pub const ANSI_L: CGKeyCode = 0x25;
103+
pub const ANSI_J: CGKeyCode = 0x26;
104+
pub const ANSI_QUOTE: CGKeyCode = 0x27;
105+
pub const ANSI_K: CGKeyCode = 0x28;
106+
pub const ANSI_SEMICOLON: CGKeyCode = 0x29;
107+
pub const ANSI_BACKSLASH: CGKeyCode = 0x2A;
108+
pub const ANSI_COMMA: CGKeyCode = 0x2B;
109+
pub const ANSI_SLASH: CGKeyCode = 0x2C;
110+
pub const ANSI_N: CGKeyCode = 0x2D;
111+
pub const ANSI_M: CGKeyCode = 0x2E;
112+
pub const ANSI_PERIOD: CGKeyCode = 0x2F;
113+
pub const ANSI_GRAVE: CGKeyCode = 0x32;
114+
pub const ANSI_KEYPAD_DECIMAL: CGKeyCode = 0x41;
115+
pub const ANSI_KEYPAD_MULTIPLY: CGKeyCode = 0x43;
116+
pub const ANSI_KEYPAD_PLUS: CGKeyCode = 0x45;
117+
pub const ANSI_KEYPAD_CLEAR: CGKeyCode = 0x47;
118+
pub const ANSI_KEYPAD_DIVIDE: CGKeyCode = 0x4B;
119+
pub const ANSI_KEYPAD_ENTER: CGKeyCode = 0x4C;
120+
pub const ANSI_KEYPAD_MINUS: CGKeyCode = 0x4E;
121+
pub const ANSI_KEYPAD_EQUAL: CGKeyCode = 0x51;
122+
pub const ANSI_KEYPAD_0: CGKeyCode = 0x52;
123+
pub const ANSI_KEYPAD_1: CGKeyCode = 0x53;
124+
pub const ANSI_KEYPAD_2: CGKeyCode = 0x54;
125+
pub const ANSI_KEYPAD_3: CGKeyCode = 0x55;
126+
pub const ANSI_KEYPAD_4: CGKeyCode = 0x56;
127+
pub const ANSI_KEYPAD_5: CGKeyCode = 0x57;
128+
pub const ANSI_KEYPAD_6: CGKeyCode = 0x58;
129+
pub const ANSI_KEYPAD_7: CGKeyCode = 0x59;
130+
pub const ANSI_KEYPAD_8: CGKeyCode = 0x5B;
131+
pub const ANSI_KEYPAD_9: CGKeyCode = 0x5C;
52132
pub const RETURN: CGKeyCode = 0x24;
53133
pub const TAB: CGKeyCode = 0x30;
54134
pub const SPACE: CGKeyCode = 0x31;
@@ -64,39 +144,45 @@ impl KeyCode {
64144
pub const RIGHT_OPTION: CGKeyCode = 0x3D;
65145
pub const RIGHT_CONTROL: CGKeyCode = 0x3E;
66146
pub const FUNCTION: CGKeyCode = 0x3F;
147+
pub const F17: CGKeyCode = 0x40;
67148
pub const VOLUME_UP: CGKeyCode = 0x48;
68149
pub const VOLUME_DOWN: CGKeyCode = 0x49;
69150
pub const MUTE: CGKeyCode = 0x4A;
70-
pub const F1: CGKeyCode = 0x7A;
71-
pub const F2: CGKeyCode = 0x78;
72-
pub const F3: CGKeyCode = 0x63;
73-
pub const F4: CGKeyCode = 0x76;
151+
pub const F18: CGKeyCode = 0x4F;
152+
pub const F19: CGKeyCode = 0x50;
153+
pub const F20: CGKeyCode = 0x5A;
74154
pub const F5: CGKeyCode = 0x60;
75155
pub const F6: CGKeyCode = 0x61;
76156
pub const F7: CGKeyCode = 0x62;
157+
pub const F3: CGKeyCode = 0x63;
77158
pub const F8: CGKeyCode = 0x64;
78159
pub const F9: CGKeyCode = 0x65;
79-
pub const F10: CGKeyCode = 0x6D;
80160
pub const F11: CGKeyCode = 0x67;
81-
pub const F12: CGKeyCode = 0x6F;
82161
pub const F13: CGKeyCode = 0x69;
162+
pub const F16: CGKeyCode = 0x6A;
83163
pub const F14: CGKeyCode = 0x6B;
164+
pub const F10: CGKeyCode = 0x6D;
165+
pub const F12: CGKeyCode = 0x6F;
84166
pub const F15: CGKeyCode = 0x71;
85-
pub const F16: CGKeyCode = 0x6A;
86-
pub const F17: CGKeyCode = 0x40;
87-
pub const F18: CGKeyCode = 0x4F;
88-
pub const F19: CGKeyCode = 0x50;
89-
pub const F20: CGKeyCode = 0x5A;
90167
pub const HELP: CGKeyCode = 0x72;
91168
pub const HOME: CGKeyCode = 0x73;
92169
pub const PAGE_UP: CGKeyCode = 0x74;
93170
pub const FORWARD_DELETE: CGKeyCode = 0x75;
171+
pub const F4: CGKeyCode = 0x76;
94172
pub const END: CGKeyCode = 0x77;
173+
pub const F2: CGKeyCode = 0x78;
95174
pub const PAGE_DOWN: CGKeyCode = 0x79;
175+
pub const F1: CGKeyCode = 0x7A;
96176
pub const LEFT_ARROW: CGKeyCode = 0x7B;
97177
pub const RIGHT_ARROW: CGKeyCode = 0x7C;
98178
pub const DOWN_ARROW: CGKeyCode = 0x7D;
99179
pub const UP_ARROW: CGKeyCode = 0x7E;
180+
pub const ISO_SECTION: CGKeyCode = 0x0A;
181+
pub const JIS_YEN: CGKeyCode = 0x5D;
182+
pub const JIS_UNDERSCORE: CGKeyCode = 0x5E;
183+
pub const JIS_KEYPAD_COMMA: CGKeyCode = 0x5F;
184+
pub const JIS_EISU: CGKeyCode = 0x66;
185+
pub const JIS_KANA: CGKeyCode = 0x68;
100186
}
101187

102188
#[repr(C)]

0 commit comments

Comments
 (0)