@@ -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 ) ]
5065pub struct KeyCode ;
5166impl 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