Arduino 键盘注销

本示例使用键盘库将你在计算机上的用户会话注销,此时ARDUINO UNO上的引脚2被拉至接地。草图同时按两个或三个按键的顺序模拟按键,并在短暂的延迟之后释放它们。

警告 – 当你使用 Keyboard.print()命令时,Arduino接管你的计算机键盘。为确保在使用此功能运行草图时不会失去对计算机的控制,请在调用Keyboard.print()之前设置可靠的控制系统。此草图旨在在引脚被拉至接地后才发送键盘命令。

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Leonardo, Micro, 或Due板
  • 1 × 按钮
  • 1 × 跳线

程序

按照电路图连接面包板上的组件,如下图所示。

Arduino 键盘注销

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

对于本例,你需要使用Arduino IDE 1.6.7

Arduino 键盘注销

注意 – 

你必须在Arduino库文件中包含键盘库。将键盘库文件复制并粘贴到名为libraries的文件(下图高亮显示)中,如以下屏幕截图所示。

Arduino 键盘注销

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


  }

代码说明

在将程序上传到你的板之前,请确保将正在使用的正确操作系统分配给平台变量。

在草图运行时,按下按钮将引脚2接地,而板将发送注销序列发送到USB连接的PC。

结果

当将引脚2接地时,它将执行注销操作。

它使用以下键盘组合注销:

  • Windows 上,按CTRL-ALT-DEL,然后按ALT-l

  • Ubuntu ,CTRL-ALT-DEL和ENTER

  • OSX 上,CMD-SHIFT-q