aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboard/gh60/Makefile1
-rw-r--r--keyboard/gh60/Makefile.pjrc8
-rw-r--r--keyboard/gh60/README.md103
-rw-r--r--keyboard/gh60/keymap_common.h19
-rw-r--r--keyboard/gh60/keymap_hhkb.c52
5 files changed, 143 insertions, 40 deletions
diff --git a/keyboard/gh60/Makefile b/keyboard/gh60/Makefile
index 6be0c1071..fd202c179 100644
--- a/keyboard/gh60/Makefile
+++ b/keyboard/gh60/Makefile
@@ -51,6 +51,7 @@ TARGET_DIR = .
51SRC = keymap_common.c \ 51SRC = keymap_common.c \
52 matrix.c \ 52 matrix.c \
53 led.c 53 led.c
54
54ifdef KEYMAP 55ifdef KEYMAP
55 SRC := keymap_$(KEYMAP).c $(SRC) 56 SRC := keymap_$(KEYMAP).c $(SRC)
56else 57else
diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc
index 0ea33ea30..9655ff65a 100644
--- a/keyboard/gh60/Makefile.pjrc
+++ b/keyboard/gh60/Makefile.pjrc
@@ -48,10 +48,16 @@ TOP_DIR = ../..
48TARGET_DIR = . 48TARGET_DIR = .
49 49
50# project specific files 50# project specific files
51SRC = keymap.c \ 51SRC = keymap_common.c \
52 matrix.c \ 52 matrix.c \
53 led.c 53 led.c
54 54
55ifdef KEYMAP
56 SRC := keymap_$(KEYMAP).c $(SRC)
57else
58 SRC := keymap_poker.c $(SRC)
59endif
60
55CONFIG_H = config.h 61CONFIG_H = config.h
56 62
57 63
diff --git a/keyboard/gh60/README.md b/keyboard/gh60/README.md
index 07ed40d8e..5e0fc244f 100644
--- a/keyboard/gh60/README.md
+++ b/keyboard/gh60/README.md
@@ -2,9 +2,14 @@ GH60 keyboard firmware
2====================== 2======================
3DIY compact keyboard designed and run by komar007 and Geekhack community. 3DIY compact keyboard designed and run by komar007 and Geekhack community.
4 4
5## Threads on Geekhack.org 5- Both Rev.A and Rev.B PCB are supported by one firmware binary(issue #64)
6
7## GH60 Resources
8- [KOMAR's project page](http://blog.komar.be/projects/gh60-programmable-keyboard/)
6- [Prototyping](http://geekhack.org/index.php?topic=34959.0) 9- [Prototyping](http://geekhack.org/index.php?topic=34959.0)
7- [Beta-test](http://geekhack.org/index.php?topic=37570.0) 10- [Rev.A PCB test](http://geekhack.org/index.php?topic=37570.0)
11- [Rev.B PCB test](http://geekhack.org/index.php?topic=50685.0)
12- [Group buy](http://geekhack.org/index.php?topic=41464.0)
8 13
9 14
10## Build 15## Build
@@ -16,39 +21,21 @@ Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason t
16 21
17 22
18## Keymap 23## Keymap
19Several version of keymap are available; `plain`, `poker_bit`, `poker_set`, `hasu`, `spacefn` and `poker`(default). See keymap document(you can find in README.md of top) and `keymap_*.c` to define your own favourite keymap. 24Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
20 25
21 $ make KEYMAP=[poker|plain|poker_set|poker_bit|hasu|spacefn] 26To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
22 27
23### 1. Plain keymap 28 $ make KEYMAP=[poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|<name>]
24Even without any Fn layer. This will be useful if you want to use key mapping tool like AHK.
25 29
26See [keymap_plain.c](keymap_plain.c) for detail.
27 30
28#### 1.0 Plain Default Layer 31### 1 Poker
29 ,-----------------------------------------------------------. 32[keymap_poker.c](keymap_poker.c) emulates original Poker layers
30 |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | 33while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys.
31 |-----------------------------------------------------------|
32 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
33 |-----------------------------------------------------------|
34 |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |
35 |-----------------------------------------------------------|
36 |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
37 |-----------------------------------------------------------|
38 |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
39 `-----------------------------------------------------------'
40
41### 2 Poker keymap
42
43[keymap_poker.c](keymap_poker.c) emulates original Poker layer emulation.
44[keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) offers better support of Esc and arrow like:
45 34
46 Fn + Esc = ` 35 Fn + Esc = `
47 Fn + {left, down, up, right} = {home, pgdown, pgup, end} 36 Fn + {left, down, up, right} = {home, pgdown, pgup, end}
48 37
49 `poker` keymap supports Colemak, Dvorak and Workmans, use `Magic` + {`1`, `2`, `3`} to switch and `Magic` + `0` to return to Qwerty, where `Magic` is `LShift` + `RShift`. 38#### 1.0 Default layer
50
51#### 2.0 Poker Default Layer
52 ,-----------------------------------------------------------. 39 ,-----------------------------------------------------------.
53 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | 40 | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
54 |-----------------------------------------------------------| 41 |-----------------------------------------------------------|
@@ -60,8 +47,7 @@ See [keymap_plain.c](keymap_plain.c) for detail.
60 |-----------------------------------------------------------| 47 |-----------------------------------------------------------|
61 |Ctrl|Gui |Alt | Space |Fn |Gui |App |Ctrl| 48 |Ctrl|Gui |Alt | Space |Fn |Gui |App |Ctrl|
62 `-----------------------------------------------------------' 49 `-----------------------------------------------------------'
63 50#### 1.1 Poker Fn layer
64#### 2.1 Poker Fn Layer
65 ,-----------------------------------------------------------. 51 ,-----------------------------------------------------------.
66 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | 52 |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |
67 |-----------------------------------------------------------| 53 |-----------------------------------------------------------|
@@ -75,14 +61,32 @@ See [keymap_plain.c](keymap_plain.c) for detail.
75 `-----------------------------------------------------------' 61 `-----------------------------------------------------------'
76 62
77 63
78### 3. Hasu keymap 64### 2. Plain
79This is my keymap with HHKB, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. 65Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host.
66See [keymap_plain.c](keymap_plain.c) for detail.
80 67
68#### 1.0 Plain Default layer
69 ,-----------------------------------------------------------.
70 |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
71 |-----------------------------------------------------------|
72 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
73 |-----------------------------------------------------------|
74 |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |
75 |-----------------------------------------------------------|
76 |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
77 |-----------------------------------------------------------|
78 |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
79 `-----------------------------------------------------------'
81 80
82### 4. SpaceFN keymap
83See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
84 81
85#### 4.0 SpaceFN Default Layer 82### 3. Hasu
83This is my favourite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail.
84
85
86### 4. SpaceFN
87This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
88
89#### 4.0 Default layer
86 ,-----------------------------------------------------------. 90 ,-----------------------------------------------------------.
87 |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | 91 |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
88 |-----------------------------------------------------------| 92 |-----------------------------------------------------------|
@@ -94,8 +98,7 @@ See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhac
94 |-----------------------------------------------------------| 98 |-----------------------------------------------------------|
95 |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |App |Ctrl| 99 |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |App |Ctrl|
96 `-----------------------------------------------------------' 100 `-----------------------------------------------------------'
97 101#### 4.1 SpaceFN layer
98#### 4.1 SpaceFN
99 ,-----------------------------------------------------------. 102 ,-----------------------------------------------------------.
100 |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | 103 |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
101 |-----------------------------------------------------------| 104 |-----------------------------------------------------------|
@@ -107,6 +110,32 @@ See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhac
107 |-----------------------------------------------------------| 110 |-----------------------------------------------------------|
108 | | | | Fn | | | | | 111 | | | | Fn | | | | |
109 `-----------------------------------------------------------' 112 `-----------------------------------------------------------'
110
111 113
112 114
115### 5. HHKB
116[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers.
117#### 5.0: Default layer
118 ,-----------------------------------------------------------.
119 |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
120 |-----------------------------------------------------------|
121 |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
122 |-----------------------------------------------------------|
123 |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
124 |-----------------------------------------------------------|
125 |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn |
126 |-----------------------------------------------------------|
127 | |Gui |Alt | Space | |Alt |Gui | |
128 `-----------------------------------------------------------'
129#### 5.1: HHKB Fn layer
130 ,-----------------------------------------------------------.
131 |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
132 |-----------------------------------------------------------|
133 |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
134 |-----------------------------------------------------------|
135 | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
136 |-----------------------------------------------------------|
137 | | | | | | | +| -|End|PgD|Dow| | |
138 |-----------------------------------------------------------|
139 | | | | | | | | |
140 `-----------------------------------------------------------'
141
diff --git a/keyboard/gh60/keymap_common.h b/keyboard/gh60/keymap_common.h
index 2105caabd..896badd74 100644
--- a/keyboard/gh60/keymap_common.h
+++ b/keyboard/gh60/keymap_common.h
@@ -42,13 +42,13 @@ extern const uint16_t fn_actions[];
42 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 42 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
43 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ 43 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
44 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ 44 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
45 K40, K41, K42, K45, K4A, K4B, K4C, K4D \ 45 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
46) { \ 46) { \
47 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ 47 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \
48 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ 48 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \
49 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \ 49 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \
50 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \ 50 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \
51 { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ 51 { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \
52} 52}
53 53
54/* ANSI valiant. No extra keys for ISO */ 54/* ANSI valiant. No extra keys for ISO */
@@ -63,7 +63,22 @@ extern const uint16_t fn_actions[];
63 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 63 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
64 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \ 64 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \
65 K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \ 65 K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \
66 K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \
67)
68
69
70#define KEYMAP_HHKB( \
71 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\
72 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
73 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
74 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
66 K40, K41, K42, K45, K4A, K4B, K4C, K4D \ 75 K40, K41, K42, K45, K4A, K4B, K4C, K4D \
76) KEYMAP( \
77 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
78 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
79 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \
80 K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
81 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
67) 82)
68 83
69#endif 84#endif
diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c
new file mode 100644
index 000000000..ce1b816ec
--- /dev/null
+++ b/keyboard/gh60/keymap_hhkb.c
@@ -0,0 +1,52 @@
1#include "keymap_common.h"
2
3/*
4 * HHKB Layout
5 */
6const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7 /* 0: Default layer
8 * ,-----------------------------------------------------------.
9 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
10 * |-----------------------------------------------------------|
11 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
12 * |-----------------------------------------------------------|
13 * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
14 * |-----------------------------------------------------------|
15 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn |
16 * |-----------------------------------------------------------|
17 * | |Gui |Alt | Space | |Alt |Gui | |
18 * `-----------------------------------------------------------'
19 */
20 KEYMAP_HHKB(
21 ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \
22 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
23 LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
24 LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,FN0, \
25 NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO),
26 /* 1: HHKB Fn layer
27 * ,-----------------------------------------------------------.
28 * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
29 * |-----------------------------------------------------------|
30 * |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
31 * |-----------------------------------------------------------|
32 * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
33 * |-----------------------------------------------------------|
34 * | | | | | | | +| -|End|PgD|Dow| | |
35 * |-----------------------------------------------------------|
36 * | | | | | | | | |
37 * `-----------------------------------------------------------'
38 */
39 KEYMAP_HHKB(
40 PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
41 CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \
42 TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \
43 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \
44 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
45};
46
47/*
48 * Fn action definition
49 */
50const uint16_t PROGMEM fn_actions[] = {
51 [0] = ACTION_LAYER_MOMENTARY(1),
52};