Преобразование keyCode в фактические значения ключа и кода - PullRequest
1 голос
/ 27 июня 2019

Фон : Я сохранил модификатор ключа и значение кода клавиши, например ["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, в противном случае они были бы неопределенными.

Последний вопрос: как еще выполнить это преобразование? Или есть какой-нибудь другой способ добиться того, чего я хочу?

...