bagaimana agar slider zoom Microsoft Natural Ergonomis Keyboard 4000 (dan tombol lainnya) berfungsi?

21

Saya menggunakan Microsoft Natural Ergonomic Keyboard 4000 di Ubuntu 10.10. Tombol multimedia (Volume, Putar / Jeda) berfungsi, tombol Surat dan Kalkulator juga.

Sekarang saya ingin menggunakan slider zoom, jika mungkin saya ingin menggunakan pengguliran halaman dengan itu. Apakah ada cara untuk mengaktifkannya?

Martin Ueding
sumber
2
Lihat askubuntu.com/questions/471802/… . Jawaban sebelumnya di sini mungkin sudah usang.
matt

Jawaban:

18

Buat file /etc/udev/rules.d/98-ms-ergo.rulesdengan konten berikut:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Ini akan memetakan tombol zoom untuk naik / turun tanpa mengubah file yang diinstal /lib/udev.

Setelah ditambahkan, Anda hanya perlu mencabut dan memasang kembali keyboard Anda agar mulai berfungsi.

Kees Cook
sumber
Ini berhasil bagi saya dengan sempurna menggunakan Fedora 19.
Rubens Mariuzzo
Untuk Microsoft Ergonomic 7000, modelnya tampak 071d (seperti yang diperoleh oleh lsusb) daripada 00db - jadi jika ada yang mencoba ini untuk 7000 mereka mungkin harus mengganti 00db dengan 071d pada file di atas. Pokoknya dalam kasus saya (Ubuntu 14.04), itu tidak berfungsi, mungkin itu terkait dengan fakta evtestmenunjukkan bahwa slider zoom tidak memicu peristiwa apa pun, tidak seperti kebanyakan tombol lain dari keyboard Ergonomis 7000 yang melakukannya. Tidak yakin tentang itu karena tombol Web / Home tidak menunjukkan output apa pun di evtest- meskipun Ubuntu tidak mengambilnya.
matt
1
Saya tidak bisa mendapatkan 4000 untuk bekerja pada 14,04 baik. Tidak melihat acara di xev.
Michael
Mencoba ini pada jam 14.10, dan tidak berhasil.
Rubens Mariuzzo
@Cocoabean xevjuga tidak bekerja untuk saya. Apa itu evtest /dev/input/event3. Jika event3tidak ada reaksi terhadap kunci ini, uji dengan peristiwa lain ( event[0..9]).
Nicolás
9

Pada Xubuntu 13.10 (mungkin juga pada Ubuntu 13.10) hal yang sama dapat dilakukan sebagai berikut:

Edit pemetaan kunci di /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Menjalankan sudo udevadm hwdb --update

Mulai ulang.

Konstantin K.
sumber
1
Bekerja pada 14,04 untuk saya
Amir Uval
60-keyboard.hwdb saya memiliki entri yang ada untuk MNEK4K, dengan keyboard: usb: b0003v045Ep00DB *. Mengubah tindakan tidak berhasil. Menambahkan entri baru dengan tindakan-tindakan itu berhasil.
Alrekr
Bekerja seperti pesona di 16.04. Saya menggunakan "atas" dan "bawah" (bukannya resp. "Pageup" dan "pagedown") untuk mendapatkan gulir yang lebih halus saat menelusuri halaman web. Terima kasih banyak!
Pierre
Anda dapat memetakan ke katakanadan katakanahiragana(atau kode kunci lain yang tidak digunakan dari hal.freedesktop.org/quirk/quirk-keymap-list.txt ) alih-alih alias ke kunci yang ada. Dengan cara ini Anda dapat mengenali dan menggunakan tombol dalam kombinasi dengan pengubah untuk mengubah volume, bahasa, ukuran, dll. (Konfigurasikan window manager Anda untuk menikmati dua super-kunci baru).
dmitry_romanov
4

