Saya mengambil Razer BlackWidow Ultimate yang memiliki kunci tambahan untuk makro yang diset menggunakan alat yang diinstal pada Windows . Saya berasumsi bahwa ini bukan beberapa kunci joojoo fancypants dan harus memancarkan scancode seperti kunci lainnya.
Pertama, apakah ada cara standar untuk memeriksa scancode ini di Linux? Kedua, bagaimana cara mengatur kunci ini untuk melakukan hal-hal di command line dan setup Linux berbasis X? Instalasi Linux saya saat ini adalah Xubuntu 10.10, tetapi saya akan beralih ke Kubuntu setelah saya menyelesaikan beberapa hal. Idealnya jawabannya harus umum dan luas untuk seluruh sistem.
Hal yang saya coba sejauh ini:
showkeys
dari paket kbd bawaan (dalam vt terpisah) - kunci makro tidak terdeteksixev
- kunci makro tidak terdeteksiIni keluaran AHK skrip menunjukkan tombol M tidak keluaran scancodes standar terdeteksi oleh windows
Hal-hal yang perlu saya coba
snoopy pro + reverse engineering (oh sayang)
Wireshark - persiapan awal sepertinya mengindikasikan tidak ada scancode yang dipancarkan ketika apa yang saya pikirkan adalah keyboard dimonitor dan tombol ditekan. Mungkin menunjukkan kunci tambahan adalah perangkat yang terpisah atau perlu diinisialisasi.
Perlu referensi silang dengan output lsusb dari Linux, dalam tiga skenario: standalone, diteruskan ke Windows VM tanpa driver diinstal, dan sama dengan.
LSUSB hanya mendeteksi satu perangkat pada instalasi Linux mandiri
Mungkin berguna untuk memeriksa apakah tikus menggunakan driver Razer Synapse yang sama, karena itu berarti beberapa variasi razercfg mungkin bekerja (tidak terdeteksi, hanya tampaknya bekerja untuk tikus)
Hal-hal yang saya kerjakan:
Dalam sistem Windows dengan driver, keyboard dilihat sebagai keyboard dan alat penunjuk. Perangkat penunjuk menggunakan - selain driver mouse standar rawa Anda - driver untuk sesuatu yang disebut Razer Synapse.
Driver mouse terlihat di Linux di bawah
evdev
danlsusb
jugaPerangkat tunggal di bawah OS X tampaknya, meskipun saya belum mencoba yang
lsusb
setara pada ituKeyboard beralih ke mode cahaya latar berdenyut dalam OS X saat inisialisasi dengan driver. Ini mungkin harus menunjukkan bahwa ada beberapa urutan inisialisasi yang dikirim ke keyboard saat aktivasi.
Mereka, pada kenyataannya, kunci joojoo fancypants.
Perluas sedikit pertanyaan ini:
Saya memiliki akses ke sistem Windows jadi jika saya perlu menggunakan alat apa pun untuk membantu menjawab pertanyaan, tidak apa-apa. Saya juga dapat mencobanya pada sistem dengan dan tanpa utilitas konfigurasi. Hasil akhir yang diharapkan masih membuat kunci tersebut dapat digunakan di Linux.
Saya juga menyadari ini adalah keluarga perangkat keras yang sangat spesifik. Saya akan bersedia untuk menguji apa pun yang masuk akal pada sistem Linux jika saya memiliki instruksi rinci - ini harus membuka pertanyaan kepada orang-orang yang memiliki keterampilan Linux, tetapi tidak memiliki akses ke keyboard ini.
Hasil akhir minimum yang saya butuhkan:
Saya perlu kunci-kunci ini terdeteksi, dan dapat digunakan dengan cara apa pun pada varian Ubuntu mainstream grafis saat ini, dan tentu saja harus bekerja dengan keyboard saya. Cookie virtual dan alat peraga gila jika itu adalah sesuatu yang dikemas dengan baik dan dapat digunakan oleh rata-rata pengguna.
Saya akan memerlukan kode dikompilasi yang akan bekerja pada sistem saya, atau sumber yang saya dapat mengkompilasi (dengan petunjuk jika itu lebih kompleks dari ./configure
, make
, make install
) jika perangkat lunak tambahan tidak pada repositori Ubuntu untuk LTS saat ini atau rilis desktop standar pada saat jawabannya. Saya juga akan memerlukan informasi yang cukup untuk ditiru, dan berhasil menggunakan kunci pada sistem saya sendiri.
sumber
Jawaban:
M1-M5 sebenarnya adalah kunci biasa - mereka hanya perlu diaktifkan secara khusus sebelum menekannya akan menghasilkan skancode. tux_mark_5 mengembangkan program Haskell kecil yang mengirimkan pesan SET_REPORT yang benar ke keyboard Razer untuk mengaktifkan kunci-kunci ini, dan ex-parrot mem-porting kode yang sama ke Python.
Pada sistem Arch Linux, port Python telah dipaket dan tersedia dari https://aur.archlinux.org/packages.php?ID=60518 .
Pada sistem Debian atau Ubuntu, pengaturan port kode Python relatif mudah. Anda perlu menginstal PyUSB dan libusb (sebagai root):
Kemudian ambil
blackwidow_enable.py
file dari http://finch.am/projects/blackwidow/ dan jalankan (juga sebagai root):Ini akan mengaktifkan tombol sampai keyboard dicabut atau mesin di-boot ulang. Untuk membuat skrip panggilan permanen ini dari gaya skrip startup apa pun yang paling Anda sukai. Untuk instruksi tentang cara mengatur ini di Debian lihat dokumentasi Debian .
Untuk menggunakan kode Haskell tux_mark_5 Anda harus menginstal Haskell dan mengkompilasi kode sendiri. Instruksi ini untuk sistem seperti-Debian (termasuk Ubuntu).
Instal GHC, libusb-1.0-0-dev dan komplotan rahasia (sebagai root):
Ambil daftar paket:
Instal binding USB untuk Haskell (tidak perlu root):
Unduh utilitas:
Bangun utilitas:
Jalankan utilitas (juga sebagai root):
Setelah ini, Anda dapat menyalin biner EnableRazer di mana pun Anda inginkan dan menjalankannya saat startup.
Segera setelah eksekusi, X server akan melihat M1 sebagai XF86Tools, M2 sebagai XF86Launch5, M3 sebagai XF86Launch6, M4 sebagai XF86Launch7 dan M5 sebagai XF86Launch8. Acara untuk FN juga dipancarkan.
Kunci-kunci ini dapat diikat dalam xbindkeys atau pengaturan sistem KDE untuk tindakan sewenang-wenang.
Karena keyboard Anda mungkin berbeda, Anda mungkin perlu mengubah ID produk di baris Main.hs 64:
sumber
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
di dalamnya (di sini Anda mungkin harus memodifikasi jalan dan id lagi)Could not select configuration endpoint.
Razer tampaknya memaksa konfigurator berbasis cloud 2 mereka di semua pengguna saat ini, dengan disertai peningkatan firmware ke versi 2. *. Setelah Anda memutakhirkan firmware, Anda tidak dapat kembali (keyboard sepenuhnya tertutup jika Anda mencoba untuk mem-flashnya dengan firmware yang lebih lama).
'Bytes ajaib' dari program Haskell dalam jawaban tux_mark_5 tidak akan berfungsi dengan firmware terbaru. Sebagai gantinya, driver mengirim byte ini selama urutan inisialisasi: '0200 0403'. Ini memungkinkan tombol makro, tetapi keyboard memasuki mode aneh di mana alih-alih protokol HID standar mengirimkan paket 16-byte (mungkin untuk menambah jumlah tombol yang dapat ditekan secara bersamaan). Sistem Linux HID tidak dapat mengatasi hal ini, dan sementara sebagian besar tombol berfungsi seperti yang diharapkan, kunci makro tetap tidak dikenali: driver HID tidak memberi makan data apa pun ke lapisan input saat ditekan.
Untuk membuat keyboard Anda memasuki mode lama (di mana kunci makro mengirim kode kunci XF86Launch *, dan tombol FN mengirim kode kunci 202), kirim byte ini: 0200 0402.
Paket lengkapnya adalah:
Berikut ini adalah program yang sangat kasar dan kotor yang saya tulis dengan Python 3 yang kurang esoterik untuk melakukan tugas tersebut. Catat kode untuk menghasilkan paket kontrol Razer di blackwidow.bwcmd () dan perintah LED logo Razer sebagai bonus :)
sumber
sudo python3 setup.py install
Mungkin ini bisa menjelaskan masalah ini (dari halaman showkey):
Dalam 2,6 kernel raw mode, atau mode scancode, tidak terlalu mentah sama sekali. Kode pindai pertama-tama diterjemahkan ke kode kunci, dan ketika scancode diinginkan, kode kunci diterjemahkan kembali. Berbagai transformasi dilibatkan, dan tidak ada jaminan sama sekali bahwa hasil akhir sesuai dengan apa yang dikirim perangkat keras keyboard. Jadi, jika Anda ingin mengetahui kode pindaian yang dikirim oleh berbagai tombol, lebih baik boot kernel 2.4. Sejak 2.6.9 ada juga opsi boot atkbd.softraw = 0 yang memberitahu kernel 2.6 untuk mengembalikan kode pindaian yang sebenarnya.
Kode pindaian mentah hanya tersedia pada keyboard AT dan PS / 2, dan itupun dinonaktifkan kecuali atkbd.softraw = 0 parameter kernel digunakan. Ketika kode pindaian mentah tidak tersedia, kernel menggunakan tabel bawaan untuk menghasilkan kode pindaian dari kode kunci. Dengan demikian, setkeycodes (8) dapat memengaruhi output showkey dalam mode dump kode pindai.
Saya akan melihat apakah showkey akan membuang apa pun dengan kunci makro setelah opsi boot ini diatur.
EDIT: Setelah reboot, tidak berhasil, tetapi saya sedang mencari input mentah dari perangkat USB itu sendiri. Saya mencatat hal berikut, yang menarik (saya punya Razer Diamondback dan BlackWidow):
Namun, menggunakan dd untuk menangkap input mentah berfungsi pada kedua mouse diamondback, pada perangkat event-kbd, tetapi tidak pada perangkat mouse BlackWidow.
Saya kira mungkin mereka tidak menghasilkan output apa pun sampai diaktifkan oleh driver yang diinstal. Saya tidak tahu banyak tentang Linux USB, jadi saya bahkan tidak tahu apakah ini masuk akal. Mungkin mereka perlu diikat dulu?
Ya, ketiga perangkat janda hitam ini dicatat
/proc/bus/input/devices
, namun tampaknya tidak disebutkan dalamlsusb
atau/proc/bus/usb/devices
. Saya tidak yakin cara mengakses perangkat ini untuk mencoba mengikatnya atau berinteraksi dengan mereka dengan cara apa pun.event4
tampaknya sesuai dengan keyboard yang sebenarnya, event6 dengan tombol makro, tapi saya masih tidak bisa menangkap input apa pun dari mereka. Semoga semua bisa membantu.sumber
Solusi saya adalah untuk Razer BlackWidow 2013 Mechanical Gaming Keyboard (Nomor Model: RZ03-0039) dan diuji pada openSUSE 12.3.
Saya menggunakan Google Translate pada tautan ini .
Pada dasarnya ia menggunakan versi modifikasi dari jawaban @ Sergey untuk pertanyaan ini, tetapi dengan modifikasi sederhana:
Saya
PRODUCT_ID = 0x011b
Pada openSUSE 12.3 saya, python-usb tidak tersedia untuk Python 3, jadi saya mengkonversi skrip ini untuk bekerja dengan Python 2 dengan menghapus
bwcmd
metode dan mendefinisikannyaUSB_BUFFER = ...
seperti pada tautan dari jawaban @ tux_mark_5 .Untuk kenyamanan di sini adalah konten saya
/usr/local/sbin/init_blackwidow.py
:... dan saya
/etc/udev/rules.d/99-razer-balckwidow.rules
adalah:sumber
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC itu adalah bagian dari repositori stadard dari 0penSUSE 12.3. Menurutrpm -qi
, sumbernya ada di sourceforge.net/projects/pyusb dan sumber paketnya ob: //build.opensuse.org/devel: bahasa: pythonsudo apt-get install python libusb-1.0-0sudo
danpip install pyusb --pre
Mungkin dokumen ini akan membantu Anda:
Keyboard dan konsol Linux HOWTO , Program yang bermanfaat
sumber
Lihat Razer Key Mapper untuk Linux .
Ini berfungsi dengan semua makro perangkat Razer, diberi beberapa modifikasi kode. Jika Anda masih belum memiliki solusi dan perangkat Anda tidak terdaftar saya akan senang membantu Anda mengkonfigurasi perangkat Anda dan menambahkannya ke daftar yang didukung.
sumber