Razer BlackWidow Ultimate的宏键
我买了一个新的键盘,一个Razer BlackWidow Ultimate Elite 。 所有按键将一直运行,直到宏键M1至M5。
xev
没有为此键提供输出。 有没有办法在Ubuntu上使用密钥?
% lsusb | grep Razer Bus 007 Device 003: ID 1532:011a Razer USA, Ltd
首先,我们需要一个Python3脚本,取自这里 (请给@Sergey一个upvote ;) )
我用产品ID 011a
替换了产品ID
#!/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()
要启动脚本,我们需要Python3的pyusb
sudo pip3 install --upgrade pip sudo pip3 install pyusb
将Python脚本保存为init_blackwidow.py
并设置执行权限。 现在用脚本启动脚本
sudo ./init_blackwidow.py
现在您可以使用xev
检查xev
代码…
……直到下次重启:\
但我们可以使用/etc/rc.local
和udev
:
-
将脚本
init_blackwidow.py
复制到/usr/local/bin
-
在行
exit 0
之前,在/etc/rc.local
添加以下行/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
享受 …
作为AB的优秀版本的替代方案:
轻松安装razer色度驱动器
以下项目支持许多Razer色度驱动器。 它还会激活Mx键。
https://github.com/pez2001/razer_chroma_drivers
MacroW – 一个简单的宏播放器/录像机。
有一个名为MacroW的M1,M2,M3,M4和M5键的动态宏录制/播放。 MacroW使用起来非常简单( IMHO as dev )。 如果您设法激活Mx密钥并想要尝试MacroW,您可以查看它:
https://github.com/igorbb/MacroW
我很乐意得到一些反馈/帮助。