4dddcb4f0300f79d8fbfc462ff8d6b360e99989e
- Author
- Ryan <fauxpark@gmail.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/keyboards/telophase/config.h b/keyboards/telophase/config.h
2index c67dd939bffb9ab82e96311afa549fe2798e71ca..51718da9d4c1cfef64b190ec49596816006143e6 100644
3--- a/keyboards/telophase/config.h
4+++ b/keyboards/telophase/config.h
5@@ -1,5 +1,5 @@
6 /*
7-Copyright 2012 Jun Wako <wakojun@gmail.com>
8+Copyright 2021
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12@@ -15,31 +15,44 @@ You should have received a copy of the GNU General Public License
13 along with this program. If not, see <http://www.gnu.org/licenses/>.
14 */
15
16-#ifndef CONFIG_H
17-#define CONFIG_H
18+#pragma once
19
20 #include "config_common.h"
21
22 /* USB Device descriptor parameter */
23-
24-#define VENDOR_ID 0xFEED
25-#define PRODUCT_ID 0x6060
26-#define DEVICE_VER 0x0001
27-#define MANUFACTURER unknown
28-#define PRODUCT Telophase
29+#define VENDOR_ID 0xFEED
30+#define PRODUCT_ID 0x6060
31+#define DEVICE_VER 0x0001
32+#define MANUFACTURER unknown
33+#define PRODUCT Telophase
34
35 /* key matrix size */
36 #define MATRIX_ROWS 4
37 #define MATRIX_COLS 12
38
39-/* define if matrix has ghost */
40-//#define MATRIX_HAS_GHOST
41-
42-/* number of backlight levels */
43-//#define BACKLIGHT_LEVELS 3
44-
45 #define ONESHOT_TIMEOUT 500
46
47+/*
48+ * Force NKRO
49+ *
50+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
51+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
52+ * makefile for this to work.)
53+ *
54+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
55+ * until the next keyboard reset.
56+ *
57+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
58+ * fully operational during normal computer usage.
59+ *
60+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
61+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
62+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
63+ * power-up.
64+ *
65+ */
66+//#define FORCE_NKRO
67+
68 /*
69 * Feature disable options
70 * These options are also useful to firmware size reduction.
71@@ -55,10 +68,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
72 //#define NO_ACTION_LAYER
73 //#define NO_ACTION_TAPPING
74 //#define NO_ACTION_ONESHOT
75-//#define NO_ACTION_MACRO
76-//#define NO_ACTION_FUNCTION
77
78-//UART settings for communication with the RF microcontroller
79+/* disable these deprecated features by default */
80+#define NO_ACTION_MACRO
81+#define NO_ACTION_FUNCTION
82+
83+// UART settings for communication with the RF microcontroller
84 #define SERIAL_UART_BAUD 1000000
85 #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
86 #define SERIAL_UART_INIT_CUSTOM \
87@@ -66,5 +81,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
88 UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
89 /* 8-bit data */ \
90 UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
91-
92-#endif
93diff --git a/keyboards/telophase/keymaps/default/keymap.c b/keyboards/telophase/keymaps/default/keymap.c
94index 9cc6c1bb00dfaf55de4bc9a3daf793de07edec6f..163f754d4378406f53f67248833aa4b30fdef429 100644
95--- a/keyboards/telophase/keymaps/default/keymap.c
96+++ b/keyboards/telophase/keymaps/default/keymap.c
97@@ -1,99 +1,55 @@
98-// this is the style you want to emulate.
99-// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
100+/*
101+Copyright 2021
102
103-#include QMK_KEYBOARD_H
104+This program is free software: you can redistribute it and/or modify
105+it under the terms of the GNU General Public License as published by
106+the Free Software Foundation, either version 2 of the License, or
107+(at your option) any later version.
108
109-// Each layer gets a name for readability, which is then used in the keymap matrix below.
110-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
111-// Layer names don't all need to be of the same length, obviously, and you can also skip them
112-// entirely and just use numbers.
113-enum telophase_layers
114-{
115- _QWERTY,
116- _LOWER,
117- _RAISE,
118- _ADJUST,
119-};
120+This program is distributed in the hope that it will be useful,
121+but WITHOUT ANY WARRANTY; without even the implied warranty of
122+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
123+GNU General Public License for more details.
124+
125+You should have received a copy of the GNU General Public License
126+along with this program. If not, see <http://www.gnu.org/licenses/>.
127+*/
128+
129+#include QMK_KEYBOARD_H
130
131-enum telophase_keycodes
132-{
133- LOWER = SAFE_RANGE,
134- RAISE,
135- ADJUST
136+enum layer_names {
137+ _QWERTY,
138+ _LOWER,
139+ _RAISE,
140+ _ADJUST
141 };
142
143 #define LONGPRESS_DELAY 150
144 #define LAYER_TOGGLE_DELAY 300
145
146 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
147-[_QWERTY] = { /*QWERTY*/
148- {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
149- {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
150- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
151- {KC_LCTL, KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT }
152-},
153-
154-
155-[_LOWER] = { /*Lower*/
156- {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
157- {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
158- {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______ },
159- {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }
160-},
161-
162-
163-
164-[_RAISE] = { /*Raise*/
165- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL },
166- {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
167- {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______ },
168- {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }
169-
170-},
171-
172-
173-[_ADJUST] = { /*Adjust*/
174- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
175- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
176- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
177- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
178-
179-},
180-};
181-
182-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
183- switch (keycode) {
184- case LOWER:
185- if (record->event.pressed) {
186- layer_on(_LOWER);
187- } else {
188- layer_off(_LOWER);
189- }
190- return false;
191- break;
192-
193- case RAISE:
194- if (record->event.pressed) {
195- layer_on(_RAISE);
196- } else {
197diff --git a/keyboards/telophase/matrix.c b/keyboards/telophase/matrix.c
198index bc7a125e076c3135743fecde8b86ab90e3c2ca22..a153dd4bf140e581e7e848d22b0d0cfef66d4e8e 100644
199--- a/keyboards/telophase/matrix.c
200+++ b/keyboards/telophase/matrix.c
201@@ -15,86 +15,18 @@ GNU General Public License for more details.
202 You should have received a copy of the GNU General Public License
203 along with this program. If not, see <http://www.gnu.org/licenses/>.
204 */
205-#include <stdint.h>
206-#include <stdbool.h>
207-#if defined(__AVR__)
208-#include <avr/io.h>
209-#endif
210-#include "wait.h"
211-#include "print.h"
212-#include "debug.h"
213-#include "util.h"
214+
215+#include "quantum.h"
216 #include "matrix.h"
217-#include "timer.h"
218 #include "protocol/serial.h"
219
220-#if (MATRIX_COLS <= 8)
221-# define print_matrix_header() print("\nr/c 01234567\n")
222-# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
223-# define matrix_bitpop(i) bitpop(matrix[i])
224-# define ROW_SHIFTER ((uint8_t)1)
225-#elif (MATRIX_COLS <= 16)
226-# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
227-# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
228-# define matrix_bitpop(i) bitpop16(matrix[i])
229-# define ROW_SHIFTER ((uint16_t)1)
230-#elif (MATRIX_COLS <= 32)
231-# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
232-# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
233-# define matrix_bitpop(i) bitpop32(matrix[i])
234-# define ROW_SHIFTER ((uint32_t)1)
235-#endif
236-
237-/* matrix state(1:on, 0:off) */
238-static matrix_row_t matrix[MATRIX_ROWS];
239-
240-__attribute__ ((weak))
241-void matrix_init_quantum(void) {
242- matrix_init_kb();
243-}
244-
245-__attribute__ ((weak))
246-void matrix_scan_quantum(void) {
247- matrix_scan_kb();
248-}
249-
250-__attribute__ ((weak))
251-void matrix_init_kb(void) {
252- matrix_init_user();
253-}
254-
255-__attribute__ ((weak))
256-void matrix_scan_kb(void) {
257- matrix_scan_user();
258-}
259-
260-__attribute__ ((weak))
261-void matrix_init_user(void) {
262-}
263-
264-__attribute__ ((weak))
265-void matrix_scan_user(void) {
266-}
267-
268-inline
269-uint8_t matrix_rows(void) {
270- return MATRIX_ROWS;
271-}
272-
273-inline
274-uint8_t matrix_cols(void) {
275- return MATRIX_COLS;
276-}
277-
278-void matrix_init(void) {
279-
280- matrix_init_quantum();
281+void matrix_init_custom(void) {
282 serial_init();
283 }
284
285-uint8_t matrix_scan(void)
286-{
287+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
288 uint32_t timeout = 0;
289+ bool changed = false;
290
291 //the s character requests the RF slave to send the matrix
292 SERIAL_UART_DATA = 's';
293@@ -107,9 +39,9 @@ uint8_t matrix_scan(void)
294 //wait for the serial data, timeout if it's been too long
295 //this only happened in testing with a loose wire, but does no
296 //harm to leave it in here
297- while(!SERIAL_UART_RXD_PRESENT){
298+ while (!SERIAL_UART_RXD_PRESENT) {
299 timeout++;
300- if (timeout > 10000){
301diff --git a/keyboards/telophase/readme.md b/keyboards/telophase/readme.md
302index 97bce57bb8e8d2a53b6033062bef207e86f1895b..26b623ca16d4b5549847980d03ff03e7553c3ecb 100644
303--- a/keyboards/telophase/readme.md
304+++ b/keyboards/telophase/readme.md
305@@ -1,16 +1,13 @@
306-Telophase
307-=========
308+# Telophase
309
310 A wireless split compact keyboard.
311
312-Hardware Supported: Telophase PCB
313diff --git a/keyboards/telophase/rules.mk b/keyboards/telophase/rules.mk
314index 614d90918102ff250a154e0edcda47a4f1ba61d8..d475836b7bdf4ce271619c6dc36a12bd3beefde5 100644
315--- a/keyboards/telophase/rules.mk
316+++ b/keyboards/telophase/rules.mk
317@@ -2,34 +2,27 @@
318 MCU = atmega32u4
319
320 # Bootloader selection
321-# Teensy halfkay
322-# Pro Micro caterina
323-# Atmel DFU atmel-dfu
324-# LUFA DFU lufa-dfu
325-# QMK DFU qmk-dfu
326-# ATmega32A bootloadHID
327-# ATmega328P USBasp
328 BOOTLOADER = caterina
329
330 # Build Options
331-# comment out to disable the options.
332+# change yes to no to disable
333 #
334-#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
335-MOUSEKEY_ENABLE = yes # Mouse keys
336-EXTRAKEY_ENABLE = yes # Audio control and System control
337-CONSOLE_ENABLE = yes # Console for debug
338-COMMAND_ENABLE = yes # Commands for debug and configuration
339-CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
340-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
341-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
342-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
343-# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
344-# MIDI_ENABLE = YES # MIDI controls
345-UNICODE_ENABLE = YES # Unicode
346-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
347+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
348+MOUSEKEY_ENABLE = yes # Mouse keys
349+EXTRAKEY_ENABLE = yes # Audio control and System control
350+CONSOLE_ENABLE = yes # Console for debug
351+COMMAND_ENABLE = yes # Commands for debug and configuration
352+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
353+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
354+NKRO_ENABLE = yes # USB Nkey Rollover
355+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
356+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
357+BLUETOOTH_ENABLE = no # Enable Bluetooth
358+AUDIO_ENABLE = no # Audio output
359+CUSTOM_MATRIX = lite
360
361-# # project specific files
362-SRC = matrix.c serial_uart.c
363+# project specific files
364+SRC += matrix.c serial_uart.c
365
366 # Disable unsupported hardware
367 RGBLIGHT_SUPPORTED = no
368diff --git a/keyboards/telophase/telophase.c b/keyboards/telophase/telophase.c
369index 7484551c919436124c70eaf5193431c8cea816e1..334cc7697b755ae3651321f8ad51c8d3496ec0c6 100644
370--- a/keyboards/telophase/telophase.c
371+++ b/keyboards/telophase/telophase.c
372@@ -1,26 +1,44 @@
373+/*
374+Copyright 2021
375+
376+This program is free software: you can redistribute it and/or modify
377+it under the terms of the GNU General Public License as published by
378+the Free Software Foundation, either version 2 of the License, or
379+(at your option) any later version.
380+
381+This program is distributed in the hope that it will be useful,
382+but WITHOUT ANY WARRANTY; without even the implied warranty of
383+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
384+GNU General Public License for more details.
385+
386+You should have received a copy of the GNU General Public License
387+along with this program. If not, see <http://www.gnu.org/licenses/>.
388+*/
389+
390 #include "telophase.h"
391
392 void led_init(void) {
393- DDRD |= (1<<1);
394- PORTD |= (1<<1);
395- DDRF |= (1<<4) | (1<<5);
396- PORTF |= (1<<4) | (1<<5);
397+ setPinOutput(D1);
398+ setPinOutput(F4);
399+ setPinOutput(F5);
400+ writePinHigh(D1);
401+ writePinHigh(F4);
402+ writePinHigh(F5);
403 }
404
405-
406 void matrix_init_kb(void) {
407- // put your keyboard start-up code here
408- // runs once when the firmware starts up
409- matrix_init_user();
410- led_init();
411+ // put your keyboard start-up code here
412+ // runs once when the firmware starts up
413+ matrix_init_user();
414+ led_init();
415 }
416
417 #ifdef SWAP_HANDS_ENABLE
418 __attribute__ ((weak))
419 const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
420-{{12, 0}, {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
421-{{12, 1}, {11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
422-{{12, 2}, {11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
423-{{12, 3}, {11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
424+ {{12, 0}, {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
425+ {{12, 1}, {11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
426+ {{12, 2}, {11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
427+ {{12, 3}, {11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}
428 };
429 #endif
430diff --git a/keyboards/telophase/telophase.h b/keyboards/telophase/telophase.h
431index 458ea35da727523d11597c7338dd1be40c59b87f..8ca6744176042cd9d98181634942f1ddc9bf3fde 100644
432--- a/keyboards/telophase/telophase.h
433+++ b/keyboards/telophase/telophase.h
434@@ -1,14 +1,30 @@
435-#ifndef TELOPHASE_H
436-#define TELOPHASE_H
437+/*
438+Copyright 2021
439+
440+This program is free software: you can redistribute it and/or modify
441+it under the terms of the GNU General Public License as published by
442+the Free Software Foundation, either version 2 of the License, or
443+(at your option) any later version.
444+
445+This program is distributed in the hope that it will be useful,
446+but WITHOUT ANY WARRANTY; without even the implied warranty of
447+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
448+GNU General Public License for more details.
449+
450+You should have received a copy of the GNU General Public License
451+along with this program. If not, see <http://www.gnu.org/licenses/>.
452+*/
453+
454+#pragma once
455
456 #include "quantum.h"
457
458-#define red_led_off PORTF |= (1<<5)
459-#define red_led_on PORTF &= ~(1<<5)
460-#define blu_led_off PORTF |= (1<<4)
461-#define blu_led_on PORTF &= ~(1<<4)
462-#define grn_led_off PORTD |= (1<<1)
463-#define grn_led_on PORTD &= ~(1<<1)
464+#define red_led_off writePinHigh(F5)
465+#define red_led_on writePinLow(F5)
466+#define blu_led_off writePinHigh(F4)
467+#define blu_led_on writePinLow(F4)
468+#define grn_led_off writePinHigh(D1)
469+#define grn_led_on writePinLow(D1)
470
471 #define set_led_off red_led_off; grn_led_off; blu_led_off
472 #define set_led_red red_led_on; grn_led_off; blu_led_off
473@@ -19,46 +35,19 @@
474 #define set_led_cyan red_led_off; grn_led_on; blu_led_on
475 #define set_led_white red_led_on; grn_led_on; blu_led_on
476
477-/*
478-#define LED_B 5
479-#define LED_R 6
480-#define LED_G 7
481-
482-#define all_leds_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
483-
484-#define red_led_on PORTF |= (1<<LED_R)
485-#define red_led_off PORTF &= ~(1<<LED_R)
486-#define grn_led_on PORTF |= (1<<LED_G)
487-#define grn_led_off PORTF &= ~(1<<LED_G)
488-#define blu_led_on PORTF |= (1<<LED_B)
489-#define blu_led_off PORTF &= ~(1<<LED_B)
490-
491-#define set_led_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
492-#define set_led_red PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_G) | (1<<LED_R)
493-#define set_led_blue PORTF = PORTF & ~(1<<LED_G) & ~(1<<LED_R) | (1<<LED_B)
494-#define set_led_green PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_R) | (1<<LED_G)
495-#define set_led_yellow PORTF = PORTF & ~(1<<LED_B) | (1<<LED_R) | (1<<LED_G)
496-#define set_led_magenta PORTF = PORTF & ~(1<<LED_G) | (1<<LED_R) | (1<<LED_B)
497-#define set_led_cyan PORTF = PORTF & ~(1<<LED_R) | (1<<LED_B) | (1<<LED_G)
498-#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
499-*/
500-
501 // This a shortcut to help you visually see your layout.
502 // The first section contains all of the arguements
503 // The second converts the arguments into a two-dimensional array
504 #define LAYOUT_ortho_4x12( \
505- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
506- k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
507- k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \
508- k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 \
509-) \
510-{ \
511- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11 }, \
512- { k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23 }, \
513- { k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35 }, \
514- { k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 }, \
515+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
516+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
517+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
518+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
519+) { \
520+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
521+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
522+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
523+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
524 }
525
526 #define LAYOUT LAYOUT_ortho_4x12
527-
528-#endif