Cómo tener configurado un modo de teclado de teclado personalizado

7

Soy nuevo en el campo del hardware en general. Para un proyecto, estoy tratando de crear un teclado personalizado que tendrá algunas teclas adicionales, digamos 20-25 más que un teclado estándar. He leído sobre códigos de escaneo y conjuntos de códigos de escaneo. También he leído sobre codificadores de teclado, controladores, etc. en páginas como estas:

enlace

enlace

Pero aún no tengo claro qué codificador me permitirá generar un código de escaneo personalizado que no esté definido en ningún conjunto de códigos de escaneo estándar. ¿El controlador de teclado estándar (compatible con 8042) en una PC procesará estos códigos de escaneo no estándar?

    
pregunta Vivek

3 respuestas

5

Atmel (y también creo que Microchip) tiene un controlador HID genérico para sus MCU disponibles, con código fuente completo en cada extremo disponible (software de prueba del cliente y pila HID integrada).

Explorando la oferta de Atmel, incluso tienen una placa de demostración de teclado en toda regla , de nuevo con el código fuente.

No es el ejemplo más simple (¡han escrito su propio planificador de tareas!), pero creo que debería ser bastante fácil modificar lo que quieras hacer.

Busque en keyboard_task.c en la demostración del teclado de los enlaces anteriores ( o aquí ). Parece ser exactamente lo que quieres. Una gran variedad de scancodes, que se utiliza para escribir un mensaje en la computadora mediante la emulación de un teclado en cualquier editor de texto.

Los valores reales de pulsación de tecla de HID se extraen mediante el uso de #define en un archivo llamado usb_commun_hid.h , que parece no estar incluido (!) en la descarga anterior (¿supongo que viene con el compilador?), pero simplemente se asignan para definir los valores de un solo byte antiguo, por lo que debería poder agregar más todo lo que desee. (Consulte el archivo a00102.html en el enlace anterior).

Me imagino que Microchip tiene algo similar, pero no tengo muchas ganas de investigar su implementación en este momento. Si lo deseas, puedo hacerlo más tarde.

Por supuesto, esto realmente no hace nada respecto a cómo decodifica estos scancodes al final de la computadora, pero nuevamente, Atmel tiene ejemplos .Net de cómo hablar con sus dispositivos HID , así que algo hackeable debería estar disponible.

    
respondido por el Connor Wolf
1

Hace poco recibí educación en esta pregunta sobre dos opciones para el desarrollo de USB:

  • La placa de desarrollo USB teensy (utiliza el microcontrolador AVR habilitado para USB ATMEGA32U4 o AT90USB1286)
  • La utilidad inputattach (Linux) para registrar dispositivos serie (como un FT232) como dispositivos de entrada

¿Podría uno de estos trabajar para ti? De cualquier manera, vas a tener que escribir tu propio controlador, ya que a tu sistema operativo no le va a gustar el envío de scancodes no estándar.

La ventaja de tener scancodes estándar es que cada teclado que conectas "simplemente funciona" (en teoría). Si no te importa la configuración, ¿por qué molestarse en intentar emular los scancodes?

    
respondido por el Kevin Vermeer
0

Debería funcionar bien, ¿no es así como funcionan esos teclados "Multimedia"? ¿Con las teclas de reproducción / pausa / volumen / etc en ellas?

    
respondido por el davr

Lea otras preguntas en las etiquetas