Искусственный интеллект — это настолько крупное событие, что на клавиатурах сразу и везде нужна отдельная клавиша для вызова Copilot. По крайней мере, таким мир ПК хотела бы видеть сама Microsoft. Хотя среди формальных требований для сертификации компьютеров под Windows 11 наличия клавиши Copilot нет, уже в 2024 году пользователи начали замечать клавиатурную новинку.
Вот только никто не сказал, что делать всем остальным, кто на эти компьютеры будет ставить Linux или FreeBSD.
Подобным вопросом задался Дэниэль Колашоне, специализирующийся на производительном системном софте инженер программного обеспечения. Колашоне — известный разработчик; он работал в Google и Microsoft, где занимался производительностью ядер, соответственно, Android и Windows Phone. Дэниэль активно коммитит в open source, к примеру, в рендеринг Emacs он добавил плавность и убрал мерцание.
Благодаря гарантийной программе Колашоне заменили ноутбук на ThinkPad X1 Carbon. На клавиатуре чуда техники компании Lenovo красовалась клавиша Copilot. Дэниэль возжелал иметь на этом ThinkPad правый Ctrl вместо новой клавиши и решил переназначить клавишу программно. Тут-то разработчик и наткнулся на проблемы.

Дело в том, что в IBM-совместимых компьютерах нажатия клавиш клавиатуры отслеживает контроллер клавиатуры, который отсылает в специальный порт 60h скан-коды нажатых клавиш, и лишь после этого в дело вступает операционная система. Как выяснил Дэниэль, нажатие клавиши Copilot издаёт скан-коды зажатия левой клавиши Meta, зажатия левой клавиши Shift и зажатия клавиши F23, затем отпускания трёх клавиш в обратном порядке. Говоря проще, для операционки клавиша Copilot выглядит как быстро выстреливаемый макрос Windows + Shift + F23.
Из-за выбранных компонентов комбинации переназначить клавишу Copilot невозможно. Этот изъян уже известен и много обсуждался. Для решения проблемы надо перехватить и нейтрализовать нажатия Meta и Shift, что сделать не так-то просто.
Колашоне тоже столкнулся с этой проблемой, но для начала ему пришлось пропатчить Linux. Как рассказал разработчик, скан-код 0x6e (клавиша F23) настолько необычен, что иначе операционка его не распознавала. Затем, чтобы при нажатии на новую клавишу вызывался Ctrl, он настроил Wayland следующим образом: когда поступает нажатие левой Meta или левой Shift, нужно подождать несколько миллисекунд, будет ли нажатие F23. Если да, то будет синтезировано нажатие правой клавиши Ctrl, нет — модификаторы будут переданы как есть.
Выкрутиться удалось, пусть и ценой ненужной обработки нажатий клавиш клавиатуры и дополнительной задержки ввода. И всё ради клавиши Copilot, для которой могло бы хватить уже и без того редкой и необычной F23, замечает Колашоне.












