From ce4857e021adf0dede358b9334c3bf9d783cb641 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 13 Nov 2012 10:04:35 +0900 Subject: Fix and keymap of hid_liber from alaricljs at geekhack.org. --- keyboard/hid_liber/matrix.c | 52 +++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'keyboard/hid_liber/matrix.c') diff --git a/keyboard/hid_liber/matrix.c b/keyboard/hid_liber/matrix.c index 8e3739197..6798b36d7 100644 --- a/keyboard/hid_liber/matrix.c +++ b/keyboard/hid_liber/matrix.c @@ -19,7 +19,7 @@ #ifndef DEBOUNCE -# define DEBOUNCE 5 +# define DEBOUNCE 0 #endif static uint8_t debouncing = DEBOUNCE; @@ -30,8 +30,6 @@ static matrix_row_t _matrix0[MATRIX_ROWS]; static matrix_row_t _matrix1[MATRIX_ROWS]; -#define NROW 18 -#define NCOL 8 #define _DDRA (uint8_t *const)&DDRA #define _DDRB (uint8_t *const)&DDRB #define _DDRC (uint8_t *const)&DDRC @@ -64,35 +62,39 @@ static matrix_row_t _matrix1[MATRIX_ROWS]; /* Specifies the ports and pin numbers for the rows */ static -uint8_t *const row_ddr[NROW] = { _DDRB, _DDRB, - _DDRC, _DDRC, - _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, - _DDRF, _DDRF, _DDRF, _DDRF, _DDRF, _DDRF}; +uint8_t *const row_ddr[MATRIX_ROWS] = { + _DDRB, _DDRB, + _DDRC, _DDRC, + _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, _DDRD, + _DDRF, _DDRF, _DDRF, _DDRF, _DDRF, _DDRF}; static -uint8_t *const row_port[NROW] = { _PORTB, _PORTB, - _PORTC, _PORTC, - _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, - _PORTF, _PORTF, _PORTF, _PORTF, _PORTF, _PORTF}; +uint8_t *const row_port[MATRIX_ROWS] = { + _PORTB, _PORTB, + _PORTC, _PORTC, + _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, _PORTD, + _PORTF, _PORTF, _PORTF, _PORTF, _PORTF, _PORTF}; static -uint8_t *const row_pin[NROW] = { _PINB, _PINB, - _PINC, _PINC, - _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, - _PINF, _PINF, _PINF, _PINF, _PINF, _PINF}; +uint8_t *const row_pin[MATRIX_ROWS] = { + _PINB, _PINB, + _PINC, _PINC, + _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, _PIND, + _PINF, _PINF, _PINF, _PINF, _PINF, _PINF}; static -const uint8_t row_bit[NROW] = { _BIT4, _BIT7, - _BIT6, _BIT7, - _BIT0, _BIT1, _BIT2, _BIT3, _BIT4, _BIT5, _BIT6, _BIT7, - _BIT0, _BIT1, _BIT4, _BIT5, _BIT6, _BIT7}; +const uint8_t row_bit[MATRIX_ROWS] = { + _BIT4, _BIT7, + _BIT6, _BIT7, + _BIT0, _BIT1, _BIT2, _BIT3, _BIT4, _BIT5, _BIT6, _BIT7, + _BIT0, _BIT1, _BIT4, _BIT5, _BIT6, _BIT7}; static const uint8_t mask = 0x0E; /* Specifies the ports and pin numbers for the columns */ static -const uint8_t col_bit[NCOL] = { 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E}; +const uint8_t col_bit[MATRIX_COLS] = { 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E}; static inline void pull_column(int col) { @@ -110,7 +112,7 @@ void setup_io_pins(void) { uint8_t row; DDRB |= 0x0E; PORTB &= ~0x0E; - for(row = 0; row < NROW; row++) { + for(row = 0; row < MATRIX_ROWS; row++) { *row_ddr[row] &= ~row_bit[row]; *row_port[row] &= ~row_bit[row]; } @@ -140,7 +142,7 @@ void matrix_init(void) // To use PORTF disable JTAG with writing JTD bit twice within four cycles. MCUCR |= (1<