Переназначение клавиш¶
Переназначения хранятся в таблице из 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.