макро-ключи для Окончательной Razer BlackWidow

Я купил новую клавиатуру, Razer BlackWidow Окончательная Элита. Все ключи будут работать до макро-ключей M1 к M5.

xev не дает вывода для этого, вводит. Существует ли способ использовать ключи с Ubuntu?

% lsusb | grep Razer
Bus 007 Device 003: ID 1532:011a Razer USA, Ltd
2
задан 11 August 2015 в 20:44

2 ответа

Во-первых, нам нужно немного сценария 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:

  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
    

    и наслаждайтесь …

4
ответ дан 2 December 2019 в 01:37

Как альтернатива хорошему anwser A.B.:


Легкая установка razer драйверов цветности

Следующий проект имеет поддержку многих драйверов цветности Razer. Это также активирует ключи Mx.

https://github.com/pez2001/razer_chroma_drivers


MacroW - Простой макро-плеер/устройство записи.

Существует непрерывное макро-устройство записи / воспроизведение для M1, M2, M3, M4 и ключей M5 под названием MacroW. MacroW очень прост в использовании (по моему скромному мнению, как dev). Если Вам удалось активировать Ваши ключи Mx, и хотеть попробовать MacroW можно проверить его:

https://github.com/igorbb/MacroW

Я хотел бы получить некоторую обратную связь / справка на нем.

3
ответ дан 2 December 2019 в 01:37

Другие вопросы по тегам:

Похожие вопросы: