From 26b0526b4575c1e40b577cc1f9295f31ad7d1527 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 9 Jun 2023 12:02:57 -0400 Subject: [PATCH 01/37] fetch of upstearm --- lib/chibios | 2 +- lib/chibios-contrib | 2 +- lib/googletest | 2 +- lib/lufa | 2 +- lib/pico-sdk | 2 +- lib/printf | 2 +- lib/vusb | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/chibios b/lib/chibios index 11edb161098..ffe54d63cb1 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51 +Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd diff --git a/lib/chibios-contrib b/lib/chibios-contrib index a224be155ae..61baa6b0361 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit a224be155ae18d38deccf33a6c1d259b9a5ad8d3 +Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243 diff --git a/lib/googletest b/lib/googletest index e2239ee6043..ec44c6c1675 160000 --- a/lib/googletest +++ b/lib/googletest @@ -1 +1 @@ -Subproject commit e2239ee6043f73722e7aa812a459f54a28552929 +Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 diff --git a/lib/lufa b/lib/lufa index 549b97320d5..ce10f7642b0 160000 --- a/lib/lufa +++ b/lib/lufa @@ -1 +1 @@ -Subproject commit 549b97320d515bfca2f95c145a67bd13be968faa +Subproject commit ce10f7642b0459e409839b23cc91498945119b4d diff --git a/lib/pico-sdk b/lib/pico-sdk index a3398d8d3a7..07edde8e498 160000 --- a/lib/pico-sdk +++ b/lib/pico-sdk @@ -1 +1 @@ -Subproject commit a3398d8d3a772f37fef44a74743a1de69770e9c2 +Subproject commit 07edde8e49890d2172bbc272aacc119f999df063 diff --git a/lib/printf b/lib/printf index c2e3b4e10d2..d3b984684bb 160000 --- a/lib/printf +++ b/lib/printf @@ -1 +1 @@ -Subproject commit c2e3b4e10d281e7f0f694d3ecbd9f320977288cc +Subproject commit d3b984684bb8a8bdc48cc7a1abecb93ce59bbe3e diff --git a/lib/vusb b/lib/vusb index 819dbc1e5d5..bdb53e4c043 160000 --- a/lib/vusb +++ b/lib/vusb @@ -1 +1 @@ -Subproject commit 819dbc1e5d5926b17e27e00ca6d3d2988adae04e +Subproject commit bdb53e4c043d089279d9891b68bea77614cb97ee From aea1b355eada99a7db02215f83118cb1613beb1c Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 9 Jun 2023 12:29:41 -0400 Subject: [PATCH 02/37] initial stuff for f62 --- .../model_f_labs/f62/keymaps/default/config.h | 19 + .../model_f_labs/f62/keymaps/default/keymap.c | 87 ++ .../f62/keymaps/default/readme.md | 3 + .../model_f_labs/f62/keymaps/via/config.h | 7 + .../model_f_labs/f62/keymaps/via/keymap.c | 92 ++ .../model_f_labs/f62/keymaps/via/rules.mk | 4 + ...sgin_model-f-labs_f62_via_all_keys_v3.json | 22 + keyboards/model_f_labs/f62/wcass/config.h | 190 ++++ keyboards/model_f_labs/f62/wcass/info.json | 10 + keyboards/model_f_labs/f62/wcass/readme.md | 15 + keyboards/model_f_labs/f62/wcass/rules.mk | 55 ++ keyboards/model_f_labs/f62/wcass/wcass.c | 58 ++ keyboards/model_f_labs/f62/wcass/wcass.h | 341 +++++++ keyboards/model_f_labs/post_config.h | 71 ++ .../model_f_labs/xwhatsit_capsense_matrix.c | 888 ++++++++++++++++++ .../model_f_labs/xwhatsit_capsense_matrix.h | 69 ++ keyboards/model_f_labs/xwhatsit_util_comm.c | 228 +++++ keyboards/model_f_labs/xwhatsit_util_comm.h | 66 ++ 18 files changed, 2225 insertions(+) create mode 100644 keyboards/model_f_labs/f62/keymaps/default/config.h create mode 100644 keyboards/model_f_labs/f62/keymaps/default/keymap.c create mode 100644 keyboards/model_f_labs/f62/keymaps/default/readme.md create mode 100644 keyboards/model_f_labs/f62/keymaps/via/config.h create mode 100644 keyboards/model_f_labs/f62/keymaps/via/keymap.c create mode 100644 keyboards/model_f_labs/f62/keymaps/via/rules.mk create mode 100644 keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json create mode 100644 keyboards/model_f_labs/f62/wcass/config.h create mode 100644 keyboards/model_f_labs/f62/wcass/info.json create mode 100644 keyboards/model_f_labs/f62/wcass/readme.md create mode 100644 keyboards/model_f_labs/f62/wcass/rules.mk create mode 100644 keyboards/model_f_labs/f62/wcass/wcass.c create mode 100644 keyboards/model_f_labs/f62/wcass/wcass.h create mode 100644 keyboards/model_f_labs/post_config.h create mode 100644 keyboards/model_f_labs/xwhatsit_capsense_matrix.c create mode 100644 keyboards/model_f_labs/xwhatsit_capsense_matrix.h create mode 100644 keyboards/model_f_labs/xwhatsit_util_comm.c create mode 100644 keyboards/model_f_labs/xwhatsit_util_comm.h diff --git a/keyboards/model_f_labs/f62/keymaps/default/config.h b/keyboards/model_f_labs/f62/keymaps/default/config.h new file mode 100644 index 00000000000..c58310fa6b3 --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/model_f_labs/f62/keymaps/default/keymap.c b/keyboards/model_f_labs/f62/keymaps/default/keymap.c new file mode 100644 index 00000000000..db7b5f7c804 --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/default/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2022 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * ----- + * Based on F62_-_HHKB_-_Split_Backspace.json from Joe of Model F Labs + */ +/* all + * - Base + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │ ` │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │Lctl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │Lsft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Rsft │Fn1│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │Caps │GUI│Lalt │ Space │ │Ratl │Nlk│Rctl │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + * - FN1 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Ins│Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │ │ │ │ │ │Psc│Skl│Pau│Up │ │Del │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │ │Vo-│Vo+│Mut│Ejc│ │Kp*│Kp/│Hom│PGu│Lef│Rgh│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │ │ │ │ │ │ │ │Kp+│Kp-│End│PGd│Dow│ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │ │ │ │ Fn2 │ │ │ │ │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + * - FN2 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │Dl-│Dl+│ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │Epr│Res│HPt│ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │ │ │ │Deb│ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_BSLS, KC_GRV, + 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_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + 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, MO(_FN1), + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL + ), + [_FN1] = LAYOUT_all( + KC_GRV, 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_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, MO(_FN2), _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, HF_DWLD,HF_DWLU, _______, _______, + _______, _______, _______, EE_CLR, QK_BOOT, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/model_f_labs/f62/keymaps/default/readme.md b/keyboards/model_f_labs/f62/keymaps/default/readme.md new file mode 100644 index 00000000000..1efa0d73969 --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# A keymap for model_f_labs/f62/$(CONTROLLER) + +Keymap for the HHKB Split Shift and Split Backspace. diff --git a/keyboards/model_f_labs/f62/keymaps/via/config.h b/keyboards/model_f_labs/f62/keymaps/via/config.h new file mode 100644 index 00000000000..97c6bedfb1d --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/via/config.h @@ -0,0 +1,7 @@ +#undef BOOTMAGIC_ENABLE +#undef BOOTMAGIC_LITE + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + diff --git a/keyboards/model_f_labs/f62/keymaps/via/keymap.c b/keyboards/model_f_labs/f62/keymaps/via/keymap.c new file mode 100644 index 00000000000..1677f6344b7 --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/via/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2022 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +/* all + * - Base + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │ ` │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │Lctl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │Lsft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Rsft │Fn1│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │Caps │GUI│Lalt │ Space │ │Ratl │Nlk│Rctl │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + * - FN1 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Ins│Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │ │ │ │ │ │Psc│Skl│Pau│Up │ │Del │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │ │Vo-│Vo+│Mut│Ejc│ │Kp*│Kp/│Hom│PGu│Lef│Rgh│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │ │ │ │ │ │ │ │Kp+│Kp-│End│PGd│Dow│ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │ │ │ │ Fn2 │ │ │ │ │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + * - FN2 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │Dl-│Dl+│ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ │ │ │Epr│Res│HPt│ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │ │ │ │Deb│ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_BSLS, KC_GRV, + 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_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + 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, MO(_FN1), + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL + ), + [_FN1] = LAYOUT_all( + KC_GRV, 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_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, MO(_FN2), _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, HF_DWLD,HF_DWLU, _______, _______, + _______, _______, _______, EE_CLR, QK_BOOT, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/model_f_labs/f62/keymaps/via/rules.mk b/keyboards/model_f_labs/f62/keymaps/via/rules.mk new file mode 100644 index 00000000000..48c854316a1 --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes + +SRC = ../xwhatsit_capsense_matrix.c diff --git a/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json b/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json new file mode 100644 index 00000000000..bd29b1222df --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json @@ -0,0 +1,22 @@ + +{ + "name": "Model F Labs F62", + "vendorId": "0x1209", + "productId": "0x6262", + "matrix": { "rows": 8, "cols": 9 }, + "layouts": { + "labels": [ + "Split Backspace",["Split Right Shift","No Split","HHKB Split","Non-HHKB Split"],["Enter","ANSI Enter", "Tie Enter","ISO Enter"],"Split Space","Split Left Shift (ISO)" + ], + "keymap": [ + [{"x":2.5},"4,0","6,0","6,1","4,2","6,2","4,3","6,3","4,4","6,4","4,5","6,5","4,6","6,6",{"w":2},"6,7\n\n\n0,0",{"x":0.25},"4,7\n\n\n0,1","6,7\n\n\n0,1"], + [{"x":2.5,"w":1.5},"5,0","4,1","5,1","7,2","5,2","7,3","5,3","7,4","5,4","7,5","5,5","5,6","5,7",{"w":1.5},"7,7\n\n\n2,0",{"x":1,"w":1.5},"7,7\n\n\n2,1",{"x":1.75,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"2,7\n\n\n2,2"], + [{"x":2.5,"w":1.75},"7,0","7,1","2,1","0,2","2,2","0,3","2,3","2,4","0,4","0,5","2,5","2,6",{"w":2.25},"2,7\n\n\n2,0",{"x":0.25},"7,6\n\n\n2,1",{"w":1.25},"2,7\n\n\n2,1",{"x":0.75},"7,6\n\n\n2,2"], + [{"w":1.25},"2,0\n\n\n4,1","0,0\n\n\n4,1",{"x":0.25,"w":2.25},"2,0\n\n\n4,0","1,1","0,1","1,2","3,2","1,3","1,4","3,4","3,5","1,5","0,6",{"w":2.75},"1,7\n\n\n1,0",{"x":0.25,"w":1.75},"0,7\n\n\n1,1","1,7\n\n\n1,1",{"x":0.25},"0,7\n\n\n1,2",{"w":1.75},"1,7\n\n\n1,2"], + [{"x":2.5,"w":1.5},"3,0","1,0",{"w":1.5},"3,1",{"w":7},"3,3\n\n\n3,0",{"w":1.5},"1,6","3,7",{"w":1.5},"3,8"], + [{"y":0.25,"x":6.5,"w":5.5},"3,3\n\n\n3,1",{"w":1.5},"3,6\n\n\n3,1"] + ] + } +} + + diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h new file mode 100644 index 00000000000..111eadcfc85 --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -0,0 +1,190 @@ +/* +Copyright 2020 Purdea Andrei +Copyright 2021-2022 Matthew J Wolf + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#include "config_common.h" + +/* USB Device descriptor parameter */ +// #define VENDOR_ID 0xFEED +// #define PRODUCT_ID 0X0F62 +// #xdefine DEVICE_VER 0x0001 +// #define MANUFACTURER Model F Labs +// #define PRODUCT Reproduction IBM F62 Keyboard +// DESCRIPTION is no longer an option +//#define DESCRIPTION Tom Wong-Cornall/Ellipse/wcass/Purdea Andrei + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 9 +// Note: physical column are 16, but only 11 are ever used. Column 0..9 match the physical column. Column 10 is physical column 15. + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 + +#define HOLD_ON_OTHER_KEY_PRESS + +/* XWHATSIT CONTROLLER TYPE */ +#define CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F + +#define CAPSENSE_KEYBOARD_SETTLE_TIME_US 8 +#define CAPSENSE_DAC_SETTLE_TIME_US 8 +#define CAPSENSE_HARDCODED_SAMPLE_TIME 4 + +#define CAPSENSE_CAL_ENABLED 1 +// #define CAPSENSE_CAL_ENABLED 0 +// #define CAPSENSE_CAL_DEBUG 1 +#define CAPSENSE_CAL_DEBUG 0 +#define CAPSENSE_CAL_INIT_REPS 16 +#define CAPSENSE_CAL_EACHKEY_REPS 16 +#define CAPSENSE_CAL_BINS 5 +#define CAPSENSE_CAL_THRESHOLD_OFFSET 24 + +#if !CAPSENSE_CAL_ENABLED +#define CAPSENSE_HARDCODED_THRESHOLD 142 +#endif + +#define CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col) (((col) == 8)?15:(col)) + +// By default we set up for support of xwhatsit's solenoid driver board. +// Comment out HAPTIC_ENABLE_PIN if you don't have an enable pin: +#define HAPTIC_ENABLE_PIN B7 +// We disable haptic feedbeck during USB low power conditions: +#define HAPTIC_OFF_IN_LOW_POWER 1 +// Change this if you are using a different pin for the solenoid: +#define SOLENOID_PIN B6 +// If you are not using a solenoid then comment out the above, and also in rules.mk, remove "HAPTIC_ENABLE += SOLENOID" +// You can also tune the following for your solenoid: +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +//#define SOLENOID_MAX_DWELL 100 +#define NO_HAPTIC_MOD + +// If the lock lights are not used, then please don't define the below pins, +// or leave them set as unused pins: + +// The following definitions match the lock lights as used by the original +// xwhatsit firmware, but enabling all three of these is not compatible with +// standard solenoid support, because B6 and B7 pins are already in use: +//#define LED_NUM_LOCK_PIN B5 +//#define LED_CAPS_LOCK_PIN B6 +//#define LED_SCROLL_LOCK_PIN B4 +// Since solenoid support is enabled by default, the above lock light pin +// assignments are disabled by default. +// Instead the more common Num Lock and Caps Lock are assigned the following +// way by default, and this can be used in combination with the solenoid: +#define LED_NUM_LOCK_PIN B4 +#define LED_CAPS_LOCK_PIN B5 + +// Uncomment below if the leds are on when the pin is driving zero: +//#define LED_NUM_LOCK_ACTIVE_LOW +//#define LED_CAPS_LOCK_ACTIVE_LOW +//#define LED_SCROLL_LOCK_ACTIVE_LOW + +#include "../../post_config.h" + + +// ----- xwhatsit hardware configuration (type_f) ----- + +#define CAPSENSE_DAC_SCLK B1 +#define CAPSENSE_DAC_DIN B2 +#define CAPSENSE_DAC_SYNC_N B0 +#define CAPSENSE_DAC_MAX 1023 + +#define CAPSENSE_SHIFT_DIN D4 +#define CAPSENSE_SHIFT_OE D5 +#define CAPSENSE_SHIFT_SHCP D7 +#define CAPSENSE_SHIFT_STCP D6 +#define CAPSENSE_SHIFT_STCP_IO _SFR_IO_ADDR(PORTD) +#define CAPSENSE_SHIFT_STCP_BIT 6 + +#define SETUP_ROW_GPIOS() \ + do { \ + PORTC |= 0xF0; \ + PORTD |= 0x0F; \ + } while (0) + +#if 1 +#define SETUP_UNUSED_PINS() do {} while (0) +#else +// TODO ENABLE THIS ONCE TESTED +#define SETUP_UNUSED_PINS() \ + do { \ + PORTB |= ~(DDRB | 0x07); \ + PORTC |= ~(DDRC | 0xf3); \ + PORTD |= ~(DDRD | 0xff); \ + } while (0) +#endif + +#define CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE 2 +#define CAPSENSE_READ_ROWS_PIN_1 _SFR_IO_ADDR(PINC) +#define CAPSENSE_READ_ROWS_PIN_2 _SFR_IO_ADDR(PIND) +#define CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "in %[dest_row_1], %[ioreg_row_1]\n\tin %[dest_row_2], %[ioreg_row_2]" +#define CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS \ + "st %a[arr]+, %[dest_row_1]" "\n\t" \ + "st %a[arr]+, %[dest_row_2]" +#define CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS_FAKE \ + "st %a[arr], %[dest_row_1]" "\n\t" \ + "st %a[arr], %[dest_row_2]" +#define CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS [dest_row_1] "=&r" (dest_row_1), [dest_row_2] "=&r" (dest_row_2) +#define CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS [ioreg_row_1] "I" (CAPSENSE_READ_ROWS_PIN_1), [ioreg_row_2] "I" (CAPSENSE_READ_ROWS_PIN_2) +#define CAPSENSE_READ_ROWS_LOCAL_VARS uint8_t dest_row_1, dest_row_2 +#define CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY do { dest_row_1 = array[p0++]; dest_row_2 = array[p0++]; } while (0) + +/* +#ifndef CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL + #define CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col) (col) +#endif +*/ + +#if (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS)) && (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS)) + #define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS +#endif +#define CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row) (7-(row)) +#define CAPSENSE_PHYSICAL_ROW_TO_KEYMAP_ROW(row) (7-(row)) +#define CAPSENSE_READ_ROWS_VALUE ((dest_row_1 >> 4) | (dest_row_2 << 4)) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json new file mode 100644 index 00000000000..cb6257383ec --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Reproduction IBM F62 Keyboard", + "manufacturer": "Model F Labs", + "url": "https://www.modelfkeyboards.com/", + "usb": { + "vid": "0x1209", + "pid": "0x6262", + "device_version": "0.0.1" + } +} diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md new file mode 100644 index 00000000000..f01ab47ed20 --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -0,0 +1,15 @@ +# model_f_labs/f62/wcass + +![model_f_labs/f62/wcass](https://www.modelfkeyboards.com/wp-content/uploads/2019/11/F62-F77-new.jpg) + +A short description of the keyboard/project + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: Supports the brand new Model F reproductions from https://www.modelfkeyboards.com/, using the smaller xwhatsit controller developed by wcass. +* Hardware Availability: https://www.modelfkeyboards.com/ + +Make example for this keyboard (after setting up your build environment): + + make model_f_labs/f62/wcass:default + +See 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). diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk new file mode 100644 index 00000000000..b593d3f6758 --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -0,0 +1,55 @@ +# Copyright 2020 Purdea Andrei +# Copyright 2021-2022 Matthew J Wolf +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# MCU name +MCU = atmega32u2 + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs +RAW_ENABLE = yes +LTO_ENABLE = yes # Link Time Optimization - reduces file size +HAPTIC_ENABLE = yes +HAPTIC_DRIVER = SOLENOID + +CUSTOM_MATRIX=lite +SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c diff --git a/keyboards/model_f_labs/f62/wcass/wcass.c b/keyboards/model_f_labs/f62/wcass/wcass.c new file mode 100644 index 00000000000..08c8b2f5711 --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/wcass.c @@ -0,0 +1,58 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wcass.h" + +const char *KEYBOARD_FILENAME = __FILE__; // used by util_comm + +void keyboard_post_init_kb(void) +{ +// debug_enable=true; +// debug_matrix=true; +} + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +/* +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +bool led_update_kb(led_t led_state) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + return led_update_user(led_state); +} +*/ diff --git a/keyboards/model_f_labs/f62/wcass/wcass.h b/keyboards/model_f_labs/f62/wcass/wcass.h new file mode 100644 index 00000000000..6e86efbd22a --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/wcass.h @@ -0,0 +1,341 @@ +/* Copyright 2020 Purdea Andrei + * Copyright 2022 Matthew Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* + * ┌───────┐ + * 2U Backspace │ K0E│ + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│K2D │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K44 │K45 │K46│K47 │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + * ┌───────────────────────────┐ ┌────────┐ + * Full Size Space │K43 │ │ K2D│ ANSI Enter + * └───────────────────────────┘ └────────┘ + * ┌──────────────────────┐ ┌─────┐ + * Short Space Bar │K43 │ │ │ ISO Enter + * └──────────────────────┘ ┌──┴┐ │ + * │K2C│ K2D│ + * ┌────────┐ ┌─┴───┴────┤ + * │K30 │ 2.25 LShift │ K3D│ 2.75 RShift + * └────────┘ └──────────┘ + */ + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// Note: unused columns 8..14 are not listed here. Column 15 is listed here as column 8 +// Note arguments representing the layout are named based on default F77 hhkb split backspace configuration, for other layouts argument naming might not make much sense +// This was done for ease of implementation. + +/* all + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│K2D │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K44 │K45 │K46│K47 │ + * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ + */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47\ +) \ +{ \ + { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, K44, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, K2C, K1D, ___}\ +} +/* + * ansi_regular_shift_regular_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_ansi_regular_shift_regular_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { ___, K33, K23, K25, K28, K29, K3B, ___, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ +} +/* + * ansi_regular_shift_split_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_ansi_regular_shift_split_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { ___, K33, K23, K25, K28, K29, K3B, ___, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ +} +/* + * ansi_split_shift_regular_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_ansi_split_shift_regular_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { ___, K33, K23, K25, K28, K29, K3B, K3C, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ +} +/* + * ansi_split_shift_split_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_ansi_split_shift_split_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { ___, K33, K23, K25, K28, K29, K3B, K3C, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ +} +/* + * iso_regular_shift_regular_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_iso_regular_shift_regular_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { K31, K33, K23, K25, K28, K29, K3B, ___, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ +} +/* + * iso_regular_shift_split_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_iso_regular_shift_split_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { K31, K33, K23, K25, K28, K29, K3B, ___, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ +} +/* + * iso_split_shift_regular_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_iso_split_shift_regular_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ +} +/* + * iso_split_shift_split_backspace + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │K40 │K41│K42 │K43 │K45 │K46│K47 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ +#define LAYOUT_iso_split_shift_split_backspace( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ + K40, K41, K42, K43, K45, K46, K47\ +) \ +{ \ + { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ + { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ + { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ + { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ + { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ + { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ + { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ + { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ +} diff --git a/keyboards/model_f_labs/post_config.h b/keyboards/model_f_labs/post_config.h new file mode 100644 index 00000000000..5eb93af8b25 --- /dev/null +++ b/keyboards/model_f_labs/post_config.h @@ -0,0 +1,71 @@ +/* Copyright 2020 Purdea Andrei + * Copyright 2021 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// This file should be included at the end of each keyboard-specific config.h + +#pragma once + +#ifndef MATRIX_CAPSENSE_ROWS +# ifdef MATRIX_EXTRA_DIRECT_ROWS +# define MATRIX_CAPSENSE_ROWS (MATRIX_ROWS - MATRIX_EXTRA_DIRECT_ROWS) +# ifndef MATRIX_EXTRA_DIRECT_COLS +# define MATRIX_EXTRA_DIRECT_COLS MATRIX_COLS +# endif +# else +# define MATRIX_CAPSENSE_ROWS MATRIX_ROWS +# endif +#endif + +#ifndef CAPSENSE_CAL_INIT_REPS +# define CAPSENSE_CAL_INIT_REPS 16 +#endif +#ifndef CAPSENSE_CAL_EACHKEY_REPS +# define CAPSENSE_CAL_EACHKEY_REPS 16 +#endif + +// Testing Options + +#ifndef CAPSENSE_KEYBOARD_SETTLE_TIME_US +# error "Please define CAPSENSE_KEYBOARD_SETTLE_TIME_US in config.h" +#endif +#ifndef CAPSENSE_DAC_SETTLE_TIME_US +# error "Please define CAPSENSE_DAC_SETTLE_TIME_US in config.h" +#endif +#ifndef CAPSENSE_HARDCODED_SAMPLE_TIME +# error "Please define CAPSENSE_HARDCODED_SAMPLE_TIME in config.h" +#endif + +#ifndef CAPSENSE_CAL_ENABLED +# error "Please define CAPSENSE_CAL_ENABLED as 1/0 in config.h" +#endif +#ifndef CAPSENSE_CAL_DEBUG +# error "Please define CAPSENSE_CAL_DEBUG as 1/0 in config.h" +#endif +#ifndef CAPSENSE_CAL_BINS +# error "Please define CAPSENSE_CAL_BINS in config.h" +#endif +#ifndef CAPSENSE_CAL_THRESHOLD_OFFSET +# error "Please define CAPSENSE_CAL_THRESHOLD_OFFSET in config.h" +#endif + +// #if (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS)) && (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS)) +// # error "Please specify whether the flyplate is pushed down or pulled up on keypress!" +// #endif + +#if defined(KEYBOARD_SHARED_EP) && defined(RAW_ENABLE) + #error "Enabling the KEYBOARD_SHARED_EP will make the util be unable to communicate with the firmware, because due to hidapi limiations, the util can't figure out which interface to talk to, so it hardcodes interface zero." +#endif diff --git a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c new file mode 100644 index 00000000000..81bd4602e08 --- /dev/null +++ b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c @@ -0,0 +1,888 @@ +/* Copyright 2020 Purdea Andrei + * Copyright 2021-2022 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" +#include "xwhatsit_capsense_matrix.h" +#include + +/* Notes on Expansion Header: + +Pinout: +--1--O O--2-- +--3--O O--4-- +--5--O O--6-- + +Pin 1 is always VCC +Pin 6 in always GND + +When using xwhatsit's solenoid controller board, +pin 2 is connected to the ENABLE input of the current +limiter, and pin 4 drives the solenoid. + +On original xwhatsit controllers: +pin 2 = PB7 +pin 3 = PB4 +pin 4 = PB6 +pin 5 = PB5 + +On the TH xwhatsit controller: +pin 2 = HEADER3 = TXO = PD3 +pin 3 = HEADER1 = D(igital)6 = PD7 +pin 4 = HEADER4 = RXI = PD2 +pin 5 = HEADER2 = D(igital)7 = PE6 +*/ + +static inline uint8_t read_rows(void) +{ + CAPSENSE_READ_ROWS_LOCAL_VARS; + asm volatile (CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS : CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS : CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS); + return CAPSENSE_READ_ROWS_VALUE; +} + + +#if defined(CAPSENSE_DAC_MCP4921) + +void dac_init(void) +{ + writePin(CAPSENSE_DAC_NCS, 1); + setPinOutput(CAPSENSE_DAC_NCS); + setPinOutput(CAPSENSE_DAC_SCK); + setPinOutput(CAPSENSE_DAC_SDI); + writePin(CAPSENSE_DAC_NCS, 1); + writePin(CAPSENSE_DAC_SCK, 0); + writePin(CAPSENSE_DAC_SDI, 0); +} + +void dac_write_threshold(uint16_t value) +{ + const uint16_t buffered = 0; + value |= 1 << nSHDN_BIT; // nSHDN = 0 -- make sure output is not floating. + value |= MCP_DAC_GAIN_1X << nGA_BIT; + value |= buffered << BUF_BIT; + + writePin(CAPSENSE_DAC_NCS, 0); + int i; + for (i=0;i<16;i++) + { + writePin(CAPSENSE_DAC_SDI, (value >> 15) & 1); + value <<= 1; + writePin(CAPSENSE_DAC_SCK, 1); + writePin(CAPSENSE_DAC_SCK, 0); + } + writePin(CAPSENSE_DAC_NCS, 1); + wait_us(CAPSENSE_DAC_SETTLE_TIME_US); +} + +#else + +void dac_init(void) +{ + setPinOutput(CAPSENSE_DAC_SCLK); + setPinOutput(CAPSENSE_DAC_DIN); + setPinOutput(CAPSENSE_DAC_SYNC_N); + writePin(CAPSENSE_DAC_SYNC_N, 1); + writePin(CAPSENSE_DAC_SCLK, 0); + writePin(CAPSENSE_DAC_SCLK, 1); + writePin(CAPSENSE_DAC_SCLK, 0); +} + +void dac_write_threshold(uint16_t value) +{ + value <<= 2; // The two LSB bits of this DAC are don't care. + writePin(CAPSENSE_DAC_SYNC_N, 0); + int i; + for (i=0;i<16;i++) + { + writePin(CAPSENSE_DAC_DIN, (value >> 15) & 1); + value <<= 1; + writePin(CAPSENSE_DAC_SCLK, 1); + writePin(CAPSENSE_DAC_SCLK, 0); + } + writePin(CAPSENSE_DAC_SYNC_N, 1); + writePin(CAPSENSE_DAC_SCLK, 1); + writePin(CAPSENSE_DAC_SCLK, 0); + wait_us(CAPSENSE_DAC_SETTLE_TIME_US); +} + +#endif + +/* +#define SHIFT_BITS (((CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(MATRIX_COLS - 1) >= 16) || \ + (CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(0) >= 16)) ? 24 : 16) +*/ + +inline int shift_bits(void) +{ + return (((CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(MATRIX_COLS - 1) >= 16) || \ + (CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(0) >= 16)) ? 24 : 16 ); +} + +void shift_select_nothing(void) +{ + writePin(CAPSENSE_SHIFT_DIN, 0); + int i; + for (i=0;i=0; i--) + //for (i=SHIFT_BITS-1; i>=0; i--) + { + writePin(CAPSENSE_SHIFT_DIN, (data >> (shift_bits() - 1)) & 1); + //writePin(CAPSENSE_SHIFT_DIN, (data >> (SHIFT_BITS - 1)) & 1); + writePin(CAPSENSE_SHIFT_SHCP, 1); + if (!((i == 0) && (shcp_idle))) { + writePin(CAPSENSE_SHIFT_SHCP, 0); + } + data <<= 1; + } + writePin(CAPSENSE_SHIFT_STCP, 1); + if (!stcp_idle) { + writePin(CAPSENSE_SHIFT_STCP, 0); + } + writePin(CAPSENSE_SHIFT_DIN, !!data_idle); +} + +void shift_select_col_no_strobe(uint8_t col) +{ + int i; + for (i=shift_bits()-1; i>=0; i--) + // for (i=SHIFT_BITS-1; i>=0; i--) + { + writePin(CAPSENSE_SHIFT_DIN, !!(col == i)); + writePin(CAPSENSE_SHIFT_SHCP, 1); + writePin(CAPSENSE_SHIFT_SHCP, 0); + } +} + +static inline void shift_select_col(uint8_t col) +{ + shift_select_col_no_strobe(col); + writePin(CAPSENSE_SHIFT_STCP, 1); + writePin(CAPSENSE_SHIFT_STCP, 0); +} + +void shift_init(void) +{ + setPinOutput(CAPSENSE_SHIFT_DIN); + setPinOutput(CAPSENSE_SHIFT_OE); + setPinOutput(CAPSENSE_SHIFT_STCP); + setPinOutput(CAPSENSE_SHIFT_SHCP); + writePin(CAPSENSE_SHIFT_OE, 0); + writePin(CAPSENSE_SHIFT_STCP, 0); + writePin(CAPSENSE_SHIFT_SHCP, 0); + shift_select_nothing(); + wait_us(CAPSENSE_KEYBOARD_SETTLE_TIME_US); +} + +// Timing: +// IN instructions (1 * CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE) +// Store to array instructions (2 * number of bytes) +// adiw: 1 cycle +// cp: 1 cycle +// cpc: 1 cycle +// brlo: 2 cycles (when jumping) +// --- Total loop length: +// 3 * CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 5 cycles +// first sample elements will be taken after [1..CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE-1] cycles +// second sample elements will be taken after +// [3 * CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 5 + 1.. +// 3 * CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 5 + CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE-1] cycles + +// the following function requires storage for CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE * (time + 1) bytes +// but returns valid data only in the first (time + 1) bytes +void test_multiple(uint8_t col, uint16_t time, uint8_t *array) +{ + shift_select_col_no_strobe(col); + uint16_t index; + CAPSENSE_READ_ROWS_LOCAL_VARS; + uint8_t *arrayp = array; + asm volatile ( + "ldi %A[index], 0" "\n\t" + "ldi %B[index], 0" "\n\t" + "cli" "\n\t" + "sbi %[stcp_regaddr], %[stcp_bit]" "\n\t" + "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" + CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" + "adiw %A[index], 0x01" "\n\t" + "cp %A[index], %A[time]" "\n\t" + "cpc %B[index], %B[time]" "\n\t" + "brlo 1b" "\n\t" + "sei" "\n\t" + "cbi %[stcp_regaddr], %[stcp_bit]" "\n\t" + : [arr] "=e" (arrayp), + [index] "=&w" (index), + CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS + : [time] "r" (time + 1), + [stcp_regaddr] "I" (CAPSENSE_SHIFT_STCP_IO), + [stcp_bit] "I" (CAPSENSE_SHIFT_STCP_BIT), + CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, + "0" (arrayp) + : "memory" ); + uint16_t i, p0, p1; + p0 = p1 = 0; + for (i=0; i<=time; i++) + { + CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY; + array[p1++] = CAPSENSE_READ_ROWS_VALUE; + } + shift_select_nothing(); + wait_us(CAPSENSE_KEYBOARD_SETTLE_TIME_US); +} + +uint8_t test_single(uint8_t col, uint16_t time, uint8_t *interference_ptr) +{ + shift_select_col_no_strobe(col); + uint16_t index; + CAPSENSE_READ_ROWS_LOCAL_VARS; + uint8_t array[CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 1]; // one sample before triggering, and one dummy byte + uint8_t *arrayp = array; + asm volatile ( + "ldi %A[index], 0" "\n\t" + "ldi %B[index], 0" "\n\t" + "cli" "\n\t" + CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" + CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" + "sbi %[stcp_regaddr], %[stcp_bit]" "\n\t" + "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" + CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS_FAKE "\n\t" + "adiw %A[index], 0x01" "\n\t" + "cp %A[index], %A[time]" "\n\t" + "cpc %B[index], %B[time]" "\n\t" + "brlo 1b" "\n\t" + "sei" "\n\t" + "cbi %[stcp_regaddr], %[stcp_bit]" "\n\t" + : [arr] "=e" (arrayp), + [index] "=&w" (index), + CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS + : [time] "r" (time + 1), + [stcp_regaddr] "I" (CAPSENSE_SHIFT_STCP_IO), + [stcp_bit] "I" (CAPSENSE_SHIFT_STCP_BIT), + CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, + "0" (arrayp) + : "memory" ); + shift_select_nothing(); + wait_us(CAPSENSE_KEYBOARD_SETTLE_TIME_US); + uint8_t value_at_time = CAPSENSE_READ_ROWS_VALUE; + if (interference_ptr) + { + uint16_t p0 = 0; + CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY; + uint8_t interference = CAPSENSE_READ_ROWS_VALUE; + *interference_ptr = interference; + } + return value_at_time; +} + +#ifndef NO_PRINT +void test_col_print_data_v2(uint8_t col) +{ + uprintf("%d: ", col); + static uint8_t data[NRTIMES*CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE]; + static uint8_t sums[(TESTATONCE+1) * MATRIX_CAPSENSE_ROWS]; + uint8_t to_time = NRTIMES-1; + uint8_t from_time = 0; + while (from_time TESTATONCE) + { + to_time = from_time + TESTATONCE - 1; + } + uint8_t curr_TESTATONCE = to_time - from_time + 1; + uint8_t i; + for (i=0;i<(sizeof(sums)/sizeof(sums[0]));i++) + { + sums[i] = 0; + } + for (i=0;i>= 1; + ii += 1; + } + } + if (from_time == 0) { + ii = TESTATONCE * MATRIX_CAPSENSE_ROWS; + for (k=0; k>= 1; + ii += 1; + } + } + } + if (from_time == 0) { + for (i=TESTATONCE*MATRIX_CAPSENSE_ROWS;i<(TESTATONCE+1)*MATRIX_CAPSENSE_ROWS;i++) { + if (sums[i] > 0xf) { + print("?"); + } else { + uprintf("%X", sums[i]); + } + } + print(":"); + } + for (i=0;i 0xf) { + print("?"); + } else { + uprintf("%X", sums[i]); + } + } + from_time = to_time + 1; + to_time = NRTIMES - 1; + } + print("\n"); +} +#endif + +#ifndef NO_PRINT +void test_v2(void) { + int i; + for (i=7;i>0;i--) { + uprintf("Starting test in %d\n", i); + wait_ms(1000); + } + uprintf("shift_init()"); + shift_init(); + uprintf(" DONE\n"); + uprintf("dac_init()"); + dac_init(); + uprintf(" DONE\n"); + int d; + for (d=90;d<=260;d++) + { + uprintf("Testing threshold: %d\n", d); + dac_write_threshold(d); +//WHY ? + #if 1 + int c; + for (c=0; c> row) & 1; + } + if (sum < reps_div2) + { + max = mid - 1; + } else if (sum > reps_div2) { + min = mid + 1; + } else return mid; + } + return min; +} + +uint16_t measure_middle_keymap_coords(uint8_t col, uint8_t row, uint8_t time, uint8_t reps) +{ + return measure_middle(CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col), CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row), time, reps); +} + +uint16_t measure_middle_settled(uint8_t col, uint8_t row, uint8_t reps) +{ + uint8_t reps_div2 = reps / 2; + uint16_t min = 0, max = CAPSENSE_DAC_MAX; + while (min < max) + { + uint16_t mid = (min + max) / 2; + dac_write_threshold(mid); + uint8_t sum = 0; + uint8_t i; + for (i=0;i> row) & 1; + } + if (sum < reps_div2) + { + max = mid - 1; + } else if (sum > reps_div2) { + min = mid + 1; + } else return mid; + } + return min; +} + +#ifndef NO_PRINT +void tracking_test(void) +{ + int i; + for (i=7;i>0;i--) { + uprintf("Starting test in %d\n", i); + wait_ms(1000); + } + uprintf("shift_init()"); + shift_init(); + uprintf(" DONE\n"); + uprintf("dac_init()"); + dac_init(); + uprintf(" DONE\n"); + while (1) { + uint32_t tt = timer_read32(); + uint16_t key1 = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key2 = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key3 = measure_middle(TRACKING_KEY_3_COL, TRACKING_KEY_3_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key4 = measure_middle(TRACKING_KEY_4_COL, TRACKING_KEY_4_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key5 = measure_middle(TRACKING_KEY_5_COL, TRACKING_KEY_5_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t sett = measure_middle_settled(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_REPS); + uint16_t key1l = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME*2, TRACKING_REPS); + uint16_t key2l = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME*2, TRACKING_REPS); + uprintf("%5lu.%03u, %u, %u, %u, %u, %u, %u, %u, %u\n", tt/1000, (uint16_t)(tt%1000), key1, key2, key3, key4, key5, sett, key1l, key2l); + } +} +#endif + +uint16_t calibration_measure_all_valid_keys(uint8_t time, uint8_t reps, bool looking_for_all_zero) +{ + uint16_t min = 0, max = CAPSENSE_DAC_MAX; + while (min < max) + { + uint16_t mid = (min + max) / 2; + if (!looking_for_all_zero) { + mid = (min + max + 1) / 2; + } + dac_write_threshold(mid); + uint8_t col; + for (col = 0; col < MATRIX_COLS; col++) + { + uint8_t valid_physical_rows = 0; + uint8_t row; + for (row=0; row < MATRIX_CAPSENSE_ROWS; row++) + { + // if (pgm_read_word(&keymaps[0][row][col]) != KC_NO) + if (keycode_at_keymap_location(0, row, col) != KC_NO) + { + valid_physical_rows |= (((matrix_row_t)1) << CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row)); // convert keymap row to physical row + } + } + uint8_t physical_col = CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col); + uint8_t i; + for (i=0;i threshold)) cal_thresholds_min[besti] = threshold; + } + } + } + for (i=0;i CAPSENSE_DAC_MAX) + { + cal_thresholds[i] = CAPSENSE_DAC_MAX; + } else { + cal_thresholds[i] = bin_signal_level + CAPSENSE_CAL_THRESHOLD_OFFSET; + } + #else + if (bin_signal_level < CAPSENSE_CAL_THRESHOLD_OFFSET) + { + cal_thresholds[i] = 0; + } else { + cal_thresholds[i] = bin_signal_level - CAPSENSE_CAL_THRESHOLD_OFFSET; + } + #endif + } +} + +void set_leds(int num_lock, int caps_lock, int scroll_lock) +{ + #if defined(LED_NUM_LOCK_PIN) + #if defined(LED_NUM_LOCK_ACTIVE_LOW) + writePin(LED_NUM_LOCK_PIN, !num_lock); + #else + writePin(LED_NUM_LOCK_PIN, num_lock); + #endif + #endif + #if defined(LED_CAPS_LOCK_PIN) + #if defined(LED_CAPS_LOCK_ACTIVE_LOW) + writePin(LED_CAPS_LOCK_PIN, !caps_lock); + #else + writePin(LED_CAPS_LOCK_PIN, caps_lock); + #endif + #endif + #if defined(LED_SCROLL_LOCK_PIN) + #if defined(LED_SCROLL_LOCK_ACTIVE_LOW) + writePin(LED_SCROLL_LOCK_PIN, !scroll_lock); + #else + writePin(LED_SCROLL_LOCK_PIN, scroll_lock); + #endif + #endif +} + +#if defined(LED_NON_BASE_LAYER_PIN) +void set_led_non_base_layer(uint8_t value) { + #if defined(LED_NON_BASE_LAYER_ACTIVE_LOW) + writePin(LED_NON_BASE_LAYER_PIN, !value); + #else + writePin(LED_NON_BASE_LAYER_PIN, !!value); + #endif +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + set_led_non_base_layer(0); + break; + default: + set_led_non_base_layer(1); + break; + } + return layer_state_set_user(state); +} +#endif + +#if MATRIX_EXTRA_DIRECT_ROWS +static pin_t extra_direct_pins[MATRIX_EXTRA_DIRECT_ROWS][MATRIX_COLS] = MATRIX_EXTRA_DIRECT_PINS; +#endif + +#if CAPSENSE_CAL_ENABLED && CAPSENSE_CAL_DEBUG +uint16_t cal_time; +#endif + +void real_keyboard_init_basic(void) +{ + SETUP_UNUSED_PINS(); + + #if defined(LED_NUM_LOCK_PIN) + setPinOutput(LED_NUM_LOCK_PIN); + #endif + #if defined(LED_CAPS_LOCK_PIN) + setPinOutput(LED_CAPS_LOCK_PIN); + #endif + #if defined(LED_SCROLL_LOCK_PIN) + setPinOutput(LED_SCROLL_LOCK_PIN); + #endif + #if defined(LED_NON_BASE_LAYER_PIN) + setPinOutput(LED_NON_BASE_LAYER_PIN); + set_led_non_base_layer(0); + #endif + set_leds(0, 0, 0); + + #ifndef NO_PRINT + uprintf("shift_init()"); + #endif + shift_init(); + #ifndef NO_PRINT + uprintf(" DONE\n"); + uprintf("dac_init()"); + #endif + dac_init(); + #ifndef NO_PRINT + uprintf(" DONE\n"); + #endif + SETUP_ROW_GPIOS(); + #if CAPSENSE_CAL_ENABLED + #if CAPSENSE_CAL_DEBUG + cal_time = timer_read(); + #endif + calibration(); + #if CAPSENSE_CAL_DEBUG + cal_time = timer_read() - cal_time; + #endif + #else + dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); + dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); + dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); + #endif + #if defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) || defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) + // Disable on-board leds. + setPinOutput(D5); + writePin(D5, 1); + setPinOutput(B0); + writePin(B0, 1); + #endif + #if MATRIX_EXTRA_DIRECT_ROWS + for (int row=0; row= 10 * 1000UL) { // after 10 seconds + uprintf("Calibration took: %u ms\n", cal_time); + uprintf("Cal All Zero = %u, Cal All Ones = %u\n", cal_tr_allzero, cal_tr_allone); + for (cal=0;cal 16 + uprintf("0x%06X\n", assigned_to_threshold[cal][row]); + #elif MATRIX_COLS > 12 + uprintf("0x%04X\n", assigned_to_threshold[cal][row]); + #else + uprintf("0x%03X\n", assigned_to_threshold[cal][row]); + #endif + } + } + cal_stats_printed = true; + } + } + #endif +} +#endif + +void matrix_scan_raw(matrix_row_t current_matrix[]) { + uint8_t col, row; + memset(current_matrix, 0, sizeof(matrix_row_t) * MATRIX_ROWS); + #if CAPSENSE_CAL_ENABLED + uint8_t cal; + for (cal=0;cal> physical_row) & 1)) + { + current_matrix[row] |= ((matrix_row_t)((d >> physical_row) & 1)) << col; + } + } + } + } + } + #else + for (col=0;col>= 1; + } + } + #endif + + #if MATRIX_EXTRA_DIRECT_ROWS + for (int row=0; row. + */ +#pragma once + +#define nSHDN_BIT 12 +#define MCP_DAC_GAIN_2X 0 +#define MCP_DAC_GAIN_1X 1 +#define nGA_BIT 13 +#define BUF_BIT 14 + +#define TRACKING_TEST_TIME 4 +// Key 1 is the always non-pressed key under the space bar to the right. +#define TRACKING_KEY_1_COL 6 +#define TRACKING_KEY_1_ROW 4 +// Key 2 is the always-pressed calibration pad to the far right-bottom of the keyboard. (both on F62 and F77) +#define TRACKING_KEY_2_COL 15 +#define TRACKING_KEY_2_ROW 6 +// Key 3 is the F key +#define TRACKING_KEY_3_COL 2 +#define TRACKING_KEY_3_ROW 5 +// Key 4 is the half of the split backspace that is unused if the user has a normal backspace. +#define TRACKING_KEY_4_COL 7 +#define TRACKING_KEY_4_ROW 3 +// Key 5 is hidden key next to the left shift, which is only used in ISO layouts. +#define TRACKING_KEY_5_COL 0 +#define TRACKING_KEY_5_ROW 7 + +#define TRACKING_REPS 16 + +#ifndef NO_PRINT +#define NRTIMES 64 +#define TESTATONCE 8 +#define REPS_V2 15 +#endif + +#ifndef MATRIX_MANIPULATE_H +#define MATRIX_MANIPULATE_H + +#include "quantum.h" + +// Contains stuff used to manipulate the matrix using the util. +// These are defined in capsense_matrix.c. This file is not called matrix.h to avoid conflict with qmk-native matrix.h + +extern bool keyboard_scan_enabled; +void matrix_scan_raw(matrix_row_t current_matrix[]); +extern uint16_t cal_thresholds[CAPSENSE_CAL_BINS]; +extern matrix_row_t assigned_to_threshold[CAPSENSE_CAL_BINS][MATRIX_CAPSENSE_ROWS]; +uint16_t measure_middle_keymap_coords(uint8_t col, uint8_t row, uint8_t time, uint8_t reps); +void shift_data(uint32_t data, int data_idle, int shcp_idle, int stcp_idle); +void dac_write_threshold(uint16_t value); +uint8_t test_single(uint8_t col, uint16_t time, uint8_t *interference_ptr); +void shift_select_col_no_strobe(uint8_t col); +void shift_select_nothing(void); + +#endif diff --git a/keyboards/model_f_labs/xwhatsit_util_comm.c b/keyboards/model_f_labs/xwhatsit_util_comm.c new file mode 100644 index 00000000000..747b50a6668 --- /dev/null +++ b/keyboards/model_f_labs/xwhatsit_util_comm.c @@ -0,0 +1,228 @@ +/* Copyright 2020 Purdea Andrei + * Copyright 2021-2022 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" +#include "raw_hid.h" +#include "xwhatsit_util_comm.h" +#include "xwhatsit_capsense_matrix.h" +#include +#include + +extern const char *KEYBOARD_FILENAME; // This must be defined in keyboard_name.c to equal the filename. This is sent back to the PC-side software for it to determine which keyboard we are using. + +static const uint8_t magic[] = UTIL_COMM_MAGIC; + +// Has well know issues. +//#define min(x, y) (((x) < (y))?(x):(y)) + +inline int min(int x, int y) { + if (x > y) { + return y; + } + return x; +} + +void raw_hid_receive(uint8_t *data, uint8_t length) { + if (0 != memcmp(data, magic, sizeof(magic))) { + return; + } + uint8_t response[RAW_EPSIZE]; + memcpy(response, magic, sizeof(magic)); + response[2] = UTIL_COMM_RESPONSE_ERROR; + switch (data[2]) + { + case UTIL_COMM_GET_VERSION: + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = UTIL_COMM_VERSION_MAJOR; + response[4] = UTIL_COMM_VERSION_MID; + response[5] = (UTIL_COMM_VERSION_MINOR >> 8) & 0xff; + response[6] = (UTIL_COMM_VERSION_MINOR >> 0) & 0xff; + break; + case UTIL_COMM_DISABLE_KEYBOARD: + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = (uint8_t) keyboard_scan_enabled; + keyboard_scan_enabled = 0; + break; + case UTIL_COMM_ENABLE_KEYBOARD: + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = (uint8_t) keyboard_scan_enabled; + keyboard_scan_enabled = 1; + break; + case UTIL_COMM_ENTER_BOOTLOADER: + keyboard_scan_enabled = 0; + wait_ms(10); + bootloader_jump(); + // we should not be reaching the following: + wait_ms(10); + response[2] = UTIL_COMM_RESPONSE_OK; + break; + case UTIL_COMM_GET_KEYSTATE: + response[2] = UTIL_COMM_RESPONSE_OK; + { + matrix_row_t current_matrix[MATRIX_ROWS]; + matrix_scan_raw(current_matrix); + char *current_matrix_ptr = (char *)current_matrix; + int offset = 0; + if (sizeof(current_matrix) > 32-3) + { + offset = data[3]; + current_matrix_ptr += offset; + } + memcpy(&response[3], current_matrix_ptr, min(32-3, sizeof(current_matrix)-offset)); + } + break; + case UTIL_COMM_GET_THRESHOLDS: + response[2] = UTIL_COMM_RESPONSE_OK; + #if CAPSENSE_CAL_ENABLED + response[3] = CAPSENSE_CAL_BINS; + { + const uint8_t cal_bin = data[3]; + response[4] = cal_thresholds[cal_bin] & 0xff; + response[5] = (cal_thresholds[cal_bin] >> 8) & 0xff; + char *assigned_to_threshold_ptr = (char *)assigned_to_threshold[cal_bin]; + int offset = 0; + if (sizeof(assigned_to_threshold[cal_bin]) > 32-6) + { + offset = data[4]; + assigned_to_threshold_ptr += offset; + } + memcpy(&response[6], assigned_to_threshold_ptr, min(32-6, sizeof(assigned_to_threshold[cal_bin]) - offset)); + } + #else + response[3] = 0; + response[4] = (CAPSENSE_HARDCODED_THRESHOLD) & 0xff; + response[5] = ((CAPSENSE_HARDCODED_THRESHOLD) >> 8) & 0xff; + #endif + break; + case UTIL_COMM_GET_KEYBOARD_FILENAME: + { + response[2] = UTIL_COMM_RESPONSE_OK; + if (data[3] >= strlen(KEYBOARD_FILENAME) + 1) + { + response[3] = 0; + } else { + const char *substring = KEYBOARD_FILENAME + data[3]; + size_t substring_length = strlen(substring) + 1; + if (substring_length > RAW_EPSIZE - 3) substring_length = RAW_EPSIZE - 3; + memcpy(&response[3], substring, substring_length); + } + break; + } + case UTIL_COMM_ERASE_EEPROM: + { + response[2] = UTIL_COMM_RESPONSE_OK; + uint16_t addr; + for (addr=0; addr> 8) & 0xff; + col += 1; + if (col >= MATRIX_COLS) { + col -= MATRIX_COLS; + row += 1; + } + if (row >= MATRIX_CAPSENSE_ROWS) + { + break; + } + } + break; + } + case UTIL_COMM_GET_KEYBOARD_DETAILS: + { + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = MATRIX_COLS; + response[4] = MATRIX_ROWS; + response[5] = GET_KEYBOARD_DETAILS_5; + #if defined(CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4) + response[5] = 1; + #elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) + response[5] = 2; + #elif defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) + response[5] = 3; + #elif defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) + response[5] = 4; + #else + response[5] = 0; + #endif + response[6] = CAPSENSE_KEYBOARD_SETTLE_TIME_US; + response[7] = CAPSENSE_DAC_SETTLE_TIME_US; + response[8] = CAPSENSE_HARDCODED_SAMPLE_TIME; + response[9] = CAPSENSE_CAL_ENABLED; + response[10] = CAPSENSE_DAC_MAX & 0xFF; + response[11] = (CAPSENSE_DAC_MAX >> 8) & 0xFF; + response[12] = MATRIX_CAPSENSE_ROWS; + response[13] = 0; // reserved for future + response[14] = 0; // reserved for future + response[15] = 0; // reserved for future + break; + } + case UTIL_COMM_SHIFT_DATA: + case UTIL_COMM_SHIFT_DATA_EXT: + { + response[2] = UTIL_COMM_RESPONSE_OK; + uint32_t shdata = (((uint32_t)(data[3])) << 0) | + (((uint32_t)(data[4])) << 8) | + (((uint32_t)(data[5])) << 16) | + (((uint32_t)(data[6])) << 24); + int data_idle = 0; + int shcp_idle = 0; + int stcp_idle = 0; + if (data[2] == UTIL_COMM_SHIFT_DATA_EXT) + { + data_idle = data[7]; + shcp_idle = data[8]; + stcp_idle = data[9]; + } + shift_data(shdata, data_idle, shcp_idle, stcp_idle); + response[3] = readPin(CAPSENSE_SHIFT_DIN); + response[4] = readPin(CAPSENSE_SHIFT_SHCP); + response[5] = readPin(CAPSENSE_SHIFT_STCP); + break; + } + case UTIL_COMM_SET_DAC_VALUE: + { + response[2] = UTIL_COMM_RESPONSE_OK; + uint16_t value = data[3] | (((uint16_t)data[4]) << 8); + dac_write_threshold(value); + break; + } + case UTIL_COMM_GET_ROW_STATE: + { + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = test_single(255, 0, NULL); + break; + } + default: + break; + } + raw_hid_send(response, sizeof(response)); +} diff --git a/keyboards/model_f_labs/xwhatsit_util_comm.h b/keyboards/model_f_labs/xwhatsit_util_comm.h new file mode 100644 index 00000000000..4904f3c1ed3 --- /dev/null +++ b/keyboards/model_f_labs/xwhatsit_util_comm.h @@ -0,0 +1,66 @@ +/* Copyright 2020 Purdea Andrei + * Copyright 2021 Matthew J Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifndef RAW_EPSIZE +#define RAW_EPSIZE 32 +#endif + +#ifndef UTIL_COMM_H +#define UTIL_COMM_H + +#define UTIL_COMM_VERSION_MAJOR 2 +#define UTIL_COMM_VERSION_MID 0 +#define UTIL_COMM_VERSION_MINOR 5 + +#define UTIL_COMM_MAGIC { 0x55, 0xAA } + +enum command { + UTIL_COMM_GET_VERSION = 0x11, + UTIL_COMM_ENTER_BOOTLOADER, + UTIL_COMM_DISABLE_KEYBOARD, + UTIL_COMM_ENABLE_KEYBOARD, + UTIL_COMM_GET_KEYSTATE, + UTIL_COMM_GET_THRESHOLDS, + UTIL_COMM_GET_KEYBOARD_FILENAME, + UTIL_COMM_ERASE_EEPROM, + UTIL_COMM_GET_SIGNAL_VALUE, + UTIL_COMM_GET_KEYBOARD_DETAILS, + UTIL_COMM_SHIFT_DATA, + UTIL_COMM_SET_DAC_VALUE, + UTIL_COMM_GET_ROW_STATE, + UTIL_COMM_SHIFT_DATA_EXT, +}; + +enum response { + UTIL_COMM_RESPONSE_OK = 0x22, + UTIL_COMM_RESPONSE_ERROR +}; + +#endif + +#if defined( CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4 ) + #define GET_KEYBOARD_DETAILS_5 1 +#elif defined( CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F ) + #define GET_KEYBOARD_DETAILS_5 2 +#elif defined( CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING ) + #define GET_KEYBOARD_DETAILS_5 3 +#elif defined( CONTROLLER_IS_THROUGH_HOLE_MODEL_F ) + #define GET_KEYBOARD_DETAILS_5 4 +#else + #define GET_KEYBOARD_DETAILS_5 0 +#endif From 240d8a771aa8991c4aaefb0c1c70ddeefaebab69 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 9 Jun 2023 12:38:40 -0400 Subject: [PATCH 03/37] forgotten items --- keyboards/model_f_labs/f62/info.json | 2915 +++++++++++++++++ keyboards/model_f_labs/f62/readme.md | 16 + keyboards/model_f_labs/f62/rules.mk | 2 + .../model_f_labs/xwhatsit_capsense_matrix.c | 1 + 4 files changed, 2934 insertions(+) create mode 100644 keyboards/model_f_labs/f62/info.json create mode 100644 keyboards/model_f_labs/f62/readme.md create mode 100644 keyboards/model_f_labs/f62/rules.mk diff --git a/keyboards/model_f_labs/f62/info.json b/keyboards/model_f_labs/f62/info.json new file mode 100644 index 00000000000..29ea489dc86 --- /dev/null +++ b/keyboards/model_f_labs/f62/info.json @@ -0,0 +1,2915 @@ +{ + "keyboard_name": "Reproduction IBM F62 Keyboard", + "manufacturer": "Model F Labs", + "url": "https://www.modelfkeyboards.com/", + "maintainer": "Purdea Andrei", + "width": 18.25, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "|`", + "x": 13, + "y": 0 + }, + { + "label": "~", + "x": 14, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Backspace", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "#", + "x": 12.75, + "y": 2 + }, + { + "label": "Enter", + "x": 13.75, + "y": 2, + "w": 1.25 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "\\", + "x": 1.25, + "y": 3 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 6 + }, + { + "x": 10, + "y": 4 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_ansi_regular_shift_regular_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "Backspace", + "x": 13, + "y": 0, + "w": 2 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "\\|", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 2.75 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Fn", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_ansi_regular_shift_split_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "`~", + "x": 13, + "y": 0 + }, + { + "label": "Backspace", + "x": 14, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "\\|", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 2.75 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Fn", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_ansi_split_shift_regular_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "Backspace", + "x": 13, + "y": 0, + "w": 2 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "\\|", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_ansi_split_shift_split_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "|`", + "x": 13, + "y": 0 + }, + { + "label": "~", + "x": 14, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Backspace", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_iso_regular_shift_regular_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "Backspace", + "x": 13, + "y": 0, + "w": 2 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "nuhs", + "x": 12.75, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "nubs", + "x": 1.25, + "y": 3 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 2.75 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Fn", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_iso_regular_shift_split_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "`~", + "x": 13, + "y": 0 + }, + { + "label": "Backspace", + "x": 14, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "nuhs", + "x": 12.75, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "nubs", + "x": 1.25, + "y": 3 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 2.75 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Fn", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_iso_split_shift_regular_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "Backspace", + "x": 13, + "y": 0, + "w": 2 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "Ctrl", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "nuhs", + "x": 12.75, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "nubs", + "x": 1.25, + "y": 3 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + "LAYOUT_iso_split_shift_split_backspace": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "|`", + "x": 13, + "y": 0 + }, + { + "label": "~", + "x": 14, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "Ctrl", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "nuhs", + "x": 12.75, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 1.25 + }, + { + "label": "nubs", + "x": 1.25, + "y": 3 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 4, + "w": 1.5 + }, + { + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Num Lock", + "x": 12.5, + "y": 4 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 4, + "w": 1.5 + } + ] + }, + } +} diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md new file mode 100644 index 00000000000..1e767fb0b98 --- /dev/null +++ b/keyboards/model_f_labs/f62/readme.md @@ -0,0 +1,16 @@ +# model_f_labs/f62 + +![model_f_labs/f62](https://www.modelfkeyboards.com/wp-content/uploads/2015/12/2019-12-16_00-36-09.jpg) + +A short description of the keyboard/project + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Build Maintainer: Matthew J Wolf +* Hardware Supported: Supports the brand new Model F reproductions from https://www.modelfkeyboards.com/, using the smaller xwhatsit controller developed by wcass. +* Hardware Availability: https://www.modelfkeyboards.com/ + +Make example for this keyboard (after setting up your build environment): + + make model_f_labs/f62:default + +See 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). diff --git a/keyboards/model_f_labs/f62/rules.mk b/keyboards/model_f_labs/f62/rules.mk new file mode 100644 index 00000000000..0fd86a6a5b4 --- /dev/null +++ b/keyboards/model_f_labs/f62/rules.mk @@ -0,0 +1,2 @@ +DEFAULT_FOLDER = model_f_labs/f62/wcass +# Brand new model f keyboards by default come with the wcass controller. diff --git a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c index 81bd4602e08..9d8bd0eebe0 100644 --- a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c +++ b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c @@ -16,6 +16,7 @@ */ #include "quantum.h" +#include "keymap_introspection.h" #include "xwhatsit_capsense_matrix.h" #include From edbe9ab0e00edec98a47813dd06d0a67fd5bc93d Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 9 Jun 2023 13:06:53 -0400 Subject: [PATCH 04/37] added copyright --- .../model_f_labs/f62/keymaps/via/config.h | 16 ++++++++++++++ ...sgin_model-f-labs_f62_via_all_keys_v3.json | 22 ------------------- 2 files changed, 16 insertions(+), 22 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json diff --git a/keyboards/model_f_labs/f62/keymaps/via/config.h b/keyboards/model_f_labs/f62/keymaps/via/config.h index 97c6bedfb1d..e1174a5b70b 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/config.h +++ b/keyboards/model_f_labs/f62/keymaps/via/config.h @@ -1,3 +1,19 @@ +/* Copyright 2023 Matthew Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #undef BOOTMAGIC_ENABLE #undef BOOTMAGIC_LITE diff --git a/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json b/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json deleted file mode 100644 index bd29b1222df..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/via/via-desgin_model-f-labs_f62_via_all_keys_v3.json +++ /dev/null @@ -1,22 +0,0 @@ - -{ - "name": "Model F Labs F62", - "vendorId": "0x1209", - "productId": "0x6262", - "matrix": { "rows": 8, "cols": 9 }, - "layouts": { - "labels": [ - "Split Backspace",["Split Right Shift","No Split","HHKB Split","Non-HHKB Split"],["Enter","ANSI Enter", "Tie Enter","ISO Enter"],"Split Space","Split Left Shift (ISO)" - ], - "keymap": [ - [{"x":2.5},"4,0","6,0","6,1","4,2","6,2","4,3","6,3","4,4","6,4","4,5","6,5","4,6","6,6",{"w":2},"6,7\n\n\n0,0",{"x":0.25},"4,7\n\n\n0,1","6,7\n\n\n0,1"], - [{"x":2.5,"w":1.5},"5,0","4,1","5,1","7,2","5,2","7,3","5,3","7,4","5,4","7,5","5,5","5,6","5,7",{"w":1.5},"7,7\n\n\n2,0",{"x":1,"w":1.5},"7,7\n\n\n2,1",{"x":1.75,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"2,7\n\n\n2,2"], - [{"x":2.5,"w":1.75},"7,0","7,1","2,1","0,2","2,2","0,3","2,3","2,4","0,4","0,5","2,5","2,6",{"w":2.25},"2,7\n\n\n2,0",{"x":0.25},"7,6\n\n\n2,1",{"w":1.25},"2,7\n\n\n2,1",{"x":0.75},"7,6\n\n\n2,2"], - [{"w":1.25},"2,0\n\n\n4,1","0,0\n\n\n4,1",{"x":0.25,"w":2.25},"2,0\n\n\n4,0","1,1","0,1","1,2","3,2","1,3","1,4","3,4","3,5","1,5","0,6",{"w":2.75},"1,7\n\n\n1,0",{"x":0.25,"w":1.75},"0,7\n\n\n1,1","1,7\n\n\n1,1",{"x":0.25},"0,7\n\n\n1,2",{"w":1.75},"1,7\n\n\n1,2"], - [{"x":2.5,"w":1.5},"3,0","1,0",{"w":1.5},"3,1",{"w":7},"3,3\n\n\n3,0",{"w":1.5},"1,6","3,7",{"w":1.5},"3,8"], - [{"y":0.25,"x":6.5,"w":5.5},"3,3\n\n\n3,1",{"w":1.5},"3,6\n\n\n3,1"] - ] - } -} - - From 8ef8e6eb337c4e6560936980965ec748ad38a878 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 9 Jun 2023 13:13:39 -0400 Subject: [PATCH 05/37] revert submodule changes --- lib/chibios | 2 +- lib/chibios-contrib | 2 +- lib/googletest | 2 +- lib/lufa | 2 +- lib/pico-sdk | 2 +- lib/printf | 2 +- lib/vusb | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/chibios b/lib/chibios index ffe54d63cb1..11edb161098 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd +Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51 diff --git a/lib/chibios-contrib b/lib/chibios-contrib index 61baa6b0361..a224be155ae 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243 +Subproject commit a224be155ae18d38deccf33a6c1d259b9a5ad8d3 diff --git a/lib/googletest b/lib/googletest index ec44c6c1675..e2239ee6043 160000 --- a/lib/googletest +++ b/lib/googletest @@ -1 +1 @@ -Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 +Subproject commit e2239ee6043f73722e7aa812a459f54a28552929 diff --git a/lib/lufa b/lib/lufa index ce10f7642b0..549b97320d5 160000 --- a/lib/lufa +++ b/lib/lufa @@ -1 +1 @@ -Subproject commit ce10f7642b0459e409839b23cc91498945119b4d +Subproject commit 549b97320d515bfca2f95c145a67bd13be968faa diff --git a/lib/pico-sdk b/lib/pico-sdk index 07edde8e498..a3398d8d3a7 160000 --- a/lib/pico-sdk +++ b/lib/pico-sdk @@ -1 +1 @@ -Subproject commit 07edde8e49890d2172bbc272aacc119f999df063 +Subproject commit a3398d8d3a772f37fef44a74743a1de69770e9c2 diff --git a/lib/printf b/lib/printf index d3b984684bb..c2e3b4e10d2 160000 --- a/lib/printf +++ b/lib/printf @@ -1 +1 @@ -Subproject commit d3b984684bb8a8bdc48cc7a1abecb93ce59bbe3e +Subproject commit c2e3b4e10d281e7f0f694d3ecbd9f320977288cc diff --git a/lib/vusb b/lib/vusb index bdb53e4c043..819dbc1e5d5 160000 --- a/lib/vusb +++ b/lib/vusb @@ -1 +1 @@ -Subproject commit bdb53e4c043d089279d9891b68bea77614cb97ee +Subproject commit 819dbc1e5d5926b17e27e00ca6d3d2988adae04e From 8989f16079ab93081fdf281a9385f0ea38f874aa Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 17:57:21 -0400 Subject: [PATCH 06/37] simple removal --- .../model_f_labs/f62/keymaps/default/config.h | 19 --------- .../model_f_labs/f62/keymaps/via/config.h | 23 ----------- keyboards/model_f_labs/f62/wcass/wcass.c | 39 +------------------ 3 files changed, 1 insertion(+), 80 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/keymaps/default/config.h delete mode 100644 keyboards/model_f_labs/f62/keymaps/via/config.h diff --git a/keyboards/model_f_labs/f62/keymaps/default/config.h b/keyboards/model_f_labs/f62/keymaps/default/config.h deleted file mode 100644 index c58310fa6b3..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/default/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -// place overrides here diff --git a/keyboards/model_f_labs/f62/keymaps/via/config.h b/keyboards/model_f_labs/f62/keymaps/via/config.h deleted file mode 100644 index e1174a5b70b..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/via/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2023 Matthew Wolf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#undef BOOTMAGIC_ENABLE -#undef BOOTMAGIC_LITE - -/* Bootmagic Lite key configuration */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 - diff --git a/keyboards/model_f_labs/f62/wcass/wcass.c b/keyboards/model_f_labs/f62/wcass/wcass.c index 08c8b2f5711..04b3e163af6 100644 --- a/keyboards/model_f_labs/f62/wcass/wcass.c +++ b/keyboards/model_f_labs/f62/wcass/wcass.c @@ -1,4 +1,5 @@ /* Copyright 2020 Purdea Andrei + * Copyright 2024 Matthew J Wolf * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,41 +19,3 @@ const char *KEYBOARD_FILENAME = __FILE__; // used by util_comm -void keyboard_post_init_kb(void) -{ -// debug_enable=true; -// debug_matrix=true; -} - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -bool led_update_kb(led_t led_state) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - return led_update_user(led_state); -} -*/ From db3a0c5503f2c69c7e811bbe8f194f397167815b Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 18:23:08 -0400 Subject: [PATCH 07/37] restore f62 via keymap config.h --- .../model_f_labs/f62/keymaps/via/config.h | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 keyboards/model_f_labs/f62/keymaps/via/config.h diff --git a/keyboards/model_f_labs/f62/keymaps/via/config.h b/keyboards/model_f_labs/f62/keymaps/via/config.h new file mode 100644 index 00000000000..e1174a5b70b --- /dev/null +++ b/keyboards/model_f_labs/f62/keymaps/via/config.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Matthew Wolf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#undef BOOTMAGIC_ENABLE +#undef BOOTMAGIC_LITE + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + From 95c3f4ae8028a7b273928eacba4b458ae6f19b9f Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 18:36:42 -0400 Subject: [PATCH 08/37] picture image hosting --- keyboards/model_f_labs/f62/readme.md | 2 +- keyboards/model_f_labs/f62/wcass/readme.md | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 1e767fb0b98..7f7a727843c 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -1,6 +1,6 @@ # model_f_labs/f62 -![model_f_labs/f62](https://www.modelfkeyboards.com/wp-content/uploads/2015/12/2019-12-16_00-36-09.jpg) +![model_f_labs/f62](https://imgbox.com/1hPUzXct) A short description of the keyboard/project diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index f01ab47ed20..34482728646 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -1,7 +1,5 @@ # model_f_labs/f62/wcass -![model_f_labs/f62/wcass](https://www.modelfkeyboards.com/wp-content/uploads/2019/11/F62-F77-new.jpg) - A short description of the keyboard/project * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) From 7fac33afa5237f4d8a52485e03a0988fec6232a0 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 19:02:26 -0400 Subject: [PATCH 09/37] post qmk migrate --- keyboards/model_f_labs/f62/wcass/config.h | 6 ---- keyboards/model_f_labs/f62/wcass/info.json | 36 ++++++++++++++++------ keyboards/model_f_labs/f62/wcass/rules.mk | 5 --- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index 111eadcfc85..8591a3368d4 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -37,10 +37,6 @@ along with this program. If not, see . /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE @@ -118,8 +114,6 @@ along with this program. If not, see . // assignments are disabled by default. // Instead the more common Num Lock and Caps Lock are assigned the following // way by default, and this can be used in combination with the solenoid: -#define LED_NUM_LOCK_PIN B4 -#define LED_CAPS_LOCK_PIN B5 // Uncomment below if the leds are on when the pin is driving zero: //#define LED_NUM_LOCK_ACTIVE_LOW diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index cb6257383ec..4c80ee127d7 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -1,10 +1,28 @@ { - "keyboard_name": "Reproduction IBM F62 Keyboard", - "manufacturer": "Model F Labs", - "url": "https://www.modelfkeyboards.com/", - "usb": { - "vid": "0x1209", - "pid": "0x6262", - "device_version": "0.0.1" - } -} + "manufacturer": "Model F Labs", + "keyboard_name": "Reproduction IBM F62 Keyboard", + "bootloader": "atmel-dfu", + "bootmagic": { + "enabled": false + }, + "build": { + "lto": true + }, + "indicators": { + "caps_lock": "B5", + "num_lock": "B4" + }, + "mouse_key": { + "enabled": true + }, + "processor": "atmega32u2", + "split": { + "soft_serial_pin": "D0" + }, + "url": "https://www.modelfkeyboards.com/", + "usb": { + "device_version": "0.0.1", + "pid": "0x6262", + "vid": "0x1209" + } +} \ No newline at end of file diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index b593d3f6758..dffe4d71e46 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -15,7 +15,6 @@ # along with this program. If not, see . # MCU name -MCU = atmega32u2 # Bootloader selection # Teensy halfkay @@ -25,13 +24,10 @@ MCU = atmega32u2 # QMK DFU qmk-dfu # ATmega32A bootloadHID # ATmega328P USBasp -BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration @@ -47,7 +43,6 @@ AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs RAW_ENABLE = yes -LTO_ENABLE = yes # Link Time Optimization - reduces file size HAPTIC_ENABLE = yes HAPTIC_DRIVER = SOLENOID From d1af7b14a315d82a432081ea7a8b82155ab566db Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 20:51:23 -0400 Subject: [PATCH 10/37] remove ../../post_config.h --- keyboards/model_f_labs/f62/wcass/config.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index 8591a3368d4..edf9e2cc49e 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -120,9 +120,6 @@ along with this program. If not, see . //#define LED_CAPS_LOCK_ACTIVE_LOW //#define LED_SCROLL_LOCK_ACTIVE_LOW -#include "../../post_config.h" - - // ----- xwhatsit hardware configuration (type_f) ----- #define CAPSENSE_DAC_SCLK B1 From 684a3dcb7e6f00a32da3413fecc7ae12022ee428 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 21:05:05 -0400 Subject: [PATCH 11/37] Remove extra via layer --- keyboards/model_f_labs/f62/keymaps/via/keymap.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/keyboards/model_f_labs/f62/keymaps/via/keymap.c b/keyboards/model_f_labs/f62/keymaps/via/keymap.c index 1677f6344b7..ba9a58daaf5 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/keymap.c +++ b/keyboards/model_f_labs/f62/keymaps/via/keymap.c @@ -82,11 +82,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_FN3] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ) }; From 1eb680baf3542c023a98d734b531a0f10c597769 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 5 Jul 2023 21:12:08 -0400 Subject: [PATCH 12/37] correct image link --- keyboards/model_f_labs/f62/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 7f7a727843c..14dcb645b14 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -1,6 +1,6 @@ # model_f_labs/f62 -![model_f_labs/f62](https://imgbox.com/1hPUzXct) +![model_f_labs/f62](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) A short description of the keyboard/project From 867d79b1e5ee9ac22e091c18aeeeb1e2768dbed5 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sat, 15 Jul 2023 18:37:38 -0400 Subject: [PATCH 13/37] 2nd set of updates for F62 pull --- keyboards/model_f_labs/f62/info.json | 3434 +++-------------- .../model_f_labs/f62/keymaps/via/config.h | 23 - .../model_f_labs/f62/keymaps/via/rules.mk | 2 + keyboards/model_f_labs/f62/wcass/config.h | 6 + 4 files changed, 568 insertions(+), 2897 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/keymaps/via/config.h diff --git a/keyboards/model_f_labs/f62/info.json b/keyboards/model_f_labs/f62/info.json index 29ea489dc86..a72dc4ae50a 100644 --- a/keyboards/model_f_labs/f62/info.json +++ b/keyboards/model_f_labs/f62/info.json @@ -1,2915 +1,601 @@ { - "keyboard_name": "Reproduction IBM F62 Keyboard", "manufacturer": "Model F Labs", - "url": "https://www.modelfkeyboards.com/", + "keyboard_name": "Reproduction IBM F62 Keyboard", "maintainer": "Purdea Andrei", - "width": 18.25, - "height": 5, + "url": "https://www.modelfkeyboards.com/", "layouts": { "LAYOUT_all": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|`", - "x": 13, - "y": 0 - }, - { - "label": "~", - "x": 14, - "y": 0 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Backspace", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "#", - "x": 12.75, - "y": 2 - }, - { - "label": "Enter", - "x": 13.75, - "y": 2, - "w": 1.25 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 1.25 - }, - { - "label": "\\", - "x": 1.25, - "y": 3 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 6 - }, - { - "x": 10, - "y": 4 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "|`", "x": 13, "y": 0}, + {"label": "~", "x": 14, "y": 0}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Backspace", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "#", "x": 12.75, "y": 2}, + {"label": "Enter", "x": 13.75, "y": 2, "w": 1.25}, + {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "x": 1.25, "y": 3}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "x": 14, "y": 3}, + {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 6}, + {"x": 10, "y": 4}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_ansi_regular_shift_regular_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "\\|", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "Enter", - "x": 12.75, - "y": 2, - "w": 2.25 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 2.75 - }, - { - "label": "Ctrl", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Fn", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "Backspace", "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_ansi_regular_shift_split_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "`~", - "x": 13, - "y": 0 - }, - { - "label": "Backspace", - "x": 14, - "y": 0 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "\\|", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "Enter", - "x": 12.75, - "y": 2, - "w": 2.25 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 2.75 - }, - { - "label": "Ctrl", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Fn", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "`~", "x": 13, "y": 0}, + {"label": "Backspace", "x": 14, "y": 0}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_ansi_split_shift_regular_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "\\|", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "Enter", - "x": 12.75, - "y": 2, - "w": 2.25 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "Backspace", "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "x": 14, "y": 3}, + {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_ansi_split_shift_split_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|`", - "x": 13, - "y": 0 - }, - { - "label": "~", - "x": 14, - "y": 0 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Backspace", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "Enter", - "x": 12.75, - "y": 2, - "w": 2.25 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "|`", "x": 13, "y": 0}, + {"label": "~", "x": 14, "y": 0}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Backspace", "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "x": 14, "y": 3}, + {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_iso_regular_shift_regular_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Enter", - "x": 13.75, - "y": 1, - "w": 1.25, - "h": 2 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "nuhs", - "x": 12.75, - "y": 2 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 1.25 - }, - { - "label": "nubs", - "x": 1.25, - "y": 3 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 2.75 - }, - { - "label": "Ctrl", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Fn", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "Backspace", "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "nuhs", "x": 12.75, "y": 2}, + {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "x": 1.25, "y": 3}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_iso_regular_shift_split_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "`~", - "x": 13, - "y": 0 - }, - { - "label": "Backspace", - "x": 14, - "y": 0 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Enter", - "x": 13.75, - "y": 1, - "w": 1.25, - "h": 2 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "nuhs", - "x": 12.75, - "y": 2 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 1.25 - }, - { - "label": "nubs", - "x": 1.25, - "y": 3 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 2.75 - }, - { - "label": "Ctrl", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Fn", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "`~", "x": 13, "y": 0}, + {"label": "Backspace", "x": 14, "y": 0}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "nuhs", "x": 12.75, "y": 2}, + {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "x": 1.25, "y": 3}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_iso_split_shift_regular_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Enter", - "x": 13.75, - "y": 1, - "w": 1.25, - "h": 2 - }, - { - "label": "Ctrl", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "nuhs", - "x": 12.75, - "y": 2 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 1.25 - }, - { - "label": "nubs", - "x": 1.25, - "y": 3 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "Backspace", "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "nuhs", "x": 12.75, "y": 2}, + {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "x": 1.25, "y": 3}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "x": 14, "y": 3}, + {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} ] }, "LAYOUT_iso_split_shift_split_backspace": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|`", - "x": 13, - "y": 0 - }, - { - "label": "~", - "x": 14, - "y": 0 - }, - { - "label": "Tab", - "x": 0, - "y": 1, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 1 - }, - { - "label": "W", - "x": 2.5, - "y": 1 - }, - { - "label": "E", - "x": 3.5, - "y": 1 - }, - { - "label": "R", - "x": 4.5, - "y": 1 - }, - { - "label": "T", - "x": 5.5, - "y": 1 - }, - { - "label": "Y", - "x": 6.5, - "y": 1 - }, - { - "label": "U", - "x": 7.5, - "y": 1 - }, - { - "label": "I", - "x": 8.5, - "y": 1 - }, - { - "label": "O", - "x": 9.5, - "y": 1 - }, - { - "label": "P", - "x": 10.5, - "y": 1 - }, - { - "label": "{", - "x": 11.5, - "y": 1 - }, - { - "label": "}", - "x": 12.5, - "y": 1 - }, - { - "label": "Enter", - "x": 13.75, - "y": 1, - "w": 1.25, - "h": 2 - }, - { - "label": "Ctrl", - "x": 0, - "y": 2, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 2 - }, - { - "label": "S", - "x": 2.75, - "y": 2 - }, - { - "label": "D", - "x": 3.75, - "y": 2 - }, - { - "label": "F", - "x": 4.75, - "y": 2 - }, - { - "label": "G", - "x": 5.75, - "y": 2 - }, - { - "label": "H", - "x": 6.75, - "y": 2 - }, - { - "label": "J", - "x": 7.75, - "y": 2 - }, - { - "label": "K", - "x": 8.75, - "y": 2 - }, - { - "label": "L", - "x": 9.75, - "y": 2 - }, - { - "label": ":", - "x": 10.75, - "y": 2 - }, - { - "label": "\"", - "x": 11.75, - "y": 2 - }, - { - "label": "nuhs", - "x": 12.75, - "y": 2 - }, - { - "label": "Shift", - "x": 0, - "y": 3, - "w": 1.25 - }, - { - "label": "nubs", - "x": 1.25, - "y": 3 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Num Lock", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"label": "Esc", "x": 0, "y": 0}, + {"label": "!", "x": 1, "y": 0}, + {"label": "@", "x": 2, "y": 0}, + {"label": "#", "x": 3, "y": 0}, + {"label": "$", "x": 4, "y": 0}, + {"label": "%", "x": 5, "y": 0}, + {"label": "^", "x": 6, "y": 0}, + {"label": "&", "x": 7, "y": 0}, + {"label": "*", "x": 8, "y": 0}, + {"label": "(", "x": 9, "y": 0}, + {"label": ")", "x": 10, "y": 0}, + {"label": "_", "x": 11, "y": 0}, + {"label": "+", "x": 12, "y": 0}, + {"label": "|`", "x": 13, "y": 0}, + {"label": "~", "x": 14, "y": 0}, + {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "x": 1.5, "y": 1}, + {"label": "W", "x": 2.5, "y": 1}, + {"label": "E", "x": 3.5, "y": 1}, + {"label": "R", "x": 4.5, "y": 1}, + {"label": "T", "x": 5.5, "y": 1}, + {"label": "Y", "x": 6.5, "y": 1}, + {"label": "U", "x": 7.5, "y": 1}, + {"label": "I", "x": 8.5, "y": 1}, + {"label": "O", "x": 9.5, "y": 1}, + {"label": "P", "x": 10.5, "y": 1}, + {"label": "{", "x": 11.5, "y": 1}, + {"label": "}", "x": 12.5, "y": 1}, + {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "x": 1.75, "y": 2}, + {"label": "S", "x": 2.75, "y": 2}, + {"label": "D", "x": 3.75, "y": 2}, + {"label": "F", "x": 4.75, "y": 2}, + {"label": "G", "x": 5.75, "y": 2}, + {"label": "H", "x": 6.75, "y": 2}, + {"label": "J", "x": 7.75, "y": 2}, + {"label": "K", "x": 8.75, "y": 2}, + {"label": "L", "x": 9.75, "y": 2}, + {"label": ":", "x": 10.75, "y": 2}, + {"label": "\"", "x": 11.75, "y": 2}, + {"label": "nuhs", "x": 12.75, "y": 2}, + {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "x": 1.25, "y": 3}, + {"label": "Z", "x": 2.25, "y": 3}, + {"label": "X", "x": 3.25, "y": 3}, + {"label": "C", "x": 4.25, "y": 3}, + {"label": "V", "x": 5.25, "y": 3}, + {"label": "B", "x": 6.25, "y": 3}, + {"label": "N", "x": 7.25, "y": 3}, + {"label": "M", "x": 8.25, "y": 3}, + {"label": "<", "x": 9.25, "y": 3}, + {"label": ">", "x": 10.25, "y": 3}, + {"label": "?", "x": 11.25, "y": 3}, + {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "x": 14, "y": 3}, + {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "x": 12.5, "y": 4}, + {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} ] - }, + } } } diff --git a/keyboards/model_f_labs/f62/keymaps/via/config.h b/keyboards/model_f_labs/f62/keymaps/via/config.h deleted file mode 100644 index e1174a5b70b..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/via/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2023 Matthew Wolf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#undef BOOTMAGIC_ENABLE -#undef BOOTMAGIC_LITE - -/* Bootmagic Lite key configuration */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 - diff --git a/keyboards/model_f_labs/f62/keymaps/via/rules.mk b/keyboards/model_f_labs/f62/keymaps/via/rules.mk index 48c854316a1..94ba20fb0e0 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/rules.mk +++ b/keyboards/model_f_labs/f62/keymaps/via/rules.mk @@ -1,4 +1,6 @@ VIA_ENABLE = yes LTO_ENABLE = yes +BOOTMAGIC_ENABLE = no +BOOTMAGIC_LITE = no SRC = ../xwhatsit_capsense_matrix.c diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index edf9e2cc49e..f04985cf7e5 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -120,7 +120,13 @@ along with this program. If not, see . //#define LED_CAPS_LOCK_ACTIVE_LOW //#define LED_SCROLL_LOCK_ACTIVE_LOW + // ----- xwhatsit hardware configuration (type_f) ----- +#undef BOOTMAGIC_ENABLE +#undef BOOTMAGIC_LITE + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 #define CAPSENSE_DAC_SCLK B1 #define CAPSENSE_DAC_DIN B2 From cc0c8deec852ba11d9aff9ee2f2887d6360a2e14 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sat, 5 Aug 2023 19:17:54 -0400 Subject: [PATCH 14/37] F62 wcass config.h and rules.mk update --- keyboards/model_f_labs/f62/wcass/config.h | 11 ------- keyboards/model_f_labs/f62/wcass/rules.mk | 36 ----------------------- 2 files changed, 47 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index f04985cf7e5..b53249977f5 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -18,17 +18,6 @@ along with this program. If not, see . #pragma once -//#include "config_common.h" - -/* USB Device descriptor parameter */ -// #define VENDOR_ID 0xFEED -// #define PRODUCT_ID 0X0F62 -// #xdefine DEVICE_VER 0x0001 -// #define MANUFACTURER Model F Labs -// #define PRODUCT Reproduction IBM F62 Keyboard -// DESCRIPTION is no longer an option -//#define DESCRIPTION Tom Wong-Cornall/Ellipse/wcass/Purdea Andrei - /* key matrix size */ #define MATRIX_ROWS 8 #define MATRIX_COLS 9 diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index dffe4d71e46..7e18e7cd63a 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -1,50 +1,14 @@ -# Copyright 2020 Purdea Andrei -# Copyright 2021-2022 Matthew J Wolf -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# MCU name - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp - # Build Options # change yes to no to disable # EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches -HD44780_ENABLE = no # Enable support for HD44780 based LCDs RAW_ENABLE = yes HAPTIC_ENABLE = yes HAPTIC_DRIVER = SOLENOID - CUSTOM_MATRIX=lite SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c From 3648b623bd59761ef8be58ccc70ae38c308ddaf2 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 24 Sep 2023 16:19:58 -0400 Subject: [PATCH 15/37] F62 - removed wcass.h --- keyboards/model_f_labs/f62/wcass/info.json | 613 ++++++++++++++++++++- keyboards/model_f_labs/f62/wcass/rules.mk | 9 +- keyboards/model_f_labs/f62/wcass/wcass.c | 3 - keyboards/model_f_labs/f62/wcass/wcass.h | 341 ------------ 4 files changed, 612 insertions(+), 354 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/wcass/wcass.h diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index 4c80ee127d7..c87d9c0ecbb 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -1,13 +1,24 @@ { "manufacturer": "Model F Labs", "keyboard_name": "Reproduction IBM F62 Keyboard", + "maintainer": "Purdea Andrei", "bootloader": "atmel-dfu", "bootmagic": { - "enabled": false + "enabled": false, }, "build": { "lto": true }, + "features": { + "backlight": false, + "command": true, + "console": false, + "extrakey": true, + "haptic": true, + "nkro": true, + "raw": true, + "rgblight": false + }, "indicators": { "caps_lock": "B5", "num_lock": "B4" @@ -16,6 +27,9 @@ "enabled": true }, "processor": "atmega32u2", + "tapping": { + "hold_on_other_key_press": false + }, "split": { "soft_serial_pin": "D0" }, @@ -24,5 +38,600 @@ "device_version": "0.0.1", "pid": "0x6262", "vid": "0x1209" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "#", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 6}, + {"label": "K44", "matrix": [3, 6], "x": 10, "y": 4}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_regular_shift_regular_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_regular_shift_split_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_shift_regular_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_shift_split_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_iso_regular_shift_regular_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_iso_regular_shift_split_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_iso_split_shift_regular_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_iso_split_shift_split_backspace": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + } } -} \ No newline at end of file +} diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index 7e18e7cd63a..72dc51b7e2b 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -1,14 +1,7 @@ # Build Options # change yes to no to disable # -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -RAW_ENABLE = yes -HAPTIC_ENABLE = yes +#HAPTIC_ENABLE = yes HAPTIC_DRIVER = SOLENOID CUSTOM_MATRIX=lite SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c diff --git a/keyboards/model_f_labs/f62/wcass/wcass.c b/keyboards/model_f_labs/f62/wcass/wcass.c index 04b3e163af6..30986364c7b 100644 --- a/keyboards/model_f_labs/f62/wcass/wcass.c +++ b/keyboards/model_f_labs/f62/wcass/wcass.c @@ -1,5 +1,4 @@ /* Copyright 2020 Purdea Andrei - * Copyright 2024 Matthew J Wolf * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,7 +14,5 @@ * along with this program. If not, see . */ -#include "wcass.h" - const char *KEYBOARD_FILENAME = __FILE__; // used by util_comm diff --git a/keyboards/model_f_labs/f62/wcass/wcass.h b/keyboards/model_f_labs/f62/wcass/wcass.h deleted file mode 100644 index 6e86efbd22a..00000000000 --- a/keyboards/model_f_labs/f62/wcass/wcass.h +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * Copyright 2022 Matthew Wolf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define ___ KC_NO - -/* - * ┌───────┐ - * 2U Backspace │ K0E│ - * └───────┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│K2D │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K44 │K45 │K46│K47 │ - * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ - * ┌───────────────────────────┐ ┌────────┐ - * Full Size Space │K43 │ │ K2D│ ANSI Enter - * └───────────────────────────┘ └────────┘ - * ┌──────────────────────┐ ┌─────┐ - * Short Space Bar │K43 │ │ │ ISO Enter - * └──────────────────────┘ ┌──┴┐ │ - * │K2C│ K2D│ - * ┌────────┐ ┌─┴───┴────┤ - * │K30 │ 2.25 LShift │ K3D│ 2.75 RShift - * └────────┘ └──────────┘ - */ - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -// Note: unused columns 8..14 are not listed here. Column 15 is listed here as column 8 -// Note arguments representing the layout are named based on default F77 hhkb split backspace configuration, for other layouts argument naming might not make much sense -// This was done for ease of implementation. - -/* all - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│K2D │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K44 │K45 │K46│K47 │ - * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ - */ -#define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K43, K44, K45, K46, K47\ -) \ -{ \ - { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, K44, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, K2C, K1D, ___}\ -} -/* - * ansi_regular_shift_regular_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_ansi_regular_shift_regular_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { ___, K33, K23, K25, K28, K29, K3B, ___, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ -} -/* - * ansi_regular_shift_split_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_ansi_regular_shift_split_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { ___, K33, K23, K25, K28, K29, K3B, ___, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ -} -/* - * ansi_split_shift_regular_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ - * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_ansi_split_shift_regular_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { ___, K33, K23, K25, K28, K29, K3B, K3C, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ -} -/* - * ansi_split_shift_split_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│K1D │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────│ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│ K2D│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ - * │K30 │K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_ansi_split_shift_split_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D,\ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { ___, K33, K23, K25, K28, K29, K3B, K3C, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, ___, K1D, ___}\ -} -/* - * iso_regular_shift_regular_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_iso_regular_shift_regular_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { K31, K33, K23, K25, K28, K29, K3B, ___, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ -} -/* - * iso_regular_shift_split_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│ K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_iso_regular_shift_split_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { K31, K33, K23, K25, K28, K29, K3B, ___, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ -} -/* - * iso_split_shift_regular_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│ K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_iso_split_shift_regular_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, ___, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ -} -/* - * iso_split_shift_split_backspace - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │K00│K01│K02│K03│K04│K05│K06│K07│K08│K09│K0A│K0B│K0C│K0D│K0E│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │K10 │K11│K12│K13│K14│K15│K16│K17│K18│K19│K1A│K1B│K1C│ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ - * │K20 │K21│K22│K23│K24│K26│K27│K28│K28│K29│K2A│K2B│K2C│ K2D│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │K30 │K31│K32│K33│K34│K35│K36│K37│K38│K39│K3A│K3B│K3C │K3D│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ - * │K40 │K41│K42 │K43 │K45 │K46│K47 │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - */ -#define LAYOUT_iso_split_shift_split_backspace( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,\ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\ - K40, K41, K42, K43, K45, K46, K47\ -) \ -{ \ - { K31, K33, K23, K25, K28, K29, K3B, K3C, ___},\ - { K41, K32, K34, K36, K37, K3A, K45, K3D, ___},\ - { K30, K22, K24, K26, K27, K2A, K2B, K2D, ___},\ - { K40, K42, K35, K43, K38, K39, ___, K46, K47},\ - { K00, K11, K03, K05, K07, K09, K0B, K0D, ___},\ - { K10, K12, K14, K16, K18, K1A, K1B, K1C, ___},\ - { K01, K02, K04, K06, K08, K0A, K0C, K0E, ___},\ - { K20, K21, K13, K15, K17, K19, K2C, ___, ___}\ -} From 74930d98764756e4b727c3376ca9ae21a778b6b9 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 24 Sep 2023 19:21:00 -0400 Subject: [PATCH 16/37] F62: BootMagic conf cleanup --- keyboards/model_f_labs/f62/keymaps/via/rules.mk | 1 - keyboards/model_f_labs/f62/wcass/config.h | 2 -- keyboards/model_f_labs/xwhatsit_capsense_matrix.c | 8 +++----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/keyboards/model_f_labs/f62/keymaps/via/rules.mk b/keyboards/model_f_labs/f62/keymaps/via/rules.mk index 94ba20fb0e0..79a59a11470 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/rules.mk +++ b/keyboards/model_f_labs/f62/keymaps/via/rules.mk @@ -1,6 +1,5 @@ VIA_ENABLE = yes LTO_ENABLE = yes BOOTMAGIC_ENABLE = no -BOOTMAGIC_LITE = no SRC = ../xwhatsit_capsense_matrix.c diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index b53249977f5..bc6a5f4996f 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -111,8 +111,6 @@ along with this program. If not, see . // ----- xwhatsit hardware configuration (type_f) ----- -#undef BOOTMAGIC_ENABLE -#undef BOOTMAGIC_LITE #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c index 9d8bd0eebe0..b8a2b287487 100644 --- a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c +++ b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c @@ -544,11 +544,9 @@ uint16_t calibration_measure_all_valid_keys(uint8_t time, uint8_t reps, bool loo return min; } -#if CAPSENSE_CAL_ENABLED -#if defined(BOOTMAGIC_ENABLE) || defined(BOOTMAGIC_LITE) -#error "Calibration is not supported in conjunction with BOOTMAGIC, because calibration requires that no keys are pressed while the keyboard is plugged in" -#endif -#endif +// Calibration is not supported in conjunction with BOOTMAGIC, because calibration requires that no keys are +// pressed while the keyboard is plugged in +void bootmagic_lite(void) {} uint16_t cal_thresholds[CAPSENSE_CAL_BINS]; matrix_row_t assigned_to_threshold[CAPSENSE_CAL_BINS][MATRIX_CAPSENSE_ROWS]; From c95d99264b089f7482119f2eb0e9c2a65db3590b Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 24 Sep 2023 19:42:07 -0400 Subject: [PATCH 17/37] F62: Move Haptic enable to rules.mk --- keyboards/model_f_labs/f62/wcass/info.json | 1 - keyboards/model_f_labs/f62/wcass/rules.mk | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index c87d9c0ecbb..b20b5a9075f 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -14,7 +14,6 @@ "command": true, "console": false, "extrakey": true, - "haptic": true, "nkro": true, "raw": true, "rgblight": false diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index 72dc51b7e2b..deda62bba64 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -#HAPTIC_ENABLE = yes +HAPTIC_ENABLE = yes HAPTIC_DRIVER = SOLENOID CUSTOM_MATRIX=lite SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c From eec663a993547548f33f2f5b44d640511443a928 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 24 Sep 2023 19:51:22 -0400 Subject: [PATCH 18/37] F62: Does the CI build like "HAPTIC_DRIVER = solenoid" in lower case? --- keyboards/model_f_labs/f62/wcass/info.json | 1 + keyboards/model_f_labs/f62/wcass/rules.mk | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index b20b5a9075f..5cabe0ba4ac 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -14,6 +14,7 @@ "command": true, "console": false, "extrakey": true, + "haptic": true, "nkro": true, "raw": true, "rgblight": false diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index deda62bba64..e04ea645553 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -HAPTIC_ENABLE = yes -HAPTIC_DRIVER = SOLENOID +#HAPTIC_ENABLE = yes +HAPTIC_DRIVER = solenoid CUSTOM_MATRIX=lite SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c From 7d58907550debf2fbdb4bfa000b74fc2948d184a Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Mon, 25 Sep 2023 17:51:18 -0400 Subject: [PATCH 19/37] F62: Comments removed, keymap formating --- .../model_f_labs/f62/keymaps/default/keymap.c | 16 ++++---- .../model_f_labs/f62/keymaps/via/keymap.c | 14 +++---- keyboards/model_f_labs/f62/wcass/config.h | 38 +------------------ 3 files changed, 16 insertions(+), 52 deletions(-) diff --git a/keyboards/model_f_labs/f62/keymaps/default/keymap.c b/keyboards/model_f_labs/f62/keymaps/default/keymap.c index db7b5f7c804..15edaa957ef 100644 --- a/keyboards/model_f_labs/f62/keymaps/default/keymap.c +++ b/keyboards/model_f_labs/f62/keymaps/default/keymap.c @@ -63,14 +63,14 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_all( - KC_ESC, 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_BSLS, KC_GRV, - 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_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - 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, MO(_FN1), - KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL - ), - [_FN1] = LAYOUT_all( + [_BASE] = LAYOUT_all( + KC_ESC, 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_BSLS, KC_GRV, + 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_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + 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, MO(_FN1), + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL + ), + [_FN1] = LAYOUT_all( KC_GRV, 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_INS, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, diff --git a/keyboards/model_f_labs/f62/keymaps/via/keymap.c b/keyboards/model_f_labs/f62/keymaps/via/keymap.c index ba9a58daaf5..db82d8a67d1 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/keymap.c +++ b/keyboards/model_f_labs/f62/keymaps/via/keymap.c @@ -61,13 +61,13 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_all( - KC_ESC, 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_BSLS, KC_GRV, - 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_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - 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, MO(_FN1), - KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL - ), + [_BASE] = LAYOUT_all( + KC_ESC, 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_BSLS, KC_GRV, + 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_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + 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, MO(_FN1), + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL + ), [_FN1] = LAYOUT_all( KC_GRV, 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_INS, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index bc6a5f4996f..f3fa6a342fa 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -1,6 +1,6 @@ /* Copyright 2020 Purdea Andrei -Copyright 2021-2022 Matthew J Wolf +Copyright 2021-2023 Matthew J Wolf This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,21 +37,6 @@ along with this program. If not, see . * These options are also useful to firmware size reduction. */ -/* disable debug print */ -// #define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 - #define HOLD_ON_OTHER_KEY_PRESS /* XWHATSIT CONTROLLER TYPE */ @@ -87,29 +72,8 @@ along with this program. If not, see . // You can also tune the following for your solenoid: #define SOLENOID_DEFAULT_DWELL 4 #define SOLENOID_MIN_DWELL 4 -//#define SOLENOID_MAX_DWELL 100 #define NO_HAPTIC_MOD -// If the lock lights are not used, then please don't define the below pins, -// or leave them set as unused pins: - -// The following definitions match the lock lights as used by the original -// xwhatsit firmware, but enabling all three of these is not compatible with -// standard solenoid support, because B6 and B7 pins are already in use: -//#define LED_NUM_LOCK_PIN B5 -//#define LED_CAPS_LOCK_PIN B6 -//#define LED_SCROLL_LOCK_PIN B4 -// Since solenoid support is enabled by default, the above lock light pin -// assignments are disabled by default. -// Instead the more common Num Lock and Caps Lock are assigned the following -// way by default, and this can be used in combination with the solenoid: - -// Uncomment below if the leds are on when the pin is driving zero: -//#define LED_NUM_LOCK_ACTIVE_LOW -//#define LED_CAPS_LOCK_ACTIVE_LOW -//#define LED_SCROLL_LOCK_ACTIVE_LOW - - // ----- xwhatsit hardware configuration (type_f) ----- #define BOOTMAGIC_LITE_ROW 0 From 7367ed305ac6e61f84e13af64b8a10b9e6064b68 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Fri, 24 Nov 2023 16:32:59 -0500 Subject: [PATCH 20/37] qmk format-c --- keyboards/model_f_labs/f62/wcass/info.json | 2 +- .../model_f_labs/xwhatsit_capsense_matrix.c | 656 ++++++++---------- .../model_f_labs/xwhatsit_capsense_matrix.h | 28 +- keyboards/model_f_labs/xwhatsit_util_comm.c | 248 +++---- keyboards/model_f_labs/xwhatsit_util_comm.h | 64 +- 5 files changed, 459 insertions(+), 539 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index 5cabe0ba4ac..144d5360872 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -14,7 +14,7 @@ "command": true, "console": false, "extrakey": true, - "haptic": true, + "haptic": true, "nkro": true, "raw": true, "rgblight": false diff --git a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c index b8a2b287487..ce8147bb982 100644 --- a/keyboards/model_f_labs/xwhatsit_capsense_matrix.c +++ b/keyboards/model_f_labs/xwhatsit_capsense_matrix.c @@ -47,18 +47,15 @@ pin 4 = HEADER4 = RXI = PD2 pin 5 = HEADER2 = D(igital)7 = PE6 */ -static inline uint8_t read_rows(void) -{ +static inline uint8_t read_rows(void) { CAPSENSE_READ_ROWS_LOCAL_VARS; - asm volatile (CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS : CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS : CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS); + asm volatile(CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS:CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS : CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS); return CAPSENSE_READ_ROWS_VALUE; } - #if defined(CAPSENSE_DAC_MCP4921) -void dac_init(void) -{ +void dac_init(void) { writePin(CAPSENSE_DAC_NCS, 1); setPinOutput(CAPSENSE_DAC_NCS); setPinOutput(CAPSENSE_DAC_SCK); @@ -68,8 +65,7 @@ void dac_init(void) writePin(CAPSENSE_DAC_SDI, 0); } -void dac_write_threshold(uint16_t value) -{ +void dac_write_threshold(uint16_t value) { const uint16_t buffered = 0; value |= 1 << nSHDN_BIT; // nSHDN = 0 -- make sure output is not floating. value |= MCP_DAC_GAIN_1X << nGA_BIT; @@ -77,8 +73,7 @@ void dac_write_threshold(uint16_t value) writePin(CAPSENSE_DAC_NCS, 0); int i; - for (i=0;i<16;i++) - { + for (i = 0; i < 16; i++) { writePin(CAPSENSE_DAC_SDI, (value >> 15) & 1); value <<= 1; writePin(CAPSENSE_DAC_SCK, 1); @@ -90,8 +85,7 @@ void dac_write_threshold(uint16_t value) #else -void dac_init(void) -{ +void dac_init(void) { setPinOutput(CAPSENSE_DAC_SCLK); setPinOutput(CAPSENSE_DAC_DIN); setPinOutput(CAPSENSE_DAC_SYNC_N); @@ -101,13 +95,11 @@ void dac_init(void) writePin(CAPSENSE_DAC_SCLK, 0); } -void dac_write_threshold(uint16_t value) -{ +void dac_write_threshold(uint16_t value) { value <<= 2; // The two LSB bits of this DAC are don't care. writePin(CAPSENSE_DAC_SYNC_N, 0); int i; - for (i=0;i<16;i++) - { + for (i = 0; i < 16; i++) { writePin(CAPSENSE_DAC_DIN, (value >> 15) & 1); value <<= 1; writePin(CAPSENSE_DAC_SCLK, 1); @@ -126,17 +118,14 @@ void dac_write_threshold(uint16_t value) (CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(0) >= 16)) ? 24 : 16) */ -inline int shift_bits(void) -{ - return (((CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(MATRIX_COLS - 1) >= 16) || \ - (CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(0) >= 16)) ? 24 : 16 ); +inline int shift_bits(void) { + return (((CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(MATRIX_COLS - 1) >= 16) || (CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(0) >= 16)) ? 24 : 16); } -void shift_select_nothing(void) -{ +void shift_select_nothing(void) { writePin(CAPSENSE_SHIFT_DIN, 0); int i; - for (i=0;i=0; i--) - //for (i=SHIFT_BITS-1; i>=0; i--) + for (i = shift_bits() - 1; i >= 0; i--) + // for (i=SHIFT_BITS-1; i>=0; i--) { writePin(CAPSENSE_SHIFT_DIN, (data >> (shift_bits() - 1)) & 1); - //writePin(CAPSENSE_SHIFT_DIN, (data >> (SHIFT_BITS - 1)) & 1); + // writePin(CAPSENSE_SHIFT_DIN, (data >> (SHIFT_BITS - 1)) & 1); writePin(CAPSENSE_SHIFT_SHCP, 1); if (!((i == 0) && (shcp_idle))) { writePin(CAPSENSE_SHIFT_SHCP, 0); @@ -169,10 +157,9 @@ void shift_data(uint32_t data, int data_idle, int shcp_idle, int stcp_idle) writePin(CAPSENSE_SHIFT_DIN, !!data_idle); } -void shift_select_col_no_strobe(uint8_t col) -{ +void shift_select_col_no_strobe(uint8_t col) { int i; - for (i=shift_bits()-1; i>=0; i--) + for (i = shift_bits() - 1; i >= 0; i--) // for (i=SHIFT_BITS-1; i>=0; i--) { writePin(CAPSENSE_SHIFT_DIN, !!(col == i)); @@ -181,15 +168,13 @@ void shift_select_col_no_strobe(uint8_t col) } } -static inline void shift_select_col(uint8_t col) -{ +static inline void shift_select_col(uint8_t col) { shift_select_col_no_strobe(col); writePin(CAPSENSE_SHIFT_STCP, 1); writePin(CAPSENSE_SHIFT_STCP, 0); } -void shift_init(void) -{ +void shift_init(void) { setPinOutput(CAPSENSE_SHIFT_DIN); setPinOutput(CAPSENSE_SHIFT_OE); setPinOutput(CAPSENSE_SHIFT_STCP); @@ -217,38 +202,38 @@ void shift_init(void) // the following function requires storage for CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE * (time + 1) bytes // but returns valid data only in the first (time + 1) bytes -void test_multiple(uint8_t col, uint16_t time, uint8_t *array) -{ +void test_multiple(uint8_t col, uint16_t time, uint8_t *array) { shift_select_col_no_strobe(col); uint16_t index; CAPSENSE_READ_ROWS_LOCAL_VARS; uint8_t *arrayp = array; - asm volatile ( - "ldi %A[index], 0" "\n\t" - "ldi %B[index], 0" "\n\t" - "cli" "\n\t" - "sbi %[stcp_regaddr], %[stcp_bit]" "\n\t" - "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" - CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" - "adiw %A[index], 0x01" "\n\t" - "cp %A[index], %A[time]" "\n\t" - "cpc %B[index], %B[time]" "\n\t" - "brlo 1b" "\n\t" - "sei" "\n\t" - "cbi %[stcp_regaddr], %[stcp_bit]" "\n\t" - : [arr] "=e" (arrayp), - [index] "=&w" (index), - CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS - : [time] "r" (time + 1), - [stcp_regaddr] "I" (CAPSENSE_SHIFT_STCP_IO), - [stcp_bit] "I" (CAPSENSE_SHIFT_STCP_BIT), - CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, - "0" (arrayp) - : "memory" ); + asm volatile("ldi %A[index], 0" + "\n\t" + "ldi %B[index], 0" + "\n\t" + "cli" + "\n\t" + "sbi %[stcp_regaddr], %[stcp_bit]" + "\n\t" + "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" + "adiw %A[index], 0x01" + "\n\t" + "cp %A[index], %A[time]" + "\n\t" + "cpc %B[index], %B[time]" + "\n\t" + "brlo 1b" + "\n\t" + "sei" + "\n\t" + "cbi %[stcp_regaddr], %[stcp_bit]" + "\n\t" + : [arr] "=e"(arrayp), [index] "=&w"(index), CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS + : [time] "r"(time + 1), [stcp_regaddr] "I"(CAPSENSE_SHIFT_STCP_IO), [stcp_bit] "I"(CAPSENSE_SHIFT_STCP_BIT), CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, "0"(arrayp) + : "memory"); uint16_t i, p0, p1; p0 = p1 = 0; - for (i=0; i<=time; i++) - { + for (i = 0; i <= time; i++) { CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY; array[p1++] = CAPSENSE_READ_ROWS_VALUE; } @@ -256,82 +241,73 @@ void test_multiple(uint8_t col, uint16_t time, uint8_t *array) wait_us(CAPSENSE_KEYBOARD_SETTLE_TIME_US); } -uint8_t test_single(uint8_t col, uint16_t time, uint8_t *interference_ptr) -{ +uint8_t test_single(uint8_t col, uint16_t time, uint8_t *interference_ptr) { shift_select_col_no_strobe(col); uint16_t index; CAPSENSE_READ_ROWS_LOCAL_VARS; - uint8_t array[CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 1]; // one sample before triggering, and one dummy byte + uint8_t array[CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE + 1]; // one sample before triggering, and one dummy byte uint8_t *arrayp = array; - asm volatile ( - "ldi %A[index], 0" "\n\t" - "ldi %B[index], 0" "\n\t" - "cli" "\n\t" - CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" - CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" - "sbi %[stcp_regaddr], %[stcp_bit]" "\n\t" - "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" - CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS_FAKE "\n\t" - "adiw %A[index], 0x01" "\n\t" - "cp %A[index], %A[time]" "\n\t" - "cpc %B[index], %B[time]" "\n\t" - "brlo 1b" "\n\t" - "sei" "\n\t" - "cbi %[stcp_regaddr], %[stcp_bit]" "\n\t" - : [arr] "=e" (arrayp), - [index] "=&w" (index), - CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS - : [time] "r" (time + 1), - [stcp_regaddr] "I" (CAPSENSE_SHIFT_STCP_IO), - [stcp_bit] "I" (CAPSENSE_SHIFT_STCP_BIT), - CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, - "0" (arrayp) - : "memory" ); + asm volatile("ldi %A[index], 0" + "\n\t" + "ldi %B[index], 0" + "\n\t" + "cli" + "\n\t" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS "\n\t" + "sbi %[stcp_regaddr], %[stcp_bit]" + "\n\t" + "1:" CAPSENSE_READ_ROWS_ASM_INSTRUCTIONS "\n\t" CAPSENSE_READ_ROWS_STORE_TO_ARRAY_INSTRUCTIONS_FAKE "\n\t" + "adiw %A[index], 0x01" + "\n\t" + "cp %A[index], %A[time]" + "\n\t" + "cpc %B[index], %B[time]" + "\n\t" + "brlo 1b" + "\n\t" + "sei" + "\n\t" + "cbi %[stcp_regaddr], %[stcp_bit]" + "\n\t" + : [arr] "=e"(arrayp), [index] "=&w"(index), CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS + : [time] "r"(time + 1), [stcp_regaddr] "I"(CAPSENSE_SHIFT_STCP_IO), [stcp_bit] "I"(CAPSENSE_SHIFT_STCP_BIT), CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS, "0"(arrayp) + : "memory"); shift_select_nothing(); wait_us(CAPSENSE_KEYBOARD_SETTLE_TIME_US); uint8_t value_at_time = CAPSENSE_READ_ROWS_VALUE; - if (interference_ptr) - { + if (interference_ptr) { uint16_t p0 = 0; CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY; uint8_t interference = CAPSENSE_READ_ROWS_VALUE; - *interference_ptr = interference; + *interference_ptr = interference; } return value_at_time; } #ifndef NO_PRINT -void test_col_print_data_v2(uint8_t col) -{ +void test_col_print_data_v2(uint8_t col) { uprintf("%d: ", col); - static uint8_t data[NRTIMES*CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE]; - static uint8_t sums[(TESTATONCE+1) * MATRIX_CAPSENSE_ROWS]; - uint8_t to_time = NRTIMES-1; - uint8_t from_time = 0; - while (from_time TESTATONCE) - { + static uint8_t data[NRTIMES * CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE]; + static uint8_t sums[(TESTATONCE + 1) * MATRIX_CAPSENSE_ROWS]; + uint8_t to_time = NRTIMES - 1; + uint8_t from_time = 0; + while (from_time < NRTIMES - 1) { + if (to_time - from_time + 1 > TESTATONCE) { to_time = from_time + TESTATONCE - 1; } uint8_t curr_TESTATONCE = to_time - from_time + 1; uint8_t i; - for (i=0;i<(sizeof(sums)/sizeof(sums[0]));i++) - { + for (i = 0; i < (sizeof(sums) / sizeof(sums[0])); i++) { sums[i] = 0; } - for (i=0;i>= 1; ii += 1; @@ -339,8 +315,7 @@ void test_col_print_data_v2(uint8_t col) } if (from_time == 0) { ii = TESTATONCE * MATRIX_CAPSENSE_ROWS; - for (k=0; k>= 1; ii += 1; @@ -348,7 +323,7 @@ void test_col_print_data_v2(uint8_t col) } } if (from_time == 0) { - for (i=TESTATONCE*MATRIX_CAPSENSE_ROWS;i<(TESTATONCE+1)*MATRIX_CAPSENSE_ROWS;i++) { + for (i = TESTATONCE * MATRIX_CAPSENSE_ROWS; i < (TESTATONCE + 1) * MATRIX_CAPSENSE_ROWS; i++) { if (sums[i] > 0xf) { print("?"); } else { @@ -357,8 +332,7 @@ void test_col_print_data_v2(uint8_t col) } print(":"); } - for (i=0;i 0xf) { print("?"); } else { @@ -366,7 +340,7 @@ void test_col_print_data_v2(uint8_t col) } } from_time = to_time + 1; - to_time = NRTIMES - 1; + to_time = NRTIMES - 1; } print("\n"); } @@ -375,7 +349,7 @@ void test_col_print_data_v2(uint8_t col) #ifndef NO_PRINT void test_v2(void) { int i; - for (i=7;i>0;i--) { + for (i = 7; i > 0; i--) { uprintf("Starting test in %d\n", i); wait_ms(1000); } @@ -386,88 +360,79 @@ void test_v2(void) { dac_init(); uprintf(" DONE\n"); int d; - for (d=90;d<=260;d++) - { + for (d = 90; d <= 260; d++) { uprintf("Testing threshold: %d\n", d); dac_write_threshold(d); -//WHY ? - #if 1 - int c; - for (c=0; c> row) & 1; } - if (sum < reps_div2) - { + if (sum < reps_div2) { max = mid - 1; } else if (sum > reps_div2) { min = mid + 1; - } else return mid; + } else + return mid; } return min; } -uint16_t measure_middle_keymap_coords(uint8_t col, uint8_t row, uint8_t time, uint8_t reps) -{ +uint16_t measure_middle_keymap_coords(uint8_t col, uint8_t row, uint8_t time, uint8_t reps) { return measure_middle(CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col), CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row), time, reps); } -uint16_t measure_middle_settled(uint8_t col, uint8_t row, uint8_t reps) -{ - uint8_t reps_div2 = reps / 2; +uint16_t measure_middle_settled(uint8_t col, uint8_t row, uint8_t reps) { + uint8_t reps_div2 = reps / 2; uint16_t min = 0, max = CAPSENSE_DAC_MAX; - while (min < max) - { + while (min < max) { uint16_t mid = (min + max) / 2; dac_write_threshold(mid); uint8_t sum = 0; uint8_t i; - for (i=0;i> row) & 1; } - if (sum < reps_div2) - { + if (sum < reps_div2) { max = mid - 1; } else if (sum > reps_div2) { min = mid + 1; - } else return mid; + } else + return mid; } return min; } #ifndef NO_PRINT -void tracking_test(void) -{ +void tracking_test(void) { int i; - for (i=7;i>0;i--) { + for (i = 7; i > 0; i--) { uprintf("Starting test in %d\n", i); wait_ms(1000); } @@ -478,48 +443,42 @@ void tracking_test(void) dac_init(); uprintf(" DONE\n"); while (1) { - uint32_t tt = timer_read32(); - uint16_t key1 = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME, TRACKING_REPS); - uint16_t key2 = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME, TRACKING_REPS); - uint16_t key3 = measure_middle(TRACKING_KEY_3_COL, TRACKING_KEY_3_ROW, TRACKING_TEST_TIME, TRACKING_REPS); - uint16_t key4 = measure_middle(TRACKING_KEY_4_COL, TRACKING_KEY_4_ROW, TRACKING_TEST_TIME, TRACKING_REPS); - uint16_t key5 = measure_middle(TRACKING_KEY_5_COL, TRACKING_KEY_5_ROW, TRACKING_TEST_TIME, TRACKING_REPS); - uint16_t sett = measure_middle_settled(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_REPS); - uint16_t key1l = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME*2, TRACKING_REPS); - uint16_t key2l = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME*2, TRACKING_REPS); - uprintf("%5lu.%03u, %u, %u, %u, %u, %u, %u, %u, %u\n", tt/1000, (uint16_t)(tt%1000), key1, key2, key3, key4, key5, sett, key1l, key2l); + uint32_t tt = timer_read32(); + uint16_t key1 = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key2 = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key3 = measure_middle(TRACKING_KEY_3_COL, TRACKING_KEY_3_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key4 = measure_middle(TRACKING_KEY_4_COL, TRACKING_KEY_4_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t key5 = measure_middle(TRACKING_KEY_5_COL, TRACKING_KEY_5_ROW, TRACKING_TEST_TIME, TRACKING_REPS); + uint16_t sett = measure_middle_settled(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_REPS); + uint16_t key1l = measure_middle(TRACKING_KEY_1_COL, TRACKING_KEY_1_ROW, TRACKING_TEST_TIME * 2, TRACKING_REPS); + uint16_t key2l = measure_middle(TRACKING_KEY_2_COL, TRACKING_KEY_2_ROW, TRACKING_TEST_TIME * 2, TRACKING_REPS); + uprintf("%5lu.%03u, %u, %u, %u, %u, %u, %u, %u, %u\n", tt / 1000, (uint16_t)(tt % 1000), key1, key2, key3, key4, key5, sett, key1l, key2l); } } #endif -uint16_t calibration_measure_all_valid_keys(uint8_t time, uint8_t reps, bool looking_for_all_zero) -{ +uint16_t calibration_measure_all_valid_keys(uint8_t time, uint8_t reps, bool looking_for_all_zero) { uint16_t min = 0, max = CAPSENSE_DAC_MAX; - while (min < max) - { + while (min < max) { uint16_t mid = (min + max) / 2; if (!looking_for_all_zero) { mid = (min + max + 1) / 2; } dac_write_threshold(mid); uint8_t col; - for (col = 0; col < MATRIX_COLS; col++) - { + for (col = 0; col < MATRIX_COLS; col++) { uint8_t valid_physical_rows = 0; uint8_t row; - for (row=0; row < MATRIX_CAPSENSE_ROWS; row++) - { + for (row = 0; row < MATRIX_CAPSENSE_ROWS; row++) { // if (pgm_read_word(&keymaps[0][row][col]) != KC_NO) - if (keycode_at_keymap_location(0, row, col) != KC_NO) - { + if (keycode_at_keymap_location(0, row, col) != KC_NO) { valid_physical_rows |= (((matrix_row_t)1) << CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row)); // convert keymap row to physical row } } uint8_t physical_col = CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col); uint8_t i; - for (i=0;i threshold)) cal_thresholds_min[besti] = threshold; } } } - for (i=0;i CAPSENSE_DAC_MAX) - { +#ifdef CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS + if ((bin_signal_level + CAPSENSE_CAL_THRESHOLD_OFFSET) > CAPSENSE_DAC_MAX) { cal_thresholds[i] = CAPSENSE_DAC_MAX; } else { cal_thresholds[i] = bin_signal_level + CAPSENSE_CAL_THRESHOLD_OFFSET; } - #else - if (bin_signal_level < CAPSENSE_CAL_THRESHOLD_OFFSET) - { +#else + if (bin_signal_level < CAPSENSE_CAL_THRESHOLD_OFFSET) { cal_thresholds[i] = 0; } else { cal_thresholds[i] = bin_signal_level - CAPSENSE_CAL_THRESHOLD_OFFSET; } - #endif +#endif } } -void set_leds(int num_lock, int caps_lock, int scroll_lock) -{ - #if defined(LED_NUM_LOCK_PIN) - #if defined(LED_NUM_LOCK_ACTIVE_LOW) - writePin(LED_NUM_LOCK_PIN, !num_lock); - #else - writePin(LED_NUM_LOCK_PIN, num_lock); - #endif - #endif - #if defined(LED_CAPS_LOCK_PIN) - #if defined(LED_CAPS_LOCK_ACTIVE_LOW) - writePin(LED_CAPS_LOCK_PIN, !caps_lock); - #else - writePin(LED_CAPS_LOCK_PIN, caps_lock); - #endif - #endif - #if defined(LED_SCROLL_LOCK_PIN) - #if defined(LED_SCROLL_LOCK_ACTIVE_LOW) - writePin(LED_SCROLL_LOCK_PIN, !scroll_lock); - #else - writePin(LED_SCROLL_LOCK_PIN, scroll_lock); - #endif - #endif +void set_leds(int num_lock, int caps_lock, int scroll_lock) { +#if defined(LED_NUM_LOCK_PIN) +# if defined(LED_NUM_LOCK_ACTIVE_LOW) + writePin(LED_NUM_LOCK_PIN, !num_lock); +# else + writePin(LED_NUM_LOCK_PIN, num_lock); +# endif +#endif +#if defined(LED_CAPS_LOCK_PIN) +# if defined(LED_CAPS_LOCK_ACTIVE_LOW) + writePin(LED_CAPS_LOCK_PIN, !caps_lock); +# else + writePin(LED_CAPS_LOCK_PIN, caps_lock); +# endif +#endif +#if defined(LED_SCROLL_LOCK_PIN) +# if defined(LED_SCROLL_LOCK_ACTIVE_LOW) + writePin(LED_SCROLL_LOCK_PIN, !scroll_lock); +# else + writePin(LED_SCROLL_LOCK_PIN, scroll_lock); +# endif +#endif } #if defined(LED_NON_BASE_LAYER_PIN) void set_led_non_base_layer(uint8_t value) { - #if defined(LED_NON_BASE_LAYER_ACTIVE_LOW) - writePin(LED_NON_BASE_LAYER_PIN, !value); - #else - writePin(LED_NON_BASE_LAYER_PIN, !!value); - #endif +# if defined(LED_NON_BASE_LAYER_ACTIVE_LOW) + writePin(LED_NON_BASE_LAYER_PIN, !value); +# else + writePin(LED_NON_BASE_LAYER_PIN, !!value); +# endif } layer_state_t layer_state_set_kb(layer_state_t state) { @@ -660,7 +614,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) { set_led_non_base_layer(1); break; } - return layer_state_set_user(state); + return layer_state_set_user(state); } #endif @@ -672,88 +626,84 @@ static pin_t extra_direct_pins[MATRIX_EXTRA_DIRECT_ROWS][MATRIX_COLS] = MATRIX_E uint16_t cal_time; #endif -void real_keyboard_init_basic(void) -{ +void real_keyboard_init_basic(void) { SETUP_UNUSED_PINS(); - #if defined(LED_NUM_LOCK_PIN) - setPinOutput(LED_NUM_LOCK_PIN); - #endif - #if defined(LED_CAPS_LOCK_PIN) - setPinOutput(LED_CAPS_LOCK_PIN); - #endif - #if defined(LED_SCROLL_LOCK_PIN) - setPinOutput(LED_SCROLL_LOCK_PIN); - #endif - #if defined(LED_NON_BASE_LAYER_PIN) - setPinOutput(LED_NON_BASE_LAYER_PIN); - set_led_non_base_layer(0); - #endif +#if defined(LED_NUM_LOCK_PIN) + setPinOutput(LED_NUM_LOCK_PIN); +#endif +#if defined(LED_CAPS_LOCK_PIN) + setPinOutput(LED_CAPS_LOCK_PIN); +#endif +#if defined(LED_SCROLL_LOCK_PIN) + setPinOutput(LED_SCROLL_LOCK_PIN); +#endif +#if defined(LED_NON_BASE_LAYER_PIN) + setPinOutput(LED_NON_BASE_LAYER_PIN); + set_led_non_base_layer(0); +#endif set_leds(0, 0, 0); - #ifndef NO_PRINT +#ifndef NO_PRINT uprintf("shift_init()"); - #endif +#endif shift_init(); - #ifndef NO_PRINT +#ifndef NO_PRINT uprintf(" DONE\n"); uprintf("dac_init()"); - #endif +#endif dac_init(); - #ifndef NO_PRINT +#ifndef NO_PRINT uprintf(" DONE\n"); - #endif +#endif SETUP_ROW_GPIOS(); - #if CAPSENSE_CAL_ENABLED - #if CAPSENSE_CAL_DEBUG +#if CAPSENSE_CAL_ENABLED +# if CAPSENSE_CAL_DEBUG cal_time = timer_read(); - #endif +# endif calibration(); - #if CAPSENSE_CAL_DEBUG +# if CAPSENSE_CAL_DEBUG cal_time = timer_read() - cal_time; - #endif - #else +# endif +#else dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); dac_write_threshold(CAPSENSE_HARDCODED_THRESHOLD); - #endif - #if defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) || defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) - // Disable on-board leds. - setPinOutput(D5); - writePin(D5, 1); - setPinOutput(B0); - writePin(B0, 1); - #endif - #if MATRIX_EXTRA_DIRECT_ROWS - for (int row=0; row= 10 * 1000UL) { // after 10 seconds - uprintf("Calibration took: %u ms\n", cal_time); + uprintf("Calibration took: %u ms\n", cal_time); uprintf("Cal All Zero = %u, Cal All Ones = %u\n", cal_tr_allzero, cal_tr_allone); - for (cal=0;cal 16 + for (row = 0; row < MATRIX_CAPSENSE_ROWS; row++) { +# if MATRIX_COLS > 16 uprintf("0x%06X\n", assigned_to_threshold[cal][row]); - #elif MATRIX_COLS > 12 +# elif MATRIX_COLS > 12 uprintf("0x%04X\n", assigned_to_threshold[cal][row]); - #else +# else uprintf("0x%03X\n", assigned_to_threshold[cal][row]); - #endif +# endif } } cal_stats_printed = true; } } - #endif +# endif } #endif void matrix_scan_raw(matrix_row_t current_matrix[]) { uint8_t col, row; memset(current_matrix, 0, sizeof(matrix_row_t) * MATRIX_ROWS); - #if CAPSENSE_CAL_ENABLED +#if CAPSENSE_CAL_ENABLED uint8_t cal; - for (cal=0;cal> physical_row) & 1)) - { + if (!((interference >> physical_row) & 1)) { current_matrix[row] |= ((matrix_row_t)((d >> physical_row) & 1)) << col; } } } } } - #else - for (col=0;col>= 1; } } - #endif +#endif - #if MATRIX_EXTRA_DIRECT_ROWS - for (int row=0; row y) { - return y; - } - return x; + if (x > y) { + return y; + } + return x; } void raw_hid_receive(uint8_t *data, uint8_t length) { @@ -43,8 +43,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { uint8_t response[RAW_EPSIZE]; memcpy(response, magic, sizeof(magic)); response[2] = UTIL_COMM_RESPONSE_ERROR; - switch (data[2]) - { + switch (data[2]) { case UTIL_COMM_GET_VERSION: response[2] = UTIL_COMM_RESPONSE_OK; response[3] = UTIL_COMM_VERSION_MAJOR; @@ -53,13 +52,13 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { response[6] = (UTIL_COMM_VERSION_MINOR >> 0) & 0xff; break; case UTIL_COMM_DISABLE_KEYBOARD: - response[2] = UTIL_COMM_RESPONSE_OK; - response[3] = (uint8_t) keyboard_scan_enabled; + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = (uint8_t)keyboard_scan_enabled; keyboard_scan_enabled = 0; break; case UTIL_COMM_ENABLE_KEYBOARD: - response[2] = UTIL_COMM_RESPONSE_OK; - response[3] = (uint8_t) keyboard_scan_enabled; + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = (uint8_t)keyboard_scan_enabled; keyboard_scan_enabled = 1; break; case UTIL_COMM_ENTER_BOOTLOADER: @@ -76,151 +75,134 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { matrix_row_t current_matrix[MATRIX_ROWS]; matrix_scan_raw(current_matrix); char *current_matrix_ptr = (char *)current_matrix; - int offset = 0; - if (sizeof(current_matrix) > 32-3) - { + int offset = 0; + if (sizeof(current_matrix) > 32 - 3) { offset = data[3]; current_matrix_ptr += offset; } - memcpy(&response[3], current_matrix_ptr, min(32-3, sizeof(current_matrix)-offset)); + memcpy(&response[3], current_matrix_ptr, min(32 - 3, sizeof(current_matrix) - offset)); } break; case UTIL_COMM_GET_THRESHOLDS: response[2] = UTIL_COMM_RESPONSE_OK; - #if CAPSENSE_CAL_ENABLED +#if CAPSENSE_CAL_ENABLED response[3] = CAPSENSE_CAL_BINS; { - const uint8_t cal_bin = data[3]; - response[4] = cal_thresholds[cal_bin] & 0xff; - response[5] = (cal_thresholds[cal_bin] >> 8) & 0xff; + const uint8_t cal_bin = data[3]; + response[4] = cal_thresholds[cal_bin] & 0xff; + response[5] = (cal_thresholds[cal_bin] >> 8) & 0xff; char *assigned_to_threshold_ptr = (char *)assigned_to_threshold[cal_bin]; - int offset = 0; - if (sizeof(assigned_to_threshold[cal_bin]) > 32-6) - { + int offset = 0; + if (sizeof(assigned_to_threshold[cal_bin]) > 32 - 6) { offset = data[4]; assigned_to_threshold_ptr += offset; } - memcpy(&response[6], assigned_to_threshold_ptr, min(32-6, sizeof(assigned_to_threshold[cal_bin]) - offset)); + memcpy(&response[6], assigned_to_threshold_ptr, min(32 - 6, sizeof(assigned_to_threshold[cal_bin]) - offset)); } - #else +#else response[3] = 0; - response[4] = (CAPSENSE_HARDCODED_THRESHOLD) & 0xff; + response[4] = (CAPSENSE_HARDCODED_THRESHOLD)&0xff; response[5] = ((CAPSENSE_HARDCODED_THRESHOLD) >> 8) & 0xff; - #endif +#endif break; - case UTIL_COMM_GET_KEYBOARD_FILENAME: - { - response[2] = UTIL_COMM_RESPONSE_OK; - if (data[3] >= strlen(KEYBOARD_FILENAME) + 1) - { - response[3] = 0; - } else { - const char *substring = KEYBOARD_FILENAME + data[3]; - size_t substring_length = strlen(substring) + 1; - if (substring_length > RAW_EPSIZE - 3) substring_length = RAW_EPSIZE - 3; - memcpy(&response[3], substring, substring_length); + case UTIL_COMM_GET_KEYBOARD_FILENAME: { + response[2] = UTIL_COMM_RESPONSE_OK; + if (data[3] >= strlen(KEYBOARD_FILENAME) + 1) { + response[3] = 0; + } else { + const char *substring = KEYBOARD_FILENAME + data[3]; + size_t substring_length = strlen(substring) + 1; + if (substring_length > RAW_EPSIZE - 3) substring_length = RAW_EPSIZE - 3; + memcpy(&response[3], substring, substring_length); + } + break; + } + case UTIL_COMM_ERASE_EEPROM: { + response[2] = UTIL_COMM_RESPONSE_OK; + uint16_t addr; + for (addr = 0; addr < E2END; addr += 1) { + eeprom_update_byte((uint8_t *)addr, 0xff); + } + break; + } + case UTIL_COMM_GET_SIGNAL_VALUE: { + response[2] = UTIL_COMM_RESPONSE_OK; + uint8_t col = data[3]; + uint8_t row = data[4]; + uint8_t count = data[5]; + int i; + for (i = 0; i < count; i++) { + uint16_t value = measure_middle_keymap_coords(col, row, CAPSENSE_HARDCODED_SAMPLE_TIME, 8); + response[3 + i * 2] = value & 0xff; + response[3 + i * 2 + 1] = (value >> 8) & 0xff; + col += 1; + if (col >= MATRIX_COLS) { + col -= MATRIX_COLS; + row += 1; } - break; - } - case UTIL_COMM_ERASE_EEPROM: - { - response[2] = UTIL_COMM_RESPONSE_OK; - uint16_t addr; - for (addr=0; addr= MATRIX_CAPSENSE_ROWS) { + break; } - break; - } - case UTIL_COMM_GET_SIGNAL_VALUE: - { - response[2] = UTIL_COMM_RESPONSE_OK; - uint8_t col = data[3]; - uint8_t row = data[4]; - uint8_t count = data[5]; - int i; - for (i=0;i> 8) & 0xff; - col += 1; - if (col >= MATRIX_COLS) { - col -= MATRIX_COLS; - row += 1; - } - if (row >= MATRIX_CAPSENSE_ROWS) - { - break; - } - } - break; - } - case UTIL_COMM_GET_KEYBOARD_DETAILS: - { - response[2] = UTIL_COMM_RESPONSE_OK; - response[3] = MATRIX_COLS; - response[4] = MATRIX_ROWS; - response[5] = GET_KEYBOARD_DETAILS_5; - #if defined(CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4) - response[5] = 1; - #elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) - response[5] = 2; - #elif defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) - response[5] = 3; - #elif defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) - response[5] = 4; - #else - response[5] = 0; - #endif - response[6] = CAPSENSE_KEYBOARD_SETTLE_TIME_US; - response[7] = CAPSENSE_DAC_SETTLE_TIME_US; - response[8] = CAPSENSE_HARDCODED_SAMPLE_TIME; - response[9] = CAPSENSE_CAL_ENABLED; - response[10] = CAPSENSE_DAC_MAX & 0xFF; - response[11] = (CAPSENSE_DAC_MAX >> 8) & 0xFF; - response[12] = MATRIX_CAPSENSE_ROWS; - response[13] = 0; // reserved for future - response[14] = 0; // reserved for future - response[15] = 0; // reserved for future - break; } + break; + } + case UTIL_COMM_GET_KEYBOARD_DETAILS: { + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = MATRIX_COLS; + response[4] = MATRIX_ROWS; + response[5] = GET_KEYBOARD_DETAILS_5; +#if defined(CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4) + response[5] = 1; +#elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) + response[5] = 2; +#elif defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) + response[5] = 3; +#elif defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) + response[5] = 4; +#else + response[5] = 0; +#endif + response[6] = CAPSENSE_KEYBOARD_SETTLE_TIME_US; + response[7] = CAPSENSE_DAC_SETTLE_TIME_US; + response[8] = CAPSENSE_HARDCODED_SAMPLE_TIME; + response[9] = CAPSENSE_CAL_ENABLED; + response[10] = CAPSENSE_DAC_MAX & 0xFF; + response[11] = (CAPSENSE_DAC_MAX >> 8) & 0xFF; + response[12] = MATRIX_CAPSENSE_ROWS; + response[13] = 0; // reserved for future + response[14] = 0; // reserved for future + response[15] = 0; // reserved for future + break; + } case UTIL_COMM_SHIFT_DATA: - case UTIL_COMM_SHIFT_DATA_EXT: - { - response[2] = UTIL_COMM_RESPONSE_OK; - uint32_t shdata = (((uint32_t)(data[3])) << 0) | - (((uint32_t)(data[4])) << 8) | - (((uint32_t)(data[5])) << 16) | - (((uint32_t)(data[6])) << 24); - int data_idle = 0; - int shcp_idle = 0; - int stcp_idle = 0; - if (data[2] == UTIL_COMM_SHIFT_DATA_EXT) - { - data_idle = data[7]; - shcp_idle = data[8]; - stcp_idle = data[9]; - } - shift_data(shdata, data_idle, shcp_idle, stcp_idle); - response[3] = readPin(CAPSENSE_SHIFT_DIN); - response[4] = readPin(CAPSENSE_SHIFT_SHCP); - response[5] = readPin(CAPSENSE_SHIFT_STCP); - break; - } - case UTIL_COMM_SET_DAC_VALUE: - { - response[2] = UTIL_COMM_RESPONSE_OK; - uint16_t value = data[3] | (((uint16_t)data[4]) << 8); - dac_write_threshold(value); - break; - } - case UTIL_COMM_GET_ROW_STATE: - { - response[2] = UTIL_COMM_RESPONSE_OK; - response[3] = test_single(255, 0, NULL); - break; + case UTIL_COMM_SHIFT_DATA_EXT: { + response[2] = UTIL_COMM_RESPONSE_OK; + uint32_t shdata = (((uint32_t)(data[3])) << 0) | (((uint32_t)(data[4])) << 8) | (((uint32_t)(data[5])) << 16) | (((uint32_t)(data[6])) << 24); + int data_idle = 0; + int shcp_idle = 0; + int stcp_idle = 0; + if (data[2] == UTIL_COMM_SHIFT_DATA_EXT) { + data_idle = data[7]; + shcp_idle = data[8]; + stcp_idle = data[9]; } + shift_data(shdata, data_idle, shcp_idle, stcp_idle); + response[3] = readPin(CAPSENSE_SHIFT_DIN); + response[4] = readPin(CAPSENSE_SHIFT_SHCP); + response[5] = readPin(CAPSENSE_SHIFT_STCP); + break; + } + case UTIL_COMM_SET_DAC_VALUE: { + response[2] = UTIL_COMM_RESPONSE_OK; + uint16_t value = data[3] | (((uint16_t)data[4]) << 8); + dac_write_threshold(value); + break; + } + case UTIL_COMM_GET_ROW_STATE: { + response[2] = UTIL_COMM_RESPONSE_OK; + response[3] = test_single(255, 0, NULL); + break; + } default: break; } diff --git a/keyboards/model_f_labs/xwhatsit_util_comm.h b/keyboards/model_f_labs/xwhatsit_util_comm.h index 4904f3c1ed3..2cdcf7e2e4c 100644 --- a/keyboards/model_f_labs/xwhatsit_util_comm.h +++ b/keyboards/model_f_labs/xwhatsit_util_comm.h @@ -17,50 +17,48 @@ #pragma once #ifndef RAW_EPSIZE -#define RAW_EPSIZE 32 +# define RAW_EPSIZE 32 #endif #ifndef UTIL_COMM_H -#define UTIL_COMM_H +# define UTIL_COMM_H -#define UTIL_COMM_VERSION_MAJOR 2 -#define UTIL_COMM_VERSION_MID 0 -#define UTIL_COMM_VERSION_MINOR 5 +# define UTIL_COMM_VERSION_MAJOR 2 +# define UTIL_COMM_VERSION_MID 0 +# define UTIL_COMM_VERSION_MINOR 5 -#define UTIL_COMM_MAGIC { 0x55, 0xAA } +# define UTIL_COMM_MAGIC \ + { 0x55, 0xAA } enum command { - UTIL_COMM_GET_VERSION = 0x11, - UTIL_COMM_ENTER_BOOTLOADER, - UTIL_COMM_DISABLE_KEYBOARD, - UTIL_COMM_ENABLE_KEYBOARD, - UTIL_COMM_GET_KEYSTATE, - UTIL_COMM_GET_THRESHOLDS, - UTIL_COMM_GET_KEYBOARD_FILENAME, - UTIL_COMM_ERASE_EEPROM, - UTIL_COMM_GET_SIGNAL_VALUE, - UTIL_COMM_GET_KEYBOARD_DETAILS, - UTIL_COMM_SHIFT_DATA, - UTIL_COMM_SET_DAC_VALUE, - UTIL_COMM_GET_ROW_STATE, - UTIL_COMM_SHIFT_DATA_EXT, + UTIL_COMM_GET_VERSION = 0x11, + UTIL_COMM_ENTER_BOOTLOADER, + UTIL_COMM_DISABLE_KEYBOARD, + UTIL_COMM_ENABLE_KEYBOARD, + UTIL_COMM_GET_KEYSTATE, + UTIL_COMM_GET_THRESHOLDS, + UTIL_COMM_GET_KEYBOARD_FILENAME, + UTIL_COMM_ERASE_EEPROM, + UTIL_COMM_GET_SIGNAL_VALUE, + UTIL_COMM_GET_KEYBOARD_DETAILS, + UTIL_COMM_SHIFT_DATA, + UTIL_COMM_SET_DAC_VALUE, + UTIL_COMM_GET_ROW_STATE, + UTIL_COMM_SHIFT_DATA_EXT, }; -enum response { - UTIL_COMM_RESPONSE_OK = 0x22, - UTIL_COMM_RESPONSE_ERROR -}; +enum response { UTIL_COMM_RESPONSE_OK = 0x22, UTIL_COMM_RESPONSE_ERROR }; #endif -#if defined( CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4 ) - #define GET_KEYBOARD_DETAILS_5 1 -#elif defined( CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F ) - #define GET_KEYBOARD_DETAILS_5 2 -#elif defined( CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING ) - #define GET_KEYBOARD_DETAILS_5 3 -#elif defined( CONTROLLER_IS_THROUGH_HOLE_MODEL_F ) - #define GET_KEYBOARD_DETAILS_5 4 +#if defined(CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4) +# define GET_KEYBOARD_DETAILS_5 1 +#elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) +# define GET_KEYBOARD_DETAILS_5 2 +#elif defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) +# define GET_KEYBOARD_DETAILS_5 3 +#elif defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F) +# define GET_KEYBOARD_DETAILS_5 4 #else - #define GET_KEYBOARD_DETAILS_5 0 +# define GET_KEYBOARD_DETAILS_5 0 #endif From 41f2eb91aedb802748d7ac0d212d86cc4d48e0be Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Tue, 5 Dec 2023 15:40:50 -0500 Subject: [PATCH 21/37] Update source location in rules.mk --- keyboards/model_f_labs/f62/keymaps/via/rules.mk | 2 +- keyboards/model_f_labs/f62/wcass/rules.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/keymaps/via/rules.mk b/keyboards/model_f_labs/f62/keymaps/via/rules.mk index 79a59a11470..e3b023c061a 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/rules.mk +++ b/keyboards/model_f_labs/f62/keymaps/via/rules.mk @@ -2,4 +2,4 @@ VIA_ENABLE = yes LTO_ENABLE = yes BOOTMAGIC_ENABLE = no -SRC = ../xwhatsit_capsense_matrix.c +SRC = xwhatsit_capsense_matrix.c diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index e04ea645553..985689abd6c 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -4,4 +4,4 @@ #HAPTIC_ENABLE = yes HAPTIC_DRIVER = solenoid CUSTOM_MATRIX=lite -SRC += ../xwhatsit_capsense_matrix.c ../xwhatsit_util_comm.c +SRC += xwhatsit_capsense_matrix.c xwhatsit_util_comm.c From e8143c933fac1858dbfdf64b66615961737b2a87 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sat, 9 Dec 2023 19:02:22 -0500 Subject: [PATCH 22/37] Clean up of make system files --- keyboards/model_f_labs/f62/wcass/config.h | 21 --------------------- keyboards/model_f_labs/post_config.h | 8 -------- 2 files changed, 29 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/config.h b/keyboards/model_f_labs/f62/wcass/config.h index f3fa6a342fa..72596939c25 100644 --- a/keyboards/model_f_labs/f62/wcass/config.h +++ b/keyboards/model_f_labs/f62/wcass/config.h @@ -47,8 +47,6 @@ along with this program. If not, see . #define CAPSENSE_HARDCODED_SAMPLE_TIME 4 #define CAPSENSE_CAL_ENABLED 1 -// #define CAPSENSE_CAL_ENABLED 0 -// #define CAPSENSE_CAL_DEBUG 1 #define CAPSENSE_CAL_DEBUG 0 #define CAPSENSE_CAL_INIT_REPS 16 #define CAPSENSE_CAL_EACHKEY_REPS 16 @@ -76,9 +74,6 @@ along with this program. If not, see . // ----- xwhatsit hardware configuration (type_f) ----- -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 - #define CAPSENSE_DAC_SCLK B1 #define CAPSENSE_DAC_DIN B2 #define CAPSENSE_DAC_SYNC_N B0 @@ -97,17 +92,7 @@ along with this program. If not, see . PORTD |= 0x0F; \ } while (0) -#if 1 #define SETUP_UNUSED_PINS() do {} while (0) -#else -// TODO ENABLE THIS ONCE TESTED -#define SETUP_UNUSED_PINS() \ - do { \ - PORTB |= ~(DDRB | 0x07); \ - PORTC |= ~(DDRC | 0xf3); \ - PORTD |= ~(DDRD | 0xff); \ - } while (0) -#endif #define CAPSENSE_READ_ROWS_NUMBER_OF_BYTES_PER_SAMPLE 2 #define CAPSENSE_READ_ROWS_PIN_1 _SFR_IO_ADDR(PINC) @@ -124,12 +109,6 @@ along with this program. If not, see . #define CAPSENSE_READ_ROWS_LOCAL_VARS uint8_t dest_row_1, dest_row_2 #define CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY do { dest_row_1 = array[p0++]; dest_row_2 = array[p0++]; } while (0) -/* -#ifndef CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL - #define CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col) (col) -#endif -*/ - #if (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS)) && (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS)) #define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS #endif diff --git a/keyboards/model_f_labs/post_config.h b/keyboards/model_f_labs/post_config.h index 5eb93af8b25..177adbc1790 100644 --- a/keyboards/model_f_labs/post_config.h +++ b/keyboards/model_f_labs/post_config.h @@ -61,11 +61,3 @@ #ifndef CAPSENSE_CAL_THRESHOLD_OFFSET # error "Please define CAPSENSE_CAL_THRESHOLD_OFFSET in config.h" #endif - -// #if (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS)) && (!defined(CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS)) -// # error "Please specify whether the flyplate is pushed down or pulled up on keypress!" -// #endif - -#if defined(KEYBOARD_SHARED_EP) && defined(RAW_ENABLE) - #error "Enabling the KEYBOARD_SHARED_EP will make the util be unable to communicate with the firmware, because due to hidapi limiations, the util can't figure out which interface to talk to, so it hardcodes interface zero." -#endif From a0f23ff2eca7dcd8e63f13fc9bdec724032f0b7a Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 17 Dec 2023 19:57:08 -0500 Subject: [PATCH 23/37] fix haptic / solenoid --- keyboards/model_f_labs/f62/wcass/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index 985689abd6c..fb00dedcd6a 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -2,6 +2,6 @@ # change yes to no to disable # #HAPTIC_ENABLE = yes -HAPTIC_DRIVER = solenoid +HAPTIC_DRIVER = SOLENOID CUSTOM_MATRIX=lite SRC += xwhatsit_capsense_matrix.c xwhatsit_util_comm.c From e176cc6344b6185f88b611e31fd69950fa21cc1e Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Thu, 21 Dec 2023 15:30:08 -0500 Subject: [PATCH 24/37] restore correct haptic driver --- keyboards/model_f_labs/f62/wcass/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/model_f_labs/f62/wcass/rules.mk b/keyboards/model_f_labs/f62/wcass/rules.mk index fb00dedcd6a..985689abd6c 100644 --- a/keyboards/model_f_labs/f62/wcass/rules.mk +++ b/keyboards/model_f_labs/f62/wcass/rules.mk @@ -2,6 +2,6 @@ # change yes to no to disable # #HAPTIC_ENABLE = yes -HAPTIC_DRIVER = SOLENOID +HAPTIC_DRIVER = solenoid CUSTOM_MATRIX=lite SRC += xwhatsit_capsense_matrix.c xwhatsit_util_comm.c From ea28ab5cd292888a96b192be963666b7087bde0a Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Wed, 27 Dec 2023 00:12:11 -0500 Subject: [PATCH 25/37] util header cleaning --- keyboards/model_f_labs/f62/wcass/info.json | 3 --- keyboards/model_f_labs/xwhatsit_util_comm.h | 5 ----- 2 files changed, 8 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index 144d5360872..b4432483592 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -27,9 +27,6 @@ "enabled": true }, "processor": "atmega32u2", - "tapping": { - "hold_on_other_key_press": false - }, "split": { "soft_serial_pin": "D0" }, diff --git a/keyboards/model_f_labs/xwhatsit_util_comm.h b/keyboards/model_f_labs/xwhatsit_util_comm.h index 2cdcf7e2e4c..69477528623 100644 --- a/keyboards/model_f_labs/xwhatsit_util_comm.h +++ b/keyboards/model_f_labs/xwhatsit_util_comm.h @@ -20,9 +20,6 @@ # define RAW_EPSIZE 32 #endif -#ifndef UTIL_COMM_H -# define UTIL_COMM_H - # define UTIL_COMM_VERSION_MAJOR 2 # define UTIL_COMM_VERSION_MID 0 # define UTIL_COMM_VERSION_MINOR 5 @@ -49,8 +46,6 @@ enum command { enum response { UTIL_COMM_RESPONSE_OK = 0x22, UTIL_COMM_RESPONSE_ERROR }; -#endif - #if defined(CONTROLLER_IS_XWHATSIT_BEAMSPRING_REV_4) # define GET_KEYBOARD_DETAILS_5 1 #elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) From 43af4f2ba76f12d15788b1210d2b76cbc662f36e Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Mon, 1 Jan 2024 18:21:36 -0500 Subject: [PATCH 26/37] Second reviewer info.json clean up. --- keyboards/model_f_labs/f62/info.json | 597 +-------------------- keyboards/model_f_labs/f62/wcass/info.json | 15 +- 2 files changed, 3 insertions(+), 609 deletions(-) diff --git a/keyboards/model_f_labs/f62/info.json b/keyboards/model_f_labs/f62/info.json index a72dc4ae50a..8255a31db29 100644 --- a/keyboards/model_f_labs/f62/info.json +++ b/keyboards/model_f_labs/f62/info.json @@ -2,600 +2,5 @@ "manufacturer": "Model F Labs", "keyboard_name": "Reproduction IBM F62 Keyboard", "maintainer": "Purdea Andrei", - "url": "https://www.modelfkeyboards.com/", - "layouts": { - "LAYOUT_all": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "|`", "x": 13, "y": 0}, - {"label": "~", "x": 14, "y": 0}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Backspace", "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "#", "x": 12.75, "y": 2}, - {"label": "Enter", "x": 13.75, "y": 2, "w": 1.25}, - {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, - {"label": "\\", "x": 1.25, "y": 3}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "x": 14, "y": 3}, - {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 6}, - {"x": 10, "y": 4}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_ansi_regular_shift_regular_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "Backspace", "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_ansi_regular_shift_split_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "`~", "x": 13, "y": 0}, - {"label": "Backspace", "x": 14, "y": 0}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_ansi_split_shift_regular_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "Backspace", "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "\\|", "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "x": 14, "y": 3}, - {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_ansi_split_shift_split_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "|`", "x": 13, "y": 0}, - {"label": "~", "x": 14, "y": 0}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Backspace", "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "x": 14, "y": 3}, - {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_iso_regular_shift_regular_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "Backspace", "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "nuhs", "x": 12.75, "y": 2}, - {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "x": 1.25, "y": 3}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_iso_regular_shift_split_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "`~", "x": 13, "y": 0}, - {"label": "Backspace", "x": 14, "y": 0}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "nuhs", "x": 12.75, "y": 2}, - {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "x": 1.25, "y": 3}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Fn", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_iso_split_shift_regular_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "Backspace", "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "nuhs", "x": 12.75, "y": 2}, - {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "x": 1.25, "y": 3}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "x": 14, "y": 3}, - {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_iso_split_shift_split_backspace": { - "layout": [ - {"label": "Esc", "x": 0, "y": 0}, - {"label": "!", "x": 1, "y": 0}, - {"label": "@", "x": 2, "y": 0}, - {"label": "#", "x": 3, "y": 0}, - {"label": "$", "x": 4, "y": 0}, - {"label": "%", "x": 5, "y": 0}, - {"label": "^", "x": 6, "y": 0}, - {"label": "&", "x": 7, "y": 0}, - {"label": "*", "x": 8, "y": 0}, - {"label": "(", "x": 9, "y": 0}, - {"label": ")", "x": 10, "y": 0}, - {"label": "_", "x": 11, "y": 0}, - {"label": "+", "x": 12, "y": 0}, - {"label": "|`", "x": 13, "y": 0}, - {"label": "~", "x": 14, "y": 0}, - {"label": "Tab", "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "x": 1.5, "y": 1}, - {"label": "W", "x": 2.5, "y": 1}, - {"label": "E", "x": 3.5, "y": 1}, - {"label": "R", "x": 4.5, "y": 1}, - {"label": "T", "x": 5.5, "y": 1}, - {"label": "Y", "x": 6.5, "y": 1}, - {"label": "U", "x": 7.5, "y": 1}, - {"label": "I", "x": 8.5, "y": 1}, - {"label": "O", "x": 9.5, "y": 1}, - {"label": "P", "x": 10.5, "y": 1}, - {"label": "{", "x": 11.5, "y": 1}, - {"label": "}", "x": 12.5, "y": 1}, - {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Ctrl", "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "x": 1.75, "y": 2}, - {"label": "S", "x": 2.75, "y": 2}, - {"label": "D", "x": 3.75, "y": 2}, - {"label": "F", "x": 4.75, "y": 2}, - {"label": "G", "x": 5.75, "y": 2}, - {"label": "H", "x": 6.75, "y": 2}, - {"label": "J", "x": 7.75, "y": 2}, - {"label": "K", "x": 8.75, "y": 2}, - {"label": "L", "x": 9.75, "y": 2}, - {"label": ":", "x": 10.75, "y": 2}, - {"label": "\"", "x": 11.75, "y": 2}, - {"label": "nuhs", "x": 12.75, "y": 2}, - {"label": "Shift", "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "x": 1.25, "y": 3}, - {"label": "Z", "x": 2.25, "y": 3}, - {"label": "X", "x": 3.25, "y": 3}, - {"label": "C", "x": 4.25, "y": 3}, - {"label": "V", "x": 5.25, "y": 3}, - {"label": "B", "x": 6.25, "y": 3}, - {"label": "N", "x": 7.25, "y": 3}, - {"label": "M", "x": 8.25, "y": 3}, - {"label": "<", "x": 9.25, "y": 3}, - {"label": ">", "x": 10.25, "y": 3}, - {"label": "?", "x": 11.25, "y": 3}, - {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "x": 14, "y": 3}, - {"label": "Caps Lock", "x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"label": "Alt", "x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"label": "Alt", "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "x": 12.5, "y": 4}, - {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5} - ] - } - } + "url": "https://www.modelfkeyboards.com/" } diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index b4432483592..e7e6001a829 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -1,20 +1,16 @@ { - "manufacturer": "Model F Labs", - "keyboard_name": "Reproduction IBM F62 Keyboard", - "maintainer": "Purdea Andrei", "bootloader": "atmel-dfu", - "bootmagic": { - "enabled": false, - }, "build": { "lto": true }, "features": { "backlight": false, + "bootmagic": false, "command": true, "console": false, "extrakey": true, "haptic": true, + "mousekey": true, "nkro": true, "raw": true, "rgblight": false @@ -23,14 +19,7 @@ "caps_lock": "B5", "num_lock": "B4" }, - "mouse_key": { - "enabled": true - }, "processor": "atmega32u2", - "split": { - "soft_serial_pin": "D0" - }, - "url": "https://www.modelfkeyboards.com/", "usb": { "device_version": "0.0.1", "pid": "0x6262", From fbc343dad1ea9d5fa0dc79d2d1d5b4cc5a8e47cb Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sat, 6 Jan 2024 23:20:26 -0500 Subject: [PATCH 27/37] Community Layout Names --- keyboards/model_f_labs/f62/wcass/info.json | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json index e7e6001a829..2631135fcd3 100644 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ b/keyboards/model_f_labs/f62/wcass/info.json @@ -25,6 +25,12 @@ "pid": "0x6262", "vid": "0x1209" }, + "community_layouts": [ + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_iso_tsangan", + "60_iso_tsangan_split_bs_rshift" + ], "layouts": { "LAYOUT_all": { "layout": [ @@ -95,7 +101,7 @@ {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_ansi_regular_shift_regular_backspace": { + "LAYOUT_60_ansi_tsangan": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -159,7 +165,7 @@ {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_ansi_regular_shift_split_backspace": { + "LAYOUT_60_ansi_tsangan_split_bs": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -224,7 +230,7 @@ {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_ansi_split_shift_regular_backspace": { + "LAYOUT_60_ansi_tsangan_split_rshift": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -289,7 +295,7 @@ {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_ansi_split_shift_split_backspace": { + "LAYOUT_60_tsangan_hhkb": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -355,7 +361,7 @@ {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_iso_regular_shift_regular_backspace": { + "LAYOUT_60_iso_tsangan": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -420,7 +426,7 @@ {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_iso_regular_shift_split_backspace": { + "LAYOUT_60_iso_tsangan_split_bs": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -486,7 +492,7 @@ {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_iso_split_shift_regular_backspace": { + "LAYOUT_60_iso_tsangan_split_rshift": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, @@ -552,7 +558,7 @@ {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_iso_split_shift_split_backspace": { + "LAYOUT_60_iso_tsangan_split_bs_rshift": { "layout": [ {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, From 9f0b6d77e1eaa00a3db4c4d6fea98c91b441f2e0 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sat, 16 Mar 2024 15:54:32 -0400 Subject: [PATCH 28/37] Boot loader details added to readme.md --- keyboards/model_f_labs/f62/readme.md | 19 +++++++++++++++++++ keyboards/model_f_labs/f62/wcass/readme.md | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 14dcb645b14..51620dbf487 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -14,3 +14,22 @@ Make example for this keyboard (after setting up your build environment): make model_f_labs/f62:default See 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). + + +## How do you enter the boot loader? + +There are three ways to enter the boot loader. +* **Command**: At the same time hold down both shift key and the B key. + Left Shift + Right Shift + B +* **Keycode in Layout**: Press the key mapped to `QK_BOOT`. + The default location is the R key on the second layer. + FN + Spacebar + R +* **Physical Reset PCB Pad**: Short pads of the PCB. + The description and image below are from the + Model F Labs manual web page. + +At the very worst you have to open up the keyboard to short PROG on the actual xwhatsit controller (unscrew the 2 controller screws to see the components side of the board, make a connection with a conductive metal object like an uncoated metal paper clip, then connect the USB cable to the controller and within a split second remove the paper clip). Per pandrew: “You might think that a screwdriver is gonna be enough, but due to surface oxidation it is likely not gonna be good enough. I like to use sharp metal tweezers, because they can dig into the pad a little bit, breaking up the surface oxidation, and I can actually be sure it’s shorting. Apply constant strong pressure on the pads while plugging in the keyboard to make sure they’re perfectly shorted. If you hear the windows USB plug-in sound (assuming the sound effect is enabled), then you know you have succeeded. I’ve even seen people tell me they tried everything to short the pads with, and then I asked them to solder the pads together and it suddenly works. There’s something about the size of those pads, or about the fact that they need to be shorted in the perfect moment when the chip leaves reset, that make people think they are perfectly shorted and yet they aren’t. This affects me too, sometimes it takes me up to 3 tries to get it into bootloader mode. Another thing to double check that you are indeed shorting the PROG pad and not the reset pad. I believe in some versions of the wcass controller there is a reset pad on the opposite side of the board. So don’t be like ‘I see some pads, those must be it’, make sure to be shorting the correct ones.” [1] + +![PCB PADS](https://images2.imgbox.com/ef/20/C9zUfX1h_o.jpg) + +1. “Brand New Model F and Beam Spring keyboards manual,” Brand New Model F Keyboards, https://www.modelfkeyboards.com/manual/ (accessed Mar. 16, 2024). diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index 34482728646..621e1dce790 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -1,5 +1,7 @@ # model_f_labs/f62/wcass +![model_f_labs/f62/wcass](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) + A short description of the keyboard/project * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) @@ -11,3 +13,23 @@ Make example for this keyboard (after setting up your build environment): make model_f_labs/f62/wcass:default See 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). + + +## How do you enter the boot loader? + +There are three ways to enter the boot loader. +* **Command**: At the same time hold down both shift key and the B key. + Left Shift + Right Shift + B +* **Keycode in Layout**: Press the key mapped to `QK_BOOT`. + The default location is the R key on the second layer. + FN + Spacebar + R +* **Physical Reset PCB Pad**: Short pads of the PCB. + The description and image below are from the + Model F Labs manual web page. + +At the very worst you have to open up the keyboard to short PROG on the actual xwhatsit controller (unscrew the 2 controller screws to see the components side of the board, make a connection with a conductive metal object like an uncoated metal paper clip, then connect the USB cable to the controller and within a split second remove the paper clip). Per pandrew: “You might think that a screwdriver is gonna be enough, but due to surface oxidation it is likely not gonna be good enough. I like to use sharp metal tweezers, because they can dig into the pad a little bit, breaking up the surface oxidation, and I can actually be sure it’s shorting. Apply constant strong pressure on the pads while plugging in the keyboard to make sure they’re perfectly shorted. If you hear the windows USB plug-in sound (assuming the sound effect is enabled), then you know you have succeeded. I’ve even seen people tell me they tried everything to short the pads with, and then I asked them to solder the pads together and it suddenly works. There’s something about the size of those pads, or about the fact that they need to be shorted in the perfect moment when the chip leaves reset, that make people think they are perfectly shorted and yet they aren’t. This affects me too, sometimes it takes me up to 3 tries to get it into bootloader mode. Another thing to double check that you are indeed shorting the PROG pad and not the reset pad. I believe in some versions of the wcass controller there is a reset pad on the opposite side of the board. So don’t be like ‘I see some pads, those must be it’, make sure to be shorting the correct ones.” [1] + +![PCB PADS](https://images2.imgbox.com/ef/20/C9zUfX1h_o.jpg) + +1. “Brand New Model F and Beam Spring keyboards manual,” Brand New Model F Keyboards, https://www.modelfkeyboards.com/manual/ (accessed Mar. 16, 2024). + From d53e7676973c69a92ee238b065c048dcc1506c1a Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Tue, 6 Aug 2024 23:21:33 -0400 Subject: [PATCH 29/37] Update VIA keymap to disable bootmagic --- keyboards/model_f_labs/f62/keymaps/via/keymap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/model_f_labs/f62/keymaps/via/keymap.c b/keyboards/model_f_labs/f62/keymaps/via/keymap.c index db82d8a67d1..28629972277 100644 --- a/keyboards/model_f_labs/f62/keymaps/via/keymap.c +++ b/keyboards/model_f_labs/f62/keymaps/via/keymap.c @@ -83,3 +83,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ), }; + +void bootmagic_scan(void) {}; From 7092b751d99271565f43c632abf806fec4572c05 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 8 Sep 2024 23:07:51 -0400 Subject: [PATCH 30/37] wcass/info.json -> wcass/keyboard.json, community layout 60_tsangan_hhkb -> 60_ansi_tsangan_split_bs_rshift --- .../model_f_labs/f62/wcass/keyboard.json | 629 ++++++++++++++++++ 1 file changed, 629 insertions(+) create mode 100644 keyboards/model_f_labs/f62/wcass/keyboard.json diff --git a/keyboards/model_f_labs/f62/wcass/keyboard.json b/keyboards/model_f_labs/f62/wcass/keyboard.json new file mode 100644 index 00000000000..5303b4cb9d1 --- /dev/null +++ b/keyboards/model_f_labs/f62/wcass/keyboard.json @@ -0,0 +1,629 @@ +{ + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "features": { + "backlight": false, + "bootmagic": false, + "command": true, + "console": false, + "extrakey": true, + "haptic": true, + "mousekey": true, + "nkro": true, + "raw": true, + "rgblight": false + }, + "indicators": { + "caps_lock": "B5", + "num_lock": "B4" + }, + "processor": "atmega32u2", + "usb": { + "device_version": "0.0.1", + "pid": "0x6262", + "vid": "0x1209" + }, + "community_layouts": [ + "60_ansi_tsangan", + "60_ansi_tsangan_split_bs_rshift", + "60_iso_tsangan", + "60_iso_tsangan_split_bs_rshift" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "#", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 6}, + {"label": "K44", "matrix": [3, 6], "x": 10, "y": 4}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan_split_rshift": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_rshift": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, + {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, + {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, + {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, + {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, + {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, + {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, + {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, + {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} From c88e43b64531434457a9116dc7617c54abdb55c2 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Sun, 8 Sep 2024 23:10:19 -0400 Subject: [PATCH 31/37] rm wcass/info.json --- keyboards/model_f_labs/f62/wcass/info.json | 629 --------------------- 1 file changed, 629 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/wcass/info.json diff --git a/keyboards/model_f_labs/f62/wcass/info.json b/keyboards/model_f_labs/f62/wcass/info.json deleted file mode 100644 index 2631135fcd3..00000000000 --- a/keyboards/model_f_labs/f62/wcass/info.json +++ /dev/null @@ -1,629 +0,0 @@ -{ - "bootloader": "atmel-dfu", - "build": { - "lto": true - }, - "features": { - "backlight": false, - "bootmagic": false, - "command": true, - "console": false, - "extrakey": true, - "haptic": true, - "mousekey": true, - "nkro": true, - "raw": true, - "rgblight": false - }, - "indicators": { - "caps_lock": "B5", - "num_lock": "B4" - }, - "processor": "atmega32u2", - "usb": { - "device_version": "0.0.1", - "pid": "0x6262", - "vid": "0x1209" - }, - "community_layouts": [ - "60_ansi_tsangan", - "60_tsangan_hhkb", - "60_iso_tsangan", - "60_iso_tsangan_split_bs_rshift" - ], - "layouts": { - "LAYOUT_all": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, - {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "#", "matrix": [7, 6], "x": 12.75, "y": 2}, - {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 2, "w": 1.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "\\", "matrix": [0, 0], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, - {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 6}, - {"label": "K44", "matrix": [3, 6], "x": 10, "y": 4}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_ansi_tsangan": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_ansi_tsangan_split_bs": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_ansi_tsangan_split_rshift": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "\\|", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, - {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_tsangan_hhkb": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, - {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Backspace", "matrix": [7, 7], "x": 13.5, "y": 1, "w": 1.5}, - {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 7], "x": 12.75, "y": 2, "w": 2.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, - {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_iso_tsangan": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_iso_tsangan_split_bs": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "`~", "matrix": [4, 7], "x": 13, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 14, "y": 0}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Caps Lock", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [1, 7], "x": 12.25, "y": 3, "w": 2.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Fn", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_iso_tsangan_split_rshift": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [6, 7], "x": 13, "y": 0, "w": 2}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, - {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_iso_tsangan_split_bs_rshift": { - "layout": [ - {"label": "Esc", "matrix": [4, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [6, 0], "x": 1, "y": 0}, - {"label": "@", "matrix": [6, 1], "x": 2, "y": 0}, - {"label": "#", "matrix": [4, 2], "x": 3, "y": 0}, - {"label": "$", "matrix": [6, 2], "x": 4, "y": 0}, - {"label": "%", "matrix": [4, 3], "x": 5, "y": 0}, - {"label": "^", "matrix": [6, 3], "x": 6, "y": 0}, - {"label": "&", "matrix": [4, 4], "x": 7, "y": 0}, - {"label": "*", "matrix": [6, 4], "x": 8, "y": 0}, - {"label": "(", "matrix": [4, 5], "x": 9, "y": 0}, - {"label": ")", "matrix": [6, 5], "x": 10, "y": 0}, - {"label": "_", "matrix": [4, 6], "x": 11, "y": 0}, - {"label": "+", "matrix": [6, 6], "x": 12, "y": 0}, - {"label": "|`", "matrix": [4, 7], "x": 13, "y": 0}, - {"label": "~", "matrix": [6, 7], "x": 14, "y": 0}, - {"label": "Tab", "matrix": [5, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [5, 1], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [7, 2], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [5, 2], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [7, 3], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [5, 3], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [7, 4], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [5, 4], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [7, 5], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [5, 5], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [5, 6], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [5, 7], "x": 12.5, "y": 1}, - {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - {"label": "Ctrl", "matrix": [7, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [7, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 1], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [0, 2], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 2], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [0, 3], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 3], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 4], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [0, 4], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [0, 5], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 5], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 6], "x": 11.75, "y": 2}, - {"label": "nuhs", "matrix": [7, 6], "x": 12.75, "y": 2}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "nubs", "matrix": [0, 0], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [1, 1], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [0, 1], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [1, 2], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 2], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [1, 3], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [1, 4], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 4], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 5], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [1, 5], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [0, 6], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [0, 7], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [1, 7], "x": 14, "y": 3}, - {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "K41", "matrix": [1, 0], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [3, 1], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K43", "matrix": [3, 3], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [1, 6], "x": 11, "y": 4, "w": 1.5}, - {"label": "Num Lock", "matrix": [3, 7], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [3, 8], "x": 13.5, "y": 4, "w": 1.5} - ] - } - } -} From a81f7efe3d5b9662cf9ca0e6ca2a01dd22769021 Mon Sep 17 00:00:00 2001 From: "Matthew J. Wolf" Date: Mon, 9 Sep 2024 00:04:54 -0400 Subject: [PATCH 32/37] removed VIA keymap --- .../model_f_labs/f62/keymaps/via/keymap.c | 87 ------------------- .../model_f_labs/f62/keymaps/via/rules.mk | 5 -- 2 files changed, 92 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/keymaps/via/keymap.c delete mode 100644 keyboards/model_f_labs/f62/keymaps/via/rules.mk diff --git a/keyboards/model_f_labs/f62/keymaps/via/keymap.c b/keyboards/model_f_labs/f62/keymaps/via/keymap.c deleted file mode 100644 index 28629972277..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/via/keymap.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright 2022 Matthew J Wolf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -/* all - * - Base - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │ ` │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ - * │Lctl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │Lsft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Rsft │Fn1│ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ - * │Caps │GUI│Lalt │ Space │ │Ratl │Nlk│Rctl │ - * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ - * - FN1 - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Ins│Del│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ │ │ │ │ │ │ │ │Psc│Skl│Pau│Up │ │Del │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ - * │ │Vo-│Vo+│Mut│Ejc│ │Kp*│Kp/│Hom│PGu│Lef│Rgh│ │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │ │ │ │ │ │ │ │Kp+│Kp-│End│PGd│Dow│ │ │ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ - * │ │ │ │ Fn2 │ │ │ │ │ - * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ - * - FN2 - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │ │ │ │ │ │ │ │ │ │ │Dl-│Dl+│ │ │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ │ │ │Epr│Res│HPt│ │ │ │ │ │ │ │ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ - * │ │ │ │Deb│ │ │ │ │ │ │ │ │ │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┴┬───┬─┴───┤ - * │ │ │ │ │ │ │ │ │ - * └─────┴───┴─────┴──────────────────────┴────┴─────┴───┴─────┘ - */ -#include QMK_KEYBOARD_H - -enum layer_names { - _BASE, - _FN1, - _FN2, - _FN3 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_all( - KC_ESC, 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_BSLS, KC_GRV, - 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_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - 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, MO(_FN1), - KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, _______, KC_RALT, KC_NUM, KC_RCTL - ), - [_FN1] = LAYOUT_all( - KC_GRV, 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_INS, KC_DEL, - _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, - _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, - _______, _______, _______, MO(_FN2), _______, _______, _______, _______ - ), - [_FN2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, HF_DWLD,HF_DWLU, _______, _______, - _______, _______, _______, EE_CLR, QK_BOOT, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; - -void bootmagic_scan(void) {}; diff --git a/keyboards/model_f_labs/f62/keymaps/via/rules.mk b/keyboards/model_f_labs/f62/keymaps/via/rules.mk deleted file mode 100644 index e3b023c061a..00000000000 --- a/keyboards/model_f_labs/f62/keymaps/via/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -VIA_ENABLE = yes -LTO_ENABLE = yes -BOOTMAGIC_ENABLE = no - -SRC = xwhatsit_capsense_matrix.c From 75572f14ca1f99cbcf9e1c8fa589f370c4f188e5 Mon Sep 17 00:00:00 2001 From: Matthew J Wolf Date: Tue, 3 Jun 2025 13:08:56 -0400 Subject: [PATCH 33/37] F62: remove rules.mk --- keyboards/model_f_labs/f62/rules.mk | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 keyboards/model_f_labs/f62/rules.mk diff --git a/keyboards/model_f_labs/f62/rules.mk b/keyboards/model_f_labs/f62/rules.mk deleted file mode 100644 index 0fd86a6a5b4..00000000000 --- a/keyboards/model_f_labs/f62/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -DEFAULT_FOLDER = model_f_labs/f62/wcass -# Brand new model f keyboards by default come with the wcass controller. From ec9828d862c81e5a6f561db13d7e596bf0c31006 Mon Sep 17 00:00:00 2001 From: Matthew J Wolf Date: Tue, 3 Jun 2025 15:47:22 -0400 Subject: [PATCH 34/37] Readme.md updates --- keyboards/model_f_labs/f62/readme.md | 2 +- keyboards/model_f_labs/f62/wcass/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 51620dbf487..527534a13b1 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -13,7 +13,7 @@ Make example for this keyboard (after setting up your build environment): make model_f_labs/f62:default -See 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). +See 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. ## How do you enter the boot loader? diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index 621e1dce790..69ded9cee0f 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -12,7 +12,7 @@ Make example for this keyboard (after setting up your build environment): make model_f_labs/f62/wcass:default -See 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). +See 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. ## How do you enter the boot loader? From d2208895bcb02a05b99aba8273f05efd320b73dc Mon Sep 17 00:00:00 2001 From: Matthew J Wolf Date: Tue, 3 Jun 2025 16:56:55 -0400 Subject: [PATCH 35/37] Remove readme template string --- keyboards/model_f_labs/f62/readme.md | 4 ++-- keyboards/model_f_labs/f62/wcass/readme.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 527534a13b1..6c814b5691c 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -2,7 +2,7 @@ ![model_f_labs/f62](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -A short description of the keyboard/project +A description of the keyboard/project * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Build Maintainer: Matthew J Wolf @@ -11,7 +11,7 @@ A short description of the keyboard/project Make example for this keyboard (after setting up your build environment): - make model_f_labs/f62:default + make model_f_labs/f62/wcass:default See 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. diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index 69ded9cee0f..ac98b281aa6 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -2,7 +2,7 @@ ![model_f_labs/f62/wcass](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -A short description of the keyboard/project +A description of the keyboard/project * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Hardware Supported: Supports the brand new Model F reproductions from https://www.modelfkeyboards.com/, using the smaller xwhatsit controller developed by wcass. From c3f37dba14a6abec5e2feb3e6b901e3ebf14408d Mon Sep 17 00:00:00 2001 From: Matthew J Wolf Date: Tue, 3 Jun 2025 17:35:38 -0400 Subject: [PATCH 36/37] readme updates --- keyboards/model_f_labs/f62/readme.md | 2 +- keyboards/model_f_labs/f62/wcass/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 6c814b5691c..4ba551b817c 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -2,7 +2,7 @@ ![model_f_labs/f62](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -A description of the keyboard/project +## Basic Details * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Build Maintainer: Matthew J Wolf diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index ac98b281aa6..f633f6b5054 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -2,7 +2,7 @@ ![model_f_labs/f62/wcass](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -A description of the keyboard/project +## Basic Details * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Hardware Supported: Supports the brand new Model F reproductions from https://www.modelfkeyboards.com/, using the smaller xwhatsit controller developed by wcass. From 165a41515b9b99622613adb78a43ebc0c87ae2c2 Mon Sep 17 00:00:00 2001 From: Matthew J Wolf Date: Tue, 3 Jun 2025 19:38:40 -0400 Subject: [PATCH 37/37] More readme edits --- keyboards/model_f_labs/f62/readme.md | 3 ++- keyboards/model_f_labs/f62/wcass/readme.md | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/keyboards/model_f_labs/f62/readme.md b/keyboards/model_f_labs/f62/readme.md index 4ba551b817c..0781616519c 100644 --- a/keyboards/model_f_labs/f62/readme.md +++ b/keyboards/model_f_labs/f62/readme.md @@ -2,7 +2,8 @@ ![model_f_labs/f62](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -## Basic Details +Model F Labs recreation of the IBM F62 keyboard. The keyboard uses the IBM +"type F" bucking spring key switch. * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Build Maintainer: Matthew J Wolf diff --git a/keyboards/model_f_labs/f62/wcass/readme.md b/keyboards/model_f_labs/f62/wcass/readme.md index f633f6b5054..e7d85dd5cae 100644 --- a/keyboards/model_f_labs/f62/wcass/readme.md +++ b/keyboards/model_f_labs/f62/wcass/readme.md @@ -2,7 +2,10 @@ ![model_f_labs/f62/wcass](https://images2.imgbox.com/e5/97/1hPUzXct_o.jpg) -## Basic Details +Model F Labs recreation of the IBM F62 keyboard. The keyboard uses the IBM +"type F" bucking spring key switch. + +The keyboard is using the community developed wcass controller. * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Hardware Supported: Supports the brand new Model F reproductions from https://www.modelfkeyboards.com/, using the smaller xwhatsit controller developed by wcass.