Фон : Я сохранил модификатор ключа и значение кода клавиши, например ["shiftKey", 32]
(=> shift + пробел) или [undefined, 32]
(=> пробел) на компьютере пользователя. Этот массив, который я сохранил, действует как «горячая клавиша», т. Е. Я должен определять, когда пользователь нажимает любую клавишу, совпадающую с горячей клавишей. Поэтому я должен что-то делать, когда пользователь нажимает, например, Shift + Space. По функциональности он работает нормально до сих пор, так как код ключа все еще совпадает. Единственная проблема в том, что ...
Проблема : Я не могу правильно отобразить keyCode
в текстовом виде. (клавиша "?" имеет keyCode=191
в моей системе, но она не отображается правильно при выполнении String.fromCharCode
, очевидно)
Мое предлагаемое решение: преобразовать массив [key modifier, keyCode]
в [key modifier, key, code]
(поскольку свойства key
и code
могут быть легко отображены в виде текста). Код преобразования, который я напишу, будет работать на компьютере пользователя (это расширение Chrome), поэтому не стоит беспокоиться о том, что у пользователя нет информации о локали. Проблема: как именно выполнить это преобразование?
Моя попытка: отправлять события программной клавиатуры в поддельное текстовое поле на основе keyCode
и использовать значения key
и code
, сгенерированные из них, в качестве результата преобразования. Тем не менее, единственная правильно работающая скрипка , которую я смог найти, требовала от меня фактически предоставить значения key
и code
, в противном случае они были бы неопределенными.
Последний вопрос: как еще выполнить это преобразование? Или есть какой-нибудь другой способ добиться того, чего я хочу?