Podniosłem Razer BlackWidow Ultimate, który ma dodatkowe klucze przeznaczone dla makr ustawianych za pomocą narzędzia zainstalowanego w systemie Windows . Zakładam, że to nie są jakieś fantazyjne klucze joojoo i powinny emitować skancody jak każdy inny klucz.
Po pierwsze, czy istnieje standardowy sposób sprawdzania tych scancodes w systemie Linux? Po drugie, jak ustawić te klucze, aby działały w ustawieniach Linuksa i X-Linuksa? Moja obecna instalacja Linuksa to Xubuntu 10.10, ale przejdę na Kubuntu, gdy tylko będę miał kilka rzeczy naprawionych. Idealnie byłoby, gdyby odpowiedź była ogólna i obejmowała cały system.
Rzeczy, których do tej pory próbowałem:
showkeys
z wbudowanego pakietu kbd (w osobnym vt) - nie wykryto kluczy makrxev
- nie wykryto klawiszy makrzawartość / dev / input / by-path, a także wyjście lsusb i evdev
Dane wyjściowe skryptu ahk sugerują, że klawisze M nie wysyłają standardowych skancod wykrywanych przez system Windows
Rzeczy, które muszę spróbować
Snoopy pro + inżynieria odwrotna (o kochanie)
Wireshark - wstępne wyczekiwanie wydaje się wskazywać, że nie są emitowane skancody, gdy wydaje mi się, że klawiatura jest monitorowana i naciskane są klawisze. Może to oznaczać, że dodatkowe klucze są oddzielnym urządzeniem lub wymagają jakiejś inicjalizacji.
Trzeba powiązać to z wyjściem lsusb z Linuksa, w trzech scenariuszach: samodzielny, przeszedł na maszynę wirtualną z systemem Windows bez zainstalowanych sterowników i to samo z.
LSUSB wykrywa tylko jedno urządzenie w samodzielnej instalacji systemu Linux
Przydatne może być sprawdzenie, czy myszy używają tego samego sterownika Razer Synapse, ponieważ oznacza to, że niektóre warianty Razercfg mogą działać (nie wykryto, wydaje się, że działa tylko na myszy)
Rzeczy, które wypracowałem:
W systemie Windows ze sterownikiem klawiatura jest postrzegana jako klawiatura i urządzenie wskazujące. Urządzenie wskazujące wykorzystuje - oprócz standardowych sterowników myszy - także sterownik czegoś, co nazywa się Razer Synapse.
Kierowca widział mysz pod Linuksem
evdev
, alsusb
takżeNajwyraźniej pojedyncze urządzenie w systemie OS X, choć muszę jeszcze wypróbować
lsusb
równoważne rozwiązanieKlawiatura przechodzi w tryb pulsacyjnego podświetlenia w OS X po inicjalizacji ze sterownikiem. Prawdopodobnie powinno to oznaczać, że podczas aktywacji wysłano do klawiatury sekwencję inicjalizacji.
Są to w rzeczywistości fantazyjne klucze joojoo.
Rozszerzając to pytanie trochę:
Mam dostęp do systemu Windows, więc jeśli muszę skorzystać z jakichkolwiek narzędzi, aby odpowiedzieć na pytanie, to w porządku. Mogę również wypróbować go w systemach z narzędziem konfiguracyjnym i bez niego. Oczekiwanym rezultatem końcowym jest jednak uczynienie tych kluczy użytecznymi w systemie Linux.
Zdaję sobie również sprawę, że jest to bardzo specyficzna rodzina sprzętu. Byłbym skłonny przetestować wszystko, co ma sens w systemie Linux, jeśli mam szczegółowe instrukcje - to powinno otworzyć pytanie dla ludzi, którzy mają umiejętności w Linuksie, ale nie mają dostępu do tej klawiatury.
Wymagany minimalny wynik końcowy:
Potrzebuję tych kluczy do wykrycia i używania ich w dowolny sposób na dowolnym z obecnych wariantów głównego nurtu graficznego Ubuntu i oczywiście muszę pracować z moją klawiaturą. Wirtualne ciasteczka i szalone rekwizyty, jeśli jest to coś ładnie zapakowanego i użytecznego dla przeciętnego użytkownika.
Będę wymagać skompilowany kod, który będzie działał w moim systemie, lub źródła, które mogę skompilować (z instrukcjami, jeśli jest to bardziej skomplikowane niż ./configure
, make
, make install
) czy dodatkowe oprogramowanie nie na repozytoriach Ubuntu dla bieżącego LTS lub standardowym wydaniu stacjonarnym w czasie odpowiedź. Potrzebuję również wystarczających informacji do replikacji i skutecznego używania kluczy w moim systemie.
źródło
Odpowiedzi:
M1-M5 są w rzeczywistości zwykłymi klawiszami - po prostu trzeba je specjalnie włączyć, zanim ich naciśnięcie wygeneruje scancode. tux_mark_5 opracował mały program Haskell, który wysyła prawidłowy komunikat SET_REPORT do klawiatur Razer, aby włączyć te klucze, i była papuga przeniosła ten sam kod do Pythona.
W systemach Arch Linux port Python został spakowany i jest dostępny na stronie https://aur.archlinux.org/packages.php?ID=60518 .
W systemach Debian lub Ubuntu konfiguracja portu Python kodu jest stosunkowo łatwa. Musisz zainstalować PyUSB i libusb (jako root):
Następnie pobierz
blackwidow_enable.py
plik z http://finch.am/projects/blackwidow/ i uruchom go (także jako root):Umożliwi to klawisze do momentu odłączenia klawiatury lub ponownego uruchomienia komputera. Aby to na stałe wywołać skrypt z dowolnego stylu skryptu uruchamiania, który najbardziej preferujesz. Aby dowiedzieć się, jak to ustawić w Debianie, zajrzyj do dokumentacji Debiana .
Aby użyć kodu Haskell tux_mark_5, musisz zainstalować Haskell i sam go skompilować. Te instrukcje dotyczą systemu podobnego do Debiana (w tym Ubuntu).
Zainstaluj GHC, libusb-1.0-0-dev i cabal (jako root):
Pobierz listę pakietów:
Zainstaluj powiązania USB dla Haskell (bez potrzeby rootowania):
Pobierz narzędzie:
Zbuduj narzędzie:
Uruchom narzędzie (także jako root):
Następnie możesz skopiować plik binarny EnableRazer w dowolne miejsce i uruchomić go podczas uruchamiania.
Natychmiast po wykonaniu serwer X powinien zobaczyć M1 jako XF86Tools, M2 jako XF86Launch5, M3 jako XF86Launch6, M4 jako XF86Launch7 i M5 jako XF86Launch8. Emitowane są również zdarzenia dla FN.
Te klucze można powiązać w ramach klawiszy xbindkeys lub ustawień systemowych KDE z dowolnymi działaniami.
Ponieważ klawiatura może być inna, konieczna może być zmiana identyfikatora produktu w linii 64. Main.hs:
źródło
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
nim (tutaj może być konieczne zmodyfikowanie ścieżka i identyfikator jeszcze raz)Could not select configuration endpoint.
Wydaje się, że Razer narzuca obecnie wszystkim użytkownikom konfigurację Synapse 2 opartą na chmurze, wraz z aktualizacją oprogramowania do wersji 2. *. Po uaktualnieniu oprogramowania nie można wrócić (klawiatura jest całkowicie zamurowana, jeśli spróbujesz sflashować ją starszym oprogramowaniem).
„Magiczne bajty” z programu Haskell w odpowiedzi tux_mark_5 nie będą działać z najnowszym oprogramowaniem. Zamiast tego sterownik wysyła te bajty podczas sekwencji inicjowania: „0200 0403”. Umożliwiają one klawisze makr, ale klawiatura wchodzi w osobliwy tryb, w którym zamiast standardowego protokołu HID wysyła 16-bajtowe pakiety (prawdopodobnie w celu zwiększenia liczby klawiszy, które można nacisnąć jednocześnie). System Linux HID nie może sobie z tym poradzić i chociaż większość klawiszy działa zgodnie z oczekiwaniami, klucze makr pozostają nierozpoznane: sterownik HID nie podaje żadnych danych do warstwy wejściowej po ich naciśnięciu.
Aby wprowadzić klawiaturę do trybu starszego typu (w którym klawisze makr wysyłają kody XF86Launch *, a klawisz FN wysyła kod 202), wyślij te bajty: 0200 0402.
Pełny pakiet będzie:
Oto bardzo szorstki i brudny program, który napisałem w mniej ezoterycznym Pythonie 3 do wykonania tego zadania. Zanotuj kod do generowania pakietów kontrolnych Razer w blackwidow.bwcmd () i polecenia LED logo Razer jako bonus :)
źródło
sudo python3 setup.py install
Być może może to rzucić nieco światła na ten problem (ze strony podręcznika programu):
W jądrze 2.6 tryb raw lub tryb scancode wcale nie jest bardzo surowy. Kody skanowania są najpierw tłumaczone na kody kluczy, a gdy potrzebne są skancody, kody kluczy są tłumaczone z powrotem. W grę wchodzą różne transformacje i nie ma żadnej gwarancji, że końcowy wynik odpowiada temu, co wysłał sprzęt klawiatury. Jeśli więc chcesz znać kody skanowania wysyłane przez różne klucze, lepiej jest uruchomić jądro 2.4. Od wersji 2.6.9 dostępna jest również opcja rozruchu atkbd.softraw = 0, która informuje jądro 2.6 o zwróceniu rzeczywistych kodów skanowania.
Surowe kody skanowania są dostępne tylko na klawiaturach AT i PS / 2, a nawet wtedy są wyłączone, chyba że użyty zostanie parametr jądra atkbd.softraw = 0. Kiedy surowe kody skanowania nie są dostępne, jądro używa stałej wbudowanej tabeli do generowania kodów skanowania z kodów klawiszy. Zatem setkeycodes (8) może wpływać na wyjście showkey w trybie zrzutu kodu skanowania.
Zaraz zobaczę, czy showkey zrzuci cokolwiek za pomocą klawiszy makr po ustawieniu tej opcji uruchamiania.
EDYCJA: Po ponownym uruchomieniu komputera nie powiodło się, ale chciałem przechwycić nieprzetworzone dane wejściowe z samych urządzeń USB. Co ciekawe, zauważyłem następujące (mam Razer Diamondback oraz BlackWidow):
Jednak użycie dd do przechwytywania surowych danych wejściowych działa na obu myszach diamentowych na urządzeniu event-kbd, ale nie na urządzeniach myszy BlackWidow.
Domyślam się, że może nie generują żadnych danych wyjściowych, dopóki nie zostaną aktywowane przez zainstalowane sterowniki. Jednak niewiele wiem o Linux USB, więc nawet nie wiem, czy to ma sens. Być może trzeba je najpierw związać?
Cóż, wszystkie trzy urządzenia czarnej wdowy są odnotowane w
/proc/bus/input/devices
, jednak nie wydają się być wyliczone wlsusb
lub/proc/bus/usb/devices
. Nie jestem pewien, jak uzyskać dostęp do tych urządzeń, aby spróbować je powiązać lub w jakikolwiek sposób połączyć z nimi.event4
wydaje się odpowiadać rzeczywistej klawiaturze, event6 z klawiszami makr, ale nadal nie mogę przechwytywać z nich żadnych danych wejściowych. Mam nadzieję, że to wszystko pomogło.źródło
Moje rozwiązanie dotyczy mechanicznej klawiatury do gier Razer BlackWidow 2013 (numer modelu: RZ03-0039) i zostało przetestowane na openSUSE 12.3.
Użyłem Tłumacza Google pod tym linkiem .
Zasadniczo używa zmodyfikowanej wersji odpowiedzi @ Sergey na to pytanie, ale z prostymi modyfikacjami:
Mój
PRODUCT_ID = 0x011b
W moim openSUSE 12.3 python-usb nie jest dostępny dla Pythona 3, więc przekonwertowałem ten skrypt do pracy z Pythonem 2, usuwając
bwcmd
metodę i zdefiniowałemUSB_BUFFER = ...
jak w linku z odpowiedzi @ tux_mark_5 .Dla wygody oto treść mojego
/usr/local/sbin/init_blackwidow.py
:... a moim
/etc/udev/rules.d/99-razer-balckwidow.rules
jest:źródło
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC jest częścią repozytoriów stadard w 0penSUSE 12.3. Wedługrpm -qi
, źródło znajduje się na sourceforge.net/projects/pyusb, a źródło pakietu na obs: //build.opensuse.org/devel: języki: pythonsudo apt-get install python libusb-1.0-0sudo
ipip install pyusb --pre
Może ten dokument pomoże ci:
Klawiatura i konsola Linux HOWTO , Przydatne programy
źródło
Zobacz Razer Key Mapper dla systemu Linux .
Działa to ze wszystkimi makrami urządzeń Razer, z pewnymi modyfikacjami kodu. Jeśli nadal nie masz rozwiązania, a Twojego urządzenia nie ma na liście, chętnie pomogę Ci skonfigurować urządzenie i dodać je do mojej listy obsługiwanych.
źródło