Files

118 lines
9.5 KiB
Markdown

# Настройка клавиатуры GANSS ARDOR Katana из Linux
Настраивайте RGB-подсветку и клавиши клавиатуры **GANSS ARDOR_Katana** (продаётся также как *ARDOR Gaming Katana*) прямо из Linux — без виртуальной машины с Windows и фирменной утилиты.
Что умеет утилита `katana.py`:
* 19 режимов подсветки (дыхание, волна, водопад, бегущая строка и другие), выключение подсветки;
* яркость (1–15) и скорость анимации (2–15), направление анимации в некоторых режимах;
* покраска каждой из 104 клавиш в свой цвет;
* переназначение любой клавиши на кнопку мыши, функцию текстового редактора (копировать/вставить/...), горячую клавишу (Ctrl+C, Win+E, ...), мультимедиа-действие (громкость, плеер, ...) или макрос;
* макросы: последовательности нажатий хранятся в самой прошивке, есть импорт/экспорт XML фирменной утилиты;
* чтение текущего состояния подсветки.
Подсветка и клавиши управляются HID feature-репортами через штатный драйвер `usbhid` — **печатать можно прямо во время настройки**, драйвер не отцепляется, root не нужен (после разовой установки udev-правила).
macOS поддерживается экспериментально (транспорт IOKit, см. [docs/install.md](docs/install.md) → «Установка на macOS»).
| Характеристика | Значение |
| -------------- | ------------------------------------------------------ |
| Устройство | GANSS ARDOR_Katana |
| USB ID | `0C45:8006` (Sonix SN32) |
| Канал | feature-репорты `rid=0`, интерфейс 0, payload 64 байта |
## Быстрый старт
```
# 1. установка (подробности — docs/install.md)
python3 -m venv .venv && .venv/bin/pip install pyusb
sudo cp 70-ganss-katana.rules /etc/udev/rules.d/ && sudo udevadm trigger
# 2. подсветка (подробности — docs/color-modes.md)
./katana.py mode breathing --color red # дыхание красным
./katana.py paint --black --wasd dodgerblue # чёрная база, WASD голубым
./katana.py keys # посмотреть, что сейчас светится
# 3. переназначение клавиш (подробности — docs/cli/remap.md)
./katana.py remap --key caps=copy # Caps → копировать (Ctrl+C)
./katana.py remap --key menu=meta+e # Menu → горячая клавиша Win+E
# 4. макросы (подробности — docs/cli/macro.md)
./katana.py macro set 0 -- a@126 s@101 -a@41 # макрос 0: нажать A, S, отпустить A
./katana.py remap --key caps=macro0 # привязать макрос к Caps
# 5. всё сразу из YAML-конфига (подробности — docs/cli/apply.md)
./katana.py apply ~/my-katana.yaml # макросы + переназначение + подсветка
```
Если что-то не работает — загляните в [docs/install.md](docs/install.md) (разделы «Проверка устройства» и решение проблем) и в справочник команд [docs/cli/README.md](docs/cli/README.md).
## Документация
Документы разложены по темам в `docs/`, каждый можно читать независимо.
| Документ | Тема |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| [docs/install.md](docs/install.md) | Установка: зависимости, venv, udev-правило, проверка устройства, решение проблем. |
| [docs/color-modes.md](docs/color-modes.md) | 19 режимов подсветки: таблица, примеры `mode`, аргументы, направление анимации. |
| [docs/cli/README.md](docs/cli/README.md) | Справочник `katana.py`: именованные цвета, имена клавиш, `paint`/`scan`/`raw`/`remap`/`macro`/`keys`/`reset`, решение проблем. |
| [docs/cli/remap.md](docs/cli/remap.md) | Переназначение клавиш: мышь, редактор, горячие клавиши, мультимедиа, макросы. |
| [docs/cli/macro.md](docs/cli/macro.md) | Макросы: запись, режимы повтора, XML вендора. |
| [docs/cli/apply.md](docs/cli/apply.md) | `apply` — YAML-конфиг: все настройки одним файлом. |
| [docs/extending.md](docs/extending.md) | Свои скрипты и анимации: `katana.py` как библиотека, API `Katana`, ограничения скорости и флеша, готовые приёмы. |
| [docs/protocol.md](docs/protocol.md) | Протокол для реверсеров: транспорт, транзакции, форматы payload'ов, карта клавиш, статус реверса, грабли, планы. |
| [docs/scripts.md](docs/scripts.md) | Состав репозитория и вспомогательные скрипты: `keymap.py`, `analyze_pcap.py`, `misc/probe.py`. |
| [docs/raw-data.md](docs/raw-data.md) | Дампы USB-трафика вендорской утилиты: как снимались, как конвертировать, состав `raw-data/katana-v1/`. |
## Лицензия
```
Copyright (C) 2026 Антон Аксенов (Anthony Axenov)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
```
ПО распространяется под лицензией [GNU GPL v3](LICENSE).
Производное ПО обязано быть с открытым исходным кодом.
## Предостережение
Это исследовательский проект, который я давно хотел воплотить.
У меня есть такая клавиатура, но в Linux нет возможности настраивать её.
**Я не могу гарантировать и не гарантирую:**
* работу скриптов на другом ПК с такой же клавиатурой;
* достоверность сведений о протоколе обмена данными;
* совместимость с другими клавиатурами Ardor.
**ВСЕ ОПЕРАЦИИ С ВАШИМ ОБОРУДОВАНИЕМ - НА ВАШ СТРАХ И РИСК.**
## Использованный стек
* AI-модель `koda-pro` через [KodaCode](https://kodacode.ru)
* python 3.10 + pyusb + pyyaml
* Linux (hidraw-ioctl) и macOS (IOKit через ctypes, экспериментально)
* VirtualBox + Windows 11:
* штатная утилита конфигурации клавиатуры
* WireShark с установленным `usbpcap`
## TODO
* переназначение на другие типы действий (Fn-слой) и чтение таблицы переназначений — мышиные действия, шорткаты редактора, горячие клавиши, мультимедиа и макросы реализованы ([docs/cli/remap.md](docs/cli/remap.md), [docs/cli/macro.md](docs/cli/macro.md))
* макросы: чтение содержимого из прошивки, коллизия кодов громкости и букв B/C, стрелки Up/Down, остальные медиа-коды ([docs/protocol.md](docs/protocol.md) → «Макросы»)
* пресеты/анимации поверх per-key API — методика описана в [docs/extending.md](docs/extending.md).
Cм. [docs/protocol.md](docs/protocol.md) → «Следующие шаги»