|  |  | @ -56,21 +56,12 @@ uint8_t matrix_cols(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     return MATRIX_COLS; |  |  |  |     return MATRIX_COLS; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | void setup_leds(void) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   DDRF  |=  0x00; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   PORTF |=  0x00; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | void matrix_init(void) |  |  |  | void matrix_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     // initialize row and col
 |  |  |  |     // initialize row and col
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     unselect_rows(); |  |  |  |     unselect_rows(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     init_cols(); |  |  |  |     init_cols(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     setup_leds(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     // initialize matrix state: all keys off
 |  |  |  |     // initialize matrix state: all keys off
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     for (uint8_t i=0; i < MATRIX_ROWS; i++) { |  |  |  |     for (uint8_t i=0; i < MATRIX_ROWS; i++) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         matrix[i] = 0; |  |  |  |         matrix[i] = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -104,15 +95,16 @@ uint8_t matrix_scan(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // uint8_t layer = biton32(default_layer_state);
 |  |  |  |     uint8_t layer = biton32(layer_state); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     switch (default_layer_state) { |  |  |  |     switch (layer) { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         case 1: |  |  |  |         case 1: | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRF &= ~(1<<0); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             PORTF &= ~(1<<0); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 2: |  |  |  |         case 2: | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRF |= (1<<0); |  |  |  |             DDRC |= (1<<7); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             PORTF |= (1<<0); |  |  |  |             PORTC |= (1<<7); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         case 0: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             DDRC &= ~(1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             PORTC &= ~(1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -163,28 +155,28 @@ uint8_t matrix_key_count(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void init_cols(void) |  |  |  | static void init_cols(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     DDRC  &= ~(1<<6 | 1<<7); |  |  |  |     DDRF  &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     PORTC |=  (1<<6 | 1<<7); |  |  |  |     PORTF |=  (1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     DDRD  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<5); |  |  |  |     DDRD  &= ~(1<<0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     PORTD |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<5); |  |  |  |     PORTD |=  (1<<0); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     DDRB  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); |  |  |  |     DDRB  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  |     PORTB |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); |  |  |  |     PORTB |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static matrix_row_t read_cols(void) |  |  |  | static matrix_row_t read_cols(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     return (PIND&(1<<5) ? 0 : (1<< 0)) | |  |  |  |     return (PINB&(1<<0) ? 0 : (1<< 0)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINC&(1<<7) ? 0 : (1<< 1)) | |  |  |  |            (PINB&(1<<1) ? 0 : (1<< 1)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINC&(1<<6) ? 0 : (1<< 2)) | |  |  |  |            (PINB&(1<<2) ? 0 : (1<< 2)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PIND&(1<<3) ? 0 : (1<< 3)) | |  |  |  |            (PINB&(1<<3) ? 0 : (1<< 3)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PIND&(1<<2) ? 0 : (1<< 4)) | |  |  |  |            (PINB&(1<<7) ? 0 : (1<< 4)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PIND&(1<<1) ? 0 : (1<< 5)) | |  |  |  |            (PIND&(1<<0) ? 0 : (1<< 5)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PIND&(1<<0) ? 0 : (1<< 6)) | |  |  |  |            (PINF&(1<<7) ? 0 : (1<< 6)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINB&(1<<7) ? 0 : (1<< 7)) | |  |  |  |            (PINF&(1<<6) ? 0 : (1<< 7)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINB&(1<<3) ? 0 : (1<< 8)) | |  |  |  |            (PINF&(1<<5) ? 0 : (1<< 8)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINB&(1<<2) ? 0 : (1<< 9)) | |  |  |  |            (PINF&(1<<4) ? 0 : (1<< 9)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINB&(1<<1) ? 0 : (1<<10)) | |  |  |  |            (PINF&(1<<1) ? 0 : (1<<10)) | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |            (PINB&(1<<0) ? 0 : (1<<11)); |  |  |  |            (PINF&(1<<0) ? 0 : (1<<11)); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* Row pin configuration
 |  |  |  | /* Row pin configuration
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -194,30 +186,30 @@ static matrix_row_t read_cols(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | static void unselect_rows(void) |  |  |  | static void unselect_rows(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     // Hi-Z(DDR:0, PORT:0) to unselect
 |  |  |  |     // Hi-Z(DDR:0, PORT:0) to unselect
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     DDRD  &= ~(1<<4 | 1<<6 | 1<<7); |  |  |  |     DDRB  &= ~0b01110000; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     PORTD |=  (1<<4 | 1<<6 | 1<<7); |  |  |  |     PORTB &= ~0b01110000; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     DDRB  &= ~(1<<4); |  |  |  |     DDRD  &= ~0b10000000; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     PORTB |=  (1<<4); |  |  |  |     PORTD &= ~0b10000000; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void select_row(uint8_t row) |  |  |  | static void select_row(uint8_t row) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     switch (row) { |  |  |  |     switch (row) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 0: |  |  |  |         case 0: | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRD  |= (1<<4); |  |  |  |             DDRB  |= (1<<6); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             PORTD &= ~(1<<4); |  |  |  |             PORTB &= ~(1<<6); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 1: |  |  |  |         case 1: | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRD  |= (1<<6); |  |  |  |             DDRB  |= (1<<5); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             PORTD &= ~(1<<6); |  |  |  |             PORTB &= ~(1<<5); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 2: |  |  |  |         case 2: | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRD  |= (1<<7); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             PORTD &= ~(1<<7); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 3: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDRB  |= (1<<4); |  |  |  |             DDRB  |= (1<<4); | 
			
		
	
		
		
			
				
					
					|  |  |  |             PORTB &= ~(1<<4); |  |  |  |             PORTB &= ~(1<<4); | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         case 3: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             DDRD  |= (1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             PORTD &= ~(1<<7); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |