Arduino - Cierre de sesión del teclado

Este ejemplo usa la biblioteca del teclado para cerrar la sesión de su usuario en su computadora cuando el pin 2 en el ARDUINO UNO se tira a tierra. El boceto simula la pulsación de teclas en secuencia de dos o tres teclas al mismo tiempo y, tras un breve retraso, las suelta.

Warning - Cuando usa el Keyboard.print()comando, Arduino se hace cargo del teclado de su computadora. Para asegurarse de no perder el control de su computadora mientras ejecuta un boceto con esta función, configure un sistema de control confiable antes de llamar a Keyboard.print (). Este boceto está diseñado para enviar un comando de teclado solo después de que un pin se haya puesto a tierra.

Componentes requeridos

Necesitará los siguientes componentes:

  • 1 × tablero
  • 1 × placa Arduino Leonardo, Micro o Due
  • 1 × pulsador
  • 1 × puente

Procedimiento

Siga el diagrama del circuito y conecte los componentes en la placa de pruebas como se muestra en la imagen a continuación.

Bosquejo

Abra el software Arduino IDE en su computadora. La codificación en el lenguaje Arduino controlará su circuito. Abra un nuevo archivo de dibujo haciendo clic en Nuevo.

Para este ejemplo, necesita usar Arduino IDE 1.6.7

Note- Debe incluir la biblioteca del teclado en su archivo de biblioteca Arduino. Copie y pegue el archivo de la biblioteca del teclado dentro del archivo con las bibliotecas de nombres (resaltadas) como se muestra en la siguiente captura de pantalla.

Código Arduino

/*
   Keyboard logout
   This sketch demonstrates the Keyboard library.
   When you connect pin 2 to ground, it performs a logout.
   It uses keyboard combinations to do this, as follows:
   On Windows, CTRL-ALT-DEL followed by ALT-l
   On Ubuntu, CTRL-ALT-DEL, and ENTER
   On OSX, CMD-SHIFT-q
   To wake: Spacebar.
   Circuit:
   * Arduino Leonardo or Micro
   * wire to connect D2 to ground.
*/

#define OSX 0
#define WINDOWS 1
#define UBUNTU 2

#include "Keyboard.h"

// change this to match your platform:
int platform = WINDOWS;

void setup() {
   // make pin 2 an input and turn on the
   // pullup resistor so it goes high unless
   // connected to ground:
   
   pinMode(2, INPUT_PULLUP);
   Keyboard.begin();
}

void loop() {
   while (digitalRead(2) == HIGH) {
      // do nothing until pin 2 goes low
      delay(500);
   }
   
   delay(1000);
   
   switch (platform) {
      case OSX:
      Keyboard.press(KEY_LEFT_GUI);
	  
      // Shift-Q logs out:
      Keyboard.press(KEY_LEFT_SHIFT);
      Keyboard.press('Q');
      delay(100);
	  
      // enter:
      Keyboard.write(KEY_RETURN);
      break;
	  
      case WINDOWS:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(100);
      Keyboard.releaseAll();
	  
      //ALT-l:
      delay(2000);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press('l');
      Keyboard.releaseAll();
      break;
	  
      case UBUNTU:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
	  
      delay(1000);
      Keyboard.releaseAll();
	  
      // Enter to confirm logout:
      Keyboard.write(KEY_RETURN);
      break;
   }
   
   // do nothing:
   while (true);
}

Keyboard.releaseAll();

   // enter:
      Keyboard.write(KEY_RETURN);
      break;
      case WINDOWS:
	  
   // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(100);
      Keyboard.releaseAll();
	  
   //ALT-l:
      delay(2000);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press('l');
      Keyboard.releaseAll();
      break;
	  
   case UBUNTU:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(1000);
      Keyboard.releaseAll();
	  
      // Enter to confirm logout:
      Keyboard.write(KEY_RETURN);
      break;
   }
   
// do nothing:
   while (true);
}

Código a tener en cuenta

Antes de cargar el programa en su placa, asegúrese de asignar el sistema operativo correcto que está utilizando actualmente a la variable de plataforma.

Mientras se ejecuta el boceto, al presionar el botón se conectará el pin 2 al suelo y la placa enviará la secuencia de cierre de sesión a la PC conectada por USB.

Resultado

Cuando conecta el pin 2 al suelo, realiza una operación de cierre de sesión.

Utiliza las siguientes combinaciones de teclado para cerrar la sesión:

  • En Windows, CTRL-ALT-DEL seguido de ALT-l

  • En Ubuntu, CTRL-ALT-DEL y ENTER

  • En OSX, CMD-SHIFT-q