Обратите внимание: клавиатуры не всегда есть 0x120013, но, как минимум, они будут. Вы не хотите делать if(ev == 0x120013){ isKeyboard = true; }, вы хотели бы сделатьif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Энди
Ответы:
22
Это представляет bitmaskдля событий, поддерживаемых устройством.
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.
битмаски
Как вы знаете, компьютеры работают в двоичном формате, поэтому:
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
...
Таким образом, если у меня есть растровое изображение со значением, 5которое будет содержать биты 0 и 2 в другом слове, можно дать каждому номеру имя и проверить, соответствуют ли они значению.
Например
A = 1, 001
B = 2, 010
C = 4, 100
Тогда, если у меня есть MYVAR = 5что 101в двоичном коде это проверить:
Ядро использует более сложный и сложный способ и устанавливает биты по смещению. Одной из причин является то, что в одном компьютере (ЦП) используется больше битов, чем целое число. Например, посмотрите на KEYрастровое изображение.
Чтобы проверить, что они означают, краткое введение приведено в документации ядра .
* 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.
Это , "РЕДАКТИРОВАТЬ 2 (продолжение):", в частности, может представлять интерес.
0x120013
, но, как минимум, они будут. Вы не хотите делатьif(ev == 0x120013){ isKeyboard = true; }
, вы хотели бы сделатьif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Ответы:
Это представляет
bitmask
для событий, поддерживаемых устройством.Пример
devices
ввода для клавиатуры AT:B
В передних стоек дляbitmap
,N
,P
,S
,U
,H
просто первое письмо в соответствующее значение имени иI
дляID
. Упорядоченным способом: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.
битмаски
Как вы знаете, компьютеры работают в двоичном формате, поэтому:
Таким образом, если у меня есть растровое изображение со значением,
5
которое будет содержать биты 0 и 2 в другом слове, можно дать каждому номеру имя и проверить, соответствуют ли они значению.Например
Тогда, если у меня есть
MYVAR = 5
что101
в двоичном коде это проверить:Таким образом, мой вар имеет А и С.
Ядро использует более сложный и сложный способ и устанавливает биты по смещению. Одной из причин является то, что в одном компьютере (ЦП) используется больше битов, чем целое число. Например, посмотрите на
KEY
растровое изображение.Итак, если мы скажем:
А потом
Декодирование
120013
Значение
120013
является шестнадцатеричным. В двоичном виде это дает нам:Пронумерованы справа они:
Затем убедитесь
input.h
, что они соответствуют:Чтобы проверить, что они означают, краткое введение приведено в документации ядра .
Это , "РЕДАКТИРОВАТЬ 2 (продолжение):", в частности, может представлять интерес.
источник