]>
git.gir.st - tmk_keyboard.git/blob - keymap_hhkb.c
2 * keymap for modified macway keyboarq
4 #include <avr/pgmspace.h>
6 #include "keymap_hhkb.h"
11 * Layer0(Default Layer)
12 * ,-----------------------------------------------------------.
13 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
14 * |-----------------------------------------------------------|
15 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
16 * |-----------------------------------------------------------|
17 * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Return |
18 * |-----------------------------------------------------------|
19 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Fn2 |Fn1|
20 * `-----------------------------------------------------------'
21 * |Gui|Alt |Space |Fn3 |Gui|
22 * `-------------------------------------------'
24 * Layer1(Fn1) HHKB mode
25 * ,-----------------------------------------------------------.
26 * |Pow| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
27 * |-----------------------------------------------------------|
28 * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
29 * |-----------------------------------------------------------|
30 * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
31 * |-----------------------------------------------------------|
32 * |Shift | | | | | | +| -|End|PgD|Dow|Shift |xxx|
33 * `-----------------------------------------------------------'
34 * |Gui |Alt |Space |Alt |Gui|
35 * `--------------------------------------------'
37 * Layer2(Fn2) mouse mode
38 * ,-----------------------------------------------------------.
39 * |Esc| | | | | | | | | | | | | | |
40 * |-----------------------------------------------------------|
41 * |Tab | | | | | | | | | | | | |Backs|
42 * |-----------------------------------------------------------|
43 * |Contro| | | | | | | |MwL|MwD|MwU|MwR|Return |
44 * |-----------------------------------------------------------|
45 * |Shift | | | | | | |McL|McD|McU|McR|xxxxxx| |
46 * `-----------------------------------------------------------'
47 * |Gui |Alt |Mb1 |Mb1 |Mb2|
48 * `--------------------------------------------'
51 * ,-----------------------------------------------------------.
52 * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
53 * |-----------------------------------------------------------|
54 * |Tab | | | | | |Hom|PgD|PgUlEnd| |MwD|MwU|Backs|
55 * |-----------------------------------------------------------|
56 * |Contro| | | | | |Lef|Dow|Up |Rig| | |Return |
57 * |-----------------------------------------------------------|
58 * |Shift | | | | | | |McL|McD|McU|McR|Mb1 | |
59 * `-----------------------------------------------------------'
60 * |Gui|Alt |Mb1 |xxxxx|Mb2|
61 * `-------------------------------------------'
62 * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
64 static const uint8_t PROGMEM Keymap
[][MATRIX_ROWS
][MATRIX_COLS
] = {
67 { KB_2
, KB_Q
, KB_W
, KB_S
, KB_A
, KB_Z
, KB_X
, KB_C
},
68 { KB_3
, KB_4
, KB_R
, KB_E
, KB_D
, KB_F
, KB_V
, KB_B
},
69 { KB_5
, KB_6
, KB_Y
, KB_T
, KB_G
, KB_H
, KB_N
, KB_NO
},
70 { KB_1
, KB_ESCAPE
, KB_TAB
, KB_LCTRL
, KB_LSHIFT
, KB_LGUI
, KB_LALT
, KB_SPACE
},
71 { KB_7
, KB_8
, KB_U
, KB_I
, KB_K
, KB_J
, KB_M
, KB_NO
},
72 { KB_BSLASH
, KB_GRAVE
, KB_BSPACE
, FN_4
, FN_1
, FN_2
, KB_RGUI
, FN_3
},
73 { KB_9
, KB_0
, KB_O
, KB_P
, KB_SCOLON
, KB_L
, KB_COMMA
, KB_NO
},
74 { KB_MINUS
, KB_EQUAL
, KB_RBRACKET
,KB_LBRACKET
,KB_QUOTE
, KB_SLASH
, KB_DOT
, KB_NO
},
76 // 1: FN_1(HHKB Fn) HHKB mode
78 { KB_F2
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
79 { KB_F3
, KB_F4
, KB_NO
, KB_NO
, KB_MUTE
, KB_F20
, KB_NO
, KB_NO
},
80 { KB_F5
, KB_F6
, KB_NO
, KB_NO
, KB_NO
, KP_ASTERISK
,KP_PLUS
, KB_NO
},
81 { KB_F1
, KB_POWER
, KB_CAPSLOCK
,KB_LCTRL
, KB_LSHIFT
, KB_LGUI
, KB_LALT
, KB_SPACE
},
82 { KB_F7
, KB_F8
, KB_NO
, KB_PSCREEN
, KB_HOME
, KP_SLASH
, KB_MINUS
, KB_NO
},
83 { KB_INSERT
, KB_DELETE
, KB_BSPACE
, KP_ENTER
, KB_NO
, KB_RSHIFT
, KB_RGUI
, KB_RALT
},
84 { KB_F9
, KB_F10
, KB_SCKLOCK
, KB_BREAK
, KB_LEFT
, KB_PGUP
, KB_END
, KB_NO
},
85 { KB_F11
, KB_F12
, KB_NO
, KB_UP
, KB_RIGHT
, KB_DOWN
, KB_PGDOWN
, KB_NO
},
87 // 2: FN_2(Right Shift) mouse mode
89 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
90 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
91 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
92 { KB_NO
, KB_ESCAPE
, KB_TAB
, KB_LCTRL
, KB_LSHIFT
, KB_LGUI
, KB_LALT
, MS_BTN1
},
93 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_WH_LEFT
, KB_NO
, MS_LEFT
, KB_NO
},
94 { KB_NO
, KB_NO
, KB_BSPACE
, KB_ENTER
, KB_NO
, KB_NO
, MS_BTN2
, MS_BTN1
},
95 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_WH_UP
, MS_WH_DOWN
, MS_DOWN
, KB_NO
},
96 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_WH_RIGHT
,MS_RIGHT
, MS_UP
, KB_NO
},
98 // 3: FN_3(Right Alt) vi mode
100 { KB_F2
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
101 { KB_F3
, KB_F4
, KB_NO
, KB_NO
, KB_NO
, KB_F20
, KB_NO
, KB_NO
},
102 { KB_F5
, KB_F6
, KB_HOME
, KB_NO
, KB_NO
, KB_LEFT
, KB_NO
, KB_NO
},
103 { KB_F1
, KB_ESCAPE
, KB_TAB
, KB_LCTRL
, KB_LSHIFT
, KB_LGUI
, KB_LALT
, MS_BTN1
},
104 { KB_F7
, KB_F8
, KB_PGDOWN
, KB_PGUP
, KB_UP
, KB_DOWN
, MS_LEFT
, KB_NO
},
105 { KB_INSERT
, KB_NO
, KB_BSPACE
, KB_ENTER
, KB_NO
, MS_BTN1
, MS_BTN2
, KB_NO
},
106 { KB_F9
, KB_F10
, KB_END
, KB_NO
, KB_NO
, KB_RIGHT
, MS_DOWN
, KB_NO
},
107 { KB_F11
, KB_F12
, MS_WH_UP
, MS_WH_DOWN
, KB_NO
, MS_RIGHT
, MS_UP
, KB_NO
},
109 // 3: FN_4(Enter) vi mouse mode
111 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
112 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
113 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
, KB_NO
},
114 { KB_NO
, KB_ESCAPE
, KB_TAB
, KB_LCTRL
, KB_LSHIFT
, KB_LGUI
, KB_LALT
, MS_BTN1
},
115 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_LEFT
, KB_NO
, KB_NO
, KB_NO
},
116 { KB_NO
, KB_NO
, KB_BSPACE
, KB_NO
, KB_NO
, KB_NO
, MS_BTN2
, MS_BTN1
},
117 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_UP
, MS_DOWN
, KB_NO
, KB_NO
},
118 { KB_NO
, KB_NO
, KB_NO
, KB_NO
, MS_RIGHT
, KB_NO
, KB_NO
, KB_NO
},
123 uint8_t get_keycode(int layer
, int row
, int col
)
125 if (row
>= MATRIX_ROWS
)
127 if (col
>= MATRIX_COLS
)
129 return pgm_read_byte(&Keymap
[layer
][row
][col
]);
132 int get_layer(void) {
134 for (int row
= 0; row
< MATRIX_ROWS
; row
++) {
135 for (int col
= 0; col
< MATRIX_ROWS
; col
++) {
136 if (matrix
[row
] & 1<<col
) continue;
137 if (get_keycode(0, row
, col
) == FN_1
) layer
= 1;
138 if (get_keycode(0, row
, col
) == FN_2
) layer
= 2;
139 if (get_keycode(0, row
, col
) == FN_3
) layer
= 3;
140 if (get_keycode(0, row
, col
) == FN_4
) layer
= 4;
146 else if (current_layer
== 0)
147 current_layer
= layer
;
149 return current_layer
;