Untuk mengkonfigurasi keyboard ergonomis Microsoft 4000 kita harus membuat file konfigurasi yang berisi deklarasi keyboard dan catatan untuk memetakan kunci.

Untuk melakukannya ada tiga jenis informasi yang perlu kita tentukan:

  • Jenis keyboard
  • Tombol scancodeyang merupakan tombol aktual pada keyboard
  • Kunci nameuntuk menetapkan fungsi yang diinginkan ke kunci yang dipilih

Pertama-tama temukan jenis keyboard:

Di terminal jalankan perintah berikut:

lsusb 

output menentukan tipe keyboard:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Itu muncul setelah ID. Dalam hal ini045e:00db

Kedua, temukan kode kunci dan nama kunci.

Untuk menentukannya, kami menggunakan evtestprogram yang mencatat informasi acara perangkat tertentu di terminal:

evtest

Jika Anda tidak memiliki program, instal dengan menjalankan perintah berikut:

sudo apt-get install evtest

Dengan menjalankan evtestprogram, kami mendapatkan hasil sebagai berikut:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

Outputnya cukup jelas, masukkan angka yang sesuai untuk keyboard, yang di sini adalah angka 3lalu tekan enter:

Melakukannya, akan menampilkan banyak informasi pada terminal dan berakhir pada baris berikut:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Sekarang dengan setiap tombol-tekan pada keyboard itu membuang informasi kunci. Misalnya tombol Slash di sebelah kanan Shift menunjukkan:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

Baris pertama log berisi informasi tentang tombol aktual pada keyboard seperti scancodeyang muncul setelah nilai. Dalam hal ini adalah 70038

Baris kedua berisi informasi fungsi yang ditugaskan seperti nama kunci. Dalam hal ini adalah SLASH . Periksa kunci lain untuk menemukan nama yang sesuai.

Singkatnya:

  • Jenis keyboard kami adalah: 045e: 00db
  • Scancode dari kunci Slash adalah: 70038
  • Nama kunci untuk menetapkan adalah SLASH

Setelah mengumpulkan informasi yang diperlukan, kami membuat file konfigurasi:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Tekan iuntuk mengaktifkan mode Sisipkan dan ketik yang berikut ini:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Simpan dan keluar dengan menekan escapelalu mengetik :wqdan tekan enter.

Kemudian jalankan dua perintah berikut untuk konfigurasi agar berlaku:

sudo udevadm hwdb --update
sudo udevadm control --reload

Akhirnya cabut keyboard dan pasang kembali.

Beberapa catatan tentang file konfigurasi:

  • Format file harus persis seperti yang ditunjukkan, ruang sebelum memetakan catatan sangat penting.
  • Alih-alih sudoeditAnda dapat menggunakan editor teks lainnya, hanya ingat untuk mengikuti format file yang tepat seperti yang dijelaskan di atas.
  • Ada dua karakter yang ditambahkan ke jenis keyboard: vdan pyang merupakan kepanjangan dari vendor dan produk. Mereka juga penting.
  • Jenis keyboard ditulis huruf besar dalam file konfigurasi. Jenis keyboard kami adalah 045e: 00db tetapi dalam konfigurasi kami memasukkan v045Ep00DB *
  • Scancode kunci muncul setelahnya KEYBOARD_KEY_
  • Nama kunci muncul dalam huruf kecil dalam file konfigurasi
  • Anda dapat menyesuaikan hampir semua tombol pada keyboard Anda mengikuti tutorial ini.
varDumper
sumber
3

The masalah adalah bahwa pengemudi evdev mengabaikan keycodes> 255 .
Solusinya, terima kasih kepada Marco Chiappero :

