AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 660262
Accepted
A.B.
A.B.
Asked: 2015-08-12 09:44:41 +0800 CST2015-08-12 09:44:41 +0800 CST 2015-08-12 09:44:41 +0800 CST

Razer BlackWidow Ultimate 的宏键

  • 772

我买了一个新键盘,Razer BlackWidow Ultimate Elite。所有键都会操作,直到宏键 M1 到 M5。

xev此键没有输出。有没有办法在 Ubuntu 中使用密钥?

% lsusb | grep Razer
Bus 007 Device 003: ID 1532:011a Razer USA, Ltd
keyboard
  • 2 2 个回答
  • 3606 Views

2 个回答

  • Voted
  1. Best Answer
    A.B.
    2015-08-12T10:17:35+08:002015-08-12T10:17:35+08:00

    首先,我们需要一个小的 Python3 脚本,取自这里(请去给@Sergey 一个 upvote ;))

    我已将产品 ID 替换为我的产品 ID011a

    #!/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()
    

    要启动脚本,我们需要pyusbPython3

    sudo pip3 install --upgrade pip
    sudo pip3 install pyusb
    

    将Python脚本另存为init_blackwidow.py并设置执行权限。现在开始脚本

    sudo ./init_blackwidow.py
    

    xev现在您可以使用……检查键码


    …直到下一次重启:\

    但是我们可以使用/etc/rc.localand udev:

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

    2. 在行之前的 ,添加下面/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
      
    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
      

      享受 …

    • 5
  2. Igor B
    2016-01-25T08:57:28+08:002016-01-25T08:57:28+08:00

    作为AB的好答案的替代品:


    轻松安装 razer chroma 驱动程序

    以下项目支持许多 Razer chroma 驱动程序。它还会激活 Mx 键。

    https://github.com/pez2001/razer_chroma_drivers


    MacroW - 一个简单的宏播放器/记录器。

    有一个用于 M1、M2、M3、M4 和 M5 键的即时宏录制器/回放,称为MacroW。MacroW 使用起来非常简单(恕我直言,作为开发人员)。如果您成功激活了 Mx 密钥并想尝试 MacroW,您可以查看:

    https://github.com/igorbb/MacroW

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

    • 3

相关问题

  • 有哪些有用的键盘快捷键?[关闭]

  • 如何在 Compiz->Commands 中获得超过 12 个命令?[关闭]

  • 输入语言切换键只接受 shift-alt 而不是 alt-shift [关闭]

  • 如何在键盘上映射未映射的键?[关闭]

  • 如何重置我的键盘布局?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve