webentwicklung-frage-antwort-db.com.de

Wo finde ich eine Liste der virtuellen Mac-Schlüsselcodes?

Ich verwende CGEventCreateKeyboardEvent und muss wissen, welche CGKeyCode Werte verwendet werden sollen.

Insbesondere bin ich nach dem Schlüsselcode für die Command Schlüssel. In den Dokumenten finden Sie Beispiele für andere Schlüssel: z ist 6shift ist 56.

Muss es irgendwo eine Liste der virtuellen Mac-Schlüsselcodes geben?

70
Nick Moore

Die kanonischere Referenz ist in <HIToolbox/Events.h>:

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h

In neueren Versionen von MacOS wurde die "Events.h" hierher verschoben:

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

Nachfolgend finden Sie eine Liste der gängigen Schlüsselcodes zur schnellen Referenz aus Events.h.

Wenn Sie diese Schlüsselcodes in einer Anwendung verwenden müssen, sollten Sie das Carbon-Framework einbeziehen:

Ziel c:
#include <Carbon/Carbon.h>

Schnell:
import Carbon.HIToolbox

Sie können dann direkt die Konstanten kVK_ANSI_A Verwenden.


WARNUNG

Die Tastenkonstanten beziehen sich auf physische Tasten auf der Tastatur. Ihre Ausgabe ändert sich, wenn der Schreiber ein anderes Tastaturlayout verwendet. Die Buchstaben in den Konstanten entsprechen nur dem Tastaturlayout der USA QWERTY.

Zum Beispiel die linke Ringfingertaste in der Startzeile:

QWERTY keyboard layouts > kVK_ANSI_S> "s"
Dvorak keyboard layouto > kVK_ANSI_S> "o"

Hier werden Strategien für die layoutunabhängige Konvertierung von Schlüsselcode in Zeichenfolge und umgekehrt erörtert:

Wie konvertiere ich ASCII Zeichen in CGKeyCode?


Von Events.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
};

Macintosh Toolbox Essentials zeigt die physischen Positionen dieser virtuellen Tastencodes für die Apple Extended Keyboard II in Figure 2-10]:

Virtual key codes for the Apple Extended Keyboard II

66
pkamb

Fand eine Antwort hier .

So:

  • Befehlstaste ist 55
  • Schicht ist 56
  • Feststelltaste 57
  • Option ist 58
  • Kontrolle ist 59.
18
Nick Moore

hier sind alle Schlüsselcodes. Sie können von dort aus schauen ... oder es gibt eine App auf dem Mac Appstore mit dem Namen "Key Codes". Laden Sie sie herunter und zeigen Sie den Keycode an, mit dem Sie eine Taste gedrückt haben.

3
the_ex

Hier sind einige vorgefertigte Objective-C-Wörterbücher, wenn jemand ansi-Zeichen eingeben möchte:

NSDictionary *lowerCaseCodes = @{
                                     @"Q" : [NSNumber numberWithInteger:12],
                                     @"W" : [NSNumber numberWithInteger:    13],
                                     @"E" : [NSNumber numberWithInteger:    14],
                                     @"R" : [NSNumber numberWithInteger:    15],
                                     @"T" : [NSNumber numberWithInteger:    17],
                                     @"Y" : [NSNumber numberWithInteger:    16],
                                     @"U" : [NSNumber numberWithInteger:    32],
                                     @"I" : [NSNumber numberWithInteger:    34],
                                     @"O" : [NSNumber numberWithInteger:    31],
                                     @"P" : [NSNumber numberWithInteger:    35],
                                     @"A" : [NSNumber numberWithInteger:    0],
                                     @"S" : [NSNumber numberWithInteger:    1],
                                     @"D" : [NSNumber numberWithInteger:    2],
                                     @"F" : [NSNumber numberWithInteger:    3],
                                     @"G" : [NSNumber numberWithInteger:    5],
                                     @"H" : [NSNumber numberWithInteger:    4],
                                     @"J" : [NSNumber numberWithInteger:    38],
                                     @"K" : [NSNumber numberWithInteger:    40],
                                     @"L" : [NSNumber numberWithInteger:    37],
                                     @"Z" : [NSNumber numberWithInteger:    6],
                                     @"X" : [NSNumber numberWithInteger:    7],
                                     @"C" : [NSNumber numberWithInteger:    8],
                                     @"V" : [NSNumber numberWithInteger:    9],
                                     @"B" : [NSNumber numberWithInteger:    11],
                                     @"N" : [NSNumber numberWithInteger:    45],
                                     @"M" : [NSNumber numberWithInteger:    46],
                                     @"0" : [NSNumber numberWithInteger:    29],
                                     @"1" : [NSNumber numberWithInteger:    18],
                                     @"2" : [NSNumber numberWithInteger:    19],
                                     @"3" : [NSNumber numberWithInteger:    20],
                                     @"4" : [NSNumber numberWithInteger:    21],
                                     @"5" : [NSNumber numberWithInteger:    23],
                                     @"6" : [NSNumber numberWithInteger:    22],
                                     @"7" : [NSNumber numberWithInteger:    26],
                                     @"8" : [NSNumber numberWithInteger:    28],
                                     @"9" : [NSNumber numberWithInteger:    25],
                                     @" " : [NSNumber numberWithInteger:    49],
                                     @"." : [NSNumber numberWithInteger:    47],
                                     @"," : [NSNumber numberWithInteger:    43],
                                     @"/" : [NSNumber numberWithInteger:    44],
                                     @";" : [NSNumber numberWithInteger:    41],
                                     @"'" : [NSNumber numberWithInteger:    39],
                                     @"[" : [NSNumber numberWithInteger:    33],
                                     @"]" : [NSNumber numberWithInteger:    30],
                                     @"\\" : [NSNumber numberWithInteger:    42],
                                     @"-" : [NSNumber numberWithInteger:    27],
                                     @"=" : [NSNumber numberWithInteger:    24]
                                     };

        NSDictionary *shiftCodes = @{//these keys must be used in conjunction with the shift key
                                     @"<" : [NSNumber numberWithInteger:    43],
                                     @">" : [NSNumber numberWithInteger:    47],
                                     @"?" : [NSNumber numberWithInteger:    44],
                                     @":" : [NSNumber numberWithInteger:    41],
                                     @"\"" : [NSNumber numberWithInteger:   39],
                                     @"{" : [NSNumber numberWithInteger:    33],
                                     @"}" : [NSNumber numberWithInteger:    30],
                                     @"|" : [NSNumber numberWithInteger:    42],
                                     @")" : [NSNumber numberWithInteger:    29],
                                     @"!" : [NSNumber numberWithInteger:    18],
                                     @"@" : [NSNumber numberWithInteger:    19],
                                     @"#" : [NSNumber numberWithInteger:    20],
                                     @"$" : [NSNumber numberWithInteger:    21],
                                     @"%" : [NSNumber numberWithInteger:    23],
                                     @"^" : [NSNumber numberWithInteger:    22],
                                     @"&" : [NSNumber numberWithInteger:    26],
                                     @"*" : [NSNumber numberWithInteger:    28],
                                     @"(" : [NSNumber numberWithInteger:    25],
                                     @"_" : [NSNumber numberWithInteger:    27],
                                     @"+" : [NSNumber numberWithInteger:    24]
                                     };
0
Reece