Я купил новую клавиатуру, Razer BlackWidow Окончательная Элита. Все ключи будут работать до макро-ключей M1 к M5.
xev
не дает вывода для этого, вводит. Существует ли способ использовать ключи с Ubuntu?
% lsusb | grep Razer
Bus 007 Device 003: ID 1532:011a Razer USA, Ltd
Во-первых, нам нужно немного сценария Python3, взятого отсюда (Пойдите и дайте @Sergey upvote ;))
Я заменил идентификатор продукта своим идентификатором продукта 011a
#!/usr/bin/python3
import usb
import sys
VENDOR_ID = 0x1532 # Razer
PRODUCT_ID = 0x011a # BlackWidow Ultimate Elite
USB_REQUEST_TYPE = 0x21 # Host To Device | Class | Interface
USB_REQUEST = 0x09 # SET_REPORT
USB_VALUE = 0x0300
USB_INDEX = 0x2
USB_INTERFACE = 2
LOG=sys.stderr.write
class blackwidow(object):
kernel_driver_detached = False
def __init__(self):
self.device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
if self.device is None:
raise ValueError("Device {}:{} not found\n".format(VENDOR_ID, PRODUCT_ID))
else:
LOG("Found device {}:{}\n".format(VENDOR_ID, PRODUCT_ID))
if self.device.is_kernel_driver_active(USB_INTERFACE):
LOG("Kernel driver active. Detaching it.\n")
self.device.detach_kernel_driver(USB_INTERFACE)
self.kernel_driver_detached = True
LOG("Claiming interface\n")
usb.util.claim_interface(self.device, USB_INTERFACE)
def __del__(self):
LOG("Releasing claimed interface\n")
usb.util.release_interface(self.device, USB_INTERFACE)
if self.kernel_driver_detached:
LOG("Reattaching the kernel driver\n")
self.device.attach_kernel_driver(USB_INTERFACE)
LOG("Done.\n")
def bwcmd(self, c):
from functools import reduce
c1 = bytes.fromhex(c)
c2 = [ reduce(int.__xor__, c1) ]
b = [0] * 90
b[5:5+len(c1)] = c1
b[-2:-1] = c2
return bytes(b)
def send(self, c):
def _send(msg):
USB_BUFFER = self.bwcmd(msg)
result = 0
try:
result = self.device.ctrl_transfer(USB_REQUEST_TYPE, USB_REQUEST, wValue=USB_VALUE, wIndex=USB_INDEX, data_or_wLength=USB_BUFFER)
except:
sys.stderr.write("Could not send data.\n")
if result == len(USB_BUFFER):
LOG("Data sent successfully.\n")
return result
if isinstance(c, list):
# import time
for i in c:
print(' >> {}\n'.format(i))
_send(i)
# time.sleep(.05)
elif isinstance(c, str):
_send(c)
###############################################################################
def main():
init_new = '0200 0403'
init_old = '0200 0402'
pulsate = '0303 0201 0402'
bright = '0303 0301 04ff'
normal = '0303 0301 04a8'
dim = '0303 0301 0454'
off = '0303 0301 0400'
bw = blackwidow()
bw.send(init_old)
if __name__ == '__main__':
main()
Для запуска сценария нам нужно pyusb
для Python3
sudo pip3 install --upgrade pip
sudo pip3 install pyusb
Сохраните сценарий Python как init_blackwidow.py
и набор права выполнения. Теперь запустите сценарий с
sudo ./init_blackwidow.py
Теперь можно проверить коды клавиши с xev
…
… до следующей перезагрузки:\
Но мы можем использовать /etc/rc.local
и udev
:
Скопируйте сценарий init_blackwidow.py
в /usr/local/bin
Добавьте строку ниже в /etc/rc.local
, перед строкой exit 0
/usr/local/bin/init_blackwidow.py
Теперь у Вас должно быть что-то вроде этого
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/usr/local/bin/init_blackwidow.py
exit 0
Создайте новое правило
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="011a", RUN+="/usr/local/bin/init_blackwidow.py"
в
/etc/udev/rules.d/99-razer_blackwidow.rules
Перезапуск udev
sudo service udev restart
и наслаждайтесь …
Следующий проект имеет поддержку многих драйверов цветности Razer. Это также активирует ключи Mx.
https://github.com/pez2001/razer_chroma_drivers
Существует непрерывное макро-устройство записи / воспроизведение для M1, M2, M3, M4 и ключей M5 под названием MacroW. MacroW очень прост в использовании (по моему скромному мнению, как dev). Если Вам удалось активировать Ваши ключи Mx, и хотеть попробовать MacroW можно проверить его:
https://github.com/igorbb/MacroW
Я хотел бы получить некоторую обратную связь / справка на нем.