Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "platforms.h"
- #include <avr/io.h>
- #include <avr/pgmspace.h>
- #include <avr/interrupt.h>
- #include <avr/power.h>
- #include <util/delay.h>
- #include <stdbool.h>
- #include "main.h"
- #include "usb_keyboard.h"
- #include "io.h"
- #include "hid.h"
- #include "timer.h"
- #include "auxiliary.h"
- volatile bool should_scan = false;
- /*
- uint8_t keys1[] = {KH, KT, KT, KP, KSEMICOLON, KSLASH, KSLASH, KW, KW, KW,
- KPERIOD, KT, KE, KC, KH, KK, KE, KY, KS, KPERIOD, KU, KS};
- uint8_t keys2[] = {KM, KA, KI, KL, KT, KO, KSEMICOLON, KI, KN, KF, KO, K2,
- KT, KE, KC, KH, KK, KE, KY, KS, KPERIOD, KU, KS};
- uint8_t keys3[] = {KH, KT, KT, KP, KSEMICOLON, KSLASH, KSLASH, KW, KW, KW,
- KPERIOD, KF, KA, KC, KE, KB, KO, KO, KK, KPERIOD, KC, KO, KM, KSLASH,
- KT, KE, KC, KH, KK, KE, KY, KS, KU, KS};
- */
- uint8_t keys1[] = {KY};
- uint8_t keys2[] = {KX};
- uint8_t keys3[] = {KC};
- uint8_t *keys[] = {keys1, keys2, keys3};
- uint8_t keys_s[] = {ARR_SZ(keys1), ARR_SZ(keys2), ARR_SZ(keys3)};
- int main(void)
- {
- clock_prescale_set(clock_div_1);
- USB_init();
- HID_commit_state();
- for (int i = 0; i < 4; ++i) {
- IO_set(i, true);
- IO_config(i, OUTPUT);
- }
- IO_config(4, INPUT);
- IO_config(5, INPUT);
- IO_config(6, INPUT);
- IO_set(4, true);
- IO_set(5, true);
- IO_set(6, true);
- TIMER_init();
- IO_set(0, false);
- _delay_ms(10);
- IO_set(0, true);
- while (true) {
- uint8_t *k = NULL;
- uint8_t s = 0;
- for (int i = 0; i < 3; ++i) {
- if (!IO_get(4+i)) {
- k = keys[i];
- s = keys_s[i];
- }
- }
- if (!k)
- continue;
- //this was rewritten by me
- IO_set(0, false);
- HID_set_scancode_state(k[0], true);
- HID_commit_state();
- _delay_ms(2);
- IO_set(0, true);
- _delay_ms(18);
- HID_set_scancode_state(k[0], false);
- HID_commit_state();
- //old code which was found on i think geekhack.org where they built a keyboard with the same chip.
- //HID_set_scancode_state(KCTRL, true);
- //HID_commit_state();
- //_delay_ms(3);
- //HID_set_scancode_state(KL, true);
- //HID_commit_state();
- //_delay_ms(3);
- //HID_set_scancode_state(KL, false);
- //HID_commit_state();
- //_delay_ms(3);
- //HID_set_scancode_state(KCTRL, false);
- //HID_commit_state();
- //_delay_ms(100);
- /*
- for (int i = 0; i < s; ++i) {
- if (k[i] == KSEMICOLON || k[i] == K2) {
- HID_set_scancode_state(KSHIFT, true);
- HID_commit_state();
- _delay_ms(3);
- }
- IO_set(0, false);
- HID_set_scancode_state(k[i], true);
- HID_commit_state();
- _delay_ms(2);
- IO_set(0, true);
- _delay_ms(18);
- HID_set_scancode_state(k[i], false);
- HID_commit_state();
- if (k[i] == KSEMICOLON || k[i] == K2) {
- _delay_ms(3);
- HID_set_scancode_state(KSHIFT, false);
- HID_commit_state();
- }
- _delay_ms(20);
- }
- */
- //HID_set_scancode_state(KENTER, true);
- //HID_commit_state();
- //_delay_ms(3);
- //HID_set_scancode_state(KENTER, false);
- //HID_commit_state();
- //_delay_ms(3);
- }
- }
- void MAIN_timer_handler()
- {
- for (int i = 0; i < 3; ++i)
- IO_set(1+i, IO_get(4+i));
- }
- void MAIN_handle_sof()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement