Keyboard Controller

Controlador de teclado

El Arduino Due tiene la capacidad de actuar como un anfitrión USB para periféricos tales como un teclado conectado al puerto serie USB. Este ejemplo demuestra el uso de la biblioteca Keyboard Controller.

Hardware Necesario

  • 1 Placa Arduino Due
  • 1 Teclado USB
  • (Nota: los teclados que se conectan a través de un concentrador USB interno, al igual que los teclados de Apple, no funcionarán)

Código


/*
 Ejemplo de Keyboard Controller HID

 Muestra la salida de un controlador de teclado USB conectado a USB de una placa Arduino Due.

 creado 8 Octubre 2012
 por Cristian Maglie
 */


// Necesita la biblioteca de control de teclado
#include <KeyboardController.h>

// inicializa el Controlador USB
USBHost usb;

// Conecta el teclado al controlador USB
KeyboardController keyboard(usb);

// Esta función intercepta la tecla pulsada
void keyPressed() {
  Serial.print("Pulsada:  ");
  printKey();
}

// TEsta función intercepta la tecla soltada
void keyReleased() {
  Serial.print("Soltada: ");
  printKey();
}

void printKey() {
  // getOemKey() devuelve el código OEM-asociado con la tecla
  Serial.print(" key:");
  Serial.print(keyboard.getOemKey());

  // getModifiers() devuelve un campo de bits con los modificadores de teclas
  int mod = keyboard.getModifiers();
  Serial.print(" Modificador:");
  Serial.print(mod);

  Serial.print(" => ");

  if (mod & LeftCtrl)
    Serial.print("L-Ctrl ");
  if (mod & LeftShift)
    Serial.print("L-Shift ");
  if (mod & Alt)
    Serial.print("Alt ");
  if (mod & LeftCmd)
    Serial.print("L-Cmd ");
  if (mod & RightCtrl)
    Serial.print("R-Ctrl ");
  if (mod & RightShift)
    Serial.print("R-Shift ");
  if (mod & AltGr)
    Serial.print("AltGr ");
  if (mod & RightCmd)
    Serial.print("R-Cmd ");

  // getKey() devuelve la traducción ASCII de la tecla OEM
  // combinada con los modificadores.
  Serial.write(keyboard.getKey());
  Serial.println();
}

void setup()
{
  Serial.begin(115200);
  Serial.println("Programa iniciado");
  delay(200);
}

void loop()
{
  // Proceso de tareas USB
  usb.Task();
}


1 comentario: