Advertisement
Guest User

Untitled

a guest
Mar 11th, 2018
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. /*
  2. * Zenith Supersport 286 Keyboard interpreter
  3. *
  4. * Converts signals from a Zenith Laptop keyboard"s key matrix to a stndard USB keyboard when using a Teensy LC.
  5. *
  6. */
  7.  
  8. #include <Keypad.h>
  9.  
  10. const byte ROWS = 12; // 12 rows
  11. const byte COLS = 12; // 12 columns
  12. const char * keys [ROWS] [COLS] = {
  13.  
  14. {0,"KEY_ENTER",0,"KEYPAD_BACKSLASH","KEY_RIGHT_BRACE","KEY_QUOTE","KEYPAD_SLASH",0,0,"KEY_DOWN",0,0},
  15. {"KEY_RIGHT","KEY_LEFT",0,"KEY_BACKSPACE","KEY_PRINTSCREEN","KEY_LEFT_BRACE","KEY_SEMICOLON","KEY_PERIOD",0,0,"MODIFIERKEY_RIGHT_CTRL","KEY_C"},
  16. {"KEY_UP",0,0,0,"KEY_P","KEY_PLUS",0,"KEY_L","KEY_COMMA","KEY_X",0,"KEY_Z"},
  17. {"KEY_INSERT","KEY_MINUS","KEY_O","KEY_K","KEY_M","KEY_N","KEY_B","KEY_V","KEY_S",0,0,0},
  18. {"KEY_I","KEY_PAUSE","KEY_0","KEY_H","KEY_G","KEY_F","KEY_D","KEY_S","KEY_A","MODIFIERKEY_CTRL",0,0},
  19. {"KEY_NUM_LOCK","KEY_9","KEY_U","KEY_Y","KEY_T","KEY_R","KEY_E","KEY_W","KEY_Q","KEY_TAB",0,0},
  20. {"KEY_F10",0,"KEY_7","KEY_8","KEY_6","KEY_5","KEY_4","KEY_3","KEY_2","KEY_1","KEY_TILDE",0},
  21. {"KEY_F8","KEY_F7","KEY_F6","KEY_F5","KEY_F4","KEY_F3","KEY_F2","KEY_F1","KEY_ESC",0,0,0},
  22. {"KEY_DEL",0,0,0,0,0,"KEY_F9",0,0,0,0,0},
  23. {"MODIFIERKEY_RIGHT_SHIFT",0,0,0,0,0,0,0,0,0,0,0},
  24. {"MODIFIERKEY_LEFT_ALT",0,0,0,0,0,0,0,0,0,0,0},
  25. {"KEY_CAPS_LOCK",0,"MODIFIERKEY_LEFT_SHIFT","MODIFIERKEY_RIGHT_ALT",0,"KEY_SPACE",0,0,0,0,0,0},
  26.  
  27. };
  28.  
  29. byte rowPins[ROWS] = {1,2,3,4,5,6,7,8,9,14,15,18}; //connect to the row pinouts of the keypad
  30. byte colPins[COLS] = {10,11,12,13,16,17,19,20,21,22,23,24}; //connect to the column pinouts of the keypad
  31.  
  32. Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  33.  
  34. unsigned long loopCount;
  35. unsigned long startTime;
  36. String msg;
  37. int x = 0;
  38.  
  39. void setup() {
  40. Serial.begin(9600);
  41. loopCount = 0;
  42. startTime = millis();
  43. msg = "";
  44. }
  45.  
  46.  
  47. void loop() {
  48. loopCount++;
  49. //char key = kpd.getKey();
  50. if ( (millis()-startTime)>5000 ) {
  51. Serial.print("Average loops per second = ");
  52. Serial.println(loopCount/5);
  53. startTime = millis();
  54. loopCount = 0;
  55. }
  56.  
  57.  
  58. // Fills kpd.key[ ] array with up-to 10 active keys.
  59. // Returns true if there are ANY active keys.
  60. if (kpd.getKeys())
  61. {
  62. for (int i=0; i<LIST_MAX; i++) // Scan the whole key list.
  63. {
  64. if ( kpd.key[i].stateChanged ) // Only find keys that have changed state.
  65. {
  66. switch (kpd.key[i].kstate) { // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
  67. case PRESSED:
  68. msg = " PRESSED.";
  69.  
  70.  
  71.  
  72. Serial.print("Key ");
  73. Serial.print(kpd.key[i].kchar);
  74. Serial.println(msg);
  75. // release all the keys at the same instant
  76. Keyboard.set_key1(kpd.key[i].kchar);
  77. Keyboard.send_now();
  78.  
  79. //Keyboard.set_key1(0);
  80. //Keyboard.send_now();
  81. if (kpd.key[i].kchar == char(KEY_LEFT_SHIFT)) {
  82. Serial.print("Shift ");
  83. Keyboard.set_modifier(MODIFIERKEY_SHIFT);
  84. Keyboard.send_now();
  85. x=1;
  86.  
  87. }
  88.  
  89. break;
  90.  
  91. case HOLD:
  92. msg = " HOLD.";
  93. //Keyboard.set_modifier(MODIFIERKEY_SHIFT);
  94. //Keyboard.send_now();
  95.  
  96. Keyboard.set_key1(kpd.key[i].kchar);
  97. Keyboard.send_now();
  98.  
  99. break;
  100. case RELEASED:
  101. msg = " RELEASED.";
  102. Serial.println(msg);
  103. Keyboard.set_key1(0);
  104. Keyboard.send_now();
  105. if (kpd.key[i].kchar == char(KEY_LEFT_SHIFT)) {
  106. Serial.print("Shift Released ");
  107. Keyboard.set_modifier(0);
  108. Keyboard.send_now();
  109. x=0;
  110. }
  111.  
  112. break;
  113. case IDLE:
  114. msg = " IDLE.";
  115.  
  116. }
  117.  
  118. }
  119. }
  120. }
  121. } // End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement