Как извлечь максимум пользы из мышей Asus ROG
Все остальные опции сводятся к этим четырём категориям
Вы вложили значительную сумму в стильную, эргономичную игровую мышь: она идеально ложится в руку, радует переливами подсветки и оснащена шестью программируемыми кнопками сверх пяти базовых. Разумеется, хочется раскрыть весь её функционал! Но создатели Armoury Crate от ASUS предлагают лишь четыре типа назначения:
- Действия мыши
- Комбинации клавиш
- Управление мультимедиа
- Макрокоманды
Выглядит неплохо, но на деле вы не можете назначить любую клавишу. ASUS признаёт лишь стандартный набор 100-процентной клавиатуры.

Какая польза от шести дополнительных кнопок, если они лишь дублируют привычные? Для узких задач, скажем, при трассировке плат, удобно иметь быстрый доступ к «Num *» или «Перелистнуть слой». Но поскольку мы заплатили за расширенные возможности, пригодится любая лишняя кнопка.
Push to Talk
Основная причина моих изысканий — голосовые конференции, где применяют кнопку «говорить по нажатию» вместо голосовой активации. Обычные клавиши заняты печатью, а «Scroll Lock» — единственная свободная, но его мигнувший LED раздражает.
Решение нашлось в факте: у полноценной клавиатуры существуют дополнительные F-клавиши F13–F24. Операционные системы их распознают без проблем (см. документацию Microsoft по USB-HID).
Подробнее о поддержке клавиш F13–F24 в Windows

Стало ясно: нужно привязать F13 к одной из дополнительных кнопок мыши. Но как это осуществить?
Попытка № 1: макросы
Armoury Crate позволяет записать макрос, эмулирующий нажатие клавиши: либо выбрать кнопку на виртуальной раскладке, либо нажать физически. Однако ПО распознаёт лишь те клавиши, что присутствуют в этой раскладке. Даже внешние AHK-скрипты не помогут — софт отторгает всё, что не входит в список.
Попытка № 2: правка профиля вручную
Экспорт профиля мыши идёт в файл формата .rog, представляющий собой Base64-кодированный URL-encoded JSON. Декодируем и смотрим содержимое:
"13": {
"buttonFunction": "1",
"key_1": 6,
"key_2": "-1",
"key_3": "-1",
"layout": "en-US"
}
Здесь, вопреки ожиданиям, «6» соответствует клавише F6. Если собрать карту сканкодов ASUS, получим:
- Scroll Lock – 267
- Pause – 523
- F1 – 1
- F3 – 3
- …
- F12 – 1797
- Insert – 1544
- Home – 1545
- PgUp – 1547
- Num Lock – 1036
- L-Alt – 1796
- L-Shift – 1024
- G – 771

Попытка назначить F13 с предполагаемым кодом 2053 привела к аварии Armoury Crate — оно перестало отвечать и ни одна кнопка не работала. Приходилось переустанавливать утилиту, а штатный деинсталлятор без стороннего логаутера не справлялся.
Попытка № 3: опенсорс-решение
В сообществе упомянули проект libratbag, который на Linux уже умеет переназначать любые клавиши игровых мышей. На Windows прямого порта нет, но можно изучить исходники библиотеки.
В issue #1747 выясняется, что ASUS-коды — это просто стандартные USB-HID сканкоды. В исходниках найдена таблица соответствий:
static const unsigned char ASUS_KEY_MAPPING[] = {
/* 00 */ 0, 0, 0, 0,
/* 04 */ KEY_A,KEY_B,KEY_C,KEY_D,
…
/* 3C */ KEY_F3,KEY_F4,KEY_F5,KEY_F6,
…
/* 44 */ KEY_F11,KEY_F12,0,0,
/* 48 */ 0,0,KEY_HOME,KEY_PAGEUP,
/* 4C */ KEY_DELETE,0,KEY_PAGEDOWN,KEY_RIGHT,
…
/* E0 */ KEY_LCTRL,KEY_LSHIFT,KEY_LALT,KEY_LGUI,
};

Иными словами, диапазон 0x03–0xE8 позволяет назначать практически любые клавиши, включая F13–F24, Ctrl, Shift, Alt и прочие экзотические кнопки стандарта.

Осталось проверить на практике: написать минимальный драйвер на Python с использованием hidapi.
Открываем интерфейс MI_02
def open_mi02_interface(vid, pid):
devices = hid.enumerate(vid, pid)
for dev in devices:
if dev.get('interface_number') == 2:
device = hid.device()
device.open_path(dev['path'])
return device, dev['path']
return None, None
Чтение текущих биндов
def asus_get_binding_data(device, path):
cmd = struct.pack('
Запись нового назначения и сохранение
def asus_set_button(device, path, src_code, dst_code):
cmd = struct.pack('def asus_save_profile(device, path):
cmd = struct.pack('<H', ASUS_CMD_SAVE)
req = [REPORT_ID] + list(cmd) + [0]*(ASUS_PACKET_SIZE-2)
device.write(req)
time.sleep(0.5)
После выполнения скрипта проверяем в OBS Studio — F13 на кнопке мыши работает как Push to Talk!

Нюанс с Armoury Crate
При повторном запуске Armoury Crate оно полностью игнорирует конфигурацию устройства и начинает затирать её сохранённым профилем. В итоге приходится либо отключать софт, либо не перезагружать систему.
Итоги
Мне удалось первым в сообществе заставить мышь ASUS принять нестандартную клавишу F13. Решение опубликовано на GitHub в виде proof-of-concept.
Дата анонса суперфлагмана Motorola Signature 27: Snapdragon 8 Elite Extreme Gen 6, камера 200 Мп, аккумулятор 7000 мАч, звук Bang & Olufsen и 7 лет обновлений
Samsung выпустит флагманский смартфон с абсолютно безрамочным экраном без вырезов в 2027 году
Портфель заказов Airbus заполнен на 12 лет вперед: за девять месяцев поставлено 547 лайнеров при более чем 1100 новых заявках
Asus представила компьютер Ascent GX10 с 64 ГБ памяти для локального запуска ИИ
Продажи Redmi K100 Pro и Pro Max в Китае почти достигли 1 млн: флагманы с батареей на 9070 мАч и Snapdragon 8 Elite стали хитом
Havn представила панорамные корпуса HS 360 и HS 360 VGPU по цене от $280
В продажу поступил игровой планшет Honor WIN Tablet с чипом Snapdragon 8 Elite Gen 5 и кулером
Китай возводит самую мощную в мире АЭС с пассивной безопасностью