* redo make args to use colons, better folder structuring system [skip ci] * don't put spaces after statements - hard lessons in makefile development * fix-up some other rules.mk * give travis a chance * reset KEYMAPS variable * start converting keyboards to new system * try making all with travis * redo make args to use colons, better folder structuring system [skip ci] * don't put spaces after statements - hard lessons in makefile development * fix-up some other rules.mk * give travis a chance * reset KEYMAPS variable * start converting keyboards to new system * try making all with travis * start to update readmes and keyboards * look in keyboard directories for board.mk * update visualizer rules * fix up some other keyboards/keymaps * fix arm board ld includes * fix board rules * fix up remaining keyboards * reset layout variable * reset keyboard_layouts * fix remainging keymaps/boards * update readmes, docs * add note to makefile error * update readmes * remove planck keymap warnings * update references and docs * test out tarvis build stages * don't use stages for now * don't use stages for now
		
			
				
	
	
		
			135 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # QMK HHKB Keymap: blakedietz
 | |
| 
 | |
| <!-- TODO: Link to Hasu's geekhack page from his name -->
 | |
| <!-- TODO: Link to the ergodox ez layout in this repository -->
 | |
| 
 | |
| This is my (Blake Dietz's) own take on a QMK keymap for the Happy Hacking Keyboard Pro 2 alternate controller made by Hasu. A lot of the
 | |
|  functionality was inspired by the ergodox ez default layout. 
 | |
| 
 | |
| ## Dependencies
 | |
| 
 | |
| ### macOS
 | |
| 
 | |
| ```bash
 | |
| brew tap osx-cross/avr
 | |
| brew install avr-libc
 | |
| brew install dfu-programmer
 | |
| ```
 | |
| 
 | |
| ### Windows/Linux
 | |
| 
 | |
| [Build Environment Setup](https://github.com/jackhumbert/qmk_firmware/wiki#build-environment-setup)
 | |
| 
 | |
| ## Flashing
 | |
| 
 | |
| You will need to make sure that you have something that you can use to press the button on the alternate controller in
 | |
| order to put it into boot mode.
 | |
| 
 | |
| From the hhkb directory run the following:
 | |
| 
 | |
| ```bash
 | |
| make clean
 | |
| make hhkb:blakedietz:dfu
 | |
| ```
 | |
| 
 | |
| Press the button on the alternate controller to put the board into boot mode.
 | |
| 
 | |
| You'll see an output similar to the following:
 | |
| 
 | |
| ```bash
 | |
| make hhkb:blakedietz:dfu
 | |
| 
 | |
| Making hhkb with keymap blakedietz and target dfu
 | |
| 
 | |
| avr-gcc (GCC) 6.2.0
 | |
| Copyright (C) 2016 Free Software Foundation, Inc.
 | |
| This is free software; see the source for copying conditions.  There is NO
 | |
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
| Size before:
 | |
|    text    data     bss     dec     hex filename
 | |
|       0   22162       0   22162    5692 hhkb_blakedietz.hex
 | |
| 
 | |
| Compiling: keyboards/hhkb/keymaps/blakedietz/keymap.c                                               [OK]
 | |
| Compiling: ./tmk_core/common/command.c                                                              [OK]
 | |
| Linking: .build/hhkb_blakedietz.elf                                                                 [OK]
 | |
| Creating load file for Flash: .build/hhkb_blakedietz.hex                                            [OK]
 | |
| 
 | |
| Size after:
 | |
|    text    data     bss     dec     hex filename
 | |
|       0   22162       0   22162    5692 hhkb_blakedietz.hex
 | |
| 
 | |
| dfu-programmer: no device present.
 | |
| Error: Bootloader not found. Trying again in 5s.
 | |
| dfu-programmer: no device present.
 | |
| Error: Bootloader not found. Trying again in 5s.
 | |
| Bootloader Version: 0x00 (0)
 | |
| Erasing flash...  Success
 | |
| Checking memory from 0x0 to 0x6FFF...  Empty.
 | |
| Checking memory from 0x0 to 0x56FF...  Empty.
 | |
| 0%                            100%  Programming 0x5700 bytes...
 | |
| [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
 | |
| 0%                            100%  Reading 0x7000 bytes...
 | |
| [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
 | |
| Validating...  Success
 | |
| 0x5700 bytes written into 0x7000 bytes memory (77.68%).
 | |
| ```
 | |
| 
 | |
| ### Layers 
 | |
| 
 | |
| #### Default
 | |
| 
 | |
| ##### A more "standard" layout
 | |
| 
 | |
| This layout places tilde in the standard location. Backspace is moved to the two upper-right-most keys and pipe
 | |
| is put back where it belongs (where backspace is on the default hhkb2 keymapping).
 | |
| 
 | |
| ##### Hyper key
 | |
| 
 | |
| <!-- TODO: Link to Brett's article about the thyper key -->
 | |
| 
 | |
| This layout throws out the HHKB's control key in favor of a Hyper key. Ctrl is instead placed on the z and / keys and
 | |
| can be activated with a long press. I find that this is far more ergonomic as it's less of a reach and it allows you to
 | |
| alternate to either hand when you need to use `ctrl` as a modifier.
 | |
| 
 | |
| The hyper key can be held for hyper and tapped for escape. You'll find that this is quite nice for vim.
 | |
| 
 | |
| Enter is also a hyper key. This allows for symmetry between control and enter. Hold for hyper, tap for enter.
 | |
| 
 | |
| ##### Tap to Hold
 | |
| 
 | |
| ###### CTL, ALT, GUI
 | |
| 
 | |
| Since the HHKB does not have three super/meta keys, these keys were moved to pinky, ring and middle finger for ctrl, alt/
 | |
|  option and super respectively. This is closer to home row which I've found causes less strain.
 | |
|  
 | |
| The Alt and Super keys are instead replaced with layer toggle keys to go to dev and mouse mode respectively.
 | |
| 
 | |
| ###### Space
 | |
| 
 | |
| Hold space to switch to dev mode. This will put you on a layer to have vim like arrow functionality on h,j,k and l. Use
 | |
| this in editors that don't have vim keybindings.
 | |
| 
 | |
| ### Dev 
 | |
| 
 | |
| The Dev layer can be activated holding space or hitting the HHKB's Alt key. This will put you in a mode
 | |
| where all function keys are available and left, right, up and down are mapped to their vim equivalents. The function
 | |
|  keys are mapped in such a way that you can use them for debugging. Typically I map debugging functions in all IDEs to
 | |
|  the following for a seamless debugging experience (e.g. jumping from Intellij to chrome dev tools and back):
 | |
|  
 | |
|  - f1 -> step over
 | |
|  - f2 -> step into
 | |
|  - f3 -> step out
 | |
|  - f4 -> continue
 | |
|  - f5 -> set break point on current line
 | |
| 
 | |
| ### Media
 | |
| 
 | |
| The media layer can be activated by pressing and holding the semi-colon. I've also placed the play and pause key on the
 | |
| apostrophe key in the media layer. This allows you to easily roll your pinky from the media toggle (semi-colon) to the
 | |
| play/pause key in one fluid motion.
 | |
| 
 | |
| I've also tried to logically map next/previous track along with volume up/down vim behavior. In vim since middle finger
 | |
| goes up on k and index finger goes down on j, next/prev track is k/j respectively. ,/m changes volume up/down
 | |
| respectively while toggled to the media layer.
 |