Misc files
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

i-s-hole.ino 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include <HID-Project.h>
  2. #include <HID-Settings.h>
  3. //debounce milliseconds
  4. const int debounce = 5;
  5. //Switch Pins
  6. const byte k[4] = { 4, 5, 6, 7 };
  7. //Switch status
  8. boolean s[4] = { 0, 0, 0, 0 };
  9. //M for Media Key, K for Keyboard
  10. const char codetype[4] = { 'K', 'K', 'K', 'K' };
  11. //Keycodes
  12. const ConsumerKeycode ccode[4] = { MEDIA_VOLUME_MUTE,
  13. MEDIA_VOLUME_MUTE,
  14. MEDIA_PLAY_PAUSE,
  15. MEDIA_PLAY_PAUSE
  16. };
  17. const KeyboardKeycode kcode[4] = { KEY_DOWN_ARROW,
  18. KEY_LEFT_ARROW,
  19. KEY_UP_ARROW,
  20. KEY_RIGHT_ARROW
  21. };
  22. void setup() {
  23. Keyboard.begin();
  24. Consumer.begin();
  25. //setup inputs, turn on pullups
  26. for (int i = 0; i < 4; i++) {
  27. pinMode(k[i], INPUT);
  28. digitalWrite(k[i], 1);
  29. }
  30. }
  31. void loop() {
  32. CheckKeys();
  33. delay(debounce);
  34. }
  35. void CheckKeys() {
  36. for (int i = 0; i < 4; i++) {
  37. if (codetype[i] == 'M') {
  38. if (digitalRead(k[i]) == 0) {
  39. if (s[i] == 0) {
  40. Consumer.press((ccode[i]));
  41. s[i] = 1;
  42. }
  43. }
  44. else {
  45. if (s[i] == 1) {
  46. s[i] = 0;
  47. Consumer.release((ccode[i]));
  48. }
  49. }
  50. }
  51. if (codetype[i] == 'K') {
  52. if (digitalRead(k[i]) == 0) {
  53. if (s[i] == 0) {
  54. Keyboard.press((kcode[i]));
  55. s[i] = 1;
  56. }
  57. }
  58. else {
  59. if (s[i] == 1) {
  60. s[i] = 0;
  61. Keyboard.release((kcode[i]));
  62. }
  63. }
  64. }
  65. }
  66. }