Как получить "имя" 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,

0 ответов

Другие вопросы по тегам