Режимы подсветки¶
В прошивке 19 режимов подсветки плюс выключение.
Номер режима — это байт [0] lighting-payload'а, алиасы заданы в katana.py (MODES).
Режимы перечислены в том же порядке, что в фирменной утилите.
Таблица режимов¶
| № | Название | Алиас | Цвет | Яркость | Скорость | Направление | Описание |
|---|---|---|---|---|---|---|---|
| 1 | Постоянный свет | static |
моно/спектр | + | — | статическое свечение всех клавиш | |
| 2 | Подсветка нажатых | keypress |
моно/спектр | + | + | все выключены, подсвечиваются нажатые | |
| 3 | Затухание нажатых | fade |
моно/спектр | + | + | все включены, гаснут нажатые | |
| 4 | Звёздный | star |
моно/спектр | + | + | случайные вспышки после полного затухания | |
| 5 | Снежный | snow |
моно/спектр | + | + | как звёздный, но больше соседних клавиш | |
| 6 | Цветочный | flower |
спектр | + | + | плавные цвета на каждой клавише без затухания | |
| 7 | Дыхание | breathing |
моно/спектр | + | + | плавное свечение и затухание всех клавиш | |
| 8 | Полный спектр | spectrum |
спектр | + | + | плавные цвета на всех клавишах без затухания | |
| 9 | Круги | ripple |
моно/спектр | + | + | плавные цвета кругами из центра к краям | |
| 10 | Водопад | waterfall |
моно/спектр | + | + | ↑/↓ | спектр по рядам клавиш |
| 11 | Течение | flow |
моно/спектр | + | + | ←/→ | косые волны в одну сторону без затухания |
| 12 | Вращение | rotate |
моно/спектр | + | + | ↻/↺ | волна по кругу вокруг центра |
| 13 | Горизонталь | horizontal |
моно/спектр | + | + | горизонтальная волна по ряду от нажатой клавиши | |
| 14 | Вертикаль | vertical |
моно/спектр | + | + | косая волна по всем рядам от нажатой клавиши | |
| 15 | Рябь по воде | splash |
моно/спектр | + | + | плавные круги от нажатой клавиши | |
| 16 | Бегущая строка | marquee |
моно/спектр | + | + | ←/→ | бегущая подсветка каждой клавиши в каждом ряду |
| 17 | Горы | mountains |
моно/спектр | + | + | плавные углы из середины в стороны | |
| 18 | Ветер | wind |
моно/спектр | + | + | ←/→ | косые волны в одну сторону с затуханием |
| 19 | Шаттл | shuttle |
моно/спектр | + | + | бегущие строки по чётным и нечётным рядам | |
| 20 | Выключена | off |
все клавиши погашены |
Моно и спектр переключаются ключами --spectrum и --no-spectrum.
Без ключа действует выбор фирменной утилиты: static и star — одним цветом, остальные режимы — спектром.
Описание режимов¶
Числа ниже относятся к скорости 2 и яркости 15.
Наблюдения сняты по живым кадрам через поток 04 f5.
static¶
Параметры: яркость 1–15, скорости нет, цвет — моно или спектр.
Одним цветом все клавиши ровно горят заданным цветом, анимации нет.
Спектром видны неподвижные цветные кольца вокруг клавиши O, ровно 12 оттенков: 0000ee, 0038b6, 00707e, 00b638, 00ee00, 38b600, 707e00, b63800, ee0000, b60038, 70007e, 3800b6.
Это не полный спектр: горят один или два канала, и их сумма всегда 0xee.
Кольца неровные: INS, HOME, PRTSC и часть дальних клавиш выбиваются из радиального порядка.
keypress¶
Параметры: яркость, скорость, моно или спектр.
Без нажатий клавиатура тёмная. Нажатая клавиша загорается на полную яркость и горит ровно, пока её держат. После отпускания она гаснет примерно за 3 секунды: сначала быстро, потом медленнее.
Соседние клавиши не загораются. Спектром каждое нажатие даёт клавише новый случайный цвет.
fade¶
Параметры: яркость, скорость, моно или спектр.
Одним цветом все клавиши ровно горят на полной яркости. Спектром каждая клавиша горит своим неподвижным случайным цветом из общей палитры.
Нажатая клавиша сразу гаснет до нуля и остаётся тёмной, пока её держат. После отпускания она разгорается примерно за 2,9 секунды: сначала медленно, потом быстрее. Спектром клавиша разгорается уже новым случайным цветом.
star¶
Параметры: яркость, скорость, моно или спектр.
Каждая клавиша вспыхивает сразу на полную яркость и линейно гаснет примерно за 12,2 секунды. После 0,05–0,15 секунды темноты она вспыхивает снова, полный цикл — около 12,3 секунды.
Фазы клавиш случайные, поэтому одновременно горят почти все клавиши. Спектром на каждую вспышку выбирается новый случайный цвет.
snow¶
Параметры: яркость, скорость, моно или спектр.
Клавиша вспыхивает и гаснет за 0,38 секунды, затем повторяет примерно через 1,2–1,35 секунды. Клавиши разбиты на 7 постоянных групп по 13–17 клавиш, группы вспыхивают по очереди со сдвигом около 0,19 секунды.
Состав групп не связан ни с положением клавиш, ни с их индексами. Одновременно горит около 30 клавиш.
flower¶
Параметры: яркость и скорость; цвет не выбирается, режим всегда рисует спектр.
Каждая клавиша горит на полной яркости своим оттенком. Оттенки повторяются узором с шагом в 6 LED-индексов, то есть на клавиатуре 6 разных цветов.
Все оттенки одновременно сдвигаются по кругу спектра — около 0,14 оборота в секунду, полный круг примерно за 7 секунд.
breathing¶
Параметры: яркость, скорость, моно или спектр.
Вся клавиатура разгорается за 3,7 секунды, гаснет за 3,8 секунды и примерно 0,26 секунды остаётся тёмной; период около 7,7 секунды. Яркость растёт не линейно, а примерно по квадрату.
Спектром виден горизонтальный градиент: слева зелёно-бирюзовый, ближе к середине красный, справа голубой. Пиковая яркость клавиш немного разная, поэтому градиент выглядит ступенчатым.
spectrum¶
Параметры: яркость и скорость; цвет не выбирается.
Вся клавиатура одного цвета, который плавно идёт по кругу спектра — около 0,09 оборота в секунду, полный круг примерно за 11,5 секунды.
ripple¶
Параметры: яркость, скорость, моно или спектр.
Кольца расходятся от клавиши O к краям клавиатуры, период около 2,9 секунды. Спектром оттенок сдвигается на 0,17 оборота в секунду, кольца словно расходятся от центра.
waterfall¶
Параметры: яркость, скорость, направление вверх или вниз, моно или спектр.
Каждый ряд клавиш горит своим цветом, соседние ряды отличаются на 36–80° оттенка. Цвета стекают по рядам в выбранном направлении. В моно видна волна яркости с периодом около 3,5 секунды, в спектре оттенки сдвигаются на 0,11 оборота в секунду.
Направление в спектре игнорируется.
flow¶
Параметры: яркость, скорость, направление влево или вправо, моно или спектр.
Косые волны идут вдоль клавиатуры в одну сторону без затухания, наклон по рядам слабый. В моно период около 2,3 секунды, в спектре оттенок сдвигается на 0,22 оборота в секунду.
rotate¶
Параметры: яркость, скорость, направление против часовой или по часовой, моно или спектр.
Волна идёт по кругу вокруг точки у клавиши O, период около 2,3 секунды. В спектре картинка вращается со скоростью 0,22 оборота в секунду, направление игнорируется.
horizontal¶
Параметры: яркость, скорость, моно или спектр.
Нажатие запускает волну только по ряду нажатой клавиши: она расходится в обе стороны до краёв ряда, включая цифровой блок. Соседние ряды не загораются.
Фронт идёт примерно 20–27 клавиш в секунду: от Esc до Pause — за 0,7 секунды. Возле нажатой клавиши фронт широкий: при нажатии J сразу вспыхнули G, H, J, K и L. Каждая клавиша гаснет примерно за 0,35 секунды, за фронтом тянется шлейф из 4–5 клавиш.
vertical¶
Параметры: яркость, скорость, моно или спектр.
Нажатие зажигает вертикальный столбец под нажатой клавишей во всех рядах сразу, и от него две полосы расходятся влево и вправо до краёв клавиатуры.
Полоса идёт примерно 9 клавиш в секунду — втрое медленнее horizontal.
Шлейфа нет: каждая клавиша горит один или два кадра.
Пробел зажигает сразу несколько столбцов по своей ширине.
splash¶
Параметры: яркость, скорость, моно или спектр.
Нажатие запускает круговую волну: кольцо расходится по всей клавиатуре, включая цифровой блок. Фронт идёт примерно 20 клавиш в секунду: от Esc до Enter цифрового блока — 1,2 секунды.
Каждая клавиша вспыхивает на 200–238 и гаснет примерно за 0,3 секунды, поэтому кольцо узкое. Волны от разных клавиш независимы: при быстром нажатии A и L кольца пересекаются, и клавиша на пересечении вспыхивает дважды.
marquee¶
Параметры: яркость, скорость, направление влево или вправо, моно или спектр.
Один огонёк со шлейфом бежит змейкой по всем клавишам: ряд за рядом слева направо, включая нумпад. Шаг — 0,0625 секунды на индекс, полный круг около 7,9 секунды, это 126 шагов.
На пустых индексах огонёк пропадает, поэтому заметны короткие паузы. Каждая клавиша гаснет за 0,38 секунды, одновременно горят 4–5 клавиш.
mountains¶
Параметры: яркость, скорость, моно или спектр.
Клавиши вспыхивают и гаснут за 0,38 секунды. Картина складывается из двух волн-«горок» с вершиной в середине блока: одна идёт сверху вниз, другая снизу вверх. Волны смещены примерно на полпериода и перекрываются, поэтому спуск и подъём сливаются в непрерывную волну с острым углом посередине. Каждая клавиша вспыхивает дважды за период около 1,35 секунды: интервалы между вспышками примерно 0,3 и 0,7 периода. Гребень наклонён примерно на одну клавишу по горизонтали на ряд, фронт идёт около 10 шагов в секунду. Одновременно горит около половины клавиш.
wind¶
Параметры: яркость, скорость, направление влево или вправо, моно или спектр.
Клавиши вспыхивают и гаснут за 0,38 секунды с периодом около 0,72 секунды. Вспышки складываются в косые полосы примерно через каждые 6 клавиш, нижние ряды сдвинуты вправо.
При right полосы бегут вправо, при left — влево, но с тем же наклоном и чуть медленнее: период 0,83 секунды.
shuttle¶
Параметры: яркость, скорость, моно или спектр.
По каждому ряду бежит огонёк из 2–3 клавиш со шлейфом, соседние ряды бегут навстречу друг другу, период около 2,5 секунды. В спектре каждый ряд держит горизонтальный градиент, чётные ряды сдвигают оттенки в одну сторону, нечётные — в другую. Одновременно горит около 15 клавиш.
off¶
Настроек нет: режим отправляет payload из нулей.
Общие закономерности¶
- Максимальное значение канала в кадре — 238 (
0xee), а не 255. - Одноцветные режимы рисуют заданный цвет с меняющейся яркостью.
- Центр круговых режимов (
staticспектром,ripple,rotate) — клавиша O. - У вспышечных режимов клавиша загорается сразу на полную яркость и линейно гаснет за 0,3–0,38 секунды, и это время от скорости почти не зависит.
- Случайные цвета берутся из одной палитры: в двух кадрах спектрального
fadeвстретилось 86 разных цветов. - Около половины палитры — пастельные и почти белые оттенки, остальное — насыщенные красный, синий, зелёный, жёлтый и маджента.
- Реактивные режимы реагируют на нажатие, а не на удержание: зажатая клавиша запускает одну волну.
- Цифровой блок входит в общую картину: волны доходят до него и стартуют с него.
Как снимались данные¶
Живые кадры читались потоком 04 f5 без записи во флеш, примерно 15 кадров в секунду.
Каждый режим включался на скорости 2 и яркости 15, затем 20 секунд читался поток — около 310 кадров с шагом примерно 0,064 секунды.
Режимы снимались дважды: спектром и одним цветом.
Исключение — keypress: его сняли с вендорской паузой 40 мс, и кадр приходил раз в 0,5 секунды.
С ростом скорости анимация ускоряется нелинейно: на скоростях 2, 6, 10 и 15 — примерно в 0,42, 0,63, 1 и 2,5 раза относительно скорости 10.
Зависимость проверена полностью для flow, для остальных режимов — только на скоростях 2 и 10.
Затем кадры разбирались скриптами: определялись периоды, направления фронтов и палитры.
Как включить режим и задать параметры, описано в разделе Команда mode. Низкоуровневый формат payload'а — в разделе Подсветка.