Uwaga: klawiatury nie ZAWSZE mają 0x120013, ale przynajmniej będą. Nie chcesz tego zrobić if(ev == 0x120013){ isKeyboard = true; }, chciałbyś to zrobićif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Andy
Odpowiedzi:
22
Reprezentuje bitmaskzdarzenia obsługiwane przez urządzenie.
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.
Maski bitowe
Jak wiesz, komputery obsługują pliki binarne, więc:
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
...
Więc jeśli mam mapę bitową o wartości 5, która zawierałaby bity 0 i 2 innymi słowy, można nadać każdej liczbie nazwę i sprawdzić, czy odpowiadają one wartości.
Na przykład
A = 1, 001
B = 2, 010
C = 4, 100
Następnie, jeśli mam, MYVAR = 5który jest 101w formacie binarnym, sprawdziłbym:
Jądro używa nieco bardziej wyrafinowanego / złożonego sposobu i ustawia bity przez offset. Jednym z powodów jest to, że więcej bitów jest dostępnych w liczbie całkowitej jednego komputera (CPU). Na przykład spójrz na KEYmapę bitową.
Aby sprawdzić, co one oznaczają, szybkie wprowadzenie zawiera Dokumentacja jądra .
* 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.
To , „EDIT 2 (ciąg dalszy):” w szczególności może być interesujące.
0x120013
, ale przynajmniej będą. Nie chcesz tego zrobićif(ev == 0x120013){ isKeyboard = true; }
, chciałbyś to zrobićif((ev & 0x120013) == 0x120013){ isKeyboard = true; }
Odpowiedzi:
Reprezentuje
bitmask
zdarzenia obsługiwane przez urządzenie.Przykładowy
devices
wpis dla klawiatury AT:B
W drzewostanach Frontubitmap
,N
,P
,S
,U
,H
są po prostu pierwsza litera nazwy odpowiadającej wartości iI
jestID
. W uporządkowany sposób: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.
Maski bitowe
Jak wiesz, komputery obsługują pliki binarne, więc:
Więc jeśli mam mapę bitową o wartości
5
, która zawierałaby bity 0 i 2 innymi słowy, można nadać każdej liczbie nazwę i sprawdzić, czy odpowiadają one wartości.Na przykład
Następnie, jeśli mam,
MYVAR = 5
który jest101
w formacie binarnym, sprawdziłbym:Zatem mój var ma A i C.
Jądro używa nieco bardziej wyrafinowanego / złożonego sposobu i ustawia bity przez offset. Jednym z powodów jest to, że więcej bitów jest dostępnych w liczbie całkowitej jednego komputera (CPU). Na przykład spójrz na
KEY
mapę bitową.Jeśli więc powiemy:
I wtedy
Rozszyfrowanie
120013
Wartość
120013
jest szesnastkowa. Jako plik binarny daje nam:Są one ponumerowane od prawej:
Następnie sprawdź
input.h
, czy odpowiadają one:Aby sprawdzić, co one oznaczają, szybkie wprowadzenie zawiera Dokumentacja jądra .
To , „EDIT 2 (ciąg dalszy):” w szczególności może być interesujące.
źródło