]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/hhkb/keymaps/blakedietz/README.md
Make arguments redo, subproject elimination (#1784)
[qmk_firmware.git] / keyboards / hhkb / keymaps / blakedietz / README.md
1 # QMK HHKB Keymap: blakedietz
2
3 <!-- TODO: Link to Hasu's geekhack page from his name -->
4 <!-- TODO: Link to the ergodox ez layout in this repository -->
5
6 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
7  functionality was inspired by the ergodox ez default layout. 
8
9 ## Dependencies
10
11 ### macOS
12
13 ```bash
14 brew tap osx-cross/avr
15 brew install avr-libc
16 brew install dfu-programmer
17 ```
18
19 ### Windows/Linux
20
21 [Build Environment Setup](https://github.com/jackhumbert/qmk_firmware/wiki#build-environment-setup)
22
23 ## Flashing
24
25 You will need to make sure that you have something that you can use to press the button on the alternate controller in
26 order to put it into boot mode.
27
28 From the hhkb directory run the following:
29
30 ```bash
31 make clean
32 make hhkb:blakedietz:dfu
33 ```
34
35 Press the button on the alternate controller to put the board into boot mode.
36
37 You'll see an output similar to the following:
38
39 ```bash
40 make hhkb:blakedietz:dfu
41
42 Making hhkb with keymap blakedietz and target dfu
43
44 avr-gcc (GCC) 6.2.0
45 Copyright (C) 2016 Free Software Foundation, Inc.
46 This is free software; see the source for copying conditions.  There is NO
47 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
48
49 Size before:
50    text    data     bss     dec     hex filename
51       0   22162       0   22162    5692 hhkb_blakedietz.hex
52
53 Compiling: keyboards/hhkb/keymaps/blakedietz/keymap.c                                               [OK]
54 Compiling: ./tmk_core/common/command.c                                                              [OK]
55 Linking: .build/hhkb_blakedietz.elf                                                                 [OK]
56 Creating load file for Flash: .build/hhkb_blakedietz.hex                                            [OK]
57
58 Size after:
59    text    data     bss     dec     hex filename
60       0   22162       0   22162    5692 hhkb_blakedietz.hex
61
62 dfu-programmer: no device present.
63 Error: Bootloader not found. Trying again in 5s.
64 dfu-programmer: no device present.
65 Error: Bootloader not found. Trying again in 5s.
66 Bootloader Version: 0x00 (0)
67 Erasing flash...  Success
68 Checking memory from 0x0 to 0x6FFF...  Empty.
69 Checking memory from 0x0 to 0x56FF...  Empty.
70 0%                            100%  Programming 0x5700 bytes...
71 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
72 0%                            100%  Reading 0x7000 bytes...
73 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
74 Validating...  Success
75 0x5700 bytes written into 0x7000 bytes memory (77.68%).
76 ```
77
78 ### Layers 
79
80 #### Default
81
82 ##### A more "standard" layout
83
84 This layout places tilde in the standard location. Backspace is moved to the two upper-right-most keys and pipe
85 is put back where it belongs (where backspace is on the default hhkb2 keymapping).
86
87 ##### Hyper key
88
89 <!-- TODO: Link to Brett's article about the thyper key -->
90
91 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
92 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
93 alternate to either hand when you need to use `ctrl` as a modifier.
94
95 The hyper key can be held for hyper and tapped for escape. You'll find that this is quite nice for vim.
96
97 Enter is also a hyper key. This allows for symmetry between control and enter. Hold for hyper, tap for enter.
98
99 ##### Tap to Hold
100
101 ###### CTL, ALT, GUI
102
103 Since the HHKB does not have three super/meta keys, these keys were moved to pinky, ring and middle finger for ctrl, alt/
104  option and super respectively. This is closer to home row which I've found causes less strain.
105  
106 The Alt and Super keys are instead replaced with layer toggle keys to go to dev and mouse mode respectively.
107
108 ###### Space
109
110 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
111 this in editors that don't have vim keybindings.
112
113 ### Dev 
114
115 The Dev layer can be activated holding space or hitting the HHKB's Alt key. This will put you in a mode
116 where all function keys are available and left, right, up and down are mapped to their vim equivalents. The function
117  keys are mapped in such a way that you can use them for debugging. Typically I map debugging functions in all IDEs to
118  the following for a seamless debugging experience (e.g. jumping from Intellij to chrome dev tools and back):
119  
120  - f1 -> step over
121  - f2 -> step into
122  - f3 -> step out
123  - f4 -> continue
124  - f5 -> set break point on current line
125
126 ### Media
127
128 The media layer can be activated by pressing and holding the semi-colon. I've also placed the play and pause key on the
129 apostrophe key in the media layer. This allows you to easily roll your pinky from the media toggle (semi-colon) to the
130 play/pause key in one fluid motion.
131
132 I've also tried to logically map next/previous track along with volume up/down vim behavior. In vim since middle finger
133 goes up on k and index finger goes down on j, next/prev track is k/j respectively. ,/m changes volume up/down
134 respectively while toggled to the media layer.