diff options
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/config_common.h | 116 | ||||
-rw-r--r-- | quantum/keymap_common.c | 19 | ||||
-rw-r--r-- | quantum/matrix.c | 10 |
3 files changed, 141 insertions, 4 deletions
diff --git a/quantum/config_common.h b/quantum/config_common.h new file mode 100644 index 0000000000..da53fce89b --- /dev/null +++ b/quantum/config_common.h @@ -0,0 +1,116 @@ +#ifndef CONFIG_DEFINITIONS_H +#define CONFIG_DEFINITIONS_H + +#define B0 0x20 +#define B1 0x21 +#define B2 0x22 +#define B3 0x23 +#define B4 0x24 +#define B5 0x25 +#define B6 0x26 +#define B7 0x27 +#define C0 0x30 +#define C1 0x31 +#define C2 0x32 +#define C3 0x33 +#define C4 0x34 +#define C5 0x35 +#define C6 0x36 +#define C7 0x37 +#define D0 0x40 +#define D1 0x41 +#define D2 0x42 +#define D3 0x43 +#define D4 0x44 +#define D5 0x45 +#define D6 0x46 +#define D7 0x47 +#define E0 0x50 +#define E1 0x51 +#define E2 0x52 +#define E3 0x53 +#define E4 0x54 +#define E5 0x55 +#define E6 0x56 +#define E7 0x57 +#define F0 0x60 +#define F1 0x61 +#define F2 0x62 +#define F3 0x63 +#define F4 0x64 +#define F5 0x65 +#define F6 0x66 +#define F7 0x67 + +#define COL2ROW 0x0 +#define ROW2COL 0x1 + +#ifdef BLUETOOTH_ENABLE +#ifdef __AVR_ATmega32U4__ + #define SERIAL_UART_BAUD 9600 + #define SERIAL_UART_DATA UDR1 + #define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1) + #define SERIAL_UART_RXD_VECT USART1_RX_vect + #define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1)) + #define SERIAL_UART_INIT() do { \ + UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \ + UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \ + UCSR1B = (1<<TXEN1); /* TX: enable */ \ + UCSR1C = (0<<UPM11) | (0<<UPM10) | /* parity: none(00), even(01), odd(11) */ \ + (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* data-8bit(011) */ \ + sei(); \ + } while(0) +#else +# error "USART configuration is needed." +#endif + + +// I'm fairly sure these aren't needed, but oh well - Jack + +/* + * PS/2 Interrupt configuration + */ +#ifdef PS2_USE_INT +/* uses INT1 for clock line(ATMega32U4) */ +#define PS2_CLOCK_PORT PORTD +#define PS2_CLOCK_PIN PIND +#define PS2_CLOCK_DDR DDRD +#define PS2_CLOCK_BIT 1 + +#define PS2_DATA_PORT PORTD +#define PS2_DATA_PIN PIND +#define PS2_DATA_DDR DDRD +#define PS2_DATA_BIT 0 + +#define PS2_INT_INIT() do { \ + EICRA |= ((1<<ISC11) | \ + (0<<ISC10)); \ +} while (0) +#define PS2_INT_ON() do { \ + EIMSK |= (1<<INT1); \ +} while (0) +#define PS2_INT_OFF() do { \ + EIMSK &= ~(1<<INT1); \ +} while (0) +#define PS2_INT_VECT INT1_vect +#endif + +/* + * PS/2 Busywait configuration + */ +#ifdef PS2_USE_BUSYWAIT +#define PS2_CLOCK_PORT PORTD +#define PS2_CLOCK_PIN PIND +#define PS2_CLOCK_DDR DDRD +#define PS2_CLOCK_BIT 1 + +#define PS2_DATA_PORT PORTD +#define PS2_DATA_PIN PIND +#define PS2_DATA_DDR DDRD +#define PS2_DATA_BIT 0 +#endif + +#endif + +#endif + diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 66cf2883c7..c9e1494fd9 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -37,15 +37,18 @@ action_t action_for_key(uint8_t layer, keypos_t key) // Has a modifier action_t action; // Split it up - action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); + action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key return action; } else if (keycode >= 0x2000 && keycode < 0x3000) { - // Is a shortcut for function layer, pull last 12bits + // Is a shortcut for function layer, pull last 12bits + // This means we have 4,096 FN macros at our disposal return keymap_func_to_action(keycode & 0xFFF); } else if (keycode >= 0x3000 && keycode < 0x4000) { + // When the code starts with 3, it's an action macro. action_t action; action.code = ACTION_MACRO(keycode & 0xFF); return action; +#ifdef BACKLIGHT_ENABLE } else if (keycode >= BL_0 & keycode <= BL_15) { action_t action; action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); @@ -66,10 +69,12 @@ action_t action_for_key(uint8_t layer, keypos_t key) action_t action; action.code = ACTION_BACKLIGHT_STEP(); return action; - } else if (keycode == RESET) { +#endif + } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here bootloader_jump(); return; - } else if (keycode == DEBUG) { + } else if (keycode == DEBUG) { // DEBUG is 0x5001 + // TODO: Does this actually work? print("\nDEBUG: enabled.\n"); debug_enable = true; return; @@ -79,15 +84,21 @@ action_t action_for_key(uint8_t layer, keypos_t key) action_t action; action.code = ACTION_LAYER_SET(layer, when); return action; +#ifdef MIDI_ENABLE } else if (keycode >= 0x6000 && keycode < 0x7000) { action_t action; action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); return action; +#endif +#ifdef UNICODE_ENABLE } else if (keycode >= 0x8000) { action_t action; uint16_t unicode = keycode & ~(0x8000); action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); return action; +#endif + } else { + } switch (keycode) { diff --git a/quantum/matrix.c b/quantum/matrix.c index 97642a4a4e..95bf4c0973 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -47,6 +47,16 @@ static void init_cols(void); static void unselect_rows(void); static void select_row(uint8_t row); +__attribute__ ((weak)) +void * matrix_init_kb(void) { + +}; + +__attribute__ ((weak)) +void * matrix_scan_kb(void) { + +}; + inline uint8_t matrix_rows(void) { |