Я выбрал Razer BlackWidow Ultimate, в котором есть дополнительные ключи для макросов, которые устанавливаются с помощью инструмента, установленного в Windows . Я предполагаю, что это не какие-то необычные ключи joojoo, и они должны генерировать коды сканирования, как и любые другие ключи.
Во-первых, существует ли стандартный способ проверки этих скан-кодов в Linux? Во-вторых, как мне настроить эти ключи для работы в командной строке и в X-Linux? Моя текущая установка Linux - Xubuntu 10.10, но я перейду на Kubuntu, как только я исправлю некоторые вещи. В идеале ответ должен быть общим и общесистемным.
Вещи, которые я пробовал до сих пор:
showkeys
из встроенного пакета kbd (в отдельном vt) - макроклавиши не обнаруженыxev
- макроклавиши не обнаруженысодержимое / dev / input / by-path, а также вывод lsusb и evdev
Вывод этого ах-сценария предполагает, что клавиши M не выводят стандартные коды сканирования, обнаруживаемые окнами
Что мне нужно попробовать
Snoopy Pro + обратный инжиниринг (о дорогой)
Wireshark - предварительное возмущение, похоже, указывает на отсутствие кодов сканирования, когда, как мне кажется, контролируется клавиатура и нажаты клавиши. Может означать, что дополнительные ключи являются отдельным устройством или должны быть как-то инициализированы.
Необходима перекрестная ссылка, что при выводе lsusb из Linux, в трех сценариях: автономный, переданный на виртуальную машину Windows без установленных драйверов, и то же самое с.
LSUSB обнаруживает только одно устройство в автономной установке Linux
Возможно, было бы полезно проверить, используют ли мыши один и тот же драйвер Razer Synapse, поскольку это означает, что может работать некоторая вариация razercfg (не обнаружено, похоже, работает только для мышей)
Вещи, которые я разработал:
В системе Windows с драйвером клавиатура рассматривается как клавиатура и указательное устройство. Указательное устройство использует, в дополнение к стандартным драйверам мыши, драйвер для чего-то, называемого Razer Synapse.
Драйвер мыши видели в Linux под
evdev
иlsusb
в колодцеОдно устройство под OS X, по-видимому, хотя я еще не пробовал
lsusb
эквивалент на этомКлавиатура переходит в режим импульсной подсветки в OS X при инициализации с драйвером. Это, вероятно, должно указывать на то, что при активации на клавиатуре посылается последовательность инициализации.
На самом деле, они представляют собой необычные штаны-джу-джу.
Продолжим этот вопрос немного:
У меня есть доступ к системе Windows, поэтому, если мне понадобится использовать какие-либо инструменты для ответа на вопрос, это нормально. Я также могу попробовать это на системах с и без утилиты конфигурации. Ожидаемый конечный результат все еще должен сделать эти ключи пригодными для использования в Linux.
Я также понимаю, что это очень специфическое семейство аппаратных средств. Я хотел бы протестировать все, что имеет смысл в системе Linux, если у меня есть подробные инструкции - это должно открыть вопрос для людей, которые имеют навыки работы с Linux, но не имеют доступа к этой клавиатуре.
Минимальный конечный результат, который мне требуется:
Мне нужно, чтобы эти клавиши были обнаружены и могли использоваться любым способом на любом из текущих графических основных вариантов Ubuntu, и, естественно, я должен работать с моей клавиатурой. Виртуальные куки и безумные реквизиты, если это что-то красиво упакованное и пригодное для использования среднестатистическим пользователем.
Я потребую скомпилированный код , который будет работать на моей системе, или источник , который я могу компилировать (с указанием , если это более сложный , чем ./configure
, make
, make install
) , если дополнительное программное обеспечение не на репозиториях Ubuntu для текущего LTS или стандартного выпуска настольных во время ответ. Мне также потребуется достаточно информации для репликации и успешного использования ключей в моей собственной системе.
источник
Ответы:
M1-M5 на самом деле являются обычными клавишами - их просто нужно специально включить, прежде чем нажимать их, чтобы генерировать скан-код. tux_mark_5 разработал небольшую программу на Haskell, которая отправляет правильное сообщение SET_REPORT на клавиатуры Razer для включения этих клавиш, и ex-parrot перенес тот же код на Python.
В системах Arch Linux порт Python упакован и доступен по адресу https://aur.archlinux.org/packages.php?ID=60518 .
В системах Debian или Ubuntu настроить порт Python для кода относительно просто. Вам необходимо установить PyUSB и libusb (как root):
Затем возьмите
blackwidow_enable.py
файл с http://finch.am/projects/blackwidow/ и запустите его (также как пользователь root):Это будет включать клавиши до тех пор, пока клавиатура не будет отключена или машина не будет перезагружена. Чтобы сделать этот постоянный вызов скрипта из любого стиля запуска скрипта, который вы предпочитаете. Для получения инструкций о том, как настроить это в Debian, посмотрите документацию Debian .
Чтобы использовать код Haskell в tux_mark_5, вам нужно установить Haskell и скомпилировать код самостоятельно. Эти инструкции предназначены для Debian-подобной системы (включая Ubuntu).
Установите GHC, libusb-1.0-0-dev и cabal (от имени root):
Получить список пакетов:
Установите привязки USB для Haskell (без рута):
Скачайте утилиту:
Создайте утилиту:
Запустите утилиту (также с правами root):
После этого вы можете скопировать двоичный файл EnableRazer куда угодно и запустить его при запуске.
Сразу после выполнения X-сервер должен видеть M1 как XF86Tools, M2 как XF86Launch5, M3 как XF86Launch6, M4 как XF86Launch7 и M5 как XF86Launch8. События для FN также генерируются.
Эти ключи могут быть связаны в системных настройках xbindkeys или KDE с произвольными действиями.
Поскольку ваша клавиатура может отличаться, вам может потребоваться изменить идентификатор продукта в строке Main.hs 64:
источник
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
(здесь вам может потребоваться изменить путь и идентификатор снова)Could not select configuration endpoint.
В настоящее время Razer, похоже, навязывает свой облачный конфигуратор Synapse 2 всем пользователям, сопровождая обновление прошивки до версии 2. *. После обновления прошивки вы не сможете вернуться назад (клавиатура полностью блокируется, если вы пытаетесь прошить ее более старой прошивкой).
«Волшебные байты» из программы на Haskell в ответе tux_mark_5 не будут работать с последней прошивкой. Вместо этого драйвер отправляет эти байты во время последовательности инициализации: «0200 0403». Они активируют макроклавиши, но клавиатура переходит в особый режим, в котором вместо стандартного протокола HID она отправляет 16-байтовые пакеты (предположительно, для увеличения количества клавиш, которые можно нажимать одновременно). Система Linux HID не может справиться с этим, и хотя большинство клавиш работают должным образом, макроклавиши остаются нераспознанными: драйвер HID не передает никакие данные на входной слой при их нажатии.
Чтобы заставить вашу клавиатуру перейти в унаследованный режим (в котором клавиши макросов отправляют коды клавиш XF86Launch *, а клавиша FN отправляет код клавиши 202), отправьте эти байты: 0200 0402.
Полный пакет будет:
Вот очень грубая и грязная программа, которую я написал в менее эзотерическом Python 3 для выполнения этой задачи. Обратите внимание на код для генерации управляющих пакетов Razer в blackwidow.bwcmd () и команды светодиодного логотипа Razer в качестве бонуса :)
источник
sudo python3 setup.py install
Возможно, это могло бы пролить некоторый свет на проблему (с man-страницы showkey):
В ядре версии 2.6 режим raw, или режим скан-кода, вообще не очень сырой. Коды сканирования сначала переводятся в коды клавиш, а когда коды сканирования желательны, коды ключей переводятся обратно. Различные преобразования происходят, и нет никакой гарантии, что конечный результат соответствует тому, что выслало аппаратное обеспечение клавиатуры. Итак, если вы хотите знать коды сканирования, отправленные различными ключами, лучше загрузить ядро 2.4. Начиная с версии 2.6.9 также имеется параметр загрузки atkbd.softraw = 0, который сообщает ядру 2.6 о необходимости возврата фактических кодов сканирования.
Необработанные коды сканирования доступны только на клавиатурах AT и PS / 2, и даже в этом случае они отключены, если не используется параметр ядра atkbd.softraw = 0. Когда необработанные коды сканирования недоступны, ядро использует фиксированную встроенную таблицу для получения кодов сканирования из кодов клавиш. Таким образом, setkeycodes (8) могут влиять на вывод showkey в режиме дампа кода сканирования.
Я собираюсь посмотреть, будет ли showkey сбрасывать что-либо с ключами макроса после установки этой опции загрузки.
РЕДАКТИРОВАТЬ: После перезагрузки, безуспешно, но я пытался захватить необработанный ввод с самих USB-устройств. Интересно отметить следующее (у меня есть Razer Diamondback и BlackWidow):
Однако использование dd для захвата необработанного ввода работает на обеих мышах diamondback, на устройстве event-kbd, но не на устройствах мыши BlackWidow.
Я предполагаю, что, возможно, они не генерируют какой-либо вывод до тех пор, пока они не будут активированы установленными драйверами. Однако я не очень разбираюсь в Linux USB, поэтому даже не знаю, имеет ли это смысл. Возможно, они должны быть связаны в первую очередь?
Ну, все три устройства черной вдовы отмечены в
/proc/bus/input/devices
, но они, кажется, не перечислены вlsusb
или/proc/bus/usb/devices
. Я не уверен, как получить доступ к этим устройствам, чтобы попытаться связать их или каким-либо образом взаимодействовать с ними.event4
кажется, соответствует реальной клавиатуре, event6 с макро клавишами, но я все еще не могу захватить какой-либо ввод от них. Надеюсь, что все помогло.источник
Мое решение предназначено для механической игровой клавиатуры Razer BlackWidow 2013 (номер модели: RZ03-0039) и было протестировано на openSUSE 12.3.
Я использовал Google Translate по этой ссылке .
В основном он использует измененную версию ответа @ Sergey для этого вопроса, но с простыми изменениями:
мой
PRODUCT_ID = 0x011b
В моем openSUSE 12.3 python-usb недоступен для Python 3, поэтому я преобразовал этот сценарий для работы с Python 2, удалив
bwcmd
метод и определив,USB_BUFFER = ...
как в ссылке, из ответа @ tux_mark_5 .Для удобства вот содержание моего
/usr/local/sbin/init_blackwidow.py
:... и мой
/etc/udev/rules.d/99-razer-balckwidow.rules
это:источник
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC является частью стандартных хранилищ 0penSUSE 12.3. Согласноrpm -qi
источнику, он находится по адресу sourceforge.net/projects/pyusb, а источник пакета - по адресу obs: //build.opensuse.org/devel: languages: pythonsudo apt-get install python libusb-1.0-0sudo
аpip install pyusb --pre
Может быть, этот документ поможет вам:
Клавиатура и консоль Linux HOWTO , Полезные программы
источник
Смотрите Razer Key Mapper для Linux .
Это работает со всеми макросами устройства Razer, учитывая некоторую модификацию кода. Если у вас все еще нет решения, а ваше устройство отсутствует в списке, я буду рад помочь вам настроить его и добавить в список поддерживаемых.
источник