You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							135 lines
						
					
					
						
							5.0 KiB
						
					
					
				
			
		
		
	
	
							135 lines
						
					
					
						
							5.0 KiB
						
					
					
				# 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.
 |