Red de conocimiento informático - Material del sitio web - Cómo capturar valores de seguimiento del mouse y valores del teclado de Android

Cómo capturar valores de seguimiento del mouse y valores del teclado de Android

Uno: ¿Averiguar qué eventos estoy usando en mi dispositivo?

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

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

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

#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.