Saya sering bekerja pada stasiun pasangan di mana ada beberapa keyboard yang diinstal. Saya dapat menggunakan setxkbmap
dengan -device <ID>
untuk mengatur tata letak keyboard tertentu (menggunakan ID darixinput
), tetapi seringkali tidak jelas keyboard mana yang saya gunakan . Akan lebih baik untuk menghindari bolak-balik mencoba kedua keyboard, jadi saya ingin menulis alat cepat untuk mendapatkan informasi ini setxkbmap
. Saya mengharapkan kasus penggunaan tipikal seperti berikut ini:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Antarmuka mana yang menyediakan informasi ini di Linux? Idealnya itu harus bekerja tanpa X, tapi itu bukan keharusan (sepertinya tidak ada banyak alat yang mendukung ini tanpa X).
Temuan sejauh ini:
- Linux harus tahu keyboard mana yang saya ketikkan untuk mendukung tata letak yang berbeda untuk beberapa keyboard secara bersamaan.
xinput
→ list.c →list_xi2
→XIQueryDevice
memberikan ID perangkat yang dapat digunakan olehsetxkbmap
.showkey
danxev
jangan cetak ID keyboard.xinput list-props $ID
menunjukkan tempat acara keyboard dikirim . Namun, menggunakan kode dari jawaban lain sepertinya perangkat ini tidak mencetak apa pun untuk mengidentifikasi keyboard.Salah satu solusi yang hampir mungkin adalah berjalan
xinput --test <ID> &
untuk setiap ID keyboard dan melihat mana yang mengembalikan sesuatu terlebih dahulu. Masalah dengan itu adalah mencari tahu "keyboard" mana yang sebenarnya adalah keyboard:$ xinput | grep keyboard ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ WebCam SC-13HDL10931N id=10 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
less -f /dev/input/eventX
dan menekan tombol pada keyboard yang sesuai, Anda akan melihat "sampah" muncul, sehingga penekanan tombol Anda memang diarahkan ke satu file dev dan bukan yang lain.