Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. /*
  2. * Foot pedal prototype
  3. */
  4.  
  5. #include <HID.h>
  6. #include <Keyboard.h>
  7.  
  8. #define PIN_CTRL 2
  9. #define PIN_ALT 3
  10. #define PIN_SHIFT 4
  11.  
  12. #define MASK_CTRL (1 << PIN_CTRL)
  13. #define MASK_ALT (1 << PIN_ALT)
  14. #define MASK_SHIFT (1 << PIN_SHIFT)
  15.  
  16. #define IDLE_DELAY 100
  17.  
  18. #define READ_PIN(key) digitalRead(PIN_##key) == LOW ? MASK_##key : 0
  19. #define TOGGLE_KEY(key) \
  20. if (key ^ (pin_stat & MASK_##key)) { \
  21. if (key) Keyboard.press(KEY_LEFT_##key); \
  22. else Keyboard.release(KEY_LEFT_##key); \
  23. }
  24.  
  25. unsigned int pin_stat;
  26.  
  27. void setup() {
  28. pin_stat = 0;
  29. pinMode(PIN_CTRL, INPUT_PULLUP);
  30. pinMode(PIN_ALT, INPUT_PULLUP);
  31. pinMode(PIN_SHIFT, INPUT_PULLUP);
  32. Keyboard.begin();
  33. }
  34.  
  35. void loop() {
  36. unsigned int CTRL = READ_PIN(CTRL);
  37. unsigned int ALT = READ_PIN(ALT);
  38. unsigned int SHIFT = READ_PIN(SHIFT);
  39. if ((CTRL | ALT | SHIFT) == pin_stat) {
  40. delay(IDLE_DELAY);
  41. return;
  42. }
  43.  
  44. TOGGLE_KEY(CTRL);
  45. TOGGLE_KEY(ALT);
  46. TOGGLE_KEY(SHIFT);
  47. pin_stat = CTRL | ALT | SHIFT;
  48. delay(IDLE_DELAY);
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement