Lo más probable es que los dispositivos obtengan un archivo en 09
llamado 12
donde N son los diversos dispositivos como mouse, teclado, conector, botones de encendido, etc.
06
debería darte una pista.
Mira también:
16
Donde 25
el valor es la ruta bajo 31
.
Puede probar por ej.
23
Para implementar, use ioctl y verifique dispositivos + monitor.
EDICIÓN 2:
ESTÁ BIEN. Estoy ampliando esta respuesta basándome en la suposición 44
se utiliza.
Una forma podría ser:
-
En el ciclo de inicio, todos los
52
archivos encontrados en62
. Usa77
para solicitar bits de evento:37
luego comprueba si
85
-bit está establecido. -
IFF configurado y luego verifique las claves:
45
P.ej. si las teclas numéricas son interesantes, compruebe si los bits para
95
-103
y117
a126
. -
Las claves IFF encontradas luego comienzan a monitorear el archivo de eventos en el hilo.
-
Volver a 1.
De esta manera, debería poder monitorear todos los dispositivos que cumplan con los criterios deseados. No solo puedes buscar 131
como p. el botón de encendido tendrá este bit establecido, pero obviamente no tendrá 145
etc. establecido.
He visto falsos positivos para claves exóticas, pero para claves normales esto debería ser suficiente. No hay daño directo en el monitoreo, p. archivo de eventos para el botón de encendido o un conector, pero esos no emitirán los eventos en cuestión (también conocido como código incorrecto).
Más en detalle a continuación.
EDICIÓN 1:
Con respecto a "Explica la última afirmación..." . Pasando por la tierra de stackoverflow aquí... pero:
Una muestra rápida y sucia en C. Tendrá que implementar varios códigos para verificar que realmente obtenga el dispositivo correcto, traduzca el tipo de evento, el código y el valor. Por lo general, tecla abajo, tecla arriba, repetición de tecla, código de tecla, etc.
No tengo tiempo (y aquí es demasiado) para agregar el resto.
Echa un vistazo a 150
, programas como 161
, código del kernel, etc. para códigos de mapeo. P.ej. 170
De todos modos:
Ejecutar como por ejemplo:
54
Código:
66
EDICIÓN 2 (continuación):
Tenga en cuenta que si observa 182
tienes una letra al principio de cada línea. Aquí 193
significa mapa de bits. Eso es por ejemplo:
78
Cada uno de esos bits corresponde a una propiedad del dispositivo. Que por medio de mapa de bits, 1 indica que una propiedad está presente, como se define en 206
. :
85
Echa un vistazo a 210
en el árbol de fuentes del kernel. Un montón de buen código allí. (Por ejemplo, las propiedades de los dispositivos son producidas por esta función).
Cada uno de estos mapas de propiedades se puede obtener mediante 220
. Por ejemplo, si desea verificar qué propiedades LED están disponibles, diga:
95
Mira la definición de 232
en 244
por cómo 253
están definidos.
Para comprobar el estado de los LED, diga:
102
Si bit 1 en 269
son 1, entonces el bloqueo numérico está encendido. Si el bit 2 es 1, el bloqueo de mayúsculas está encendido, etc.
272
tiene varias definiciones.
Notas sobre el control de eventos:
El pseudocódigo para monitorear podría ser algo en la dirección de:
110
Algunos documentos relacionados:
285
, especialmente nota sección 5.299
, descripción de varios eventos, etc. Tome nota de lo que se menciona en p.303
sobre312
320
... lee el resto si quieres.
Puede hacerlo fácilmente haciendo referencia a 336
. Estos aparecen como enlaces simbólicos a los que puede desreferenciar usando 347
para determinar el dispositivo de bloque asociado. Sin embargo, estos enlaces son creados por 358
que podría no estar presente en su entorno integrado.
O... mira el 367
después de conectar el dispositivo USB. Debería darte el 378
nodo.