USB-клавиатура Redragon Asura отображает все клавиши Ctrl, Alt, Win на Shift_L

Другим альтернативным решением, вместо модификации исходников makepasswd, является установка демона haveged для ускорения процесса генерации ключей. Чтобы установить его:

sudo apt-get install haveged

После его установки makepasswd работает так, как и должен.

Демон haveged теперь требуется в виртуальных машинах и iOT (например, raspberry), где энтропия обычно низкая.

Из Debian, man haveged:

НАЗВАНИЕ
haveged - Генерирует случайные числа и питает случайное устройство Linux.

ОПИСАНИЕ
haveged генерирует непредсказуемый поток случайных чисел, собранных из косвенных эффектов аппаратных событий на скрытое состояние процессора (кэш, предсказатели ветвлений, таблицы трансляции памяти и т.д.) с использованием технологии HAVEGE (HArdware Volatile Entropy Gathering and Expansion) алгоритма. Алгоритм работает в пространстве пользователя, не требуются специальные привилегии для доступа файловой системы к выходному потоку.

Linux накапливает случайность для распределения с помощью /dev/random и /dev/urandom интерфейсами устройств. Стандартные механизмы заполнения /dev/random могут оказаться недостаточными для удовлетворения спроса в системах с высокими потребностями или ограниченным взаимодействием с пользователем. В таких обстоятельствах haveged может быть запущен как привилегированный демон для заполнения пула /dev/random всякий раз, когда запас случайных битов в /dev/random падает ниже отметки низкого уровня воды устройства.

2
13.06.2018, 15:22
1 ответ

Частичный ответ:

Первый (тихий )HID-дескриптор выглядит так, как вы обычно видите для USB-клавиатур :Отчет состоит из 8 бит для левого и правого Ctrl/Shift/Alt/Meta (Win ), за которым следует зарезервированный байт (, ноль )и 6 байтов для скан-кодов для нажатий клавиш. (По этой причине USB-клавиатуры ограничены 6 -одновременными нажатиями клавиш ). Это может быть своего рода устаревший дескриптор.

Второй дескриптор использует несколько типов отчетов. Первые три предназначены для «потребителя» (, что бы это ни было ), управления питанием и одного поставщика -, определенного (, поэтому мы не знаем, что он делает ). Остальные три типа отчетов (с идентификаторами от 4 до 6 )сообщают о каждой отдельной клавише в виде битового поля (, что имеет большой смысл для игровой клавиатуры с n -нажатий клавиш ).

Как видно из дампа hidraw, функциональные клавиши отображаются правильно. :Нажатие Левый Ctrl дает вам

04 01 00 00 00 00 00 00 

(идентификатор отчета 4, первый бит на ), при нажатии левый Alt вы получите

04 04 00 00 00 00 00 00

(идентификатор отчета — 4, третий бит — )и т. д., и отпускание всех клавиш сбрасывает все биты на ноль.

Отображение устройства в ядре

Keyboard.00e0 ---> Key.LeftControl
Keyboard.00e1 ---> Key.LeftShift
Keyboard.00e2 ---> Key.LeftAlt
Keyboard.00e3 ---> Key.LeftMeta
Keyboard.00e4 ---> Key.RightCtrl
Keyboard.00e5 ---> Key.RightShift
Keyboard.00e6 ---> Key.RightAlt
Keyboard.00e7 ---> Key.RightMeta

на самом деле заявляет, что понимает это, и должен отображать их на разные сканированные коды. Так что, если вы действительно не видите ничего похожего на

type 4 (EV_MSC), code 4 (MSC_SCAN), value 1d
type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 1d
type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 38
type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 1
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 38
type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 0
-------------- SYN_REPORT ------------

вevtest(обратите внимание на разные MSC_SCANкоды, один раз 1d, один раз 38; не обращайте внимания на строку с EV_KEY), тогда что-то пойдет не так, когда ядро ​​сопоставит отчет HID со скан-кодами.

В таком случае, пожалуйста, сообщите об ошибке разработчикам ядра. (Думаю, для "подсистемы ввода" )включите всю информацию на данный момент и посмотрите, есть ли у них идея отладить это.

Возможное альтернативное решение — как-то активировать устаревшее HID-устройство, так как оно больше похоже на обычную USB-клавиатуру и может работать «из коробки». Есть ли на клавиатуре какие-то клавиши или комбинации клавиш, которые выглядят так, как будто они могут сделать это?

1
27.01.2020, 21:58

Теги

Похожие вопросы