Ergodox Infinity: Add EE_HANDS support. (#9527)
Including a guide to set these EEPROM values (in the readme).
This commit is contained in:
		
							parent
							
								
									a88cfa395b
								
							
						
					
					
						commit
						cacf495c91
					
				| @ -24,6 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "print.h" | #include "print.h" | ||||||
| #include "debug.h" | #include "debug.h" | ||||||
| #include "matrix.h" | #include "matrix.h" | ||||||
|  | #include "eeconfig.h" | ||||||
| #include "serial_link/system/serial_link.h" | #include "serial_link/system/serial_link.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -118,8 +119,12 @@ uint8_t matrix_scan(void) | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     uint8_t offset = 0; |     uint8_t offset = 0; | ||||||
| #ifdef MASTER_IS_ON_RIGHT | #if (defined(EE_HANDS) || defined(MASTER_IS_ON_RIGHT)) | ||||||
|  | #ifdef EE_HANDS | ||||||
|  |     if (is_serial_link_master() && !eeconfig_read_handedness()) { | ||||||
|  | #else | ||||||
|     if (is_serial_link_master()) { |     if (is_serial_link_master()) { | ||||||
|  | #endif | ||||||
|         offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS; |         offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS; | ||||||
|     } |     } | ||||||
| #endif | #endif | ||||||
| @ -162,7 +167,13 @@ void matrix_print(void) | |||||||
| 
 | 
 | ||||||
| void matrix_set_remote(matrix_row_t* rows, uint8_t index) { | void matrix_set_remote(matrix_row_t* rows, uint8_t index) { | ||||||
|     uint8_t offset = 0; |     uint8_t offset = 0; | ||||||
| #ifdef MASTER_IS_ON_RIGHT | #ifdef EE_HANDS | ||||||
|  |     if (eeconfig_read_handedness()) { | ||||||
|  |         offset = LOCAL_MATRIX_ROWS * (index + 1); | ||||||
|  |     } else { | ||||||
|  |         offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2); | ||||||
|  |     } | ||||||
|  | #elif defined(MASTER_IS_ON_RIGHT) | ||||||
|     offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2); |     offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2); | ||||||
| #else | #else | ||||||
|     offset = LOCAL_MATRIX_ROWS * (index + 1); |     offset = LOCAL_MATRIX_ROWS * (index + 1); | ||||||
|  | |||||||
| @ -29,6 +29,9 @@ Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob | |||||||
| The Infinity is two completely independent keyboards, that can connect together. | The Infinity is two completely independent keyboards, that can connect together. | ||||||
| You have a few options in how you flash the firmware: | You have a few options in how you flash the firmware: | ||||||
| 
 | 
 | ||||||
|  | - Add `#define EE_HANDS` to your config.h, initialize the EEPROM values (see below), | ||||||
|  |   and then flash the same firmware to both halves. | ||||||
|  | 
 | ||||||
| - Flash the left half, rebuild the firmware with "MASTER=right" and then flash | - Flash the left half, rebuild the firmware with "MASTER=right" and then flash | ||||||
|   the right half.  This allows you to plug in either half directly to the |   the right half.  This allows you to plug in either half directly to the | ||||||
|   computer and is what the above instructions do. |   computer and is what the above instructions do. | ||||||
| @ -43,6 +46,35 @@ You have a few options in how you flash the firmware: | |||||||
|   directly connect the right half to the computer. |   directly connect the right half to the computer. | ||||||
| 
 | 
 | ||||||
| - For minor changes such as changing only the keymap without having updated | - For minor changes such as changing only the keymap without having updated | ||||||
|   any part of the firmware code itself, you can program only the MASTER half. |   any part of the firmware code itself, you can program only the MASTER half, | ||||||
|  |   but it is safest to program both halves. | ||||||
|  | 
 | ||||||
|  | ### EE_HANDS initialization | ||||||
|  | 
 | ||||||
|  | To initialize the EEPROM values for `EE_HANDS` to work properly, these steps should work. | ||||||
|  | They only need to be done once, unless you reset the EEPROM later. | ||||||
|  | 
 | ||||||
|  |   - Plug in the left keyboard half to the computer, and press its program button. | ||||||
|  | 
 | ||||||
|  |   - Flash the left half with `make ergodox_infinity:default:dfu-util-split-left` | ||||||
|  |     (If you need to use a different method to flash your keyboard, still run this command, | ||||||
|  |     and abort it with Ctrl+C when the flashing attempts starts to print errors, | ||||||
|  |     then flash the built firmware). | ||||||
|  | 
 | ||||||
|  |   - On the left half, press the top vertical 1.5U key (second from the top in the rightmost column) once, | ||||||
|  |     then the 1U key at the bottom in the opposite corner (bottom left corner). | ||||||
|  | 
 | ||||||
|  |   - Plug in the right keyboard half to the computer, and press its program button. | ||||||
|  | 
 | ||||||
|  |   - Flash the right half with `make ergodox_infinity:default:dfu-util-split-right` | ||||||
|  | 
 | ||||||
|  |   - On the right half, press the top vertical 1.5U key (second from the top in the leftmost column) once, | ||||||
|  |     then the 1U key at the bottom in the opposite corner (bottom right corner). | ||||||
|  | 
 | ||||||
|  |   - Add `#define EE_HANDS` to the config.h file of your keymap, and build your firmware using | ||||||
|  |     `make ergodox_infinity:keymapname`. | ||||||
|  | 
 | ||||||
|  |   - After this, you can flash both halves with the same firmware, _without_ having to rebuild with | ||||||
|  |     "MASTER=right" or risking a mirrored keyboard when connected the wrong way. | ||||||
|  |     If you reset your EEPROM later, you'll have to follow these steps again, though. | ||||||
| 
 | 
 | ||||||
| - It is safest to program both halves though. |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user