Arduino - Déconnexion du clavier

Cet exemple utilise la bibliothèque Clavier pour vous déconnecter de votre session utilisateur sur votre ordinateur lorsque la broche 2 de l'ARDUINO UNO est tirée vers le sol. L'esquisse simule la pression de touche en séquence de deux ou trois touches en même temps et après un court délai, elle les libère.

Warning - Lorsque vous utilisez le Keyboard.print()commande, Arduino prend le contrôle du clavier de votre ordinateur. Pour vous assurer de ne pas perdre le contrôle de votre ordinateur lors de l'exécution d'une esquisse avec cette fonction, configurez un système de contrôle fiable avant d'appeler Keyboard.print (). Cette esquisse est conçue pour envoyer une commande clavier uniquement après qu'une broche a été tirée au sol.

Composants requis

Vous aurez besoin des composants suivants -

  • 1 × planche à pain
  • 1 × carte Arduino Leonardo, Micro ou Due
  • 1 × bouton poussoir
  • 1 × cavalier

Procédure

Suivez le schéma de circuit et connectez les composants sur la carte d'expérimentation comme indiqué dans l'image ci-dessous.

Esquisser

Ouvrez le logiciel Arduino IDE sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez un nouveau fichier d'esquisse en cliquant sur Nouveau.

Pour cet exemple, vous devez utiliser Arduino IDE 1.6.7

Note- Vous devez inclure la bibliothèque de clavier dans votre fichier de bibliothèque Arduino. Copiez et collez le fichier de bibliothèque de clavier dans le fichier avec les bibliothèques de noms (en surbrillance) comme indiqué dans la capture d'écran suivante.

Code 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);
}

Code à noter

Avant de télécharger le programme sur votre carte, assurez-vous d'attribuer le bon système d'exploitation que vous utilisez actuellement à la variable de plate-forme.

Pendant que l'esquisse est en cours d'exécution, appuyez sur le bouton pour connecter la broche 2 à la terre et la carte enverra la séquence de déconnexion au PC connecté par USB.

Résultat

Lorsque vous connectez la broche 2 à la terre, il effectue une opération de déconnexion.

Il utilise les combinaisons de touches suivantes pour se déconnecter -

  • Sur Windows, CTRL-ALT-DEL suivi de ALT-l

  • Sur Ubuntu, CTRL-ALT-SUPPR et ENTRÉE

  • Sur OSX, CMD-SHIFT-q