Cómo capturar valores de seguimiento del mouse y valores del teclado de Android
En cuanto a los eventos abiertos en el dispositivo, podemos verificarlo a través del comando cat /proc/bus/input/devices. Luego de ejecutar este comando, verá cuántos eventosX hay en el dispositivo.
root@lenovo-desktop:~# cat /proc/bus/input/devices
I: Bus=0019 Proveedor=0000 Producto=0001 Versión=0000
N: Nombre="Botón de Encendido"
P.: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C :00/entrada/entrada0
U: Uniq=
H: Handler=kbd event0
B: EV=3
B : CLAVE=100000 0 0 0 0
I: Autobús=0019 Proveedor=0000 Producto=0001 Versión=0000
N: Nombre="Botón de encendido"
P: Phys=LNXPWRBN/botón/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=3
B: KEY=100000 0 0 0 0
I: Bus=0017 Proveedor =0001 Producto=0001 Versión=0100
N: Name="Simulación del botón del mouse de Macintosh"
P: Phys=
S: Sysfs=/devices / virtual/entrada/entrada2
U: Uniq=
H: handler=mouse0 evento2
B: EV=7< />
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input3
U: Uniq=
H: handler=kbd event3
B: EV=120013
B: KEY=4 2000000 3803078 f800d001 feffffdf feffffff fffffffffffe
B: MSC= 10 p>
B:LED=7
I.
Bus=0003 Proveedor=17ef Producto=600e Versión=0111
N: Name="Ratón óptico Lenovo"
P: Phys=usb-0000:00:1d.1-1 /input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input4
U: Uniq=
H: handler=mouse1 event4
B: EV=17
B...
en Después. Al ejecutar este comando en mi sistema Ubuntu, veo dispositivos event0-event7, ***8.
Como se muestra en la marca roja en la imagen de arriba, puede encontrar rápidamente el dispositivo de entrada correspondiente al dispositivo y el evento correspondiente. La marca es este Lenovo.
En segundo lugar, la explicación de la estructura de datos input_event
La codificación de clave estándar se define en linux/input.h
struct input_event {
struct timeval time; //tiempo de la clave
__u16; //type.type; //tipo, definido de la siguiente manera
__u16 code; para simular p>
valor __s32; //si se presiona o se suelta
};
1. Si el tipo de código de evento es EV_KEY, el código es el código del teclado del dispositivo. El código de fábrica 0~127 es el código del botón del teclado,
0x110~0x116 es el código del botón del mouse,
entre ellos 0x110 (BTN_ LEFT) es el botón izquierdo del mouse,
0x111(BTN_RIGHT) es el botón derecho del mouse,
0x112(BTN_MIDDLE) es el botón central del mouse.
Si el código del tipo de evento es EV_REL, el valor del código representa el tipo de trayectoria. Por ejemplo, el mouse REL_X (código 0x00) indica la dirección del eje X, el mouse REL_Y (código 0x01) indica la dirección del eje Y y el mouse REL_WHEEL (código 0x08) indica la dirección de la rueda.
Para otros códigos, consulte include/linux/input.h.
2. Escribe:
EV_KEY, teclado
EV_REL, coordenadas relativas (trackball)
EV_ABS, coordenadas absolutas (ratón)
.
/*
* Referencia del tipo de evento
*/
#define EV_SYN 0x00 p >
#define EV_KEY 0x01 // Tecla
#define EV_REL 0x02 // Coordenadas relativas (trackball)
#define EV_ABS 0x03 // Coordenadas absolutas (ratón)
#define EV_MSC 0x04 // Otros
#defineEV_SW 0x05
#define EV_LED 0x11 //LED
#define EV_SND 0x12 // Sonido
#define EV_REP 0x14 //Repetir
#define EV_FF0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX 1)
3.VALUE:
El valor del evento. Si el código de tipo del evento es EV_KEY, el valor cuando se presiona la tecla es 1, y el valor cuando se suelta la tecla es 0 si el código de tipo del evento es EV_REL, los valores positivos y negativos de value; representan dos direcciones diferentes respectivamente.
3. El principio de capturar valores de eventos:
Leer/escribir eventX para capturar información variada sobre el evento
1. p> p>
event0_fd = open("/dev/input/ event0", O_RDWR);
2. Dispositivo de lectura
rd = read(event0_fd, amp; event0 , sizeof(struct input_event) * 64);
3. El principio de capturar valores de eventos:
Leer/escribir eventX y capturar diversa información del evento.