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.localudev

  1. 将脚本init_blackwidow.py复制到/usr/local/bin

  2. 在行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 
  3. 创建新规则

     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 
  4. 重启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

我很乐意得到一些反馈/帮助。