aboutsummaryrefslogtreecommitdiff
path: root/keyboards/bpiphany/pegasushoof
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/bpiphany/pegasushoof')
-rw-r--r--keyboards/bpiphany/pegasushoof/.noci0
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/.noci0
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/2013.c25
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/2013.h82
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/config.h36
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/matrix.c222
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/rules.mk2
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/2015.c25
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/2015.h102
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/config.h37
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/matrix.c158
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/rules.mk2
-rw-r--r--keyboards/bpiphany/pegasushoof/config.h20
-rw-r--r--keyboards/bpiphany/pegasushoof/info.json377
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c105
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk17
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h6
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c132
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md75
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk17
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c56
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk10
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c54
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk10
-rw-r--r--keyboards/bpiphany/pegasushoof/readme.md21
-rw-r--r--keyboards/bpiphany/pegasushoof/rules.mk22
26 files changed, 1613 insertions, 0 deletions
diff --git a/keyboards/bpiphany/pegasushoof/.noci b/keyboards/bpiphany/pegasushoof/.noci
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/.noci
diff --git a/keyboards/bpiphany/pegasushoof/2013/.noci b/keyboards/bpiphany/pegasushoof/2013/.noci
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/.noci
diff --git a/keyboards/bpiphany/pegasushoof/2013/2013.c b/keyboards/bpiphany/pegasushoof/2013/2013.c
new file mode 100644
index 000000000..c9bd01a99
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/2013.c
@@ -0,0 +1,25 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "2013.h"
19
20
21extern inline void ph_caps_led_on(void);
22extern inline void ph_caps_led_off(void);
23
24extern inline void ph_sclk_led_on(void);
25extern inline void ph_sclk_led_off(void);
diff --git a/keyboards/bpiphany/pegasushoof/2013/2013.h b/keyboards/bpiphany/pegasushoof/2013/2013.h
new file mode 100644
index 000000000..7a4d7f0b5
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/2013.h
@@ -0,0 +1,82 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "matrix.h"
21#include "quantum.h"
22
23#define LAYOUT( \
24 KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
25 KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
26 KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
27 KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
28 KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
29 KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
30 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
31 /* 0 */ { KC_NO , KC_NO , KC0 , KC_NO , KC_NO , KF0 , KC_NO , KC_NO , KC_NO , KJ0 , KK0 , KC_NO , KM0 , KN0 , KO0 , KC_NO , KQ0 , KR0 }, \
32 /* 1 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , KC_NO , KO1 , KP1 , KC_NO , KC_NO }, \
33 /* 2 */ { KC_NO , KB2 , KC_NO , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \
34 /* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , KO3 , KC_NO , KC_NO , KC_NO }, \
35 /* 4 */ { KC_NO , KC_NO , KC4 , KC_NO , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , KC_NO , KO4 , KP4 , KQ4 , KR4 }, \
36 /* 5 */ { KC_NO , KC_NO , KC5 , KC_NO , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , KC_NO , KC_NO }, \
37 /* 6 */ { KC_NO , KC_NO , KC6 , KC_NO , KC_NO , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , KC_NO , KN6 , KO6 , KC_NO , KQ6 , KC_NO }, \
38 /* 7 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KC_NO , KP7 , KC_NO , KC_NO } \
39 }
40
41#define LAYOUT_tkl_ansi( \
42 KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
43 KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
44 KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
45 KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
46 KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
47 KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
48 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
49 /* 0 */ { KC_NO , KC_NO , KC0 , KC_NO , KC_NO , KF0 , KC_NO , KC_NO , KC_NO , KJ0 , KK0 , KC_NO , KM0 , KN0 , KO0 , KC_NO , KQ0 , KR0 }, \
50 /* 1 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , KC_NO , KO1 , KP1 , KC_NO , KC_NO }, \
51 /* 2 */ { KC_NO , KB2 , KC_NO , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \
52 /* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , KO3 , KC_NO , KC_NO , KC_NO }, \
53 /* 4 */ { KC_NO , KC_NO , KC4 , KC_NO , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , KC_NO , KO4 , KP4 , KQ4 , KR4 }, \
54 /* 5 */ { KC_NO , KC_NO , KC5 , KC_NO , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , KC_NO , KC_NO }, \
55 /* 6 */ { KC_NO , KC_NO , KC6 , KC_NO , KC_NO , KF6 , KG6 , KC_NO , KI6 , KJ6 , KK6 , KL6 , KC_NO , KN6 , KO6 , KC_NO , KQ6 , KC_NO }, \
56 /* 7 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KC_NO , KP7 , KC_NO , KC_NO } \
57 }
58
59#define LAYOUT_tkl_jis( \
60 KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
61 KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO7, KO2, KR4, KC4, KE4, \
62 KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KQ4, KC5, KE5, \
63 KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
64 KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KL0, KB3, KC6, \
65 KP4, KD2, KN6, KG0, KQ6, KH0, KI0, KN0, KM0, KP1, KC0, KQ0, KR0 \
66 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
67 /* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KG0, KH0, KI0, KJ0, KK0, KL0, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
68 /* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
69 /* 2 */ { KC_NO, KB2, KC_NO, KD2, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KC_NO, KO2, KC_NO, KC_NO, KC_NO }, \
70 /* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KC_NO, KO3, KC_NO, KC_NO, KC_NO }, \
71 /* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
72 /* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
73 /* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO, KN6, KO6, KC_NO, KQ6, KC_NO }, \
74 /* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KK7, KL7, KO7, KP7, KC_NO, KC_NO } \
75}
76
77inline void ph_caps_led_on(void) { DDRC |= (1<<6); PORTC &= ~(1<<6); }
78inline void ph_caps_led_off(void) { DDRC &= ~(1<<6); PORTC &= ~(1<<6); }
79
80inline void ph_sclk_led_on(void) { DDRC |= (1<<5); PORTC &= ~(1<<5); }
81inline void ph_sclk_led_off(void) { DDRC &= ~(1<<5); PORTC &= ~(1<<5); }
82
diff --git a/keyboards/bpiphany/pegasushoof/2013/config.h b/keyboards/bpiphany/pegasushoof/2013/config.h
new file mode 100644
index 000000000..2573cecfc
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/config.h
@@ -0,0 +1,36 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xFEED
23#define PRODUCT_ID 0x6050
24#define DEVICE_VER 0x0104
25#define MANUFACTURER Filco
26#define PRODUCT Majestouch TKL \\w The Pegasus Hoof 2013
27
28/* key matrix size */
29#define MATRIX_ROWS 8
30#define MATRIX_COLS 18
31
32/* COL2ROW or ROW2COL */
33#define DIODE_DIRECTION COL2ROW
34
35/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
36#define DEBOUNCE 5
diff --git a/keyboards/bpiphany/pegasushoof/2013/matrix.c b/keyboards/bpiphany/pegasushoof/2013/matrix.c
new file mode 100644
index 000000000..037f323c0
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/matrix.c
@@ -0,0 +1,222 @@
1/*
2Copyright 2014 Ralf Schmitt <[email protected]>
3Copyright 2016 Daniel Svensson <[email protected]>
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include <stdint.h>
20#include <stdbool.h>
21#include <avr/io.h>
22#include <util/delay.h>
23#include "wait.h"
24#include "print.h"
25#include "debug.h"
26#include "util.h"
27#include "matrix.h"
28
29static uint8_t debouncing = DEBOUNCE;
30static matrix_row_t matrix[MATRIX_ROWS];
31static matrix_row_t matrix_debouncing[MATRIX_ROWS];
32
33static matrix_row_t read_cols(void);
34static void select_row(uint8_t col);
35
36__attribute__ ((weak))
37void matrix_init_kb(void) {
38 matrix_init_user();
39}
40
41__attribute__ ((weak))
42void matrix_scan_kb(void) {
43 matrix_scan_user();
44}
45
46__attribute__ ((weak))
47void matrix_init_user(void) {
48}
49
50__attribute__ ((weak))
51void matrix_scan_user(void) {
52}
53
54inline uint8_t matrix_rows(void)
55{
56 return MATRIX_ROWS;
57}
58
59inline uint8_t matrix_cols(void)
60{
61 return MATRIX_COLS;
62}
63
64void matrix_init(void)
65{
66 /* Column output pins */
67 DDRD |= 0b01111011;
68 /* Row input pins */
69 DDRC &= ~0b10000000;
70 DDRB &= ~0b01111111;
71 PORTC |= 0b10000000;
72 PORTB |= 0b01111111;
73
74 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
75 matrix[i] = 0;
76 matrix_debouncing[i] = 0;
77 }
78
79 matrix_init_quantum();
80}
81
82uint8_t matrix_scan(void)
83{
84 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
85 select_row(col);
86 wait_us(30);
87 matrix_row_t rows = read_cols();
88 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
89 bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
90 bool curr_bit = rows & (1<<row);
91 if (prev_bit != curr_bit) {
92 matrix_debouncing[row] ^= (matrix_row_t) 1 << col;
93 debouncing = DEBOUNCE;
94 }
95 }
96 }
97
98 if (debouncing) {
99 if (--debouncing) {
100 wait_ms(1);
101 } else {
102 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
103 matrix[i] = matrix_debouncing[i];
104 }
105 }
106 }
107
108 matrix_scan_quantum();
109
110 return 1;
111}
112
113bool matrix_is_modified(void)
114{
115 if (debouncing)
116 return false;
117 return true;
118}
119
120inline
121bool matrix_is_on(uint8_t row, uint8_t col)
122{
123 return matrix[row] & 1 << col;
124}
125
126inline
127matrix_row_t matrix_get_row(uint8_t row)
128{
129 return matrix[row];
130}
131
132void matrix_print(void)
133{
134 print("\nr/c 0123456789ABCDEF\n");
135 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
136 print_hex8(row); print(": ");
137 print_bin_reverse16(matrix_get_row(row));
138 print("\n");
139 }
140}
141
142uint8_t matrix_key_count(void)
143{
144 uint8_t count = 0;
145 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
146 count += bitpop16(matrix[i]);
147 }
148 return count;
149}
150
151static matrix_row_t read_cols(void)
152{
153 return
154 (PINB & (1 << 5) ? 0 : 1 << 0) |
155 (PINC & (1 << 7) ? 0 : 1 << 1) |
156 (PINB & (1 << 4) ? 0 : 1 << 2) |
157 (PINB & (1 << 6) ? 0 : 1 << 3) |
158 (PINB & (1 << 1) ? 0 : 1 << 4) |
159 (PINB & (1 << 0) ? 0 : 1 << 5) |
160 (PINB & (1 << 3) ? 0 : 1 << 6) |
161 (PINB & (1 << 2) ? 0 : 1 << 7);
162}
163
164static void select_row(uint8_t col)
165{
166 switch (col) {
167 case 0:
168 PORTD = (PORTD & ~0b01111011) | 0b00110011;
169 break;
170 case 1:
171 PORTD = (PORTD & ~0b01111011) | 0b01110000;
172 break;
173 case 2:
174 PORTD = (PORTD & ~0b01111011) | 0b00010011;
175 break;
176 case 3:
177 PORTD = (PORTD & ~0b01111011) | 0b01101000;
178 break;
179 case 4:
180 PORTD = (PORTD & ~0b01111011) | 0b00001011;
181 break;
182 case 5:
183 PORTD = (PORTD & ~0b01111011) | 0b00111011;
184 break;
185 case 6:
186 PORTD = (PORTD & ~0b01111011) | 0b01111000;
187 break;
188 case 7:
189 PORTD = (PORTD & ~0b01111011) | 0b01100001;
190 break;
191 case 8:
192 PORTD = (PORTD & ~0b01111011) | 0b01101001;
193 break;
194 case 9:
195 PORTD = (PORTD & ~0b01111011) | 0b01110001;
196 break;
197 case 10:
198 PORTD = (PORTD & ~0b01111011) | 0b01101010;
199 break;
200 case 11:
201 PORTD = (PORTD & ~0b01111011) | 0b01100010;
202 break;
203 case 12:
204 PORTD = (PORTD & ~0b01111011) | 0b01111001;
205 break;
206 case 13:
207 PORTD = (PORTD & ~0b01111011) | 0b01100000;
208 break;
209 case 14:
210 PORTD = (PORTD & ~0b01111011) | 0b01000011;
211 break;
212 case 15:
213 PORTD = (PORTD & ~0b01111011) | 0b00011011;
214 break;
215 case 16:
216 PORTD = (PORTD & ~0b01111011) | 0b00100011;
217 break;
218 case 17:
219 PORTD = (PORTD & ~0b01111011) | 0b00101011;
220 break;
221 }
222}
diff --git a/keyboards/bpiphany/pegasushoof/2013/rules.mk b/keyboards/bpiphany/pegasushoof/2013/rules.mk
new file mode 100644
index 000000000..3215e3588
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/rules.mk
@@ -0,0 +1,2 @@
1CUSTOM_MATRIX = yes
2SRC = matrix.c
diff --git a/keyboards/bpiphany/pegasushoof/2015/2015.c b/keyboards/bpiphany/pegasushoof/2015/2015.c
new file mode 100644
index 000000000..401dc2633
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/2015.c
@@ -0,0 +1,25 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "2015.h"
19
20
21extern inline void ph_caps_led_on(void);
22extern inline void ph_caps_led_off(void);
23
24extern inline void ph_sclk_led_on(void);
25extern inline void ph_sclk_led_off(void);
diff --git a/keyboards/bpiphany/pegasushoof/2015/2015.h b/keyboards/bpiphany/pegasushoof/2015/2015.h
new file mode 100644
index 000000000..418772aa2
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/2015.h
@@ -0,0 +1,102 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "matrix.h"
21#include "quantum.h"
22
23#define ___ XXXXXXX
24
25#define LAYOUT( \
26 KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
27 KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
28 KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
29 KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
30 KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
31 KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
32 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
33 /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \
34 /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ }, \
35 /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \
36 /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , KM3 , KN3 , ___ , ___ , ___ , KR3 }, \
37 /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
38 /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \
39 /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \
40 /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
41 }
42
43#define LAYOUT_tkl_ansi( \
44 KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
45 KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
46 KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
47 KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
48 KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
49 KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
50 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
51 /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \
52 /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ }, \
53 /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \
54 /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , KM3 , KN3 , ___ , ___ , ___ , KR3 }, \
55 /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
56 /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \
57 /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , ___ , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \
58 /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
59 }
60
61#define LAYOUT_tkl_iso( \
62 KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
63 KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
64 KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KK4, KO7, KQ7, \
65 KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB3, KB1, \
66 KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
67 KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
68 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
69 /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \
70 /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ }, \
71 /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \
72 /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , KM3 , KN3 , ___ , ___ , ___ , KR3 }, \
73 /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
74 /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \
75 /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \
76 /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
77 }
78
79#define LAYOUT_tkl_jis( \
80 KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
81 KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB5, KB2, KL4, KO4, KQ4, \
82 KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KK4, KO7, KQ7, \
83 KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB3, KB1, \
84 KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KE0, KN3, KO6, \
85 KA4, KP2, KC6, KJ0, KK6, KI0, KH0, KC0, KD0, KA1, KO0, KK0, KL0 \
86 ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
87 /* 0 */ { ___ , KB0 , KC0 , KD0 , KE0 , KF0 , KG0 , KH0 , KI0 , KJ0 , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \
88 /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , }, \
89 /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \
90 /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , ___ , KN3 , ___ , ___ , ___ , KR3 }, \
91 /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
92 /* 5 */ { KA5 , KB5 , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \
93 /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , ___ , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \
94 /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
95}
96
97inline void ph_caps_led_on(void) { DDRC |= (1<<6); PORTC &= ~(1<<6); }
98inline void ph_caps_led_off(void) { DDRC &= ~(1<<6); PORTC &= ~(1<<6); }
99
100inline void ph_sclk_led_on(void) { DDRC |= (1<<5); PORTC &= ~(1<<5); }
101inline void ph_sclk_led_off(void) { DDRC &= ~(1<<5); PORTC &= ~(1<<5); }
102
diff --git a/keyboards/bpiphany/pegasushoof/2015/config.h b/keyboards/bpiphany/pegasushoof/2015/config.h
new file mode 100644
index 000000000..479175c47
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/config.h
@@ -0,0 +1,37 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xFEED
23#define PRODUCT_ID 0x6050
24#define DEVICE_VER 0x0104
25#define MANUFACTURER Filco
26#define PRODUCT Majestouch TKL \\w The Pegasus Hoof 2015
27
28/* key matrix size */
29#define MATRIX_ROWS 8
30#define MATRIX_COLS 18
31
32/* COL2ROW or ROW2COL */
33#define DIODE_DIRECTION COL2ROW
34
35/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
36#define DEBOUNCE 5
37
diff --git a/keyboards/bpiphany/pegasushoof/2015/matrix.c b/keyboards/bpiphany/pegasushoof/2015/matrix.c
new file mode 100644
index 000000000..b05869fed
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/matrix.c
@@ -0,0 +1,158 @@
1/*
2 Copyright 2014 Ralf Schmitt <[email protected]>
3 Copyright 2016 Daniel Svensson <[email protected]>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include <stdint.h>
20#include <stdbool.h>
21#include <avr/io.h>
22#include <util/delay.h>
23#include "wait.h"
24#include "print.h"
25#include "debug.h"
26#include "util.h"
27#include "matrix.h"
28#include "debounce.h"
29
30static matrix_row_t matrix[MATRIX_ROWS];
31static matrix_row_t matrix_debouncing[MATRIX_ROWS];
32
33static matrix_row_t read_cols(void);
34static void select_row(uint8_t col);
35
36// user-defined overridable functions
37
38__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }
39
40__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }
41
42__attribute__((weak)) void matrix_init_user(void) {}
43
44__attribute__((weak)) void matrix_scan_user(void) {}
45
46// helper functions
47
48inline uint8_t matrix_rows(void)
49{
50 return MATRIX_ROWS;
51}
52
53inline uint8_t matrix_cols(void)
54{
55 return MATRIX_COLS;
56}
57
58void matrix_init(void)
59{
60 /* Column output pins */
61 DDRD |= 0b01111011;
62 /* Row input pins */
63 DDRC &= ~0b10000000;
64 DDRB &= ~0b01111111;
65 PORTC |= 0b10000000;
66 PORTB |= 0b01111111;
67
68 for (uint8_t i=0; i < matrix_rows(); i++) {
69 matrix[i] = 0;
70 matrix_debouncing[i] = 0;
71 }
72
73 matrix_init_quantum();
74}
75
76uint8_t matrix_scan(void)
77{
78 bool changed = false;
79 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
80 select_row(col);
81 wait_us(30);
82 matrix_row_t rows = read_cols();
83 for (uint8_t row = 0; row < matrix_rows(); row++) {
84 bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
85 bool curr_bit = rows & (1<<row);
86 if ((changed |= prev_bit != curr_bit)) {
87 matrix_debouncing[row] ^= (matrix_row_t) 1 << col;
88 }
89 }
90 }
91
92 debounce(matrix_debouncing, matrix, matrix_rows(), changed);
93 matrix_scan_quantum();
94
95 return (uint8_t)changed;
96}
97
98inline
99matrix_row_t matrix_get_row(uint8_t row)
100{
101 return matrix[row];
102}
103
104void matrix_print(void)
105{
106 print("\nr/c 0123456789ABCDEF\n");
107 for (uint8_t row = 0; row < matrix_rows(); row++) {
108 print_hex8(row); print(": ");
109 print_bin_reverse16(matrix_get_row(row));
110 print("\n");
111 }
112}
113
114uint8_t matrix_key_count(void)
115{
116 uint8_t count = 0;
117 for (uint8_t i = 0; i < matrix_rows(); i++) {
118 count += bitpop16(matrix_get_row(i));
119 }
120 return count;
121}
122
123static matrix_row_t read_cols(void)
124{
125 return
126 (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<0)) |
127 (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<1)) |
128 (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
129 (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
130 (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
131 (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
132 (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
133 (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7));
134}
135
136static void select_row(uint8_t col)
137{
138 switch (col) {
139 case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
140 case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
141 case 2: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
142 case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
143 case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
144 case 5: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
145 case 6: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
146 case 7: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
147 case 8: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
148 case 9: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
149 case 10: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
150 case 11: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
151 case 12: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
152 case 13: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
153 case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
154 case 15: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
155 case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
156 case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
157 }
158}
diff --git a/keyboards/bpiphany/pegasushoof/2015/rules.mk b/keyboards/bpiphany/pegasushoof/2015/rules.mk
new file mode 100644
index 000000000..3215e3588
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/rules.mk
@@ -0,0 +1,2 @@
1CUSTOM_MATRIX = yes
2SRC = matrix.c
diff --git a/keyboards/bpiphany/pegasushoof/config.h b/keyboards/bpiphany/pegasushoof/config.h
new file mode 100644
index 000000000..6868dc135
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/config.h
@@ -0,0 +1,20 @@
1/*
2Copyright 2017 Danny Nguyen <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
diff --git a/keyboards/bpiphany/pegasushoof/info.json b/keyboards/bpiphany/pegasushoof/info.json
new file mode 100644
index 000000000..fb4d2479a
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/info.json
@@ -0,0 +1,377 @@
1{
2 "keyboard_name": "Pegasus Hoof",
3 "url": "",
4 "maintainer": "qmk",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"Esc", "x":0, "y":0},
9 {"label":"F1", "x":2, "y":0},
10 {"label":"F2", "x":3, "y":0},
11 {"label":"F3", "x":4, "y":0},
12 {"label":"F4", "x":5, "y":0},
13 {"label":"F5", "x":6.5, "y":0},
14 {"label":"F6", "x":7.5, "y":0},
15 {"label":"F7", "x":8.5, "y":0},
16 {"label":"F8", "x":9.5, "y":0},
17 {"label":"F9", "x":11, "y":0},
18 {"label":"F10", "x":12, "y":0},
19 {"label":"F11", "x":13, "y":0},
20 {"label":"F12", "x":14, "y":0},
21 {"label":"Print Screen", "x":15.25, "y":0},
22 {"label":"Scroll Lock", "x":16.25, "y":0},
23 {"label":"Pause", "x":17.25, "y":0},
24 {"label":"`", "x":0, "y":1.5},
25 {"label":"1", "x":1, "y":1.5},
26 {"label":"2", "x":2, "y":1.5},
27 {"label":"3", "x":3, "y":1.5},
28 {"label":"4", "x":4, "y":1.5},
29 {"label":"5", "x":5, "y":1.5},
30 {"label":"6", "x":6, "y":1.5},
31 {"label":"7", "x":7, "y":1.5},
32 {"label":"8", "x":8, "y":1.5},
33 {"label":"9", "x":9, "y":1.5},
34 {"label":"0", "x":10, "y":1.5},
35 {"label":"-", "x":11, "y":1.5},
36 {"label":"=", "x":12, "y":1.5},
37 {"label":"Backspace", "x":13, "y":1.5, "w":2},
38 {"label":"Insert", "x":15.25, "y":1.5},
39 {"label":"Home", "x":16.25, "y":1.5},
40 {"label":"Page Up", "x":17.25, "y":1.5},
41 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
42 {"label":"Q", "x":1.5, "y":2.5},
43 {"label":"W", "x":2.5, "y":2.5},
44 {"label":"E", "x":3.5, "y":2.5},
45 {"label":"R", "x":4.5, "y":2.5},
46 {"label":"T", "x":5.5, "y":2.5},
47 {"label":"Y", "x":6.5, "y":2.5},
48 {"label":"U", "x":7.5, "y":2.5},
49 {"label":"I", "x":8.5, "y":2.5},
50 {"label":"O", "x":9.5, "y":2.5},
51 {"label":"P", "x":10.5, "y":2.5},
52 {"label":"[", "x":11.5, "y":2.5},
53 {"label":"]", "x":12.5, "y":2.5},
54 {"label":"\\", "x":13.5, "y":2.5, "w":1.5},
55 {"label":"Delete", "x":15.25, "y":2.5},
56 {"label":"End", "x":16.25, "y":2.5},
57 {"label":"Page Down", "x":17.25, "y":2.5},
58 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
59 {"label":"A", "x":1.75, "y":3.5},
60 {"label":"S", "x":2.75, "y":3.5},
61 {"label":"D", "x":3.75, "y":3.5},
62 {"label":"F", "x":4.75, "y":3.5},
63 {"label":"G", "x":5.75, "y":3.5},
64 {"label":"H", "x":6.75, "y":3.5},
65 {"label":"J", "x":7.75, "y":3.5},
66 {"label":"K", "x":8.75, "y":3.5},
67 {"label":"L", "x":9.75, "y":3.5},
68 {"label":";", "x":10.75, "y":3.5},
69 {"label":"'", "x":11.75, "y":3.5},
70 {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
71 {"label":"Shift", "x":0, "y":4.5, "w":1.25},
72 {"label":"ISO \\", "x":1.25, "y":4.5},
73 {"label":"Z", "x":2.25, "y":4.5},
74 {"label":"X", "x":3.25, "y":4.5},
75 {"label":"C", "x":4.25, "y":4.5},
76 {"label":"V", "x":5.25, "y":4.5},
77 {"label":"B", "x":6.25, "y":4.5},
78 {"label":"N", "x":7.25, "y":4.5},
79 {"label":"M", "x":8.25, "y":4.5},
80 {"label":",", "x":9.25, "y":4.5},
81 {"label":".", "x":10.25, "y":4.5},
82 {"label":"/", "x":11.25, "y":4.5},
83 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
84 {"label":"Up", "x":16.25, "y":4.5},
85 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
86 {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
87 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
88 {"x":3.75, "y":5.5, "w":6.25},
89 {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
90 {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
91 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
92 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
93 {"label":"Left", "x":15.25, "y":5.5},
94 {"label":"Down", "x":16.25, "y":5.5},
95 {"label":"Right", "x":17.25, "y":5.5}
96 ]
97 },
98 "LAYOUT_tkl_ansi": {
99 "layout": [
100 {"label":"Esc", "x":0, "y":0},
101 {"label":"F1", "x":2, "y":0},
102 {"label":"F2", "x":3, "y":0},
103 {"label":"F3", "x":4, "y":0},
104 {"label":"F4", "x":5, "y":0},
105 {"label":"F5", "x":6.5, "y":0},
106 {"label":"F6", "x":7.5, "y":0},
107 {"label":"F7", "x":8.5, "y":0},
108 {"label":"F8", "x":9.5, "y":0},
109 {"label":"F9", "x":11, "y":0},
110 {"label":"F10", "x":12, "y":0},
111 {"label":"F11", "x":13, "y":0},
112 {"label":"F12", "x":14, "y":0},
113 {"label":"Print Screen", "x":15.25, "y":0},
114 {"label":"Scroll Lock", "x":16.25, "y":0},
115 {"label":"Pause", "x":17.25, "y":0},
116 {"label":"`", "x":0, "y":1.5},
117 {"label":"1", "x":1, "y":1.5},
118 {"label":"2", "x":2, "y":1.5},
119 {"label":"3", "x":3, "y":1.5},
120 {"label":"4", "x":4, "y":1.5},
121 {"label":"5", "x":5, "y":1.5},
122 {"label":"6", "x":6, "y":1.5},
123 {"label":"7", "x":7, "y":1.5},
124 {"label":"8", "x":8, "y":1.5},
125 {"label":"9", "x":9, "y":1.5},
126 {"label":"0", "x":10, "y":1.5},
127 {"label":"-", "x":11, "y":1.5},
128 {"label":"=", "x":12, "y":1.5},
129 {"label":"Backspace", "x":13, "y":1.5, "w":2},
130 {"label":"Insert", "x":15.25, "y":1.5},
131 {"label":"Home", "x":16.25, "y":1.5},
132 {"label":"Page Up", "x":17.25, "y":1.5},
133 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
134 {"label":"Q", "x":1.5, "y":2.5},
135 {"label":"W", "x":2.5, "y":2.5},
136 {"label":"E", "x":3.5, "y":2.5},
137 {"label":"R", "x":4.5, "y":2.5},
138 {"label":"T", "x":5.5, "y":2.5},
139 {"label":"Y", "x":6.5, "y":2.5},
140 {"label":"U", "x":7.5, "y":2.5},
141 {"label":"I", "x":8.5, "y":2.5},
142 {"label":"O", "x":9.5, "y":2.5},
143 {"label":"P", "x":10.5, "y":2.5},
144 {"label":"[", "x":11.5, "y":2.5},
145 {"label":"]", "x":12.5, "y":2.5},
146 {"label":"\\", "x":13.5, "y":2.5, "w":1.5},
147 {"label":"Delete", "x":15.25, "y":2.5},
148 {"label":"End", "x":16.25, "y":2.5},
149 {"label":"Page Down", "x":17.25, "y":2.5},
150 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
151 {"label":"A", "x":1.75, "y":3.5},
152 {"label":"S", "x":2.75, "y":3.5},
153 {"label":"D", "x":3.75, "y":3.5},
154 {"label":"F", "x":4.75, "y":3.5},
155 {"label":"G", "x":5.75, "y":3.5},
156 {"label":"H", "x":6.75, "y":3.5},
157 {"label":"J", "x":7.75, "y":3.5},
158 {"label":"K", "x":8.75, "y":3.5},
159 {"label":"L", "x":9.75, "y":3.5},
160 {"label":";", "x":10.75, "y":3.5},
161 {"label":"'", "x":11.75, "y":3.5},
162 {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
163 {"label":"Shift", "x":0, "y":4.5, "w":2.25},
164 {"label":"Z", "x":2.25, "y":4.5},
165 {"label":"X", "x":3.25, "y":4.5},
166 {"label":"C", "x":4.25, "y":4.5},
167 {"label":"V", "x":5.25, "y":4.5},
168 {"label":"B", "x":6.25, "y":4.5},
169 {"label":"N", "x":7.25, "y":4.5},
170 {"label":"M", "x":8.25, "y":4.5},
171 {"label":",", "x":9.25, "y":4.5},
172 {"label":".", "x":10.25, "y":4.5},
173 {"label":"/", "x":11.25, "y":4.5},
174 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
175 {"label":"Up", "x":16.25, "y":4.5},
176 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
177 {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
178 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
179 {"x":3.75, "y":5.5, "w":6.25},
180 {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
181 {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
182 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
183 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
184 {"label":"Left", "x":15.25, "y":5.5},
185 {"label":"Down", "x":16.25, "y":5.5},
186 {"label":"Right", "x":17.25, "y":5.5}
187 ]
188 },
189 "LAYOUT_tkl_iso": {
190 "layout": [
191 {"label":"Esc", "x":0, "y":0},
192 {"label":"F1", "x":2, "y":0},
193 {"label":"F2", "x":3, "y":0},
194 {"label":"F3", "x":4, "y":0},
195 {"label":"F4", "x":5, "y":0},
196 {"label":"F5", "x":6.5, "y":0},
197 {"label":"F6", "x":7.5, "y":0},
198 {"label":"F7", "x":8.5, "y":0},
199 {"label":"F8", "x":9.5, "y":0},
200 {"label":"F9", "x":11, "y":0},
201 {"label":"F10", "x":12, "y":0},
202 {"label":"F11", "x":13, "y":0},
203 {"label":"F12", "x":14, "y":0},
204 {"label":"Print Screen", "x":15.25, "y":0},
205 {"label":"Scroll Lock", "x":16.25, "y":0},
206 {"label":"Pause", "x":17.25, "y":0},
207 {"label":"`", "x":0, "y":1.5},
208 {"label":"1", "x":1, "y":1.5},
209 {"label":"2", "x":2, "y":1.5},
210 {"label":"3", "x":3, "y":1.5},
211 {"label":"4", "x":4, "y":1.5},
212 {"label":"5", "x":5, "y":1.5},
213 {"label":"6", "x":6, "y":1.5},
214 {"label":"7", "x":7, "y":1.5},
215 {"label":"8", "x":8, "y":1.5},
216 {"label":"9", "x":9, "y":1.5},
217 {"label":"0", "x":10, "y":1.5},
218 {"label":"-", "x":11, "y":1.5},
219 {"label":"=", "x":12, "y":1.5},
220 {"label":"Backspace", "x":13, "y":1.5, "w":2},
221 {"label":"Insert", "x":15.25, "y":1.5},
222 {"label":"Home", "x":16.25, "y":1.5},
223 {"label":"Page Up", "x":17.25, "y":1.5},
224 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
225 {"label":"Q", "x":1.5, "y":2.5},
226 {"label":"W", "x":2.5, "y":2.5},
227 {"label":"E", "x":3.5, "y":2.5},
228 {"label":"R", "x":4.5, "y":2.5},
229 {"label":"T", "x":5.5, "y":2.5},
230 {"label":"Y", "x":6.5, "y":2.5},
231 {"label":"U", "x":7.5, "y":2.5},
232 {"label":"I", "x":8.5, "y":2.5},
233 {"label":"O", "x":9.5, "y":2.5},
234 {"label":"P", "x":10.5, "y":2.5},
235 {"label":"[", "x":11.5, "y":2.5},
236 {"label":"]", "x":12.5, "y":2.5},
237 {"label":"Delete", "x":15.25, "y":2.5},
238 {"label":"End", "x":16.25, "y":2.5},
239 {"label":"Page Down", "x":17.25, "y":2.5},
240 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
241 {"label":"A", "x":1.75, "y":3.5},
242 {"label":"S", "x":2.75, "y":3.5},
243 {"label":"D", "x":3.75, "y":3.5},
244 {"label":"F", "x":4.75, "y":3.5},
245 {"label":"G", "x":5.75, "y":3.5},
246 {"label":"H", "x":6.75, "y":3.5},
247 {"label":"J", "x":7.75, "y":3.5},
248 {"label":"K", "x":8.75, "y":3.5},
249 {"label":"L", "x":9.75, "y":3.5},
250 {"label":";", "x":10.75, "y":3.5},
251 {"label":"'", "x":11.75, "y":3.5},
252 {"label":"#", "x":12.75, "y":3.5},
253 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
254 {"label":"Shift", "x":0, "y":4.5, "w":1.25},
255 {"label":"\\", "x":1.25, "y":4.5},
256 {"label":"Z", "x":2.25, "y":4.5},
257 {"label":"X", "x":3.25, "y":4.5},
258 {"label":"C", "x":4.25, "y":4.5},
259 {"label":"V", "x":5.25, "y":4.5},
260 {"label":"B", "x":6.25, "y":4.5},
261 {"label":"N", "x":7.25, "y":4.5},
262 {"label":"M", "x":8.25, "y":4.5},
263 {"label":",", "x":9.25, "y":4.5},
264 {"label":".", "x":10.25, "y":4.5},
265 {"label":"/", "x":11.25, "y":4.5},
266 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
267 {"label":"↑", "x":16.25, "y":4.5},
268 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
269 {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
270 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
271 {"x":3.75, "y":5.5, "w":6.25},
272 {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
273 {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
274 {"label":"App", "x":12.5, "y":5.5, "w":1.25},
275 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
276 {"label":"←", "x":15.25, "y":5.5},
277 {"label":"↓", "x":16.25, "y":5.5},
278 {"label":"→", "x":17.25, "y":5.5}
279 ]
280 },
281 "LAYOUT_tkl_jis": {
282 "layout": [
283 {"label":"Esc", "x":0, "y":0},
284 {"label":"F1", "x":2, "y":0},
285 {"label":"F2", "x":3, "y":0},
286 {"label":"F3", "x":4, "y":0},
287 {"label":"F4", "x":5, "y":0},
288 {"label":"F5", "x":6.5, "y":0},
289 {"label":"F6", "x":7.5, "y":0},
290 {"label":"F7", "x":8.5, "y":0},
291 {"label":"F8", "x":9.5, "y":0},
292 {"label":"F9", "x":11, "y":0},
293 {"label":"F10", "x":12, "y":0},
294 {"label":"F11", "x":13, "y":0},
295 {"label":"F12", "x":14, "y":0},
296 {"label":"Print Screen", "x":15.25, "y":0},
297 {"label":"Scroll Lock", "x":16.25, "y":0},
298 {"label":"Pause", "x":17.25, "y":0},
299 {"label":"Half-width/Full-width", "x":0, "y":1.5},
300 {"label":"1", "x":1, "y":1.5},
301 {"label":"2", "x":2, "y":1.5},
302 {"label":"3", "x":3, "y":1.5},
303 {"label":"4", "x":4, "y":1.5},
304 {"label":"5", "x":5, "y":1.5},
305 {"label":"6", "x":6, "y":1.5},
306 {"label":"7", "x":7, "y":1.5},
307 {"label":"8", "x":8, "y":1.5},
308 {"label":"9", "x":9, "y":1.5},
309 {"label":"0", "x":10, "y":1.5},
310 {"label":"-", "x":11, "y":1.5},
311 {"label":"^", "x":12, "y":1.5},
312 {"label":"Yen", "x":13, "y":1.5},
313 {"label":"Backspace", "x":14, "y":1.5},
314 {"label":"Insert", "x":15.25, "y":1.5},
315 {"label":"Home", "x":16.25, "y":1.5},
316 {"label":"Page Up", "x":17.25, "y":1.5},
317 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
318 {"label":"Q", "x":1.5, "y":2.5},
319 {"label":"W", "x":2.5, "y":2.5},
320 {"label":"E", "x":3.5, "y":2.5},
321 {"label":"R", "x":4.5, "y":2.5},
322 {"label":"T", "x":5.5, "y":2.5},
323 {"label":"Y", "x":6.5, "y":2.5},
324 {"label":"U", "x":7.5, "y":2.5},
325 {"label":"I", "x":8.5, "y":2.5},
326 {"label":"O", "x":9.5, "y":2.5},
327 {"label":"P", "x":10.5, "y":2.5},
328 {"label":"@", "x":11.5, "y":2.5},
329 {"label":"[", "x":12.5, "y":2.5},
330 {"label":"Del", "x":15.25, "y":2.5},
331 {"label":"End", "x":16.25, "y":2.5},
332 {"label":"Page Down", "x":17.25, "y":2.5},
333 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
334 {"label":"A", "x":1.75, "y":3.5},
335 {"label":"S", "x":2.75, "y":3.5},
336 {"label":"D", "x":3.75, "y":3.5},
337 {"label":"F", "x":4.75, "y":3.5},
338 {"label":"G", "x":5.75, "y":3.5},
339 {"label":"H", "x":6.75, "y":3.5},
340 {"label":"J", "x":7.75, "y":3.5},
341 {"label":"K", "x":8.75, "y":3.5},
342 {"label":"L", "x":9.75, "y":3.5},
343 {"label":";", "x":10.75, "y":3.5},
344 {"label":":", "x":11.75, "y":3.5},
345 {"label":"]", "x":12.75, "y":3.5},
346 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
347 {"label":"Shift", "x":0, "y":4.5, "w":2.25},
348 {"label":"Z", "x":2.25, "y":4.5},
349 {"label":"X", "x":3.25, "y":4.5},
350 {"label":"C", "x":4.25, "y":4.5},
351 {"label":"V", "x":5.25, "y":4.5},
352 {"label":"B", "x":6.25, "y":4.5},
353 {"label":"N", "x":7.25, "y":4.5},
354 {"label":"M", "x":8.25, "y":4.5},
355 {"label":",", "x":9.25, "y":4.5},
356 {"label":".", "x":10.25, "y":4.5},
357 {"label":"/", "x":11.25, "y":4.5},
358 {"label":"\\", "x":12.25, "y":4.5},
359 {"label":"Shift", "x":13.25, "y":4.5, "w":1.75},
360 {"label":"Up", "x":16.25, "y":4.5},
361 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
362 {"label":"GUI", "x":1.25, "y":5.5},
363 {"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
364 {"label":"Muhenkan", "x":3.5, "y":5.5},
365 {"label":"Space", "x":4.5, "y":5.5, "w":4.5},
366 {"label":"Henkan", "x":9, "y":5.5, "w":1.25},
367 {"label":"Kana", "x":10.25, "y":5.5, "w":1.25},
368 {"label":"Alt", "x":11.5, "y":5.5, "w":1.25},
369 {"label":"Fn", "x":12.75, "y":5.5},
370 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
371 {"label":"Left", "x":15.25, "y":5.5},
372 {"label":"Down", "x":16.25, "y":5.5},
373 {"label":"Right", "x":17.25, "y":5.5}
374 ]
375 }
376 }
377}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
new file mode 100644
index 000000000..788446202
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
@@ -0,0 +1,105 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20/* Swedish keys */
21#define SE_HALF KC_GRV
22#define SE_PLUS KC_MINS
23#define SE_ACUT KC_EQL
24#define SE_AO KC_LBRC
25#define SE_CIRC KC_RBRC
26#define SE_QUOT KC_BSLS
27#define SE_ODIA KC_SCLN
28#define SE_ADIA KC_QUOT
29#define SE_MINS KC_SLSH
30#define SE_LTGT KC_NUBS
31#define SE_LCBR RALT(KC_7)
32#define SE_LBRC RALT(KC_8)
33#define SE_RBRC RALT(KC_9)
34#define SE_RCBR RALT(KC_0)
35#define SE_PIPE RALT(SE_LTGT)
36#define SE_BSLS RALT(SE_PLUS)
37
38#define KM_BLOWRAK 0
39#define KM_QWERTY 1
40#define KM_MEDIA 2
41#define KM_HAXHAX 3
42
43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44 /* Layer 0: Blowrak ISO layer, a Swedish take on Dvorak */
45 [KM_BLOWRAK] = LAYOUT( \
46 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
47 SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
48 KC_TAB, SE_AO, SE_ADIA,SE_ODIA,KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_COMM,SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \
49 KC_LCTRL,KC_A, KC_O, KC_E, KC_U, KC_I, KC_H, KC_D, KC_T, KC_N, KC_S, SE_MINS, KC_ENT, \
50 KC_LSFT, SE_LTGT,KC_DOT, KC_Q, KC_J, KC_K, KC_B, KC_X, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \
51 MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,TG(KM_QWERTY), KC_LEFT,KC_DOWN,KC_RGHT),
52 /* Layer 1: Standard ISO layer */
53 [KM_QWERTY] = LAYOUT( \
54 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
55 SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
56 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AO, SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \
57 KC_LCTRL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA,SE_ADIA, KC_ENT, \
58 KC_LSFT, SE_LTGT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, SE_MINS, KC_RSFT, KC_UP, \
59 MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,TG(KM_QWERTY), KC_LEFT,KC_DOWN,KC_RGHT),
60 /* Layer 2: Media layer */
61 [KM_MEDIA] = LAYOUT( \
62 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \
63 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU, \
64 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MUTE,_______,KC_VOLD, \
65 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
66 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_MPLY, \
67 _______,_______,_______, _______, _______,_______,RESET ,_______, KC_MPRV,KC_MSTP,KC_MNXT),
68 /* Layer 3: Programming layer */
69 [KM_HAXHAX] = LAYOUT( \
70 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
71 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
72 _______,SE_LCBR,SE_PIPE,SE_RCBR,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
73 _______,SE_LBRC,SE_BSLS,SE_RBRC,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
74 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
75 _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______),
76};
77
78void matrix_scan_user(void)
79{
80 uint8_t layer = biton32(layer_state);
81 switch (layer) {
82 case KM_BLOWRAK:
83 ph_caps_led_on();
84 ph_sclk_led_off();
85 break;
86 case KM_QWERTY:
87 ph_sclk_led_on();
88 ph_caps_led_off();
89 break;
90 }
91}
92
93/* Mixes in KM_HAXHAX via RALT modifier without shadowing the RALT key combinations. */
94bool process_record_user(uint16_t keycode, keyrecord_t *record) {
95 uint8_t modifiers = get_mods();
96 if (modifiers & MOD_BIT(KC_RALT) && record->event.pressed) {
97 uint16_t kc = keymap_key_to_keycode(KM_HAXHAX, record->event.key);
98 if (kc != KC_TRNS) {
99 register_code(kc);
100 unregister_code(kc);
101 return false;
102 }
103 }
104 return true;
105}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
new file mode 100644
index 000000000..737451b39
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
@@ -0,0 +1,17 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = yes # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
11NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
12BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
13MIDI_ENABLE = no # MIDI controls
14AUDIO_ENABLE = no # Audio output on port C6
15UNICODE_ENABLE = no # Unicode
16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
17RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h b/keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h
new file mode 100644
index 000000000..122627e88
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h
@@ -0,0 +1,6 @@
1#pragma once
2
3/* overridden settings: */
4
5#undef PRODUCT
6#define PRODUCT Pegasus Hoof Citadel
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
new file mode 100644
index 000000000..5036bcb3f
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
@@ -0,0 +1,132 @@
1/* Copyright 2018 Daniel Rose <[email protected]>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19/* Allow shortcuts for combos like RALT(KC_RBRC) that don't take up more than 7 characters: */
20/* Original shortcuts (quantum_keycodes.h) take full-sized keycodes: too long! */
21#undef C
22#undef S
23#undef A
24#undef G
25#define C(kc) LCTL(KC_##kc)
26#define S(kc) LSFT(KC_##kc)
27#define A(kc) LALT(KC_##kc)
28#define G(kc) RALT(KC_##kc)
29#define CTALDEL LCTL(LALT(KC_DEL))
30
31enum layers {
32 DEF,
33 FUN,
34 RES,
35};
36
37enum tap_dance {
38 AF4,
39};
40
41const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42/* Layer 0: default layer (ISO-DE)
43 * .----. .-------------------. .-------------------. .-------------------. .--------------.
44 * |Esc | |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10 |F11 |F12 | |PrSc|SLck|2Tp:|
45 * | | | | | | | | | | | | | | | | | |SyRq| |A+F4|
46 * '----' '-------------------' '-------------------' '-------------------' '--------------'
47 * .------------------------------------------------------------------------. .--------------.
48 * |° |! |" |§ |$ |% |& |/ |( |) |= |? |` |Backspa| |Ins |Home|PgUp|
49 * |^ |1 |2 ²|3 ³|4 |5 |6 |7 {|8 [|9 ]|0 }|ß \|´ | | | | | |
50 * |------------------------------------------------------------------------| |--------------|
51 * |Tab |Q |W |E |R |T |Z |U |I |O |P |Ü |* | E | |Del |End |PgDn|
52 * | | | | €| | | | | | | | |+ ~| n | | | | |
53 * |------------------------------------------------------------------\ t | '--------------'
54 * |Fn: |A |S |D |F |G |H |J |K |L |Ö |Ä |' | e |
55 * |Layer 2| | | | | | | | | | | |# | r |
56 * |------------------------------------------------------------------------| .----.
57 * |Shift|> |Y |X |C |V |B |N |M |; |: |_ |Shift | |Up |
58 * | |< ¦| | | | | | | µ|, |. |- | | | |
59 * |------------------------------------------------------------------------| .--------------.
60 * |Ctrl |Super|Alt | |AltGr|Alt |Fn: |Ctrl | |Left|Down|Righ|
61 * | | | | | | |Lay 2| | | | | |
62 * '------------------------------------------------------------------------' '--------------'
63 * NUHS = true position of KC_NUHS
64 */
65[DEF] = LAYOUT( \
66 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,TD(AF4), \
67 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
68 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_NUHS, KC_DEL, KC_END, KC_PGDN, \
69 MO(FUN),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,/*NUHS*/KC_ENT, \
70 KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
71 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_LALT,MO(FUN),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
72
73 /* Layer 1: function layer
74 * .----. .-------------------. .-------------------. .-------------------. .--------------.
75 * |Ctl+| |My |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| | | |Paus|
76 * |A+De| |Comp|Home| |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up |[3] | | | |Brea|
77 * '----' '-------------------' '-------------------' '-------------------' '--------------'
78 * .------------------------------------------------------------------------. .--------------.
79 * | | | | | | | | | | | | | | | | | |Mou:|
80 * | | | | | | | |{ |[ |] |} |\ | | | | | |WhUp|
81 * |------------------------------------------------------------------------| |--------------|
82 * | | | | | | | | | | | | |~ | | | | |Mou:|
83 * | | | | | | | | | | | | | | | | | |WhDn|
84 * |------------------------------------------------------------------\ | '--------------'
85 * |CapsLck|Mou:|Mou:| | | | | | | | | | | |
86 * | |Fast|Slow| | | | | | | | | | | |
87 * |------------------------------------------------------------------------| .----.
88 * | | | | | | | | |µ | | | | | |Mou:|
89 * | | | | | | | | | | | | | | |Up |
90 * |------------------------------------------------------------------------| .--------------.
91 * |Mous:|Mous:| | | |Super|App | | |Mou:|Mou:|Mou:|
92 * |Bttn2|Bttn1| | | | | | | |Left|Down|Righ|
93 * '------------------------------------------------------------------------' '--------------'
94 *
95 */
96[FUN] = LAYOUT( \
97 CTALDEL, KC_MYCM,KC_WHOM,KC_CALC,KC_MSEL,KC_MPRV,KC_MNXT,KC_MPLY,KC_MSTP,KC_MUTE,KC_VOLD,KC_VOLU,MO(RES), _______,KC_SLCK,KC_PAUS, \
98 _______,_______,_______,_______,_______,_______,_______,G(7), G(8), G(9), G(0), G(MINS),_______,_______, _______,_______,KC_WH_U, \
99 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,G(RBRC),_______, _______,_______,KC_WH_D, \
100 KC_CAPS,KC_ACL2,KC_ACL0,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______, \
101 _______,_______,_______,_______,_______,_______,_______,_______,G(M), _______,_______,_______, _______, KC_MS_U, \
102 KC_BTN2,KC_BTN1,_______, _______, _______,KC_RGUI,KC_APP ,_______, KC_MS_L,KC_MS_D,KC_MS_R),
103
104
105/* Layer 3: Reset layer (prevents accidental resets) */
106[RES] = LAYOUT( \
107 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
108 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
109 _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
110 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______, \
111 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
112 _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______),
113};
114
115qk_tap_dance_action_t tap_dance_actions[] = {
116 /* Tap once: nothing. Tap twice: Alt+F4 */
117 [AF4] = ACTION_TAP_DANCE_DOUBLE(XXXXXXX,A(F4)),
118};
119
120void led_set_user(uint8_t usb_led) {
121 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
122 ph_caps_led_on();
123 } else {
124 ph_caps_led_off();
125 }
126
127 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
128 ph_sclk_led_on();
129 } else {
130 ph_sclk_led_off();
131 }
132}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md b/keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md
new file mode 100644
index 000000000..3618bae86
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md
@@ -0,0 +1,75 @@
1# Citadel keymap for pegasushoof
2
3Designed for ISO-DE and similar ISO layouts.
4
5The central idea of this keymap is to avoid unergonomic key combos that force the user to either press
6multiple keys with one hand or to use the left hand for right-sided keys. For instance, ISO-DE users
7have to press `AltGr`+`7` to type _{_. The keymap allows ergonomic access to the right-sided keys of the
8German AltGr-layer by turning `Caps Lock` into a hybrid Fn/AltGr-key. It can easily be adapted for other
9ISO layouts.
10
11The _Function_ layer also offers mouse emulation and function/media keys in the F-Row.
12
13`Pause/Break` is used as a safe _close key_: A _single tap_ does nothing, a _double tap_ executes ALT+F4.
14
15Named after the homonymous space station from _Mass Effect_. Made by [Daniel Rose](https://github.com/droseger/).
16
17## [1] Layers
18
19### Layer 1 (Default)
20 .----. .-------------------. .-------------------. .-------------------. .--------------.
21 |Esc | |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10 |F11 |F12 | |PrSc|SLck|2Tp:|
22 | | | | | | | | | | | | | | | | | |SyRq| |A+F4|
23 '----' '-------------------' '-------------------' '-------------------' '--------------'
24 .------------------------------------------------------------------------. .--------------.
25 |° |! |" |§ |$ |% |& |/ |( |) |= |? |` |Backspa| |Ins |Home|PgUp|
26 |^ |1 |2 ²|3 ³|4 |5 |6 |7 {|8 [|9 ]|0 }|ß \|´ | | | | | |
27 |------------------------------------------------------------------------| |--------------|
28 |Tab |Q |W |E |R |T |Z |U |I |O |P |Ü |* | E | |Del |End |PgDn|
29 | | | | €| | | | | | | | |+ ~| n | | | | |
30 |------------------------------------------------------------------\ t | '--------------'
31 |Fn: |A |S |D |F |G |H |J |K |L |Ö |Ä |' | e |
32 |Layer 2| | | | | | | | | | | |# | r |
33 |------------------------------------------------------------------------| .----.
34 |Shift|> |Y |X |C |V |B |N |M |; |: |_ |Shift | |Up |
35 | |< ¦| | | | | | | µ|, |. |- | | | |
36 |------------------------------------------------------------------------| .--------------.
37 |Ctrl |Super|Alt | |AltGr|Alt |Fn: |Ctrl | |Left|Down|Righ|
38 | | | | | | |Lay 2| | | | | |
39 '------------------------------------------------------------------------' '--------------'
40
41### Layer 2 (Function)
42 .----. .-------------------. .-------------------. .-------------------. .--------------.
43 |Ctl+| |My |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| | | |Paus|
44 |A+De| |Comp|Home| |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up |[3] | | | |Brea|
45 '----' '-------------------' '-------------------' '-------------------' '--------------'
46 .------------------------------------------------------------------------. .--------------.
47 | | | | | | | | | | | | | | | | | |Mou:|
48 | | | | | | | |{ |[ |] |} |\ | | | | | |WhUp|
49 |------------------------------------------------------------------------| |--------------|
50 | | | | | | | | | | | | |~ | | | | |Mou:|
51 | | | | | | | | | | | | | | | | | |WhDn|
52 |------------------------------------------------------------------\ | '--------------'
53 |CapsLck|Mou:|Mou:| | | | | | | | | | | |
54 | |Fast|Slow| | | | | | | | | | | |
55 |------------------------------------------------------------------------| .----.
56 | | | | | | | | |µ | | | | | |Mou:|
57 | | | | | | | | | | | | | | |Up |
58 |------------------------------------------------------------------------| .--------------.
59 |Mous:|Mous:| | | |Super|App | | |Mou:|Mou:|Mou:|
60 |Bttn2|Bttn1| | | | | | | |Left|Down|Righ|
61 '------------------------------------------------------------------------' '--------------'
62
63Layer 3 exists solely to prevent users from accidentally activating boot mode: `R` is redefined
64as `RESET` key [3].
65
66## [2] How to build and install
671) Prerequisite: install the necessary [build tools](https://docs.qmk.fm/#/getting_started_build_tools)
68such as [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer).
69 - You might need to [add udev rules](https://docs.qmk.fm/#/faq_build?id=can39t-program-on-linux) under Linux.
702) To test if the keymap compiles, simply run `make pegasushoof:citadel`
713) Enter the `qmk_firmware` root directory and run `make pegasushoof:citadel:dfu`
724) Reset controller to _Boot mode_ by pressing the `RESET` key or by using a magnet.
73
74## [3] How to access Boot mode after install
75Press `Fn+F12+R`
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk
new file mode 100644
index 000000000..294a245aa
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk
@@ -0,0 +1,17 @@
1# Build Options
2# change to "no" to disable the options
3#
4BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
5MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
6EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
7CONSOLE_ENABLE = no # Console for debug(+400)
8COMMAND_ENABLE = no # Commands for debug and configuration
9CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
10NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
17TAP_DANCE_ENABLE = yes # see https://docs.qmk.fm/#/feature_tap_dance (+1000)
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
new file mode 100644
index 000000000..4a9b1f3f0
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20#define KM_QWERTY 0
21#define KM_MEDIA 1
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24 /* Layer 0: Standard ISO layer */
25 [KM_QWERTY] = LAYOUT(
26 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
27 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
28 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
29 KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
30 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
31 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
32 ),
33 /* Layer 1: Function layer */
34 [KM_MEDIA] = LAYOUT(
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_PWR, KC_SLEP,
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
40 _______, _______, _______, _______, _______, _______, RESET, _______, KC_MPRV, KC_MSTP, KC_MNXT
41 )
42};
43
44void led_set_user(uint8_t usb_led) {
45 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
46 ph_caps_led_on();
47 } else {
48 ph_caps_led_off();
49 }
50
51 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
52 ph_sclk_led_on();
53 } else {
54 ph_sclk_led_off();
55 }
56}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
new file mode 100644
index 000000000..0f9291c88
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
@@ -0,0 +1,10 @@
1BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
2MOUSEKEY_ENABLE = yes # Mouse keys
3EXTRAKEY_ENABLE = yes # Audio control and System control
4CONSOLE_ENABLE = yes # Console for debug
5COMMAND_ENABLE = yes # Commands for debug and configuration
6CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
7NKRO_ENABLE = no
8BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
9AUDIO_ENABLE = no # Audio output
10RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c
new file mode 100644
index 000000000..46b660124
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c
@@ -0,0 +1,54 @@
1/*
2Copyright 2016 Daniel Svensson <[email protected]>
3 2018 Charlie McMackin <[email protected]>
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include QMK_KEYBOARD_H
20
21#define KM_JIS 0
22#define KM_MEDIA 1
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =
25 {
26 /* Layer 0: Standard JIS layer */
27 [KM_JIS] = LAYOUT_tkl_jis(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
28 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME,KC_PGUP,
29 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_DEL, KC_END, KC_PGDN,
30 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_BSLS,KC_ENT,
31 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP,
32 KC_LCTL, KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_HENK,KC_KANA,KC_RALT,MO(1), KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
33 /* Layer 1: Function layer */
34 [KM_MEDIA] = LAYOUT_tkl_jis(_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP,
35 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU,
36 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLD,
37 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
38 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MPLY,
39 _______,_______,_______,_______, _______, _______,_______,_______,_______,RESET , KC_MPRV,KC_MSTP,KC_MNXT)
40 };
41
42void led_set_user(uint8_t usb_led) {
43 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
44 ph_caps_led_on();
45 } else {
46 ph_caps_led_off();
47 }
48
49 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
50 ph_sclk_led_on();
51 } else {
52 ph_sclk_led_off();
53 }
54}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
new file mode 100644
index 000000000..cec4b4e46
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
@@ -0,0 +1,10 @@
1BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
2MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
3EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
4CONSOLE_ENABLE = yes # Console for debug(+400)
5COMMAND_ENABLE = yes # Commands for debug and configuration
6CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
7NKRO_ENABLE = no
8BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
9AUDIO_ENABLE = no # Audio output
10RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/pegasushoof/readme.md b/keyboards/bpiphany/pegasushoof/readme.md
new file mode 100644
index 000000000..ab49db03c
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/readme.md
@@ -0,0 +1,21 @@
1# Pegasus Hoof Controller
2
3A replacement controller that turns your Filco Majestouch 87/88 mechanical keyboard into a fully programmable keyboard.
4
5Keyboard Maintainer: QMK Community
6Hardware Supported: Pegasus Hoof, revisions [20131001](2013/) and [20150108](2015/)
7Hardware Availability: [1upkeyboards](https://www.1upkeyboards.com/shop/controllers/filco-pegasus-hoof-controller/)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make bpiphany/pegasus_hoof:default
12
13See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
14
15### Additional Resources
16
17With many thanks to Bathroom Epiphanies for all the kind advice and help.
18
19 * [Schematic](https://deskthority.net/wiki/Costar_replacement_controllers#Schematic)
20 * [bpiphany TMK source](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard)
21 * [bpiphany QMK source](https://github.com/BathroomEpiphanies/epiphanies_qmk_keyboard)
diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk
new file mode 100644
index 000000000..af447c337
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u2
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = yes # Console for debug
14COMMAND_ENABLE = yes # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17AUDIO_ENABLE = no # Audio output
18RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
19
20LAYOUTS = tkl_ansi
21
22DEFAULT_FOLDER=bpiphany/pegasushoof/2013