-// TEMP INCLUDES
-#include "usb_keyboard_debug.h"
-#include <print.h>
-
-#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
-
-// Sleep defined in milliseconds
-#define PRE_DRIVE_SLEEP 50
-#define POST_DRIVE_SLEEP 50
-
-
-// Drive Pin Defines
-#define DRIVE_reg_1 PORTD
-#define DRIVE_reg_2 PORTD
-#define DRIVE_reg_3 PORTD
-#define DRIVE_reg_4 PORTD
-#define DRIVE_reg_5 PORTD
-#define DRIVE_reg_6 PORTD
-#define DRIVE_reg_7 PORTE
-#define DRIVE_reg_8 PORTE
-#define DRIVE_reg_9 PORTE
-#define DRIVE_reg_10 <blank>
-#define DRIVE_reg_11 <blank>
-#define DRIVE_reg_12 <blank>
-
-#define DRIVE_pin_1 2
-#define DRIVE_pin_2 3
-#define DRIVE_pin_3 4
-#define DRIVE_pin_4 5
-#define DRIVE_pin_5 6
-#define DRIVE_pin_6 7
-#define DRIVE_pin_7 0
-#define DRIVE_pin_8 1
-#define DRIVE_pin_9 6
-#define DRIVE_pin_10 <blank>
-#define DRIVE_pin_11 <blank>
-#define DRIVE_pin_12 <blank>
-
-// Detect Pin/Group Defines
-#define DETECT_group_1 1
-#define DETECT_group_2 2
-#define DETECT_group_3 3
-#define DETECT_group_4 4
-#define DETECT_group_5 5
-#define DETECT_group_6 6
-#define DETECT_group_7 7
-#define DETECT_group_8 8
-#define DETECT_group_9 9
-#define DETECT_group_10 <blank>
-#define DETECT_group_11 <blank>
-#define DETECT_group_12 <blank>
-
-#define DETECT_group_size_1 7
-#define DETECT_group_size_2 7
-#define DETECT_group_size_3 6
-#define DETECT_group_size_4 8
-#define DETECT_group_size_5 7
-#define DETECT_group_size_6 7
-#define DETECT_group_size_7 8
-#define DETECT_group_size_8 8
-#define DETECT_group_size_9 4
-#define DETECT_group_size_10 <blank>
-#define DETECT_group_size_11 <blank>
-#define DETECT_group_size_12 <blank>
-
-/*
-#define DETECT_group_array_1 {{KEY_ESC,KEY_CTRL,KEY_CAPS_LOCK,KEY_SHIFT},{0,1,0,1}}
-#define DETECT_group_array_2 {{KEY_BACKSPACE,KEY_UP,KEY_DOWN,KEY_A,KEY_INSERT,KEY_ALT,KEY_Z,KEY_RIGHT},{0,0,0,0,0,1,0,0}}
-#define DETECT_group_array_3 {{KEY_TILDE,KEY_DELETE,KEY_LEFT,KEY_SPACE,KEY_X,KEY_S,KEY_TAB,KEY_1},{0,0,0,0,0,0,0,0}}
-#define DETECT_group_array_4 {{KEY_SLASH,KEY_RIGHT_BRACE,KEY_ENTER,KEY_D,KEY_2,KEY_Q,KEY_C},{0,0,0,0,0,0,0}}
-#define DETECT_group_array_5 {{KEY_EQUAL,KEY_LEFT_BRACE,KEY_QUOTE,KEY_F,KEY_3,KEY_W,KEY_V},{0,0,0,0,0,0,0}}
-#define DETECT_group_array_6 {{KEY_MINUS,KEY_P,KEY_SEMICOLON,KEY_G,KEY_4,KEY_E,KEY_B,KEY_BACKSLASH},{0,0,0,0,0,0,0,0}}
-#define DETECT_group_array_7 {{KEY_8,KEY_U,KEY_K,KEY_7,KEY_Y,KEY_COMMA},{0,0,0,0,0,0}}
-#define DETECT_group_array_8 {{KEY_9,KEY_I,KEY_PERIOD,KEY_J,KEY_6,KEY_T,KEY_M},{0,0,0,0,0,0,0}}
-#define DETECT_group_array_9 {{KEY_0,KEY_O,KEY_L,KEY_H,KEY_5,KEY_R,KEY_N},{0,0,0,0,0,0,0}}
-*/
-// Switch Codes
-#define DETECT_group_array_1 {11,27,43,40,6, 22,55}
-#define DETECT_group_array_2 {10,26,58,41,7, 23,56}
-#define DETECT_group_array_3 {9, 25,42,8, 24,57}
-#define DETECT_group_array_4 {12,28,44,39,5, 21,54,59}
-#define DETECT_group_array_5 {13,29,45,38,4, 20,53}
-#define DETECT_group_array_6 {14,30,46,37,3, 19,52}
-#define DETECT_group_array_7 {15,31,61,63,51,36,18,2}
-#define DETECT_group_array_8 {16,32,47,35,1, 17,50,62}
-#define DETECT_group_array_9 {48,34,33,49} // 49/60 are the same line
-#define DETECT_group_array_10 <blank>
-#define DETECT_group_array_11 <blank>
-#define DETECT_group_array_12 <blank>
-
-
-
-// Drive Macros (Generally don't need to be changed), except for maybe DRIVE_DETECT
-#define DRIVE_DETECT(reg,pin,group) \
- reg &= ~(1 << pin); \
- detection(group); \
- reg |= (1 << pin); \
- _delay_ms(POST_DRIVE_SLEEP);
-
-#define DD_CASE(number) \
- case number:\
- DRIVE_DETECT(DRIVE_reg_##number, DRIVE_pin_##number, DETECT_group_##number)
-
-#define DD_CASE_ORD(number) \
- DD_CASE(number) \
- break;
-
-#define DD_CASE_END(number,var) \
- DD_CASE(number) \
- var = -1; \
- break;
-
-
-// Detection Macros (Probably don't need to be changed, but depending the matrix, may have to be)
-// Determine if key is either normal or a modifier
-#define DET_GROUP_CHECK(index) \
- curDetect.keyDetectArray[curDetect.keyDetectCount++] = groupArray[index];
-
-
-// XXX - Detection Groups
-// Checks each of the specified pins, and then if press detected, determine if the key is normal or a modifier
-// Inverse logic applies for the PINs
-
-// Used for 1 detection group (Special group)
-#define DET_GROUP_1 \
- if ( !( PINB & (1 << 7) ) ) \
- DET_GROUP_CHECK(0) \
- if ( !( PINC & (1 << 0) ) ) \
- DET_GROUP_CHECK(1) \
- if ( !( PIND & (1 << 0) ) ) \
- DET_GROUP_CHECK(2) \
- if ( !( PIND & (1 << 1) ) ) \
- DET_GROUP_CHECK(3)
-
-// Used for 4 detection groups (Skips J1 P9)
-#define DET_GROUP_2 \
- if ( !( PINE & (1 << 7) ) ) \
- DET_GROUP_CHECK(0) \
- if ( !( PINB & (1 << 0) ) ) \
- DET_GROUP_CHECK(1) \
- if ( !( PINB & (1 << 1) ) ) \
- DET_GROUP_CHECK(2) \
- if ( !( PINB & (1 << 2) ) ) \
- DET_GROUP_CHECK(3) \
- if ( !( PINB & (1 << 3) ) ) \
- DET_GROUP_CHECK(4) \
- if ( !( PINB & (1 << 4) ) ) \
- DET_GROUP_CHECK(5) \
- if ( !( PINB & (1 << 5) ) ) \
- DET_GROUP_CHECK(6) \
-
-// Used for 1 detection group (Skips J1 P6 and J1 P9)
-#define DET_GROUP_3 \
- if ( !( PINE & (1 << 7) ) ) \
- DET_GROUP_CHECK(0) \
- if ( !( PINB & (1 << 0) ) ) \
- DET_GROUP_CHECK(1) \
- if ( !( PINB & (1 << 1) ) ) \
- DET_GROUP_CHECK(2) \
- if ( !( PINB & (1 << 2) ) ) \
- DET_GROUP_CHECK(3) \
- if ( !( PINB & (1 << 4) ) ) \
- DET_GROUP_CHECK(4) \
- if ( !( PINB & (1 << 5) ) ) \
- DET_GROUP_CHECK(5) \
-
-// Used for 3 detection groups (No skips, except special group 1)
-#define DET_GROUP_4 \
- if ( !( PINE & (1 << 7) ) ) \
- DET_GROUP_CHECK(0) \
- if ( !( PINB & (1 << 0) ) ) \
- DET_GROUP_CHECK(1) \
- if ( !( PINB & (1 << 1) ) ) \
- DET_GROUP_CHECK(2) \
- if ( !( PINB & (1 << 2) ) ) \
- DET_GROUP_CHECK(3) \
- if ( !( PINB & (1 << 3) ) ) \
- DET_GROUP_CHECK(4) \
- if ( !( PINB & (1 << 4) ) ) \
- DET_GROUP_CHECK(5) \
- if ( !( PINB & (1 << 5) ) ) \
- DET_GROUP_CHECK(6) \
- if ( !( PINB & (1 << 6) ) ) \
- DET_GROUP_CHECK(7) \