2 Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef KEYMAP_COMMON_H
18 #define KEYMAP_COMMON_H
22 #include <avr/pgmspace.h>
25 #include "action_macro.h"
33 extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
34 extern const uint16_t fn_actions[];
39 * ,-----------------------------------------------------------------------.
40 * | | | | | | | | | | | | |
41 * |-----------------------------------------------------------------------|
42 * | | | | | | | | | | | | |
43 * |-----------------------------------------------------------------------|
44 * | | | | | | | | | | | | |
45 * |-----------------------------------------------------------------------|
46 * | | | | | | | | | | | |
47 * `-----------------------------------------------------------------------'
50 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
51 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
52 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
53 K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
55 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
56 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
57 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
58 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K35, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B } \
63 * ,-----------------------------------------------------------------------.
64 * | | | | | | | | | | | | |
65 * |-----------------------------------------------------------------------|
66 * | | | | | | | | | | | | |
67 * |-----------------------------------------------------------------------|
68 * | | | | | | | | | | | | |
69 * |-----------------------------------------------------------------------|
70 * | | | | | | | | | | | | |
71 * `-----------------------------------------------------------------------'
73 #define KEYMAP_GRID( \
74 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
75 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
76 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
77 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B \
79 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
80 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
81 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
82 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B } \
85 #define KEYMAP_REVERSE( \
86 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
87 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
88 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
89 K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
91 { KC_##K0B, KC_##K0A, KC_##K09, KC_##K08, KC_##K07, KC_##K06, KC_##K05, KC_##K04, KC_##K03, KC_##K02, KC_##K01, KC_##K00 }, \
92 { KC_##K1B, KC_##K1A, KC_##K19, KC_##K18, KC_##K17, KC_##K16, KC_##K15, KC_##K14, KC_##K13, KC_##K12, KC_##K11, KC_##K10 }, \
93 { KC_##K2B, KC_##K2A, KC_##K29, KC_##K28, KC_##K27, KC_##K26, KC_##K25, KC_##K24, KC_##K23, KC_##K22, KC_##K21, KC_##K20 }, \
94 { KC_##K3B, KC_##K3A, KC_##K39, KC_##K38, KC_##K37, KC_##K35, KC_##K35, KC_##K34, KC_##K33, KC_##K32, KC_##K31, KC_##K30 }, \
97 #define KEYMAP_AND_REVERSE(args...) KEYMAP(args), KEYMAP_REVERSE(args)
99 #define KEYMAP_SWAP( \
100 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
101 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
102 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
103 K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
105 { KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05 }, \
106 { KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15 }, \
107 { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25 }, \
108 { KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K35, KC_##K35, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34 }, \
111 #define KEYMAP_AND_SWAP(args...) KEYMAP(args), KEYMAP_SWAP(args)
114 Keymap for the Planck 48 key variant.
117 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
118 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
119 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
120 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B \
122 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
123 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
124 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
125 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B }, \