¿Cómo puedo convertir un código clave, tales como kVK_ANSI_1
en una cadena que me puede pasar a setKeyEquivalent
(por lo que para kVK_ANSI_1
, me gustaría obtener @"1"
)? ¿Y por qué hay dos formas de especificar claves de todos modos? Tendría más sentido tener una sola representación.Convertir código de llave en cadena equivalente clave
5
A
Respuesta
5
Terminé usando la siguiente función encontré here.
/* Returns string representation of key, if it is printable.
* Ownership follows the Create Rule; that is, it is the caller's
* responsibility to release the returned object. */
CFStringRef createStringForKey(CGKeyCode keyCode)
{
TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
CFDataRef layoutData =
TISGetInputSourceProperty(currentKeyboard,
kTISPropertyUnicodeKeyLayoutData);
const UCKeyboardLayout *keyboardLayout =
(const UCKeyboardLayout *)CFDataGetBytePtr(layoutData);
UInt32 keysDown = 0;
UniChar chars[4];
UniCharCount realLength;
UCKeyTranslate(keyboardLayout,
keyCode,
kUCKeyActionDisplay,
0,
LMGetKbdType(),
kUCKeyTranslateNoDeadKeysBit,
&keysDown,
sizeof(chars)/sizeof(chars[0]),
&realLength,
chars);
CFRelease(currentKeyboard);
return CFStringCreateWithCharacters(kCFAllocatorDefault, chars, 1);
}
+0
impresionante y útil (incluso tan tarde). Gracias – Terminality
2
UCKeyTranslate es probablemente lo que está después https://developer.apple.com/library/mac/#documentation/Carbon/Reference/Unicode_Utilities_Ref/Reference/reference.html
Cuestiones relacionadas
- 1. Convertir código de clave virtual a cadena Unicode
- 2. Convertir código clave a clave char
- 3. Convertir cadena a valor de Enum equivalente
- 4. Cómo convertir un carácter a código clave?
- 5. ¿Cómo puedo convertir un código de clave en un char o cadena?
- 6. Código inalcanzable en la llave de cierre del constructor
- 7. ¿Windows equivalente a la llave de OS X?
- 8. jQuery + JSON cómo definir llave de variables
- 9. ¿Cómo convertir una palabra clave clojure en una cadena?
- 10. MySQL - EN llave duplicada INSERT
- 11. GetHashCode (llave) y int.MaxValue
- 12. Convertir un árbol de expresión de cadena de código fuente
- 13. Xkb: Cómo convertir un código clave a keysym
- 14. ¿Cómo convertir un carácter a su código clave?
- 15. Convertir cadena en dibujable
- 16. ¿Convertir cadena en flotar?
- 17. sacar la llave primaria en MySQL
- 18. Convertir entradas en clave, pares de valores
- 19. Equivalente a una propiedad de vista de clave en WPF
- 20. Convertir std :: cadena en entero
- 21. Código equivalente a la palabra clave 'dejar' en el método de extensión LINQ encadenado llama
- 22. Software Java en llave USB
- 23. Convertir código Java en código Clojure rápido
- 24. PHP: is_array en $ matriz [ 'clave'] con 'clave' no existente
- 25. Python: convertir cadena a matriz de bytes
- 26. Convertir objeto de cadena JSON en C#
- 27. Disparador en INSERTAR EN LLAVE DUPLICADA
- 28. puede convertir cadena en matriz?
- 29. incapaz de dejar la llave
- 30. SQLAlchemy ACTUALIZACIÓN DE LLAVE DUPLICADA
Hay dos formas de especificar claves porque 'kVK_ANSI_1' representa una posición en el teclado (donde se encuentra la tecla "1" en un teclado estándar ANSI de EE.UU.), mientras que "1" representa el carácter escrito (que puede o no venir de 'kVK_ANSI_1', dependiendo de la distribución del teclado). – jlstrecker