Macos 在哪里可以找到Mac虚拟密钥代码列表?

Macos 在哪里可以找到Mac虚拟密钥代码列表?,macos,keyboard,quartz-graphics,keycode,cgkeycode,Macos,Keyboard,Quartz Graphics,Keycode,Cgkeycode,我正在使用CGEventCreateKeyboardEvent,需要知道要使用的CGKeyCode值 具体地说,我是在命令键的键代码之后。文档中给出了其他键的示例:z为6,shift为56 某处一定有一个Mac虚拟密钥码列表 找到了答案 因此: 命令键是55 班次是56 帽锁57 选项是58 控制是59 在中有更规范的引用: 在较新版本的MacOS中,“Events.h”移动到此处: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Sys

我正在使用
CGEventCreateKeyboardEvent
,需要知道要使用的
CGKeyCode

具体地说,我是在命令键的键代码之后。文档中给出了其他键的示例:z为
6
,shift为
56

某处一定有一个Mac虚拟密钥码列表

找到了答案

因此:

  • 命令键是55
  • 班次是56
  • 帽锁57
  • 选项是58
  • 控制是59
      中有更规范的引用:

      在较新版本的MacOS中,“Events.h”移动到此处:

      /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
      

      以下是从
      Events.h
      中获取的供快速参考的常用键代码列表

      如果您需要在应用程序中使用这些关键代码,则应包括碳框架:

      目标C:
      #包括

      Swift:
      import Carbon.HIToolbox

      然后可以直接使用
      kVK\u ANSI\u A
      常量


      警告 键常量引用键盘上的物理键。如果打字员使用不同的键盘布局,它们的输出会发生变化。常数中的字母仅对应于美国QWERTY键盘布局

      例如,homerow上的左无名指键:

      QWERTY键盘布局
      >s>
      kVK\u ANSI\u s
      “s”

      Dvorak键盘布局
      >o>
      kVK\U ANSI\U S
      “o”

      此处讨论了键码到字符串的布局无关转换策略,以及键码到字符串的布局无关转换策略:


      事件.h

      /*
       *  Summary:
       *    Virtual keycodes
       *  
       *  Discussion:
       *    These constants are the virtual keycodes defined originally in
       *    Inside Mac Volume V, pg. V-191. They identify physical keys on a
       *    keyboard. Those constants with "ANSI" in the name are labeled
       *    according to the key position on an ANSI-standard US keyboard.
       *    For example, kVK_ANSI_A indicates the virtual keycode for the key
       *    with the letter 'A' in the US keyboard layout. Other keyboard
       *    layouts may have the 'A' key label on a different physical key;
       *    in this case, pressing 'A' will generate a different virtual
       *    keycode.
       */
      enum {
        kVK_ANSI_A                    = 0x00,
        kVK_ANSI_S                    = 0x01,
        kVK_ANSI_D                    = 0x02,
        kVK_ANSI_F                    = 0x03,
        kVK_ANSI_H                    = 0x04,
        kVK_ANSI_G                    = 0x05,
        kVK_ANSI_Z                    = 0x06,
        kVK_ANSI_X                    = 0x07,
        kVK_ANSI_C                    = 0x08,
        kVK_ANSI_V                    = 0x09,
        kVK_ANSI_B                    = 0x0B,
        kVK_ANSI_Q                    = 0x0C,
        kVK_ANSI_W                    = 0x0D,
        kVK_ANSI_E                    = 0x0E,
        kVK_ANSI_R                    = 0x0F,
        kVK_ANSI_Y                    = 0x10,
        kVK_ANSI_T                    = 0x11,
        kVK_ANSI_1                    = 0x12,
        kVK_ANSI_2                    = 0x13,
        kVK_ANSI_3                    = 0x14,
        kVK_ANSI_4                    = 0x15,
        kVK_ANSI_6                    = 0x16,
        kVK_ANSI_5                    = 0x17,
        kVK_ANSI_Equal                = 0x18,
        kVK_ANSI_9                    = 0x19,
        kVK_ANSI_7                    = 0x1A,
        kVK_ANSI_Minus                = 0x1B,
        kVK_ANSI_8                    = 0x1C,
        kVK_ANSI_0                    = 0x1D,
        kVK_ANSI_RightBracket         = 0x1E,
        kVK_ANSI_O                    = 0x1F,
        kVK_ANSI_U                    = 0x20,
        kVK_ANSI_LeftBracket          = 0x21,
        kVK_ANSI_I                    = 0x22,
        kVK_ANSI_P                    = 0x23,
        kVK_ANSI_L                    = 0x25,
        kVK_ANSI_J                    = 0x26,
        kVK_ANSI_Quote                = 0x27,
        kVK_ANSI_K                    = 0x28,
        kVK_ANSI_Semicolon            = 0x29,
        kVK_ANSI_Backslash            = 0x2A,
        kVK_ANSI_Comma                = 0x2B,
        kVK_ANSI_Slash                = 0x2C,
        kVK_ANSI_N                    = 0x2D,
        kVK_ANSI_M                    = 0x2E,
        kVK_ANSI_Period               = 0x2F,
        kVK_ANSI_Grave                = 0x32,
        kVK_ANSI_KeypadDecimal        = 0x41,
        kVK_ANSI_KeypadMultiply       = 0x43,
        kVK_ANSI_KeypadPlus           = 0x45,
        kVK_ANSI_KeypadClear          = 0x47,
        kVK_ANSI_KeypadDivide         = 0x4B,
        kVK_ANSI_KeypadEnter          = 0x4C,
        kVK_ANSI_KeypadMinus          = 0x4E,
        kVK_ANSI_KeypadEquals         = 0x51,
        kVK_ANSI_Keypad0              = 0x52,
        kVK_ANSI_Keypad1              = 0x53,
        kVK_ANSI_Keypad2              = 0x54,
        kVK_ANSI_Keypad3              = 0x55,
        kVK_ANSI_Keypad4              = 0x56,
        kVK_ANSI_Keypad5              = 0x57,
        kVK_ANSI_Keypad6              = 0x58,
        kVK_ANSI_Keypad7              = 0x59,
        kVK_ANSI_Keypad8              = 0x5B,
        kVK_ANSI_Keypad9              = 0x5C
      };
      
      /* keycodes for keys that are independent of keyboard layout*/
      enum {
        kVK_Return                    = 0x24,
        kVK_Tab                       = 0x30,
        kVK_Space                     = 0x31,
        kVK_Delete                    = 0x33,
        kVK_Escape                    = 0x35,
        kVK_Command                   = 0x37,
        kVK_Shift                     = 0x38,
        kVK_CapsLock                  = 0x39,
        kVK_Option                    = 0x3A,
        kVK_Control                   = 0x3B,
        kVK_RightShift                = 0x3C,
        kVK_RightOption               = 0x3D,
        kVK_RightControl              = 0x3E,
        kVK_Function                  = 0x3F,
        kVK_F17                       = 0x40,
        kVK_VolumeUp                  = 0x48,
        kVK_VolumeDown                = 0x49,
        kVK_Mute                      = 0x4A,
        kVK_F18                       = 0x4F,
        kVK_F19                       = 0x50,
        kVK_F20                       = 0x5A,
        kVK_F5                        = 0x60,
        kVK_F6                        = 0x61,
        kVK_F7                        = 0x62,
        kVK_F3                        = 0x63,
        kVK_F8                        = 0x64,
        kVK_F9                        = 0x65,
        kVK_F11                       = 0x67,
        kVK_F13                       = 0x69,
        kVK_F16                       = 0x6A,
        kVK_F14                       = 0x6B,
        kVK_F10                       = 0x6D,
        kVK_F12                       = 0x6F,
        kVK_F15                       = 0x71,
        kVK_Help                      = 0x72,
        kVK_Home                      = 0x73,
        kVK_PageUp                    = 0x74,
        kVK_ForwardDelete             = 0x75,
        kVK_F4                        = 0x76,
        kVK_End                       = 0x77,
        kVK_F2                        = 0x78,
        kVK_PageDown                  = 0x79,
        kVK_F1                        = 0x7A,
        kVK_LeftArrow                 = 0x7B,
        kVK_RightArrow                = 0x7C,
        kVK_DownArrow                 = 0x7D,
        kVK_UpArrow                   = 0x7E
      };
      
      图2-10中显示了苹果扩展键盘II的虚拟按键代码的物理位置:


      以下是所有钥匙代码

      下面是一个表,其中包含三个平台的一些键代码。它基于美国扩展键盘布局

      或者,Mac应用商店中有一个名为“Key Codes”的应用程序。下载它以查看您按下的键的键码

      键代码:

      如果有人想键入ansi字符,这里有一些预构建的Objective-C字典:

      NSDictionary *lowerCaseCodes = @{
                                      @"Q" : @(12),
                                      @"W" : @(13),
                                      @"E" : @(14),
                                      @"R" : @(15),
                                      @"T" : @(17),
                                      @"Y" : @(16),
                                      @"U" : @(32),
                                      @"I" : @(34),
                                      @"O" : @(31),
                                      @"P" : @(35),
                                      @"A" : @(0),
                                      @"S" : @(1),
                                      @"D" : @(2),
                                      @"F" : @(3),
                                      @"G" : @(5),
                                      @"H" : @(4),
                                      @"J" : @(38),
                                      @"K" : @(40),
                                      @"L" : @(37),
                                      @"Z" : @(6),
                                      @"X" : @(7),
                                      @"C" : @(8),
                                      @"V" : @(9),
                                      @"B" : @(11),
                                      @"N" : @(45),
                                      @"M" : @(46),
                                      @"0" : @(29),
                                      @"1" : @(18),
                                      @"2" : @(19),
                                      @"3" : @(20),
                                      @"4" : @(21),
                                      @"5" : @(23),
                                      @"6" : @(22),
                                      @"7" : @(26),
                                      @"8" : @(28),
                                      @"9" : @(25),
                                      @" " : @(49),
                                      @"." : @(47),
                                      @"," : @(43),
                                      @"/" : @(44),
                                      @";" : @(41),
                                      @"'" : @(39),
                                      @"[" : @(33),
                                      @"]" : @(30),
                                      @"\\" : @(42),
                                      @"-" : @(27),
                                      @"=" : @(24)
                                      };
      
      NSDictionary *shiftCodes = @{ // used in conjunction with the shift key
                                      @"<" : @(43),
                                      @">" : @(47),
                                      @"?" : @(44),
                                      @":" : @(41),
                                      @"\"" : @(39),
                                      @"{" : @(33),
                                      @"}" : @(30),
                                      @"|" : @(42),
                                      @")" : @(29),
                                      @"!" : @(18),
                                      @"@" : @(19),
                                      @"#" : @(20),
                                      @"$" : @(21),
                                      @"%" : @(23),
                                      @"^" : @(22),
                                      @"&" : @(26),
                                      @"*" : @(28),
                                      @"(" : @(25),
                                      @"_" : @(27),
                                      @"+" : @(24)
                                      };
      
      NSDictionary*小写代码=@{
      @"Q":@(12),
      @"W:"(13),
      @“E”:(14),
      @“R”:@(15),
      @"T:"(17),
      @"Y:"(16),
      @"U:"(32),
      @"I:"(34),
      @"O:@(31),
      @"P:"(35),
      @"A:@(0),,
      @"S:"(1),
      @"D:"(2),
      @"F:"(3),
      @“G”:(5),
      @"H:"(4),
      @“J”:@(38),
      @"K:"(40),
      @“L”:(37),
      @"Z:"(6),
      @"X:"(7),
      @"C:"(8),
      @"V:"(9),
      @“B”:(11),
      @"N:@(45),,
      @“M”:@(46),
      @"0" : @(29),
      @"1" : @(18),
      @"2" : @(19),
      @"3" : @(20),
      @"4" : @(21),
      @"5" : @(23),
      @"6" : @(22),
      @"7" : @(26),
      @"8" : @(28),
      @"9" : @(25),
      @" " : @(49),
      @"." : @(47),
      @"," : @(43),
      @"/" : @(44),
      @";" : @(41),
      @"'" : @(39),
      @"[" : @(33),
      @"]" : @(30),
      @"\\" : @(42),
      @"-" : @(27),
      @"=" : @(24)
      };
      NSDictionary*shiftCodes=@{//与shift键一起使用
      @"" : @(47),
      @"?" : @(44),
      @":" : @(41),
      @"\"" : @(39),
      @"{" : @(33),
      @"}" : @(30),
      @"|" : @(42),
      @")" : @(29),
      @"!" : @(18),
      @"@" : @(19),
      @"#" : @(20),
      @"$" : @(21),
      @"%" : @(23),
      @"^" : @(22),
      @"&" : @(26),
      @"*" : @(28),
      @"(" : @(25),
      @"_" : @(27),
      @"+" : @(24)
      };
      
      除了其他答案中提供的密钥码外,macOS Sierra中引入的较新API中还使用了用于密钥重新映射的“使用ID”:

      技术说明TN2450

      在macOS 10.12中重新映射密钥

      在macOS Sierra 10.12下,密钥重新映射的机制发生了变化。本技术说明适用于密钥重新映射软件的开发人员,以便他们能够更新其软件以支持macOS Sierra 10.12。在本技术说明中,我们介绍了两种实现macOS 10.12密钥重新映射功能的解决方案

      NSDictionary *lowerCaseCodes = @{
                                      @"Q" : @(12),
                                      @"W" : @(13),
                                      @"E" : @(14),
                                      @"R" : @(15),
                                      @"T" : @(17),
                                      @"Y" : @(16),
                                      @"U" : @(32),
                                      @"I" : @(34),
                                      @"O" : @(31),
                                      @"P" : @(35),
                                      @"A" : @(0),
                                      @"S" : @(1),
                                      @"D" : @(2),
                                      @"F" : @(3),
                                      @"G" : @(5),
                                      @"H" : @(4),
                                      @"J" : @(38),
                                      @"K" : @(40),
                                      @"L" : @(37),
                                      @"Z" : @(6),
                                      @"X" : @(7),
                                      @"C" : @(8),
                                      @"V" : @(9),
                                      @"B" : @(11),
                                      @"N" : @(45),
                                      @"M" : @(46),
                                      @"0" : @(29),
                                      @"1" : @(18),
                                      @"2" : @(19),
                                      @"3" : @(20),
                                      @"4" : @(21),
                                      @"5" : @(23),
                                      @"6" : @(22),
                                      @"7" : @(26),
                                      @"8" : @(28),
                                      @"9" : @(25),
                                      @" " : @(49),
                                      @"." : @(47),
                                      @"," : @(43),
                                      @"/" : @(44),
                                      @";" : @(41),
                                      @"'" : @(39),
                                      @"[" : @(33),
                                      @"]" : @(30),
                                      @"\\" : @(42),
                                      @"-" : @(27),
                                      @"=" : @(24)
                                      };
      
      NSDictionary *shiftCodes = @{ // used in conjunction with the shift key
                                      @"<" : @(43),
                                      @">" : @(47),
                                      @"?" : @(44),
                                      @":" : @(41),
                                      @"\"" : @(39),
                                      @"{" : @(33),
                                      @"}" : @(30),
                                      @"|" : @(42),
                                      @")" : @(29),
                                      @"!" : @(18),
                                      @"@" : @(19),
                                      @"#" : @(20),
                                      @"$" : @(21),
                                      @"%" : @(23),
                                      @"^" : @(22),
                                      @"&" : @(26),
                                      @"*" : @(28),
                                      @"(" : @(25),
                                      @"_" : @(27),
                                      @"+" : @(24)
                                      };
      
      Keyboard a and A - 0x04
      Keyboard b and B - 0x05
      Keyboard c and C - 0x06
      Keyboard d and D - 0x07
      Keyboard e and E - 0x08
      ...