Por favor, note: os teclados nem sempre têm 0x120013, mas no mínimo terão. Você não quer fazer if(ev == 0x120013){ isKeyboard = true; }, você gostaria de fazer #if((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Andy /
Respostas:
22
Representa os bitmaskeventos suportados pelo dispositivo.
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.
Máscaras de bits
Como você sabe que os computadores lidam com binários, então:
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
...
Portanto, se eu tiver um bitmap com valor 5que conteria os bits 0 e 2 em outras palavras, poderá atribuir um nome a cada número e verificar se eles correspondem a um valor.
Por exemplo
A = 1, 001
B = 2, 010
C = 4, 100
Então, se eu tiver o MYVAR = 5que está 101em binário, verifique:
O kernel usa uma maneira um pouco mais sofisticada / complexa e define os bits por deslocamento. Uma razão é que mais bits estão disponíveis no número inteiro de um computador (CPU). Por exemplo, veja o KEYbitmap.
Para verificar o que eles significam, uma introdução rápida é dada por documentação do 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.
Isso , "EDIT 2 (continuação):" em particular, pode ser interessante.
0x120013
, mas no mínimo terão. Você não quer fazerif(ev == 0x120013){ isKeyboard = true; }
, você gostaria de fazer #if((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Respostas:
Representa os
bitmask
eventos suportados pelo dispositivo.Exemplo de
devices
entrada para um teclado AT:O
B
em povoamentos de frente parabitmap
,N
,P
,S
,U
,H
são simplesmente primeira letra no nome valor correspondente eI
é paraID
. De forma ordenada: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.
Máscaras de bits
Como você sabe que os computadores lidam com binários, então:
Portanto, se eu tiver um bitmap com valor
5
que conteria os bits 0 e 2 em outras palavras, poderá atribuir um nome a cada número e verificar se eles correspondem a um valor.Por exemplo
Então, se eu tiver o
MYVAR = 5
que está101
em binário, verifique:Assim, meu var tem A e C.
O kernel usa uma maneira um pouco mais sofisticada / complexa e define os bits por deslocamento. Uma razão é que mais bits estão disponíveis no número inteiro de um computador (CPU). Por exemplo, veja o
KEY
bitmap.Então, se dissermos:
E depois
Decodificação
120013
O valor
120013
é um hexadecimal. Como binário, ele nos dá:Numerados à direita, eles são:
Em seguida, verifique
input.h
se eles correspondem a:Para verificar o que eles significam, uma introdução rápida é dada por documentação do kernel .
Isso , "EDIT 2 (continuação):" em particular, pode ser interessante.
fonte