Skip to content

Commit 164635f

Browse files
committed
core-graphics: Add CGKeyCodes for numkey as well as ANSI, ISO and JIS keys
1 parent 66be81a commit 164635f

File tree

1 file changed

+115
-12
lines changed

1 file changed

+115
-12
lines changed

core-graphics/src/event.rs

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

46+
/// These constants are the virtual keycodes defined originally in
47+
/// Inside Mac Volume V, pg. V-191. They identify physical keys on a
48+
/// keyboard. Those constants with "ANSI" in the name are labeled
49+
/// according to the key position on an ANSI-standard US keyboard.
50+
/// For example, kVK_ANSI_A indicates the virtual keycode for the key
51+
/// with the letter 'A' in the US keyboard layout. Other keyboard
52+
/// layouts may have the 'A' key label on a different physical key;
53+
/// in this case, pressing 'A' will generate a different virtual
54+
/// keycode.
55+
///
56+
/// [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-L261)
57+
#[repr(C)]
58+
pub struct ANSIKeyCode;
59+
impl KeyCode {
60+
pub const ANSI_A: CGKeyCode = 0x00;
61+
pub const ANSI_S: CGKeyCode = 0x01;
62+
pub const ANSI_D: CGKeyCode = 0x02;
63+
pub const ANSI_F: CGKeyCode = 0x03;
64+
pub const ANSI_H: CGKeyCode = 0x04;
65+
pub const ANSI_G: CGKeyCode = 0x05;
66+
pub const ANSI_Z: CGKeyCode = 0x06;
67+
pub const ANSI_X: CGKeyCode = 0x07;
68+
pub const ANSI_C: CGKeyCode = 0x08;
69+
pub const ANSI_V: CGKeyCode = 0x09;
70+
pub const ANSI_B: CGKeyCode = 0x0B;
71+
pub const ANSI_Q: CGKeyCode = 0x0C;
72+
pub const ANSI_W: CGKeyCode = 0x0D;
73+
pub const ANSI_E: CGKeyCode = 0x0E;
74+
pub const ANSI_R: CGKeyCode = 0x0F;
75+
pub const ANSI_Y: CGKeyCode = 0x10;
76+
pub const ANSI_T: CGKeyCode = 0x11;
77+
pub const ANSI_1: CGKeyCode = 0x12;
78+
pub const ANSI_2: CGKeyCode = 0x13;
79+
pub const ANSI_3: CGKeyCode = 0x14;
80+
pub const ANSI_4: CGKeyCode = 0x15;
81+
pub const ANSI_6: CGKeyCode = 0x16;
82+
pub const ANSI_5: CGKeyCode = 0x17;
83+
pub const ANSI_EQUAL: CGKeyCode = 0x18;
84+
pub const ANSI_9: CGKeyCode = 0x19;
85+
pub const ANSI_7: CGKeyCode = 0x1A;
86+
pub const ANSI_MINUS: CGKeyCode = 0x1B;
87+
pub const ANSI_8: CGKeyCode = 0x1C;
88+
pub const ANSI_0: CGKeyCode = 0x1D;
89+
pub const ANSI_RIGHT_BRACKET: CGKeyCode = 0x1E;
90+
pub const ANSI_O: CGKeyCode = 0x1F;
91+
pub const ANSI_U: CGKeyCode = 0x20;
92+
pub const ANSI_LEFT_BRACKET: CGKeyCode = 0x21;
93+
pub const ANSI_I: CGKeyCode = 0x22;
94+
pub const ANSI_P: CGKeyCode = 0x23;
95+
pub const ANSI_L: CGKeyCode = 0x25;
96+
pub const ANSI_J: CGKeyCode = 0x26;
97+
pub const ANSI_QUOTE: CGKeyCode = 0x27;
98+
pub const ANSI_K: CGKeyCode = 0x28;
99+
pub const ANSI_SEMICOLON: CGKeyCode = 0x29;
100+
pub const ANSI_BACKSLASH: CGKeyCode = 0x2A;
101+
pub const ANSI_COMMA: CGKeyCode = 0x2B;
102+
pub const ANSI_SLASH: CGKeyCode = 0x2C;
103+
pub const ANSI_N: CGKeyCode = 0x2D;
104+
pub const ANSI_M: CGKeyCode = 0x2E;
105+
pub const ANSI_PERIOD: CGKeyCode = 0x2F;
106+
pub const ANSI_GRAVE: CGKeyCode = 0x32;
107+
pub const ANSI_KEYPAD_DECIMAL: CGKeyCode = 0x41;
108+
pub const ANSI_KEYPAD_MULTIPLY: CGKeyCode = 0x43;
109+
pub const ANSI_KEYPAD_PLUS: CGKeyCode = 0x45;
110+
pub const ANSI_KEYPAD_CLEAR: CGKeyCode = 0x47;
111+
pub const ANSI_KEYPAD_DIVIDE: CGKeyCode = 0x4B;
112+
pub const ANSI_KEYPAD_ENTER: CGKeyCode = 0x4C;
113+
pub const ANSI_KEYPAD_MINUS: CGKeyCode = 0x4E;
114+
pub const ANSI_KEYPAD_EQUAL: CGKeyCode = 0x51;
115+
pub const ANSI_KEYPAD_0: CGKeyCode = 0x52;
116+
pub const ANSI_KEYPAD_1: CGKeyCode = 0x53;
117+
pub const ANSI_KEYPAD_2: CGKeyCode = 0x54;
118+
pub const ANSI_KEYPAD_3: CGKeyCode = 0x55;
119+
pub const ANSI_KEYPAD_4: CGKeyCode = 0x56;
120+
pub const ANSI_KEYPAD_5: CGKeyCode = 0x57;
121+
pub const ANSI_KEYPAD_6: CGKeyCode = 0x58;
122+
pub const ANSI_KEYPAD_7: CGKeyCode = 0x59;
123+
pub const ANSI_KEYPAD_8: CGKeyCode = 0x5B;
124+
pub const ANSI_KEYPAD_9: CGKeyCode = 0x5C;
125+
}
126+
46127
/// Key codes for keys that are independent of keyboard layout.
47128
///
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)
129+
/// [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#L266-L313)
49130
#[repr(C)]
50131
pub struct KeyCode;
51132
impl KeyCode {
@@ -64,41 +145,63 @@ impl KeyCode {
64145
pub const RIGHT_OPTION: CGKeyCode = 0x3D;
65146
pub const RIGHT_CONTROL: CGKeyCode = 0x3E;
66147
pub const FUNCTION: CGKeyCode = 0x3F;
148+
pub const F17: CGKeyCode = 0x40;
67149
pub const VOLUME_UP: CGKeyCode = 0x48;
68150
pub const VOLUME_DOWN: CGKeyCode = 0x49;
69151
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;
152+
pub const F18: CGKeyCode = 0x4F;
153+
pub const F19: CGKeyCode = 0x50;
154+
pub const F20: CGKeyCode = 0x5A;
74155
pub const F5: CGKeyCode = 0x60;
75156
pub const F6: CGKeyCode = 0x61;
76157
pub const F7: CGKeyCode = 0x62;
158+
pub const F3: CGKeyCode = 0x63;
77159
pub const F8: CGKeyCode = 0x64;
78160
pub const F9: CGKeyCode = 0x65;
79-
pub const F10: CGKeyCode = 0x6D;
80161
pub const F11: CGKeyCode = 0x67;
81-
pub const F12: CGKeyCode = 0x6F;
82162
pub const F13: CGKeyCode = 0x69;
163+
pub const F16: CGKeyCode = 0x6A;
83164
pub const F14: CGKeyCode = 0x6B;
165+
pub const F10: CGKeyCode = 0x6D;
166+
pub const F12: CGKeyCode = 0x6F;
84167
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;
90168
pub const HELP: CGKeyCode = 0x72;
91169
pub const HOME: CGKeyCode = 0x73;
92170
pub const PAGE_UP: CGKeyCode = 0x74;
93171
pub const FORWARD_DELETE: CGKeyCode = 0x75;
172+
pub const F4: CGKeyCode = 0x76;
94173
pub const END: CGKeyCode = 0x77;
174+
pub const F2: CGKeyCode = 0x78;
95175
pub const PAGE_DOWN: CGKeyCode = 0x79;
176+
pub const F1: CGKeyCode = 0x7A;
96177
pub const LEFT_ARROW: CGKeyCode = 0x7B;
97178
pub const RIGHT_ARROW: CGKeyCode = 0x7C;
98179
pub const DOWN_ARROW: CGKeyCode = 0x7D;
99180
pub const UP_ARROW: CGKeyCode = 0x7E;
100181
}
101182

183+
/// ISO keyboards only
184+
///
185+
/// [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#L318)
186+
#[repr(C)]
187+
pub struct ISOKeyCode;
188+
impl KeyCode {
189+
pub const ISO_SECTION: CGKeyCode = 0x0A;
190+
}
191+
192+
/// JIS keyboards only
193+
///
194+
/// [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#L323-L327)
195+
#[repr(C)]
196+
pub struct JISKeyCode;
197+
impl KeyCode {
198+
pub const JIS_YEN: CGKeyCode = 0x5D;
199+
pub const JIS_UNDERSCORE: CGKeyCode = 0x5E;
200+
pub const JIS_KEYPAD_COMMA: CGKeyCode = 0x5F;
201+
pub const JIS_EISU: CGKeyCode = 0x66;
202+
pub const JIS_KANA: CGKeyCode = 0x68;
203+
}
204+
102205
#[repr(C)]
103206
pub struct ScrollEventUnit {}
104207
impl ScrollEventUnit {

0 commit comments

Comments
 (0)