Перейти к содержанию

Переназначение клавиш

Переназначения хранятся в таблице из 143 записей по 4 байта. Запись идёт каналом 04 11 в обычной транзакции, а позиция записи в блобе соответствует LED-индексу клавиши.

Транзакция

begin
  → SET 04 11 00*6 09
  → ACK
  → 9 пакетов по 64 Б: 143 записи по 4 байта + 0000 + aa55  (576 Б)
  → commit (ACK сумма = sum(576 Б))
  → save

В отличие от таблицы раскраски, индекс клавиши внутри записи не дублируется: слот определяется позицией в блобе. Команда перезаписывает всю таблицу, поэтому не указанные в вызове клавиши возвращаются к действию по умолчанию.

Пример из дампа: Meta (слот 0x5c) → ЛКМ = запись [01, 01, 01, 00] по смещению 92 × 4 = 368, это шестой из девяти пакетов данных, смещение 48 внутри него.

Типы записей

Запись Действие
[00, 00, 00, 00] действие по умолчанию
[01, 01, код, 00] кнопка мыши
[02, маска, код, 00] шорткат: модификаторы + клавиша
[03, usage_lo, usage_hi, 00] мультимедиа или веб-действие
[06, индекс, режим, счётчик] запуск макроса

Кнопки мыши

Код Кнопка
01 ЛКМ (левая)
02 ПКМ (правая)
04 СКМ (средняя)
08 «назад» (боковая)
10 «вперёд» (боковая)

Значения — степени двойки, поэтому вероятна битовая маска. Комбинированные записи на железе не проверялись.

Шорткаты редактора

Функции редактора — это записи [02, 01, код, 00], где код является HID usage ID буквы. Байт [1] равен 01 — модификатор Ctrl.

Код Функция Шорткат
04 Выбрать всё Ctrl+A
06 Копировать Ctrl+C
09 Найти Ctrl+F
11 Создать Ctrl+N
12 Открыть Ctrl+O
16 Сохранить Ctrl+S
19 Вставить Ctrl+V
1b Вырезать Ctrl+X
1d Отмена Ctrl+Z

Дамп keybind/5-editor содержит девять транзакций, каждая вешает на Caps (слот 0x37) одну функцию. Порядок транзакций совпадает с порядком списка функций в вендорской утилите.

Горячие клавиши

Дамп _old/keybind-hotkeys содержит десять транзакций: A, Shift+B, Ctrl+C, Alt+D, Meta+E, Esc, F1, Num1, Fn и «Проводник». Первые девять — записи типа 02, десятая — мультимедиа [03, 94 01, 00] (usage 0x0194, AL My Computer).

Маска модификаторов

Маска Модификатор
00 без модификатора
01 Ctrl
02 Shift
04 Alt
08 Meta (Win)

Маски складываются: Ctrl+Shift даёт 03. У шорткатов редактора наблюдался только 01, остальные значения подтверждает дамп горячих клавиш. Комбинации проверены на железе: caps=ctrl+c и caps=ctrl+shift+c работают.

Коды клавиш

Код Клавиша Примечание
04 A буквы 04–1D
29 Esc
3A F1 F-клавиши 3A–45
59 Num1 нумпад 58–62, Num0 = 62
AF Fn собственный код прошивки, не HID

Остальные буквы, цифры и F-клавиши совпадают с HID Usage Tables. Fn = AF — собственный код прошивки: в HID Usage Tables такого usage нет, но вендор шлёт именно его.

Мультимедиа и веб

Запись [03, usage_lo, usage_hi, 00] содержит 16-битный little-endian usage ID из HID Consumer Page (0x0C).

Usage Функция
0183 Плеер (AL Consumer Control Configuration)
00CD Воспроизведение/пауза
00B7 Стоп
00B6 Предыдущая песня
00B5 Следующая песня
00E9 Громкость +
00EA Громкость −
00E2 Отключить звук
0223 Домашняя страница (AL Internet Browser)
0227 Веб: обновить (AL Web Refresh)
0226 Веб: остановить (AL Web Stop)
0224 Веб: назад (AL Web Back)
0225 Веб: вперед (AL Web Forward)
022A Веб: избранное (AL Favorites)
0221 Веб: поиск (AL Web Search)
0194 Проводник (AL My Computer)
0192 Калькулятор (AL Calculator)
018A Электронная почта (AL Email Reader)

Запуск макроса

Запись [06, индекс, режим, счётчик] привязывает к клавише макрос.

Поле Смысл
индекс номер слота, начиная с нуля: «Макрос 1» в утилите = 0
режим 00 — однократно, 01 — N раз, 02 — до повторного нажатия
счётчик число повторов для режима 01

Ограничения

  • команда перезаписывает всю таблицу;
  • команда чтения текущих переназначений неизвестна;
  • Fn-слой и прочие типы записей не исследованы.

Как эти записи задаются из CLI, описано в разделе Команда remap.