Harap dicatat: Keyboard tidak SELALU miliki 0x120013, tetapi setidaknya mereka akan memilikinya. Anda tidak ingin melakukannya if(ev == 0x120013){ isKeyboard = true; }, Anda ingin melakukannyaif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Andy
Jawaban:
22
Ini mewakili bitmaskuntuk acara yang didukung oleh perangkat.
P => physical path to the device in the system hierarchy.
S => sysfs path.
U => unique identification code for the device (if device has it).
H => list of input handles associated with the device.
B => bitmaps
PROP => device properties and quirks.
EV => types of events supported by the device.
KEY => keys/buttons this device has.
MSC => miscellaneous events supported by the device.
LED => leds present on the device.
Bitmap
Seperti yang Anda ketahui, komputer menangani biner, jadi:
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
...
Jadi jika saya memiliki bitmap dengan nilai 5yang satu akan menyimpan bit 0 dan 2 dengan kata lain seseorang dapat memberikan setiap nomor nama dan memeriksa apakah mereka sesuai dengan nilai.
Misalnya
A = 1, 001
B = 2, 010
C = 4, 100
Maka jika saya memiliki MYVAR = 5yang 101dalam biner ini akan memeriksa:
Kernel menggunakan cara yang sedikit lebih canggih / kompleks, dan mengatur bit dengan offset. Salah satu alasannya adalah bahwa lebih banyak bit kemudian tersedia dalam satu komputer (CPU) integer digunakan. Contohnya lihat KEYbitmap.
Untuk mengecek apa artinya perkenalan singkat diberikan oleh Dokumentasi kernel .
* EV_SYN:
- Used as markers to separate events. Events may be separated in time or in
space, such as with the multitouch protocol.
* EV_KEY:
- Used to describe state changes of keyboards, buttons, or other key-like
devices.
* EV_MSC:
- Used to describe miscellaneous input data that do not fit into other types.
* EV_LED:
- Used to turn LEDs on devices on and off.
* EV_REP:
- Used for autorepeating devices.
Ini , "EDIT 2 (lanjutan):" khususnya, mungkin menarik.
0x120013
, tetapi setidaknya mereka akan memilikinya. Anda tidak ingin melakukannyaif(ev == 0x120013){ isKeyboard = true; }
, Anda ingin melakukannyaif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Jawaban:
Ini mewakili
bitmask
untuk acara yang didukung oleh perangkat.Contoh
devices
entri untuk Keyboard AT:The
B
di tribun depan untukbitmap
,N
,P
,S
,U
,H
adalah surat hanya pertama di sesuai nilai nama danI
bagiID
. Dalam mode yang dipesan:I => @id: id of the device
(struct input_id)
Bus => id.bustype
Vendor => id.vendor
Product => id.product
Version => id.version
N => name of the device.
P => physical path to the device in the system hierarchy.
S => sysfs path.
U => unique identification code for the device (if device has it).
H => list of input handles associated with the device.
B => bitmaps
PROP => device properties and quirks.
EV => types of events supported by the device.
KEY => keys/buttons this device has.
MSC => miscellaneous events supported by the device.
LED => leds present on the device.
Bitmap
Seperti yang Anda ketahui, komputer menangani biner, jadi:
Jadi jika saya memiliki bitmap dengan nilai
5
yang satu akan menyimpan bit 0 dan 2 dengan kata lain seseorang dapat memberikan setiap nomor nama dan memeriksa apakah mereka sesuai dengan nilai.Misalnya
Maka jika saya memiliki
MYVAR = 5
yang101
dalam biner ini akan memeriksa:Jadi var saya memiliki A dan C.
Kernel menggunakan cara yang sedikit lebih canggih / kompleks, dan mengatur bit dengan offset. Salah satu alasannya adalah bahwa lebih banyak bit kemudian tersedia dalam satu komputer (CPU) integer digunakan. Contohnya lihat
KEY
bitmap.Jadi, jika kita mengatakan:
Lalu
Decoding
120013
Nilainya
120013
adalah heksadesimal. Sebagai biner, ia memberi kita:Diberi nomor dari kanan mereka adalah:
Kemudian periksa
input.h
Anda menemukan bahwa mereka sesuai dengan:Untuk mengecek apa artinya perkenalan singkat diberikan oleh Dokumentasi kernel .
Ini , "EDIT 2 (lanjutan):" khususnya, mungkin menarik.
sumber