Skip to content

Instantly share code, notes, and snippets.

@aovestdipaperino
Created July 2, 2023 02:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aovestdipaperino/48092bc2e91c3e01ccd7c66efedcafa3 to your computer and use it in GitHub Desktop.
Save aovestdipaperino/48092bc2e91c3e01ccd7c66efedcafa3 to your computer and use it in GitHub Desktop.
AutoLock
#include "Adafruit_TinyUSB.h"
#include "Arduino.h"
Adafruit_USBD_HID usb_hid;
const int buttonPin = 10;
bool activeState = false;
// taken from:
// https://gist.github.com/todbot/13880b3ddfb4f1c857328f1974b12036
// Report IDs
enum
{
RID_KEYBOARD = 1,
RID_MOUSE,
RID_CONSUMER_CONTROL, // Media, volume etc ..
};
// HID report descriptor using TinyUSB's template
uint8_t const desc_hid_report[] =
{
TUD_HID_REPORT_DESC_KEYBOARD( HID_REPORT_ID(RID_KEYBOARD) )
};
static uint32_t timestamp = UINT32_MAX;
const uint8_t SENSOR_PIN = D7;
void sendLockSequence() {
uint8_t keycode[6] = {HID_KEY_NONE, HID_KEY_Q};
usb_hid.keyboardReport(RID_KEYBOARD, KEYBOARD_MODIFIER_LEFTCTRL | KEYBOARD_MODIFIER_LEFTGUI, keycode);
delay(100);
usb_hid.keyboardRelease(RID_KEYBOARD);
timestamp = UINT32_MAX; // only lock once
}
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(D1, INPUT_PULLUP);
pinMode(SENSOR_PIN, INPUT_PULLDOWN);
usb_hid.setPollInterval(2);
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
usb_hid.setStringDescriptor("Enzo HID Composite");
usb_hid.begin();
// wait until device mounted
while ( !USBDevice.mounted() ) delay(1);
Serial.println("Mounted");
}
void loop() {
static uint8_t status = 1;
digitalWrite(LED_BUILTIN, 1 - digitalRead(SENSOR_PIN));
if (status != digitalRead(SENSOR_PIN)) {
if (status) {
status = 0;
timestamp = millis()+1000;
} else {
status = 1;
timestamp = UINT32_MAX;
}
} else {
if (millis() > timestamp) sendLockSequence();
}
Serial.println(digitalRead(SENSOR_PIN));
delay(1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment