59 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Keyboard layout customization
 | |
| 
 | |
| ## Dependencies
 | |
| * Dependencies are listed in the README file for the EC project.
 | |
| 
 | |
| ## Select firmware version
 | |
| 
 | |
| To ensure compatibility with other system components (e.g. your current BIOS
 | |
| version), it's recommended to flash the same firmware version as you're
 | |
| currently using.
 | |
| * Go to Settings -> Firmware and check the current version. It will look
 | |
|   something like "2020-09-17_f10af76".
 | |
| * Clone the [system76/firmware-open](https://github.com/system76/firmware-open)
 | |
|   repository.
 | |
| * Checkout the version that matches your firmware, e.g.: `git checkout f10af76`.
 | |
| * Run `git submodule init && git submodule update && cd ec`.
 | |
| 
 | |
| ## Adding your layout
 | |
| * In `src/board/system76/{your-model}/keymap/`, copy `default.c` and rename it.
 | |
|   There are two examples to reference in the `lemp9` directory: `jeremy.c` and 
 | |
|   `levi.c`.
 | |
| * In `src/common/include/common/keymap.h` you will find a list of the key
 | |
|   definitions.
 | |
| * You will notice two sets of keys in these layout files. The top one is the 
 | |
|   standard mapping. The bottom one is the Fn layer, meaning it is active when
 | |
|   the Fn key is being held. If you look at the Fn layer in the `levi.c` layout,
 | |
|   you will see that there are arrow keys at WASD, media and volume keys on the
 | |
|   bottom row, etc. 
 | |
| * Hint: To avoid losing your place change one key at a time, referencing the key
 | |
|   code you are deleting to keep yourself positioned correctly in the list of
 | |
|   keycodes.
 | |
| 
 | |
| ## Configure your EC to build with your layout
 | |
| * Create a file in the project's root directory called `config.mk` and add your
 | |
|   board and keyboard layout to it. For example, if you want to build lemp9
 | |
|   firmware with Jeremy's layout (which is at 
 | |
|   `ec/src/board/system76/lemp9/keymap/jeremy.c`):
 | |
| ```
 | |
| BOARD?=system76/lemp9
 | |
| KEYMAP?=jeremy
 | |
| ```
 | |
| 
 | |
| ## Test build your EC
 | |
| * From the `ec` directory, run `make` to make sure it builds correctly.
 | |
| 
 | |
| ## Flash your EC
 | |
| * If the test build went well, you should be ready to flash your EC:
 | |
|   - Close all running applications.
 | |
|   - Unplug everything from your laptop except the charger.
 | |
|   - Flash with `make flash_internal`
 | |
|   - When it says, "Waiting 5 seconds for all keys to be released", it is
 | |
|     important to not touch the keyboard or trackpad until it finishes writing
 | |
|     the new EC and turns itself off. 
 | |
|   - Once it shuts down, you can power it back on, and your keymap will be
 | |
|     active. 
 | |
|   - If you changed your layout in such a way that you can't easily type, just
 | |
|     plug in a USB keyboard and re-flash to the default layout until you can
 | |
|     fix. The USB keyboard's layout will be unaffected.
 |