1) Anda harus mendefinisikan semua remapping yang Anda butuhkan (dalam bentuk 
"scancode keycode" list) dan letakkan dalam file di bawah "/ lib / udev / keymaps /" 
(misalnya saya membuat logitech-lx710-cordless di sana). Anda dapat menemukan
scancodes menggunakan evtest ("sudo evtest / dev / input / eventX", di mana X adalah milik Anda 
perangkat keyboard. Berhati-hatilah, kadang-kadang kunci tambahan ini terbuka
perangkat lain atau antarmuka mouse Anda: mis. event3 -> kbd, event4 ->
mouse & tombol tambahan). Berikut beberapa contoh output:

Acara: waktu 1294153475.909379, tipe 4 (Lain-lain), kode 4 (ScanCode), nilai c1028
"c1028" adalah nilai scancode yang akan Anda tempatkan di file keymap Anda 
mengambil nomor dari input.h seperti yang dijelaskan sebelumnya dan mengubahnya menjadi 
heksadesimal. Kemudian tulis pasangan remap di file Anda, mungkin dengan deskriptif
komentar, seperti ini:

0xC1028 0x9a tombol # putar

Iterate untuk setiap kunci> 255.

2) Anda harus memberi tahu udev untuk menerapkan file remapping ini setiap kali bertemu 
keyboard Anda, jadi edit file "/lib/udev/rules.d/95-keymap.rules" menambahkan 
aturan udev yang cocok dengan HW Anda. Tolong jangan tanya saya untuk mendefinisikan aturan
kamu. 
CATATAN: Anda dapat segera menerapkan file keymap dengan mengetik sendiri 
"sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE" dan 
verifikasi dengan evtest sekali lagi.

Sekarang, Anda dapat menggunakan editor pintasan Gnome untuk melihat bahwa tombolnya sekarang 
dapat digunakan di dalam X dan membuat pintasan baru. Namun mungkin saja itu terjadi
keysym ditugaskan untuk kode kunci itu (sehingga Anda akan melihat 0xXY bukannya XF86Foo). 
Anda dapat melihat pemetaan saat ini melalui xmodmap -pke, menyimpan output ke a 
file dan edit jika perlu (daftar kode kunci lengkap tersedia di
"/ usr / lib / X11 / XKeysymDB").
Setelah Anda menambahkan kunci tombol ke kunci yang Anda buat ulang, Anda dapat menyimpan file ini
sebagai ~ / .Xmodmap (atau sebagai / etc / X11 / Xmodmap jika Anda ingin mendaftar ke setiap pengguna).
desgua
sumber
Saya mengetahui bahwa tombol yang saya inginkan adalah c022d dan c022e, tetapi saya tidak dapat menemukan input.h.
Martin Ueding
Seperti yang saya mengerti (tapi aku tidak bisa ujian karena saya tidak memiliki perangkat keras ini) Anda tidak benar-benar membutuhkan input.h, Anda hanya perlu mengedit file ini: /lib/udev/rules.d/95-keymap.rules. (Mungkin ada di launchpad Anda dapat menemukan orang-orang dengan perangkat keras yang sama sehingga lebih dapat membantu bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). Sudahkah Anda mengedit file yang saya sebutkan di atas?
desgua
1
Ini terlalu teknis dan merupakan jawaban yang tidak terorganisir bagi kebanyakan orang. Beberapa kesenjangan serius: tidak ada bantuan dalam menentukan yang sesuai / dev / input / eventX, langkah-langkah tidak jelas dicampur dengan informasi kontekstual dan permintaan untuk tidak meminta instruksi untuk membuat keymaps.
Alain O'Dea
1
evtest bahkan tidak diinstal secara default membuat ini semakin buruk.
Alain O'Dea
Melalui trial and error saya menemukan bahwa keyboard saya adalah / dev / input / event3 dan evtest tidak mengambil peristiwa apa pun dari slider zoom.
Alain O'Dea
0

Di mesin saya, kunci tambahan (HomePage, Search, Calc, dll.) Dan input zoom dikirim melalui / dev / input / event5 sedangkan kunci biasa dikirim melalui / dev / input / event4. Nilai tombol zoom setuju dengan nilai antrian.

niclas
sumber