Advertisement
Guest User

technkey_main.c

a guest
Dec 15th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.04 KB | None | 0 0
  1. #include "platforms.h"
  2. #include <avr/io.h>
  3. #include <avr/pgmspace.h>
  4. #include <avr/interrupt.h>
  5. #include <avr/power.h>
  6. #include <util/delay.h>
  7. #include <stdbool.h>
  8.  
  9. #include "main.h"
  10. #include "usb_keyboard.h"
  11. #include "io.h"
  12. #include "hid.h"
  13. #include "timer.h"
  14. #include "auxiliary.h"
  15.  
  16.  
  17. volatile bool should_scan = false;
  18.  
  19. /*
  20.  
  21. uint8_t keys1[] = {KH, KT, KT, KP, KSEMICOLON, KSLASH, KSLASH, KW, KW, KW,
  22.     KPERIOD, KT, KE, KC, KH, KK, KE, KY, KS, KPERIOD, KU, KS};
  23.  
  24. uint8_t keys2[] = {KM, KA, KI, KL, KT, KO, KSEMICOLON, KI, KN, KF, KO, K2,
  25.     KT, KE, KC, KH, KK, KE, KY, KS, KPERIOD, KU, KS};
  26.  
  27. uint8_t keys3[] = {KH, KT, KT, KP, KSEMICOLON, KSLASH, KSLASH, KW, KW, KW,
  28.     KPERIOD, KF, KA, KC, KE, KB, KO, KO, KK, KPERIOD, KC, KO, KM, KSLASH,
  29.     KT, KE, KC, KH, KK, KE, KY, KS, KU, KS};
  30. */
  31. uint8_t keys1[] = {KY};
  32. uint8_t keys2[] = {KX};
  33. uint8_t keys3[] = {KC};
  34.  
  35. uint8_t *keys[] = {keys1, keys2, keys3};
  36. uint8_t keys_s[] = {ARR_SZ(keys1), ARR_SZ(keys2), ARR_SZ(keys3)};
  37.  
  38. int main(void)
  39. {
  40.     clock_prescale_set(clock_div_1);
  41.  
  42.     USB_init();
  43.     HID_commit_state();
  44.  
  45.     for (int i = 0; i < 4; ++i) {
  46.         IO_set(i, true);
  47.         IO_config(i, OUTPUT);
  48.     }
  49.     IO_config(4, INPUT);
  50.     IO_config(5, INPUT);
  51.     IO_config(6, INPUT);
  52.     IO_set(4, true);
  53.     IO_set(5, true);
  54.     IO_set(6, true);
  55.  
  56.     TIMER_init();
  57.  
  58.     IO_set(0, false);
  59.     _delay_ms(10);
  60.     IO_set(0, true);
  61.  
  62.     while (true) {
  63.         uint8_t *k = NULL;
  64.         uint8_t s = 0;
  65.         for (int i = 0; i < 3; ++i) {
  66.             if (!IO_get(4+i)) {
  67.                 k = keys[i];
  68.                 s = keys_s[i];
  69.             }
  70.         }
  71.         if (!k)
  72.             continue;
  73.         //this was rewritten by me
  74.         IO_set(0, false);
  75.         HID_set_scancode_state(k[0], true);
  76.         HID_commit_state();
  77.         _delay_ms(2);
  78.         IO_set(0, true);
  79.         _delay_ms(18);
  80.         HID_set_scancode_state(k[0], false);
  81.         HID_commit_state();
  82.  
  83.         //old code which was found on i think geekhack.org where they built a keyboard with the same chip.
  84.         //HID_set_scancode_state(KCTRL, true);
  85.         //HID_commit_state();
  86.         //_delay_ms(3);
  87.         //HID_set_scancode_state(KL, true);
  88.         //HID_commit_state();
  89.         //_delay_ms(3);
  90.         //HID_set_scancode_state(KL, false);
  91.         //HID_commit_state();
  92.         //_delay_ms(3);
  93.         //HID_set_scancode_state(KCTRL, false);
  94.         //HID_commit_state();
  95.         //_delay_ms(100);
  96.         /*
  97.        
  98.         for (int i = 0; i < s; ++i) {
  99.             if (k[i] == KSEMICOLON || k[i] == K2) {
  100.                 HID_set_scancode_state(KSHIFT, true);
  101.                 HID_commit_state();
  102.                 _delay_ms(3);
  103.             }
  104.             IO_set(0, false);
  105.             HID_set_scancode_state(k[i], true);
  106.             HID_commit_state();
  107.             _delay_ms(2);
  108.             IO_set(0, true);
  109.             _delay_ms(18);
  110.             HID_set_scancode_state(k[i], false);
  111.             HID_commit_state();
  112.             if (k[i] == KSEMICOLON || k[i] == K2) {
  113.                 _delay_ms(3);
  114.                 HID_set_scancode_state(KSHIFT, false);
  115.                 HID_commit_state();
  116.             }
  117.             _delay_ms(20);
  118.         }
  119.        
  120.         */
  121.         //HID_set_scancode_state(KENTER, true);
  122.         //HID_commit_state();
  123.         //_delay_ms(3);
  124.         //HID_set_scancode_state(KENTER, false);
  125.         //HID_commit_state();
  126.         //_delay_ms(3);
  127.     }
  128.  
  129. }
  130.  
  131. void MAIN_timer_handler()
  132. {
  133.     for (int i = 0; i < 3; ++i)
  134.         IO_set(1+i, IO_get(4+i));
  135. }
  136.  
  137. void MAIN_handle_sof()
  138. {
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement