Как получить "имя" CGKeyCode?
Мне нужно отобразить CGKeyCode
в удобочитаемом виде.
Вот пример:
Для букв и букв:
0 -> "a"
18 -> "1"
Для конкретных ключей:
49 -> "Space"
83 -> "Numpad 1"
80 -> "F19"
В зависимости от раскладки клавиатуры названия придется менять. Код ключа указывает только местоположение ключа, независимо от его символов. Например код ключа 16
будет "y" на QWERTY-клавиатуре, но "z" на QWERTZ-клавиатуре.
Так как это должно быть распространенной проблемой и используется в OS X для назначения сочетаний клавиш, мне интересно, есть ли какая-либо встроенная функциональность или библиотека, которую я мог бы использовать для этого?
Написание операторов переключателя для каждой раскладки клавиатуры вручную кажется огромной задачей…
Я нашел два перечисления в events.h в Carbon.
Один для клавиатурных кодов с универсальными именами, которые не зависят от раскладок клавиатуры, а другой - для конкретных имен раскладки клавиатуры на стандартной клавиатуре США ANSI.
Имена соответствуют соглашению об именах kVK_F19
или же kVK_ANSI_RightBracket
, Тем не менее, я мог использовать только те, у которых раскладка клавиатуры в США, и имена были бы лучше в более простом виде, как F19
или же Right Bracket
,