GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membedakan input dari keyboard yang berbeda?

Jika Anda menggunakan Linux, cara terbaik untuk membedakan antara perangkat masukan adalah dengan menggunakan Antarmuka Peristiwa Linux. Setelah input khusus perangkat keras perangkat didekodekan, input tersebut diubah menjadi struktur peristiwa khusus Linux menengah dan tersedia dengan membaca satu atau lebih perangkat karakter di bawah /dev/input/ . Omong-omong, ini sepenuhnya independen dari bahasa pemrograman yang Anda gunakan.

Setiap perangkat keras mendapatkan /dev/input/eventX sendiri perangkat, dan ada juga agregat (mis. /dev/input/mice yang mewakili gerakan semua tikus dalam sistem). Sistem Anda mungkin juga memiliki /dev/input/by-path dan /dev/input/by-id .

Ada ioctl disebut EVIOCGNAME yang mengembalikan nama perangkat sebagai string yang dapat dibaca manusia, atau Anda dapat menggunakan sesuatu seperti /dev/input/by-id/usb-Logitech_USB_Gaming_Mouse-mouse .

Anda membuka perangkat, dan setiap kali suatu peristiwa datang dari perangkat keras input, Anda akan mendapatkan paket data. Jika Anda dapat membaca C, Anda dapat mempelajari file /usr/include/linux/input.h yang menunjukkan dengan tepat bagaimana hal ini bekerja. Jika tidak, Anda dapat membaca pertanyaan ini yang memberikan semua informasi yang Anda butuhkan.

Hal yang baik tentang antarmuka acara adalah Anda baru mengetahui perangkat apa yang Anda butuhkan, dan Anda dapat membaca masukan dari perangkat masukan itu hanya , mengabaikan yang lainnya. Anda juga akan mendapatkan notifikasi tentang kunci, tombol, dan kontrol yang biasanya tidak Anda dapatkan hanya dengan membaca aliran karakter yang 'dimasak' dari terminal:bahkan tombol mati seperti Shift , dll.

Hal buruknya adalah antarmuka acara tidak mengembalikan karakter 'dimasak', ia hanya menggunakan kode numerik untuk kunci (kode yang sesuai dengan setiap kunci ditemukan di file header yang disebutkan di atas — tetapi juga di sumber Python dari event.py. Jika perangkat input Anda memiliki kunci/tombol yang tidak biasa, Anda mungkin perlu sedikit bereksperimen hingga mendapatkan angka yang tepat.


Pendekatan alternatif (jika "keyboard" Anda tidak memiliki banyak tombol - banyak perangkat berpura-pura menjadi keyboard) adalah dengan menerapkan pemetaan tombol ke setiap keyboard secara khusus dan memastikan bahwa tombol dibedakan.

Ini diuraikan di sini:https://superuser.com/questions/760602/how-to-remap-keys-under-linux-for-a-specific-keyboard-only. Poin utamanya adalah setxkbmap mengambil argumen perangkat.

Jika Anda menggunakan pendekatan input mentah, lsinput akan menemukan perangkat mentah untuk Anda.


Linux
  1. Bagaimana Cara Membuat `date` Menghasilkan Waktu Dari Zona Waktu yang Berbeda?

  2. Linux – Bagaimana Cara Menjalankan Bootloader Dari Linux?

  3. Linux – Bagaimana Cara Mengalihkan Perangkat Output Pulseaudio Dari Baris Perintah dengan Kuat?

  1. Bagaimana Ubuntu Berbeda Dari Debian?

  2. Bagaimana cara meningkatkan dari Fedora 32 ke Fedora 33

  3. Bagaimana cara saya melakukan gunzip ke direktori tujuan yang berbeda?

  1. Cara menginstal driver perangkat di Linux

  2. Bagaimana install -c berbeda dari cp

  3. Cara menentukan USB Versi 1.1 atau 2.0