Advertisement
Guest User

mega2560_keyboard_mame

a guest
Jan 4th, 2019
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.34 KB | None | 0 0
  1. /**
  2. * Arduino USB HID Keyboard Demo
  3. * Keys 1, 2, 3 and 4 on pins 4, 5, 6 and 7
  4. *
  5. * @info check details on my website
  6. * @link http://blog.realhe.ro
  7. */
  8. uint8_t buf[8] = {
  9. 0 }; /* Keyboard report buffer */
  10.  
  11. #define KEY_P1_UP       0x52
  12. #define KEY_P1_DOWN     0x51
  13. #define KEY_P1_LEFT     0x50
  14. #define KEY_P1_RIGHT    0x4f
  15. #define KEY_P1_LCTRL    0xe0
  16. #define KEY_P1_ALT      0xe2
  17. #define KEY_P1_SPACE    0x2c
  18. #define KEY_P1_LSHIFT   0xe1
  19. #define KEY_P1_Z        0x1d
  20. #define KEY_P1_X        0x1b
  21. #define KEY_P1_5        0x22
  22. #define KEY_P1_1        0x1e
  23.  
  24. #define KEY_P2_R        0x15
  25. #define KEY_P2_F        0x09
  26. #define KEY_P2_D        0x07
  27. #define KEY_P2_G        0x0a
  28. #define KEY_P2_A        0x04
  29. #define KEY_P2_S        0x16
  30. #define KEY_P2_Q        0x14
  31. #define KEY_P2_W        0x1a
  32. #define KEY_P2_I        0x0c
  33. #define KEY_P2_K        0x0e
  34. #define KEY_P2_6        0x23
  35. #define KEY_P2_2        0x1f
  36.  
  37.  
  38. #define KEY_VOLUP       0x57
  39. #define KEY_VOLDOWN     0x56
  40. #define KEY_F7          0x40
  41. #define KEY_F8          0x41
  42. #define KEY_ENTER       0x28
  43. #define KEY_ESC         0x29
  44. #define KEY_P           0x13
  45. #define KEY_TAB         0x2b
  46.  
  47.  
  48. #define PIN_P1_UP      30
  49. #define PIN_P1_DOWN    31
  50. #define PIN_P1_LEFT    32
  51. #define PIN_P1_RIGHT   33
  52. #define PIN_P1_LCTRL   34
  53. #define PIN_P1_ALT     35
  54. #define PIN_P1_SPACE   36
  55. #define PIN_P1_LSHIFT  37
  56. #define PIN_P1_Z       38
  57. #define PIN_P1_X       39
  58. #define PIN_P1_5       40
  59. #define PIN_P1_1       41
  60.  
  61. #define PIN_P2_R       42
  62. #define PIN_P2_F       43
  63. #define PIN_P2_D       44
  64. #define PIN_P2_G       45
  65. #define PIN_P2_A       46
  66. #define PIN_P2_S       47
  67. #define PIN_P2_Q       48
  68. #define PIN_P2_W       49
  69. #define PIN_P2_I       50
  70. #define PIN_P2_K       51
  71. #define PIN_P2_6       52
  72. #define PIN_P2_2       53
  73.  
  74. int state = 1;
  75.  
  76. void setup()
  77. {
  78.   Serial.begin(9600);
  79.   randomSeed(analogRead(0));
  80.   delay(200);
  81.  
  82.   pinMode(PIN_P1_UP, INPUT);
  83.   pinMode(PIN_P1_DOWN, INPUT);
  84.   pinMode(PIN_P1_LEFT, INPUT);
  85.   pinMode(PIN_P1_RIGHT, INPUT);
  86.   pinMode(PIN_P1_LCTRL, INPUT);
  87.   pinMode(PIN_P1_ALT, INPUT);
  88.   pinMode(PIN_P1_SPACE, INPUT);
  89.   pinMode(PIN_P1_LSHIFT, INPUT);
  90.   pinMode(PIN_P1_Z, INPUT);
  91.   pinMode(PIN_P1_X, INPUT);
  92.   pinMode(PIN_P1_5, INPUT);
  93.   pinMode(PIN_P1_1, INPUT);
  94.  
  95.   pinMode(PIN_P2_R, INPUT);
  96.   pinMode(PIN_P2_F, INPUT);
  97.   pinMode(PIN_P2_D, INPUT);
  98.   pinMode(PIN_P2_G, INPUT);
  99.   pinMode(PIN_P2_A, INPUT);
  100.   pinMode(PIN_P2_S, INPUT);
  101.   pinMode(PIN_P2_Q, INPUT);
  102.   pinMode(PIN_P2_W, INPUT);
  103.   pinMode(PIN_P2_I, INPUT);
  104.   pinMode(PIN_P2_K, INPUT);
  105.   pinMode(PIN_P2_6, INPUT);
  106.   pinMode(PIN_P2_2, INPUT);
  107.  
  108.  
  109.   digitalWrite(PIN_P1_UP, 1);
  110.   digitalWrite(PIN_P1_DOWN, 1);
  111.   digitalWrite(PIN_P1_LEFT, 1);
  112.   digitalWrite(PIN_P1_RIGHT, 1);
  113.   digitalWrite(PIN_P1_LCTRL, 1);
  114.   digitalWrite(PIN_P1_ALT, 1);
  115.   digitalWrite(PIN_P1_SPACE, 1);
  116.   digitalWrite(PIN_P1_LSHIFT, 1);
  117.   digitalWrite(PIN_P1_Z, 1);
  118.   digitalWrite(PIN_P1_X, 1);
  119.   digitalWrite(PIN_P1_5, 1);
  120.   digitalWrite(PIN_P1_1, 1);
  121.  
  122.   digitalWrite(PIN_P2_R, 1);
  123.   digitalWrite(PIN_P2_F, 1);
  124.   digitalWrite(PIN_P2_D, 1);
  125.   digitalWrite(PIN_P2_G, 1);
  126.   digitalWrite(PIN_P2_A, 1);
  127.   digitalWrite(PIN_P2_S, 1);
  128.   digitalWrite(PIN_P2_Q, 1);
  129.   digitalWrite(PIN_P2_W, 1);
  130.   digitalWrite(PIN_P2_I, 1);
  131.   digitalWrite(PIN_P2_K, 1);
  132.   digitalWrite(PIN_P2_6, 1);
  133.   digitalWrite(PIN_P2_2, 1);
  134. }
  135.  
  136. void loop()
  137. {
  138.  
  139.  
  140.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_UP) == LOW)) {
  141.     buf[0] = 0;
  142.     buf[2] = KEY_VOLUP;
  143.     Serial.write(buf, 8);
  144.     releaseKey();
  145.     loop ();
  146.     }
  147.  
  148.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_DOWN) == LOW)) {
  149.     buf[0] = 0;
  150.     buf[2] = KEY_VOLDOWN;
  151.     Serial.write(buf, 8);
  152.     releaseKey();
  153.     loop ();
  154.     }
  155.    
  156.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_LEFT) == LOW)) {
  157.     buf[0] = 0;
  158.     buf[2] = KEY_F7;
  159.     Serial.write(buf, 8);
  160.     releaseKey();
  161.     loop ();
  162.     }
  163.    
  164.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_RIGHT) == LOW)) {
  165.     buf[0] = 0;
  166.     buf[2] = KEY_F8;
  167.     Serial.write(buf, 8);
  168.     releaseKey();
  169.     loop ();
  170.     }
  171.    
  172.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_LCTRL) == LOW)) {
  173.     buf[0] = 0;
  174.     buf[2] = KEY_ENTER;
  175.     Serial.write(buf, 8);
  176.     releaseKey();
  177.     loop ();
  178.     }
  179.  
  180.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_ALT) == LOW)) {
  181.     buf[0] = 0;
  182.     buf[2] = KEY_P;
  183.     Serial.write(buf, 8);
  184.     releaseKey();
  185.     loop ();
  186.     }
  187.  
  188.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_SPACE) == LOW)) {
  189.     buf[0] = 0;
  190.     buf[2] = KEY_P1_5;
  191.     Serial.write(buf, 8);
  192.     releaseKey();
  193.     loop ();
  194.     }
  195.    
  196.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_LSHIFT) == LOW)) {
  197.     buf[0] = 0;
  198.     buf[2] = KEY_ESC;
  199.     Serial.write(buf, 8);
  200.     releaseKey();
  201.     loop ();
  202.     }
  203.    
  204.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_Z) == LOW)) {
  205.     buf[0] = 0;
  206.     buf[2] = KEY_TAB;
  207.     Serial.write(buf, 8);
  208.     releaseKey();
  209.     loop ();
  210.     }
  211.    
  212.   if ((digitalRead(PIN_P1_1) == LOW) && (digitalRead(PIN_P1_X) == LOW)) {
  213.     buf[0] = 0;
  214.     buf[2] = KEY_P2_6;
  215.     Serial.write(buf, 8);
  216.     releaseKey();
  217.     loop ();
  218.     }
  219.  
  220.  
  221.   state = digitalRead(PIN_P1_UP);
  222.   if (state != 1) {
  223.     buf[0] = 0;
  224.     buf[2] = KEY_P1_UP;
  225.     Serial.write(buf, 8);
  226.     releaseKey();
  227.     //delay(200);
  228.   }
  229.  
  230.   state = digitalRead(PIN_P1_DOWN);
  231.   if (state != 1) {
  232.     buf[0] = 0;
  233.     buf[2] = KEY_P1_DOWN;
  234.     Serial.write(buf, 8);
  235.     releaseKey();
  236.     //delay(200);
  237.   }
  238.  
  239.   state = digitalRead(PIN_P1_LEFT);
  240.   if (state != 1) {
  241.     buf[0] = 0;
  242.     buf[2] = KEY_P1_LEFT;
  243.     Serial.write(buf, 8);
  244.     releaseKey();
  245.     //delay(200);
  246.   }
  247.  
  248.   state = digitalRead(PIN_P1_RIGHT);
  249.   if (state != 1) {
  250.     buf[0] = 0;
  251.     buf[2] = KEY_P1_RIGHT;
  252.     Serial.write(buf, 8);
  253.     releaseKey();
  254.     //delay(200);
  255.   }
  256.  
  257.   state = digitalRead(PIN_P1_LCTRL);
  258.   if (state != 1) {
  259.     buf[0] = 0;
  260.     buf[2] = KEY_P1_LCTRL;
  261.     Serial.write(buf, 8);
  262.     releaseKey();
  263.     //delay(200);
  264.   }
  265.  
  266.   state = digitalRead(PIN_P1_ALT);
  267.   if (state != 1) {
  268.     buf[0] = 0;
  269.     buf[2] = KEY_P1_ALT;
  270.     Serial.write(buf, 8);
  271.     releaseKey();
  272.     //delay(200);
  273.   }
  274.  
  275.   state = digitalRead(PIN_P1_SPACE);
  276.   if (state != 1) {
  277.     buf[0] = 0;
  278.     buf[2] = KEY_P1_SPACE;
  279.     Serial.write(buf, 8);
  280.     releaseKey();
  281.     //delay(200);
  282.   }
  283.  
  284.   state = digitalRead(PIN_P1_LSHIFT);
  285.   if (state != 1) {
  286.     buf[0] = 0;
  287.     buf[2] = KEY_P1_LSHIFT;
  288.     Serial.write(buf, 8);
  289.     releaseKey();
  290.     //delay(200);
  291.   }
  292.  
  293.   state = digitalRead(PIN_P1_Z);
  294.   if (state != 1) {
  295.     buf[0] = 0;
  296.     buf[2] = KEY_P1_Z;
  297.     Serial.write(buf, 8);
  298.     releaseKey();
  299.     //delay(200);
  300.   }
  301.  
  302.   state = digitalRead(PIN_P1_X);
  303.   if (state != 1) {
  304.     buf[0] = 0;
  305.     buf[2] = KEY_P1_X;
  306.     Serial.write(buf, 8);
  307.     releaseKey();
  308.     //delay(200);
  309.   }
  310.  
  311.   state = digitalRead(PIN_P1_5);
  312.   if (state != 1) {
  313.     buf[0] = 0;
  314.     buf[2] = KEY_P1_5;
  315.     Serial.write(buf, 8);
  316.     releaseKey();
  317.     //delay(200);
  318.   }
  319.  
  320.   state = digitalRead(PIN_P1_1);
  321.   if (state != 1) {
  322.     buf[0] = 0;
  323.     buf[2] = KEY_P1_1;
  324.     Serial.write(buf, 8);
  325.     releaseKey();
  326.     //delay(200);
  327.   }
  328.  
  329.   state = digitalRead(PIN_P2_R);
  330.   if (state != 1) {
  331.     buf[0] = 0;
  332.     buf[2] = KEY_P2_R;
  333.     Serial.write(buf, 8);
  334.     releaseKey();
  335.     //delay(200);
  336.   }
  337.  
  338.   state = digitalRead(PIN_P2_F);
  339.   if (state != 1) {
  340.     buf[0] = 0;
  341.     buf[2] = KEY_P2_F;
  342.     Serial.write(buf, 8);
  343.     releaseKey();
  344.     //delay(200);
  345.   }
  346.  
  347.   state = digitalRead(PIN_P2_D);
  348.   if (state != 1) {
  349.     buf[0] = 0;
  350.     buf[2] = KEY_P2_D;
  351.     Serial.write(buf, 8);
  352.     releaseKey();
  353.     //delay(200);
  354.   }
  355.  
  356.   state = digitalRead(PIN_P2_G);
  357.   if (state != 1) {
  358.     buf[0] = 0;
  359.     buf[2] = KEY_P2_G;
  360.     Serial.write(buf, 8);
  361.     releaseKey();
  362.     //delay(200);
  363.   }
  364.  
  365.   state = digitalRead(PIN_P2_A);
  366.   if (state != 1) {
  367.     buf[0] = 0;
  368.     buf[2] = KEY_P2_A;
  369.     Serial.write(buf, 8);
  370.     releaseKey();
  371.     //delay(200);
  372.   }
  373.  
  374.   state = digitalRead(PIN_P2_S);
  375.   if (state != 1) {
  376.     buf[0] = 0;
  377.     buf[2] = KEY_P2_S;
  378.     Serial.write(buf, 8);
  379.     releaseKey();
  380.     //delay(200);
  381.   }
  382.  
  383.   state = digitalRead(PIN_P2_Q);
  384.   if (state != 1) {
  385.     buf[0] = 0;
  386.     buf[2] = KEY_P2_Q;
  387.     Serial.write(buf, 8);
  388.     releaseKey();
  389.     //delay(200);
  390.   }
  391.  
  392.   state = digitalRead(PIN_P2_W);
  393.   if (state != 1) {
  394.     buf[0] = 0;
  395.     buf[2] = KEY_P2_W;
  396.     Serial.write(buf, 8);
  397.     releaseKey();
  398.     //delay(200);
  399.   }
  400.  
  401.   state = digitalRead(PIN_P2_I);
  402.   if (state != 1) {
  403.     buf[0] = 0;
  404.     buf[2] = KEY_P2_I;
  405.     Serial.write(buf, 8);
  406.     releaseKey();
  407.     //delay(200);
  408.   }
  409.  
  410.   state = digitalRead(PIN_P2_K);
  411.   if (state != 1) {
  412.     buf[0] = 0;
  413.     buf[2] = KEY_P2_K;
  414.     Serial.write(buf, 8);
  415.     releaseKey();
  416.     //delay(200);
  417.   }
  418.  
  419.   state = digitalRead(PIN_P2_6);
  420.   if (state != 1) {
  421.     buf[0] = 0;
  422.     buf[2] = KEY_P2_6;
  423.     Serial.write(buf, 8);
  424.     releaseKey();
  425.     //delay(200);
  426.   }
  427.  
  428.   state = digitalRead(PIN_P2_2);
  429.   if (state != 1) {
  430.     buf[0] = 0;
  431.     buf[2] = KEY_P2_2;
  432.     Serial.write(buf, 8);
  433.     releaseKey();
  434.     //delay(200);
  435.   }
  436.  
  437.  
  438.  
  439. }
  440.  
  441. void releaseKey()
  442. {
  443.   buf[0] = 0;
  444.   buf[2] = 0;
  445.   Serial.write(buf, 8); // Release key
  446. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement