Arduino - Logout do teclado

Este exemplo usa a biblioteca de teclado para desconectar você da sessão do usuário no computador quando o pino 2 do ARDUINO UNO é colocado no chão. O esboço simula o pressionamento de tecla em sequência de duas ou três teclas ao mesmo tempo e, após um pequeno atraso, ele as libera.

Warning - Quando você usa o Keyboard.print()comando, o Arduino assume o teclado do seu computador. Para garantir que você não perca o controle do computador ao executar um esboço com esta função, configure um sistema de controle confiável antes de chamar Keyboard.print (). Este esboço foi projetado para enviar um comando de teclado apenas depois que um pino foi puxado para o solo.

Componentes necessários

Você precisará dos seguintes componentes -

  • 1 × breadboard
  • 1 × Arduino Leonardo, Micro ou placa de vencimento
  • 1 × botão de pressão
  • 1 × Jumper

Procedimento

Siga o diagrama do circuito e conecte os componentes na placa de ensaio, conforme mostrado na imagem abaixo.

Esboço

Abra o software Arduino IDE em seu computador. A codificação na linguagem Arduino controlará seu circuito. Abra um novo arquivo de esboço clicando em Novo.

Para este exemplo, você precisa usar o Arduino IDE 1.6.7

Note- Você deve incluir a biblioteca de teclado em seu arquivo de biblioteca do Arduino. Copie e cole o arquivo de biblioteca do teclado numérico dentro do arquivo com os nomes de bibliotecas (realçados), conforme mostrado na captura de tela a seguir.

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 ser anotado

Antes de carregar o programa em sua placa, certifique-se de atribuir o SO correto que você está usando atualmente para a variável de plataforma.

Enquanto o esboço está em execução, pressionar o botão conectará o pino 2 ao solo e a placa enviará a sequência de logout ao PC conectado via USB.

Resultado

Quando você conecta o pino 2 ao solo, ele executa uma operação de logout.

Ele usa as seguintes combinações de teclado para sair -

  • Em Windows, CTRL-ALT-DEL seguido por ALT-l

  • Em Ubuntu, CTRL-ALT-DEL e ENTER

  • Em OSX, CMD-SHIFT-q