From e99b7f240aacd4d9a0182396533a3e972ea1f9a8 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 28 Apr 2024 21:12:14 +1000 Subject: [PATCH 01/41] Remove broken CI workflow (#23631) --- .github/workflows/ci_builds.yml | 74 --------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 .github/workflows/ci_builds.yml diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml deleted file mode 100644 index 7fa07fe09d9..00000000000 --- a/.github/workflows/ci_builds.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: CI Builds - -permissions: - contents: read - -on: - push: - branches: [master, develop] - workflow_dispatch: - inputs: - branch: - type: choice - description: 'Branch to build' - options: [master, develop] - -concurrency: ci_build-${{ github.event.inputs.branch || github.ref_name }} - -jobs: - ci_builds: - if: github.repository == 'qmk/qmk_firmware' - name: "CI Build" - runs-on: self-hosted - timeout-minutes: 1380 - - strategy: - fail-fast: false - matrix: - keymap: [default, via] - - container: ghcr.io/qmk/qmk_cli - - steps: - - name: Disable safe.directory check - run : git config --global --add safe.directory '*' - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ github.event.inputs.branch || github.ref }} - - - name: Install dependencies - run: pip3 install -r requirements.txt - - - name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }}) - run: | - export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) - qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes || touch .failed - # Generate the step summary markdown - ./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true - # Truncate to a maximum of 1MB to deal with GitHub workflow limit - truncate --size='<960K' $GITHUB_STEP_SUMMARY || true - # Exit with failure if the compilation stage failed - [ ! -f .failed ] || exit 1 - - - name: 'Upload artifacts' - uses: actions/upload-artifact@v4 - if: always() - with: - name: artifacts-${{ github.event.inputs.branch || github.ref_name }}-${{ matrix.keymap }} - if-no-files-found: ignore - path: | - *.bin - *.hex - *.uf2 - .build/failed.* - - - name: 'CI Discord Notification' - if: always() - working-directory: util/ci/ - env: - DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} - run: | - python3 -m pip install -r requirements.txt - python3 ./discord-results.py --branch ${{ github.event.inputs.branch || github.ref_name }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} From 78a76b6c1e60e606eebc7cf571ee4251fc47d92a Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 29 Apr 2024 18:45:58 -0400 Subject: [PATCH 02/41] Iris keymap update (#23635) --- .../keebio/iris/keymaps/default/keymap.c | 115 ------------------ .../keebio/iris/keymaps/default/keymap.json | 29 +++++ keyboards/keebio/iris/keymaps/via/keymap.c | 29 ++--- 3 files changed, 36 insertions(+), 137 deletions(-) delete mode 100644 keyboards/keebio/iris/keymaps/default/keymap.c create mode 100644 keyboards/keebio/iris/keymaps/default/keymap.json diff --git a/keyboards/keebio/iris/keymaps/default/keymap.c b/keyboards/keebio/iris/keymaps/default/keymap.c deleted file mode 100644 index e1e050ab1d3..00000000000 --- a/keyboards/keebio/iris/keymaps/default/keymap.c +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2023 Danny Nguyen (@nooges) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 3 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT( - //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_RALT - // └────────┴────────┴────────┘ └────────┴────────┴────────┘ - ), - - [_LOWER] = LAYOUT( - //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - BL_STEP, _______, _______, _______, KC_DOWN, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, - //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - _______, _______, KC_DEL, KC_DEL, _______, KC_P0 - // └────────┴────────┴────────┘ └────────┴────────┴────────┘ - ), - - [_RAISE] = LAYOUT( - //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______, - //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - _______, _______, _______, _______, _______, _______ - // └────────┴────────┴────────┘ └────────┴────────┴────────┘ - ), - - [_ADJUST] = LAYOUT( - //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - _______, _______, _______, _______, _______, _______ - // └────────┴────────┴────────┘ └────────┴────────┴────────┘ - ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - } - return true; -} diff --git a/keyboards/keebio/iris/keymaps/default/keymap.json b/keyboards/keebio/iris/keymaps/default/keymap.json new file mode 100644 index 00000000000..8b141d992fd --- /dev/null +++ b/keyboards/keebio/iris/keymaps/default/keymap.json @@ -0,0 +1,29 @@ +{ + "config": { "features": {"tri_layer": true} }, + "keyboard": "keebio/iris", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "QK_GESC", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_BSPC", + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_DEL" , + "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_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_HOME", "KC_END" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT", + "KC_LGUI", "TL_LOWR", "KC_ENT" , "KC_SPC" , "TL_UPPR", "KC_RALT" + ], + [ + "KC_TILD", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_PGUP", + "KC_GRV" , "_______", "KC_UP" , "_______", "QK_BOOT", "_______", "_______", "KC_P7" , "KC_P8" , "KC_P9" , "KC_P0" , "KC_PGDN", + "KC_DEL" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "KC_LBRC", "KC_RBRC", "KC_P4" , "KC_P5" , "KC_P6" , "KC_PLUS", "KC_PIPE", + "RGB_MOD", "EE_CLR" , "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", "KC_RPRN", "KC_RCBR", "KC_P1" , "KC_P2" , "KC_P3" , "KC_MINS", "_______", + "_______", "_______", "KC_DEL" , "KC_DEL" , "_______", "KC_P0" + ], + [ + "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "RGB_TOG", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "QK_BOOT", + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", "KC_EQL" , "KC_HOME", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_BSLS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", "_______", "KC_PLUS", "KC_END" , "RGB_HUD", "RGB_SAD", "RGB_VAD", "EE_CLR" , + "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/keebio/iris/keymaps/via/keymap.c b/keyboards/keebio/iris/keymaps/via/keymap.c index c2753da2a45..04ebf000b8b 100644 --- a/keyboards/keebio/iris/keymaps/via/keymap.c +++ b/keyboards/keebio/iris/keymaps/via/keymap.c @@ -7,14 +7,13 @@ enum custom_layer { _MAIN, _FN1, _FN2, - _FN3, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MAIN] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ @@ -28,13 +27,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN1] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PGUP, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_GRV, _______, KC_UP, _______, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PGDN, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - BL_STEP, _______, _______, _______, KC_DOWN, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, + RGB_MOD, EE_CLR, _______, _______, _______, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ _______, _______, KC_DEL, KC_DEL, _______, KC_P0 // └────────┴────────┴────────┘ └────────┴────────┴────────┘ @@ -44,25 +43,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, QK_BOOT, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______, - //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - _______, _______, _______, _______, _______, _______ - // └────────┴────────┴────────┘ └────────┴────────┴────────┘ - ), - - [_FN3] = LAYOUT( - //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, EE_CLR, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ _______, _______, _______, _______, _______, _______ // └────────┴────────┴────────┘ └────────┴────────┴────────┘ From b4b222a6e3b103df201ca098cb7ddecc99993b1e Mon Sep 17 00:00:00 2001 From: chalex <68408520+gaclee3b@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:36:10 -0400 Subject: [PATCH 03/41] gh80_3000 - Enable indicator LED functionality (#23633) Co-authored-by: chalex --- keyboards/gh80_3000/config.h | 7 ----- keyboards/gh80_3000/keyboard.json | 12 +++++++++ keyboards/gh80_3000/keymaps/ansi_std/keymap.c | 27 ------------------- keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c | 26 ------------------ keyboards/gh80_3000/keymaps/default/keymap.c | 26 ------------------ .../gh80_3000/keymaps/iso_default/keymap.c | 26 ------------------ keyboards/gh80_3000/keymaps/iso_std/keymap.c | 26 ------------------ keyboards/gh80_3000/keymaps/iso_wkl/keymap.c | 26 ------------------ 8 files changed, 12 insertions(+), 164 deletions(-) delete mode 100644 keyboards/gh80_3000/config.h diff --git a/keyboards/gh80_3000/config.h b/keyboards/gh80_3000/config.h deleted file mode 100644 index 5f360813239..00000000000 --- a/keyboards/gh80_3000/config.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -/* 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 diff --git a/keyboards/gh80_3000/keyboard.json b/keyboards/gh80_3000/keyboard.json index f5f4ba75332..c88f5c8232c 100644 --- a/keyboards/gh80_3000/keyboard.json +++ b/keyboards/gh80_3000/keyboard.json @@ -16,6 +16,18 @@ "mousekey": false, "nkro": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "indicators": { + "num_lock": "B5", + "caps_lock": "B6", + "scroll_lock": "B7", + "on_state": 0 + }, "matrix_pins": { "cols": ["C7", "C6", "B4", "D7", "B3", "B2", "B0", "E6", "B1", "D1", "D6"], "rows": ["F4", "F1", "F0", "F5", "F6", "F7", "D4", "D5", "D3", "D2", "D0"] diff --git a/keyboards/gh80_3000/keymaps/ansi_std/keymap.c b/keyboards/gh80_3000/keymaps/ansi_std/keymap.c index f99d522ead4..2f1e410656f 100644 --- a/keyboards/gh80_3000/keymaps/ansi_std/keymap.c +++ b/keyboards/gh80_3000/keymaps/ansi_std/keymap.c @@ -11,30 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ) }; - -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} diff --git a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c index b3f2426e88a..a949b11941e 100644 --- a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c +++ b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c @@ -12,29 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} diff --git a/keyboards/gh80_3000/keymaps/default/keymap.c b/keyboards/gh80_3000/keymaps/default/keymap.c index b74127fc5e1..08f43c1d685 100644 --- a/keyboards/gh80_3000/keymaps/default/keymap.c +++ b/keyboards/gh80_3000/keymaps/default/keymap.c @@ -12,29 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} diff --git a/keyboards/gh80_3000/keymaps/iso_default/keymap.c b/keyboards/gh80_3000/keymaps/iso_default/keymap.c index 4c4b10f458a..ff2b373a544 100644 --- a/keyboards/gh80_3000/keymaps/iso_default/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_default/keymap.c @@ -12,29 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} diff --git a/keyboards/gh80_3000/keymaps/iso_std/keymap.c b/keyboards/gh80_3000/keymaps/iso_std/keymap.c index 9559bde1194..7783aae0a9f 100644 --- a/keyboards/gh80_3000/keymaps/iso_std/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_std/keymap.c @@ -12,29 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} diff --git a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c index 86054ba1fd5..9108f6aba41 100644 --- a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c @@ -12,29 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -bool led_update_user(led_t led_state) { - if (led_state.num_lock) { - DDRB |= (1 << 5); - PORTB &= ~(1 << 5); - } else { - DDRB &= ~(1 << 5); - PORTB &= ~(1 << 5); - } - - if (led_state.caps_lock) { - DDRB |= (1 << 6); - PORTB &= ~(1 << 6); - } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); - } - - if (led_state.scroll_lock) { - DDRB |= (1 << 7); - PORTB &= ~(1 << 7); - } else { - DDRB &= ~(1 << 7); - PORTB &= ~(1 << 7); - } - return false; -} From 4f087591a8773664e587ac3450e95119f3d586d4 Mon Sep 17 00:00:00 2001 From: Richard Dawe Date: Tue, 30 Apr 2024 02:36:32 +0100 Subject: [PATCH 04/41] Add YMDK YMD62 ISO PCB (#23629) --- keyboards/ymdk/ymd62/config.h | 11 + keyboards/ymdk/ymd62/halconf.h | 8 + keyboards/ymdk/ymd62/info.json | 217 ++++++++++++++++++ keyboards/ymdk/ymd62/keymaps/default/keymap.c | 19 ++ keyboards/ymdk/ymd62/mcuconf.h | 9 + keyboards/ymdk/ymd62/readme.md | 28 +++ keyboards/ymdk/ymd62/rules.mk | 2 + 7 files changed, 294 insertions(+) create mode 100644 keyboards/ymdk/ymd62/config.h create mode 100644 keyboards/ymdk/ymd62/halconf.h create mode 100644 keyboards/ymdk/ymd62/info.json create mode 100644 keyboards/ymdk/ymd62/keymaps/default/keymap.c create mode 100644 keyboards/ymdk/ymd62/mcuconf.h create mode 100644 keyboards/ymdk/ymd62/readme.md create mode 100644 keyboards/ymdk/ymd62/rules.mk diff --git a/keyboards/ymdk/ymd62/config.h b/keyboards/ymdk/ymd62/config.h new file mode 100644 index 00000000000..5f1f3f3a2a5 --- /dev/null +++ b/keyboards/ymdk/ymd62/config.h @@ -0,0 +1,11 @@ +// Copyright 2021 Mike Tsao +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD4 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 +#define WS2812_DMA_CHANNEL 7 \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/halconf.h b/keyboards/ymdk/ymd62/halconf.h new file mode 100644 index 00000000000..89073b2f3c1 --- /dev/null +++ b/keyboards/ymdk/ymd62/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/ymdk/ymd62/info.json b/keyboards/ymdk/ymd62/info.json new file mode 100644 index 00000000000..92ed13d2606 --- /dev/null +++ b/keyboards/ymdk/ymd62/info.json @@ -0,0 +1,217 @@ +{ + "manufacturer": "YMDK", + "keyboard_name": "YMD62 ISO QMK", + "maintainer": "richdawe", + "bootloader": "uf2boot", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A7", "B0", "B1", "B2", "B10", "B11", "A5", "A15", "B3", "B12", "B13", "B14", "B15", "A8"], + "rows": ["A4", "A3", "A2", "A1", "A0"] + }, + "processor": "STM32F103", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "dual_beacon": true, + "flower_blooming": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "riverflow": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true + }, + "default": { + "animation": "rainbow_moving_chevron" + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 1, "y": 1, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 1, "flags": 4}, + {"matrix": [0, 2], "x": 28, "y": 1, "flags": 4}, + {"matrix": [0, 3], "x": 44, "y": 1, "flags": 4}, + {"matrix": [0, 4], "x": 58, "y": 1, "flags": 4}, + {"matrix": [0, 5], "x": 75, "y": 1, "flags": 4}, + {"matrix": [0, 6], "x": 89, "y": 1, "flags": 4}, + {"matrix": [0, 7], "x": 103, "y": 1, "flags": 4}, + {"matrix": [0, 8], "x": 117, "y": 1, "flags": 4}, + {"matrix": [0, 9], "x": 129, "y": 1, "flags": 4}, + {"matrix": [0, 10], "x": 147, "y": 1, "flags": 4}, + {"matrix": [0, 11], "x": 167, "y": 1, "flags": 4}, + {"matrix": [0, 12], "x": 183, "y": 1, "flags": 4}, + {"matrix": [0, 13], "x": 200, "y": 1, "flags": 4}, + {"matrix": [1, 0], "x": 3, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 33, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 47, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 60, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 77, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 91, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 106, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 120, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 131, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 149, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 169, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 185, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 205, "y": 26, "flags": 4}, + {"matrix": [2, 0], "x": 5, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 20, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 35, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 49, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 62, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 79, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 93, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 108, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 122, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 133, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 151, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 171, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 199, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 8, "y": 49, "flags": 4}, + {"matrix": [3, 1], "x": 23, "y": 49, "flags": 4}, + {"matrix": [3, 2], "x": 38, "y": 49, "flags": 4}, + {"matrix": [3, 3], "x": 51, "y": 49, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 49, "flags": 4}, + {"matrix": [3, 5], "x": 81, "y": 49, "flags": 4}, + {"matrix": [3, 6], "x": 95, "y": 49, "flags": 4}, + {"matrix": [3, 7], "x": 110, "y": 49, "flags": 4}, + {"matrix": [3, 8], "x": 124, "y": 49, "flags": 4}, + {"matrix": [3, 9], "x": 135, "y": 49, "flags": 4}, + {"matrix": [3, 10], "x": 153, "y": 49, "flags": 4}, + {"matrix": [3, 11], "x": 189, "y": 49, "flags": 4}, + {"matrix": [3, 13], "x": 212, "y": 49, "flags": 4}, + {"matrix": [4, 0], "x": 2, "y": 63, "flags": 4}, + {"matrix": [4, 1], "x": 15, "y": 63, "flags": 4}, + {"matrix": [4, 2], "x": 33, "y": 63, "flags": 4}, + {"matrix": [4, 6], "x": 92, "y": 63, "flags": 4}, + {"matrix": [4, 9], "x": 149, "y": 63, "flags": 4}, + {"matrix": [4, 10], "x": 170, "y": 63, "flags": 4}, + {"matrix": [4, 11], "x": 188, "y": 63, "flags": 4}, + {"matrix": [4, 13], "x": 200, "y": 63, "flags": 4}, + {"x": 60, "y": 5, "flags": 2}, + {"x": 90, "y": 5, "flags": 2}, + {"x": 120, "y": 5, "flags": 2}, + {"x": 150, "y": 5, "flags": 2}, + {"x": 180, "y": 5, "flags": 2}, + {"x": 210, "y": 5, "flags": 2}, + {"x": 210, "y": 60, "flags": 2}, + {"x": 180, "y": 60, "flags": 2}, + {"x": 150, "y": 60, "flags": 2}, + {"x": 120, "y": 60, "flags": 2}, + {"x": 90, "y": 60, "flags": 2}, + {"x": 60, "y": 60, "flags": 2} + ], + "max_brightness": 128 + }, + "url": "https://ymdkey.com/products/ymd62-iso-rgb-hot-swap-pcb-fully-programmable-support-via-vial", + "usb": { + "device_version": "0.0.4", + "pid": "0x0062", + "vid": "0x45D4" + }, + "ws2812": { + "driver": "pwm", + "pin": "B9" + }, + "community_layouts": ["60_iso"], + "layouts": { + "LAYOUT_60_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/ymdk/ymd62/keymaps/default/keymap.c b/keyboards/ymdk/ymd62/keymaps/default/keymap.c new file mode 100644 index 00000000000..79c128295ef --- /dev/null +++ b/keyboards/ymdk/ymd62/keymaps/default/keymap.c @@ -0,0 +1,19 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_60_iso( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_CAPS, 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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), + +[1] = LAYOUT_60_iso( /* FN */ + 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_DEL , + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT , + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_M_P, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/mcuconf.h b/keyboards/ymdk/ymd62/mcuconf.h new file mode 100644 index 00000000000..3c076403711 --- /dev/null +++ b/keyboards/ymdk/ymd62/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 TRUE \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/readme.md b/keyboards/ymdk/ymd62/readme.md new file mode 100644 index 00000000000..73eeed3dbb9 --- /dev/null +++ b/keyboards/ymdk/ymd62/readme.md @@ -0,0 +1,28 @@ +# YMDK YMD62 ISO + +A 60% PCB supporting the ISO layout, with hotswap sockets, backlit keys and underglow. + +* Keyboard Maintainer: [Richard Dawe](https://github.com/richdawe) +* Hardware Supported: YMD62 PCB +* Hardware Availability: [YMDK](https://ymdkey.com/products/ymd62-iso-rgb-hot-swap-pcb-fully-programmable-support-via-vial) + +Make example for this keyboard (after setting up your build environment): + + make ymdk/ymd62:default + +Flashing example for this keyboard: + + make ymdk/ymd62:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Double-tap the reset button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +Note: The device does not reconnect automatically after the QMK firmware has been flashed. +Wait for the USB device to disappear after writing firmware, then unplug and re-plug it. \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/rules.mk b/keyboards/ymdk/ymd62/rules.mk new file mode 100644 index 00000000000..ef4364b06ac --- /dev/null +++ b/keyboards/ymdk/ymd62/rules.mk @@ -0,0 +1,2 @@ +# Configure for 128K flash +MCU_LDSCRIPT = STM32F103xB \ No newline at end of file From fd32861c9f9c27d0a577d54dacf10a6267f794e5 Mon Sep 17 00:00:00 2001 From: Ming-Gih Lam Date: Mon, 29 Apr 2024 18:39:29 -0700 Subject: [PATCH 05/41] Masonry keyboard support (#23597) --- keyboards/dcpedit/masonry/info.json | 79 +++++++++++++++++++ .../masonry/keymaps/default/keymap.json | 21 +++++ .../dcpedit/masonry/keymaps/via/keymap.json | 26 ++++++ keyboards/dcpedit/masonry/readme.md | 27 +++++++ keyboards/dcpedit/masonry/rules.mk | 1 + 5 files changed, 154 insertions(+) create mode 100644 keyboards/dcpedit/masonry/info.json create mode 100644 keyboards/dcpedit/masonry/keymaps/default/keymap.json create mode 100644 keyboards/dcpedit/masonry/keymaps/via/keymap.json create mode 100644 keyboards/dcpedit/masonry/readme.md create mode 100644 keyboards/dcpedit/masonry/rules.mk diff --git a/keyboards/dcpedit/masonry/info.json b/keyboards/dcpedit/masonry/info.json new file mode 100644 index 00000000000..2d25f726219 --- /dev/null +++ b/keyboards/dcpedit/masonry/info.json @@ -0,0 +1,79 @@ +{ + "manufacturer": "dcpedit", + "keyboard_name": "Masonry", + "maintainer": "dcpedit", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 2 + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["A8", "B15", "B14", "B13", "B12", "A2"], + "rows": ["A9", "A0", "F0", "C15", "A10", "F1", "A1", "C14"] + }, + "processor": "STM32F072", + "url": "https://github.com/dcpedit/masonry", + "usb": { + "device_version": "1.0.0", + "pid": "0x177A", + "vid": "0xDC9E" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "4,0", "matrix": [4, 0], "x": 1, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "4,1", "matrix": [4, 1], "x": 3, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "4,2", "matrix": [4, 2], "x": 5, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "4,3", "matrix": [4, 3], "x": 7, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "4,4", "matrix": [4, 4], "x": 9, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "4,5", "matrix": [4, 5], "x": 11, "y": 0}, + + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.75}, + {"label": "5,0", "matrix": [5, 0], "x": 1, "y": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 2, "y": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 3, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 4, "y": 1.25}, + {"label": "5,2", "matrix": [5, 2], "x": 5, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 6, "y": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 7, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 8, "y": 1}, + {"label": "5,4", "matrix": [5, 4], "x": 9, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 10, "y": 1.5}, + {"label": "5,5", "matrix": [5, 5], "x": 11, "y": 1.75}, + + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.75}, + {"label": "6,0", "matrix": [6, 0], "x": 1, "y": 2.5}, + {"label": "2,1", "matrix": [2, 1], "x": 2, "y": 2.25}, + {"label": "6,1", "matrix": [6, 1], "x": 3, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 4, "y": 2.25}, + {"label": "6,2", "matrix": [6, 2], "x": 5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 6, "y": 2.25}, + {"label": "6,3", "matrix": [6, 3], "x": 7, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 8, "y": 2}, + {"label": "6,4", "matrix": [6, 4], "x": 9, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 10, "y": 2.5}, + {"label": "6,5", "matrix": [6, 5], "x": 11, "y": 2.75}, + + {"label": "3,1", "matrix": [3, 1], "x": 2, "y": 3.25}, + {"label": "7,1", "matrix": [7, 1], "x": 3, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 4, "y": 3.25}, + {"label": "7,2", "matrix": [7, 2], "x": 5, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 6, "y": 3.25}, + {"label": "7,3", "matrix": [7, 3], "x": 7, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 8, "y": 3.25}, + {"label": "7,4", "matrix": [7, 4], "x": 9, "y": 3.25} + ] + } + } +} diff --git a/keyboards/dcpedit/masonry/keymaps/default/keymap.json b/keyboards/dcpedit/masonry/keymaps/default/keymap.json new file mode 100644 index 00000000000..6da346bb917 --- /dev/null +++ b/keyboards/dcpedit/masonry/keymaps/default/keymap.json @@ -0,0 +1,21 @@ +{ + "keyboard": "dcpedit/masonry", + "keymap": "default", + "author": "dcpedit", + "version": 1, + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_QUOT", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", + "KC_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI" + ], + [ + "KC_GRV" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_RGUI", + "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_HOME", "KC_END", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_RALT", + "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} \ No newline at end of file diff --git a/keyboards/dcpedit/masonry/keymaps/via/keymap.json b/keyboards/dcpedit/masonry/keymaps/via/keymap.json new file mode 100644 index 00000000000..76dfde65659 --- /dev/null +++ b/keyboards/dcpedit/masonry/keymaps/via/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "dcpedit/masonry", + "keymap": "default", + "author": "dcpedit", + "version": 1, + "config": { + "features": { + "via": true + } + }, + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_QUOT", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", + "KC_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI" + ], + [ + "KC_GRV" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_RGUI", + "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_HOME", "KC_END", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_RALT", + "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} \ No newline at end of file diff --git a/keyboards/dcpedit/masonry/readme.md b/keyboards/dcpedit/masonry/readme.md new file mode 100644 index 00000000000..9ba7a1597e5 --- /dev/null +++ b/keyboards/dcpedit/masonry/readme.md @@ -0,0 +1,27 @@ +# Masonry + +![Masonry](https://i.imgur.com/gqx2FZW.jpg) + +Masonry is a 40% ergoish columnar keyboard projected on a rectangular keyboard shape. + +* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit) +* Hardware Supported: STM32F072 +* Hardware Availability: https://github.com/dcpedit/masonry + +Make example for this keyboard (after setting up your build environment): + + make dcpedit/masonry:default + +Flashing example for this keyboard: + + make dcpedit/masonry:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the ESC key (top-left key) and plug in the keyboard +* **Physical reset button**: On the PCB, while holding down the BOOT button, press and release the RESET button +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/dcpedit/masonry/rules.mk b/keyboards/dcpedit/masonry/rules.mk new file mode 100644 index 00000000000..cfa2d9632f9 --- /dev/null +++ b/keyboards/dcpedit/masonry/rules.mk @@ -0,0 +1 @@ +# Intentionally left blank \ No newline at end of file From cc35aaadbf18da8f6145adfe8b135fc0f9ee26a1 Mon Sep 17 00:00:00 2001 From: Florent Linguenheld Date: Tue, 30 Apr 2024 03:40:01 +0200 Subject: [PATCH 06/41] Add Chew keyboard (#23628) --- keyboards/chew/config.h | 11 ++++ keyboards/chew/info.json | 84 +++++++++++++++++++++++++ keyboards/chew/keymaps/default/keymap.c | 27 ++++++++ keyboards/chew/readme.md | 38 +++++++++++ keyboards/chew/rules.mk | 1 + 5 files changed, 161 insertions(+) create mode 100644 keyboards/chew/config.h create mode 100644 keyboards/chew/info.json create mode 100644 keyboards/chew/keymaps/default/keymap.c create mode 100644 keyboards/chew/readme.md create mode 100644 keyboards/chew/rules.mk diff --git a/keyboards/chew/config.h b/keyboards/chew/config.h new file mode 100644 index 00000000000..22b43cf799d --- /dev/null +++ b/keyboards/chew/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Florent (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Flash */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // In ms in which the double tap can occur + +#define EE_HANDS +#define SERIAL_USART_TX_PIN GP11 diff --git a/keyboards/chew/info.json b/keyboards/chew/info.json new file mode 100644 index 00000000000..f6ddaa627d8 --- /dev/null +++ b/keyboards/chew/info.json @@ -0,0 +1,84 @@ +{ + "manufacturer": "florent@linguenheld.fr", + "keyboard_name": "chew", + "maintainer": "florent@linguenheld.fr", + "bootloader": "rp2040", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP4", "GP3", "GP2", "GP1", "GP0"], + ["GP15", "GP26", "GP27", "GP28", "GP29"], + ["GP14", "GP13", "GP9", "GP8", "NO_PIN"], + ["GP7", "GP6", "GP5", "NO_PIN", "NO_PIN"] + ] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["GP0", "GP1", "GP2", "GP3", "GP4"], + ["GP29", "GP28", "GP27", "GP26", "GP15"], + ["GP8", "GP9", "GP13", "GP14", "NO_PIN"], + ["GP5", "GP6", "GP7", "NO_PIN", "NO_PIN"] + ] + } + }, + "transport": { + "watchdog": true + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.125}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0.125}, + {"matrix": [0, 4], "x": 4, "y": 0.25}, + {"matrix": [4, 0], "x": 7, "y": 0.25}, + {"matrix": [4, 1], "x": 8, "y": 0.125}, + {"matrix": [4, 2], "x": 9, "y": 0}, + {"matrix": [4, 3], "x": 10, "y": 0.125}, + {"matrix": [4, 4], "x": 11, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.125}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.125}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [5, 0], "x": 7, "y": 1.25}, + {"matrix": [5, 1], "x": 8, "y": 1.125}, + {"matrix": [5, 2], "x": 9, "y": 1}, + {"matrix": [5, 3], "x": 10, "y": 1.125}, + {"matrix": [5, 4], "x": 11, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.125}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2.125}, + {"matrix": [6, 0], "x": 8, "y": 2.125}, + {"matrix": [6, 1], "x": 9, "y": 2}, + {"matrix": [6, 2], "x": 10, "y": 2.125}, + {"matrix": [6, 3], "x": 11, "y": 2.25}, + {"matrix": [3, 0], "x": 2.5, "y": 3.25}, + {"matrix": [3, 1], "x": 3.5, "y": 3.5}, + {"matrix": [3, 2], "x": 4.5, "y": 3.75}, + {"matrix": [7, 0], "x": 6.5, "y": 3.75}, + {"matrix": [7, 1], "x": 7.5, "y": 3.5}, + {"matrix": [7, 2], "x": 8.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/chew/keymaps/default/keymap.c b/keyboards/chew/keymaps/default/keymap.c new file mode 100644 index 00000000000..541ddbdf1c3 --- /dev/null +++ b/keyboards/chew/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┘ └───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ │ M │ , │ . │ / │ + * └───┴───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │ B ├───┐ ┌───┤ N │ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤Alt│ │ ├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_B, KC_BSPC, KC_RALT, KC_SPC, KC_ENT, KC_N + ) +}; diff --git a/keyboards/chew/readme.md b/keyboards/chew/readme.md new file mode 100644 index 00000000000..a08398ea0fa --- /dev/null +++ b/keyboards/chew/readme.md @@ -0,0 +1,38 @@ +## Chew + +![Chew front photo](https://live.staticflickr.com/65535/53681212617_90e4eebaf9_o.jpg) +![Chew front photo](https://live.staticflickr.com/65535/53682442119_1fcea26fef_o.jpg) + +A humble 34 key choc-spaced keyboard. + +- Keyboard Maintainer: [Florent Linguenheld](https://github.com/flinguenheld/) +- Visit the repository to get the last release: [Chew](https://github.com/flinguenheld/chew) +- Read the wiki to have some help or information: [Chew wiki](https://github.com/flinguenheld/chew/wiki) + + +![squirrel](https://github.com/flinguenheld/chew/blob/main/images/squirrel_brown.png?raw=true) + +### Requirements + +- 2x PCB +- 2x MCU board [RP2040-Zero](https://www.waveshare.com/wiki/RP2040-Zero) +- 2x TRRS jack +- 34 switches Choc V1 **only** +- 34 keycaps Choc V1 + +Optional: +- 23 [Mill Max sockets](https://splitkb.com/collections/keyboard-parts/products/mill-max-low-profile-sockets) +- 34 [kailh hotswap sockets](https://cdn.shopify.com/s/files/1/0588/1108/9090/files/5118-Choc-Socket.pdf?v=1686715063) +- 2x Back PCB + screws and bolts +- 2x [Tenting pucks](https://splitkb.com/collections/keyboard-parts/products/tenting-puck) +- 2x [Tripods](https://www.manfrotto.com/us-en/pocket-support-large-black-mp3-bk/) + +### Bootloader + +The controller has two buttons, so you can enter the bootloader in 2 ways: + +- Maintain the **boot** button and plug the usb cable in. +- Press twice the **reset** button. + +![hazelnuts](https://github.com/flinguenheld/chew/blob/main/images/hazelnuts.png?raw=true) +![Chew back photo](https://live.staticflickr.com/65535/53682442124_677ffa6cb5_o.jpg) diff --git a/keyboards/chew/rules.mk b/keyboards/chew/rules.mk new file mode 100644 index 00000000000..161ec22b16e --- /dev/null +++ b/keyboards/chew/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From c94c6fcc25cdf3a5eb16ba5609d2ef1b3e3a2916 Mon Sep 17 00:00:00 2001 From: Stephon Parker Date: Mon, 29 Apr 2024 21:46:48 -0400 Subject: [PATCH 07/41] [Keyboard] Add MECHWILD BB65 (#23581) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- keyboards/mechwild/bb65/config.h | 10 + keyboards/mechwild/bb65/f401/info.json | 3 + keyboards/mechwild/bb65/f401/rules.mk | 1 + keyboards/mechwild/bb65/f411/info.json | 3 + keyboards/mechwild/bb65/f411/rules.mk | 1 + keyboards/mechwild/bb65/halconf.h | 8 + keyboards/mechwild/bb65/info.json | 192 ++++++++++++++++++ .../mechwild/bb65/keymaps/default/keymap.json | 31 +++ .../mechwild/bb65/keymaps/via/keymap.json | 32 +++ keyboards/mechwild/bb65/mcuconf.h | 9 + keyboards/mechwild/bb65/readme.md | 23 +++ 11 files changed, 313 insertions(+) create mode 100644 keyboards/mechwild/bb65/config.h create mode 100644 keyboards/mechwild/bb65/f401/info.json create mode 100644 keyboards/mechwild/bb65/f401/rules.mk create mode 100644 keyboards/mechwild/bb65/f411/info.json create mode 100644 keyboards/mechwild/bb65/f411/rules.mk create mode 100644 keyboards/mechwild/bb65/halconf.h create mode 100644 keyboards/mechwild/bb65/info.json create mode 100644 keyboards/mechwild/bb65/keymaps/default/keymap.json create mode 100644 keyboards/mechwild/bb65/keymaps/via/keymap.json create mode 100644 keyboards/mechwild/bb65/mcuconf.h create mode 100644 keyboards/mechwild/bb65/readme.md diff --git a/keyboards/mechwild/bb65/config.h b/keyboards/mechwild/bb65/config.h new file mode 100644 index 00000000000..0792ca7f590 --- /dev/null +++ b/keyboards/mechwild/bb65/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD5 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM6 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/mechwild/bb65/f401/info.json b/keyboards/mechwild/bb65/f401/info.json new file mode 100644 index 00000000000..797e9900595 --- /dev/null +++ b/keyboards/mechwild/bb65/f401/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f401" +} diff --git a/keyboards/mechwild/bb65/f401/rules.mk b/keyboards/mechwild/bb65/f401/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/mechwild/bb65/f401/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb65/f411/info.json b/keyboards/mechwild/bb65/f411/info.json new file mode 100644 index 00000000000..a41c5f4dd14 --- /dev/null +++ b/keyboards/mechwild/bb65/f411/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f411" +} diff --git a/keyboards/mechwild/bb65/f411/rules.mk b/keyboards/mechwild/bb65/f411/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/mechwild/bb65/f411/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb65/halconf.h b/keyboards/mechwild/bb65/halconf.h new file mode 100644 index 00000000000..d9ca9492565 --- /dev/null +++ b/keyboards/mechwild/bb65/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/mechwild/bb65/info.json b/keyboards/mechwild/bb65/info.json new file mode 100644 index 00000000000..a9d812d827f --- /dev/null +++ b/keyboards/mechwild/bb65/info.json @@ -0,0 +1,192 @@ +{ + "manufacturer": "MechWild", + "keyboard_name": "BB65", + "bootloader_instructions": "Hold down the BOOT button, then tap the NRST button on the BlackPill. Avoid touching the A11 and A12 pins.", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A3", "pin_b": "A2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B14", "B15", "A8", "A15", "B4", "B5", "B8", "B9", "B0"], + "rows": ["B13", "B3", "B10", "A7", "A6", "B12", "B1", "A5"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 8, + "led_count": 10, + "saturation_steps": 8 + }, + "url": "https://mechwild.com/product/bb65/", + "usb": { + "device_version": "1.0.0", + "pid": "0x1712", + "vid": "0x6D77" + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [5, 8], "x": 9, "y": 0}, + {"matrix": [5, 7], "x": 10, "y": 0}, + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [5, 4], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [6, 8], "x": 9.5, "y": 1}, + {"matrix": [6, 7], "x": 10.5, "y": 1}, + {"matrix": [6, 6], "x": 11.5, "y": 1}, + {"matrix": [6, 5], "x": 12.5, "y": 1}, + {"matrix": [6, 4], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [7, 0], "x": 9.75, "y": 2}, + {"matrix": [6, 0], "x": 10.75, "y": 2}, + {"matrix": [6, 1], "x": 11.75, "y": 2}, + {"matrix": [6, 2], "x": 12.75, "y": 2}, + {"matrix": [6, 3], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [7, 8], "x": 9.25, "y": 3}, + {"matrix": [7, 7], "x": 10.25, "y": 3}, + {"matrix": [7, 6], "x": 11.25, "y": 3}, + {"matrix": [7, 5], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 4], "x": 15.5, "y": 3}, + {"matrix": [7, 3], "x": 14.25, "y": 3.25}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 3], "x": 10, "y": 4}, + {"matrix": [4, 4], "x": 11, "y": 4}, + {"matrix": [4, 6], "x": 12, "y": 4}, + {"matrix": [4, 7], "x": 13.25, "y": 4.25}, + {"matrix": [4, 8], "x": 14.25, "y": 4.25}, + {"matrix": [7, 2], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [5, 8], "x": 9, "y": 0}, + {"matrix": [5, 7], "x": 10, "y": 0}, + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [5, 4], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [6, 8], "x": 9.5, "y": 1}, + {"matrix": [6, 7], "x": 10.5, "y": 1}, + {"matrix": [6, 6], "x": 11.5, "y": 1}, + {"matrix": [6, 5], "x": 12.5, "y": 1}, + {"matrix": [6, 4], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [7, 0], "x": 9.75, "y": 2}, + {"matrix": [6, 0], "x": 10.75, "y": 2}, + {"matrix": [6, 1], "x": 11.75, "y": 2}, + {"matrix": [6, 3], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [7, 8], "x": 9.25, "y": 3}, + {"matrix": [7, 7], "x": 10.25, "y": 3}, + {"matrix": [7, 6], "x": 11.25, "y": 3}, + {"matrix": [7, 5], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 4], "x": 15.5, "y": 3}, + {"matrix": [7, 3], "x": 14.25, "y": 3.25}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 3], "x": 10, "y": 4}, + {"matrix": [4, 4], "x": 11, "y": 4}, + {"matrix": [4, 6], "x": 12, "y": 4}, + {"matrix": [4, 7], "x": 13.25, "y": 4.25}, + {"matrix": [4, 8], "x": 14.25, "y": 4.25}, + {"matrix": [7, 2], "x": 15.25, "y": 4.25} + ] + } + } +} diff --git a/keyboards/mechwild/bb65/keymaps/default/keymap.json b/keyboards/mechwild/bb65/keymaps/default/keymap.json new file mode 100644 index 00000000000..31d55e5f95a --- /dev/null +++ b/keyboards/mechwild/bb65/keymaps/default/keymap.json @@ -0,0 +1,31 @@ +{ + "keyboard": "mechwild/bb65/f401", + "keymap": "default", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "QK_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "MO(1)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_TRNS", "KC_ENT", + "KC_LSFT", "KC_TRNS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "RGB_TOG", + "RGB_RMOD", "KC_LGUI", "RGB_MOD", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "KC_TRNS", "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_DEL", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_HOME", "KC_PGDN", "KC_END" + ] + ], + "config": { + "features": { + "encoder_map": true + } + }, + "encoders": [ + [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}], + [{"ccw": "KC_TRNS", "cw": "KC_TRNS"}] + ] +} diff --git a/keyboards/mechwild/bb65/keymaps/via/keymap.json b/keyboards/mechwild/bb65/keymaps/via/keymap.json new file mode 100644 index 00000000000..1e6ebcb717c --- /dev/null +++ b/keyboards/mechwild/bb65/keymaps/via/keymap.json @@ -0,0 +1,32 @@ +{ + "keyboard": "mechwild/bb65/f401", + "keymap": "via", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "QK_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "MO(1)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_TRNS", "KC_ENT", + "KC_LSFT", "KC_TRNS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "RGB_TOG", + "RGB_RMOD", "KC_LGUI", "RGB_MOD", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "KC_TRNS", "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_DEL", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_HOME", "KC_PGDN", "KC_END" + ] + ], + "config": { + "features": { + "encoder_map": true, + "via": true + } + }, + "encoders": [ + [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}], + [{"ccw": "KC_TRNS", "cw": "KC_TRNS"}] + ] +} diff --git a/keyboards/mechwild/bb65/mcuconf.h b/keyboards/mechwild/bb65/mcuconf.h new file mode 100644 index 00000000000..f9e61e737de --- /dev/null +++ b/keyboards/mechwild/bb65/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM5 +#define STM32_PWM_USE_TIM5 TRUE diff --git a/keyboards/mechwild/bb65/readme.md b/keyboards/mechwild/bb65/readme.md new file mode 100644 index 00000000000..43416f90c1b --- /dev/null +++ b/keyboards/mechwild/bb65/readme.md @@ -0,0 +1,23 @@ +# BB65 + +![bb65](https://i.imgur.com/0PrDjuS.png) + +BB65 is a completely normal BlackPill-powered 65% DIY kit. It’s got all the letters, a number row, and arrow keys. Basic as it can be. + +The `f401` version is the standard for this kit, using an STM32F401 BlackPill. The `f411` version will not run on an STM32F401 BlackPill; if in doubt, use `f401`. + +* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) +* Hardware Supported: BB65 v1.0 +* Hardware Availability: [BB65 on MechWild](https://mechwild.com/product/bb65/) + +Make example for this keyboard (after setting up your build environment): + + make mechwild/bb65/f401:default + make mechwild/bb65/f411:default + +Flashing example for this keyboard: + + make mechwild/bb65/f401:default:flash + make mechwild/bb65/f411:default:flash + +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). From ae8458e12dfdf34906443f6793e69436e78b1802 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:32:43 +0900 Subject: [PATCH 08/41] [Keyboard] Add SIRIND TOMAK (#23554) Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/era/sirind/tomak/config.h | 16 + keyboards/era/sirind/tomak/info.json | 710 ++++++++++++++++++ .../era/sirind/tomak/keymaps/default/keymap.c | 25 + .../tomak/keymaps/default_ansi/keymap.c | 25 + .../keymaps/default_ansi_split_bs/keymap.c | 25 + .../default_ansi_split_rshift/keymap.c | 25 + .../default_ansi_split_rshift_bs/keymap.c | 25 + .../era/sirind/tomak/keymaps/via/keymap.c | 25 + .../era/sirind/tomak/keymaps/via/rules.mk | 1 + keyboards/era/sirind/tomak/readme.md | 27 + keyboards/era/sirind/tomak/rules.mk | 1 + keyboards/era/sirind/tomak/tomak.c | 16 + 12 files changed, 921 insertions(+) create mode 100644 keyboards/era/sirind/tomak/config.h create mode 100644 keyboards/era/sirind/tomak/info.json create mode 100644 keyboards/era/sirind/tomak/keymaps/default/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/via/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/via/rules.mk create mode 100644 keyboards/era/sirind/tomak/readme.md create mode 100644 keyboards/era/sirind/tomak/rules.mk create mode 100644 keyboards/era/sirind/tomak/tomak.c diff --git a/keyboards/era/sirind/tomak/config.h b/keyboards/era/sirind/tomak/config.h new file mode 100644 index 00000000000..7bb56107054 --- /dev/null +++ b/keyboards/era/sirind/tomak/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Split configuration */ +#define SPLIT_HAND_PIN GP21 +#define USB_VBUS_PIN GP29 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 +#define SERIAL_USART_PIN_SWAP + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/info.json b/keyboards/era/sirind/tomak/info.json new file mode 100644 index 00000000000..da7d12e94d1 --- /dev/null +++ b/keyboards/era/sirind/tomak/info.json @@ -0,0 +1,710 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Tomak", + "maintainer": "eerraa", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP16", "GP9", "GP8", "GP6", "GP5", "GP4", "GP3", "GP2", null, null, null], + "rows": ["GP27", "GP10", "GP11", "GP12", "GP13", "GP14"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 2, "y": 0, "flags": 1}, + {"matrix": [0, 2], "x": 19, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 31, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 43, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 55, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 73, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 85, "y": 0, "flags": 4}, + {"matrix": [1, 7], "x": 87, "y": 13, "flags": 4}, + {"matrix": [1, 6], "x": 74, "y": 13, "flags": 4}, + {"matrix": [1, 5], "x": 62, "y": 13, "flags": 4}, + {"matrix": [1, 4], "x": 50, "y": 13, "flags": 4}, + {"matrix": [1, 3], "x": 38, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 13, "flags": 4}, + {"matrix": [1, 1], "x": 14, "y": 13, "flags": 4}, + {"matrix": [1, 0], "x": 2, "y": 13, "flags": 4}, + {"matrix": [2, 0], "x": 5, "y": 26, "flags": 1}, + {"matrix": [2, 1], "x": 20, "y": 26, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 26, "flags": 4}, + {"matrix": [2, 3], "x": 44, "y": 26, "flags": 4}, + {"matrix": [2, 4], "x": 56, "y": 26, "flags": 4}, + {"matrix": [2, 5], "x": 68, "y": 26, "flags": 4}, + {"matrix": [2, 6], "x": 71, "y": 26, "flags": 4}, + {"matrix": [3, 6], "x": 84, "y": 38, "flags": 4}, + {"matrix": [3, 5], "x": 71, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 59, "y": 38, "flags": 4}, + {"matrix": [3, 3], "x": 47, "y": 38, "flags": 4}, + {"matrix": [3, 2], "x": 35, "y": 38, "flags": 4}, + {"matrix": [3, 1], "x": 23, "y": 38, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 38, "flags": 1}, + {"matrix": [4, 0], "x": 9, "y": 51, "flags": 1}, + {"matrix": [4, 1], "x": 29, "y": 51, "flags": 4}, + {"matrix": [4, 2], "x": 41, "y": 51, "flags": 4}, + {"matrix": [4, 3], "x": 53, "y": 51, "flags": 4}, + {"matrix": [4, 4], "x": 65, "y": 51, "flags": 4}, + {"matrix": [4, 5], "x": 77, "y": 51, "flags": 4}, + {"matrix": [5, 5], "x": 84, "y": 64, "flags": 1}, + {"matrix": [5, 4], "x": 61, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 35, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 20, "y": 64, "flags": 1}, + {"matrix": [5, 0], "x": 5, "y": 64, "flags": 1}, + {"matrix": [6, 10], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 9], "x": 212, "y": 0, "flags": 4}, + {"matrix": [6, 8], "x": 200, "y": 0, "flags": 4}, + {"matrix": [6, 7], "x": 184, "y": 0, "flags": 4}, + {"matrix": [6, 5], "x": 167, "y": 0, "flags": 4}, + {"matrix": [6, 4], "x": 155, "y": 0, "flags": 4}, + {"matrix": [6, 3], "x": 143, "y": 0, "flags": 4}, + {"matrix": [6, 2], "x": 131, "y": 0, "flags": 4}, + {"matrix": [6, 1], "x": 113, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 101, "y": 0, "flags": 4}, + {"matrix": [7, 0], "x": 99, "y": 13, "flags": 4}, + {"matrix": [7, 1], "x": 112, "y": 13, "flags": 4}, + {"matrix": [7, 2], "x": 124, "y": 13, "flags": 4}, + {"matrix": [7, 3], "x": 136, "y": 13, "flags": 4}, + {"matrix": [7, 4], "x": 148, "y": 13, "flags": 4}, + {"matrix": [7, 5], "x": 160, "y": 13, "flags": 4}, + {"matrix": [7, 7], "x": 178, "y": 13, "flags": 1}, + {"matrix": [7, 8], "x": 200, "y": 13, "flags": 4}, + {"matrix": [7, 9], "x": 212, "y": 13, "flags": 4}, + {"matrix": [7, 10], "x": 224, "y": 13, "flags": 4}, + {"matrix": [8, 10], "x": 224, "y": 26, "flags": 4}, + {"matrix": [8, 9], "x": 212, "y": 26, "flags": 4}, + {"matrix": [8, 8], "x": 200, "y": 26, "flags": 4}, + {"matrix": [8, 7], "x": 181, "y": 26, "flags": 4}, + {"matrix": [8, 6], "x": 166, "y": 26, "flags": 4}, + {"matrix": [8, 5], "x": 154, "y": 26, "flags": 4}, + {"matrix": [8, 4], "x": 142, "y": 26, "flags": 4}, + {"matrix": [8, 3], "x": 130, "y": 26, "flags": 4}, + {"matrix": [8, 2], "x": 118, "y": 26, "flags": 4}, + {"matrix": [8, 1], "x": 105, "y": 26, "flags": 4}, + {"matrix": [8, 0], "x": 93, "y": 26, "flags": 4}, + {"matrix": [9, 0], "x": 96, "y": 38, "flags": 4}, + {"matrix": [9, 1], "x": 109, "y": 38, "flags": 4}, + {"matrix": [9, 2], "x": 121, "y": 38, "flags": 4}, + {"matrix": [9, 3], "x": 133, "y": 38, "flags": 4}, + {"matrix": [9, 4], "x": 145, "y": 38, "flags": 4}, + {"matrix": [9, 5], "x": 157, "y": 38, "flags": 4}, + {"matrix": [9, 7], "x": 177, "y": 38, "flags": 1}, + {"matrix": [10, 9], "x": 212, "y": 51, "flags": 4}, + {"matrix": [10, 7], "x": 184, "y": 45, "flags": 1}, + {"matrix": [10, 6], "x": 174, "y": 51, "flags": 1}, + {"matrix": [10, 5], "x": 151, "y": 51, "flags": 4}, + {"matrix": [10, 4], "x": 139, "y": 51, "flags": 4}, + {"matrix": [10, 3], "x": 127, "y": 51, "flags": 4}, + {"matrix": [10, 2], "x": 115, "y": 51, "flags": 4}, + {"matrix": [10, 1], "x": 102, "y": 51, "flags": 4}, + {"matrix": [10, 0], "x": 90, "y": 51, "flags": 4}, + {"matrix": [11, 1], "x": 96, "y": 64, "flags": 1}, + {"matrix": [11, 2], "x": 110, "y": 64, "flags": 4}, + {"matrix": [11, 4], "x": 137, "y": 64, "flags": 1}, + {"matrix": [11, 5], "x": 153, "y": 64, "flags": 1}, + {"matrix": [11, 6], "x": 168, "y": 64, "flags": 1}, + {"matrix": [11, 7], "x": 183, "y": 64, "flags": 1}, + {"matrix": [11, 8], "x": 200, "y": 64, "flags": 1}, + {"matrix": [11, 9], "x": 212, "y": 64, "flags": 1}, + {"matrix": [11, 10], "x": 224, "y": 64, "flags": 1}, + {"x": 224, "y": 40, "flags": 8}, + {"x": 224, "y": 45, "flags": 8}, + {"x": 224, "y": 50, "flags": 8} + ], + "max_brightness": 120, + "sleep": true, + "split_count": [40, 59] + }, + "split": { + "bootmagic": { + "matrix": [6, 0] + }, + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP27", "GP17", "GP13"], + "rows": ["GP10", "GP11", "GP12", "GP28", "GP19", "GP16"] + } + }, + "transport": { + "protocol": "serial_usart", + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true + } + } + }, + "url": "", + "usb": { + "device_version": "1.0.2", + "pid": "0x0006", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP20" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_split_tkl_ansi_split_rshift_bs_rspace", + "LAYOUT_ansi": "LAYOUT_split_tkl_ansi", + "LAYOUT_ansi_split_bs": "LAYOUT_split_tkl_ansi_split_bs", + "LAYOUT_ansi_split_rshift": "LAYOUT_split_tkl_ansi_split_rshift", + "LAYOUT_ansi_split_rshift_bs": "LAYOUT_split_tkl_ansi_split_rshift_bs" + }, + "layouts": { + "LAYOUT_split_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 7], "x": 15.5, "y": 1.5, "w": 2}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 2.75}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 2.75}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5, "w": 2}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift_bs_rspace": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 1], "x": 9.25, "y": 5.5}, + {"matrix": [11, 2], "x": 10.25, "y": 5.5, "w": 2.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default/keymap.c b/keyboards/era/sirind/tomak/keymaps/default/keymap.c new file mode 100644 index 00000000000..62941ff8b7a --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c new file mode 100644 index 00000000000..3823cc69c36 --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c new file mode 100644 index 00000000000..87f3072a9e1 --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_bs( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c new file mode 100644 index 00000000000..6b8fb56e339 --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_rshift( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c new file mode 100644 index 00000000000..380689dd46b --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_rshift_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_rshift_bs( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/via/keymap.c b/keyboards/era/sirind/tomak/keymaps/via/keymap.c new file mode 100644 index 00000000000..62941ff8b7a --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/via/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/via/rules.mk b/keyboards/era/sirind/tomak/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/readme.md b/keyboards/era/sirind/tomak/readme.md new file mode 100644 index 00000000000..0834dfd6a87 --- /dev/null +++ b/keyboards/era/sirind/tomak/readme.md @@ -0,0 +1,27 @@ +# Tomak + +![Tomak](https://i.imgur.com/CmVR0G1.jpeg) + +Ergonomics Split Keyboard powered by RP2040. + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Tomak +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/sirind/tomak:default + +Flashing example for this keyboard: + + make era/sirind/tomak:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the 'top-left(ESC, F7)' key and plug in the keyboard. +* **Physical reset**: Short the 'RESET' and 'GND' holes twice within one second, or plug in the keyboard with the 'BOOT' and 'GND' holes shorted. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/rules.mk b/keyboards/era/sirind/tomak/rules.mk new file mode 100644 index 00000000000..743228e94b6 --- /dev/null +++ b/keyboards/era/sirind/tomak/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/tomak.c b/keyboards/era/sirind/tomak/tomak.c new file mode 100644 index 00000000000..8533cd4a737 --- /dev/null +++ b/keyboards/era/sirind/tomak/tomak.c @@ -0,0 +1,16 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(96, 0, 128, 128); + rgb_matrix_set_color(97, 0, 128, 128); + rgb_matrix_set_color(98, 0, 128, 128); + } + return true; +} \ No newline at end of file From 284e29d4a1edcdd4bcaeb9a41d824d471369ceaf Mon Sep 17 00:00:00 2001 From: Alabahuy Date: Tue, 30 Apr 2024 09:42:32 +0700 Subject: [PATCH 09/41] [Keyboard] add jaykeeb jk65 (#23536) --- keyboards/jaykeeb/jk65/info.json | 410 ++++++++++++++++++ .../jaykeeb/jk65/keymaps/default/keymap.c | 22 + keyboards/jaykeeb/jk65/keymaps/via/keymap.c | 21 + keyboards/jaykeeb/jk65/keymaps/via/rules.mk | 1 + keyboards/jaykeeb/jk65/matrix_diagram.md | 24 + keyboards/jaykeeb/jk65/readme.md | 27 ++ keyboards/jaykeeb/jk65/rules.mk | 1 + 7 files changed, 506 insertions(+) create mode 100644 keyboards/jaykeeb/jk65/info.json create mode 100644 keyboards/jaykeeb/jk65/keymaps/default/keymap.c create mode 100644 keyboards/jaykeeb/jk65/keymaps/via/keymap.c create mode 100644 keyboards/jaykeeb/jk65/keymaps/via/rules.mk create mode 100644 keyboards/jaykeeb/jk65/matrix_diagram.md create mode 100644 keyboards/jaykeeb/jk65/readme.md create mode 100644 keyboards/jaykeeb/jk65/rules.mk diff --git a/keyboards/jaykeeb/jk65/info.json b/keyboards/jaykeeb/jk65/info.json new file mode 100644 index 00000000000..0be07caacdc --- /dev/null +++ b/keyboards/jaykeeb/jk65/info.json @@ -0,0 +1,410 @@ +{ + "manufacturer": "Jaykeeb Studio", + "keyboard_name": "JK65", + "maintainer": "Alabahuy", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP24", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1"], + "rows": ["GP29", "GP0", "GP15", "GP26", "GP27"] + }, + "indicators": { + "caps_lock": "GP25", + "on_state": 0 + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x7765", + "vid": "0x414C" + }, + "community_layouts": ["65_ansi_blocker", "65_ansi_blocker_split_bs", "65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Home", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Home", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/jaykeeb/jk65/keymaps/default/keymap.c b/keyboards/jaykeeb/jk65/keymaps/default/keymap.c new file mode 100644 index 00000000000..de10b49a6cf --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + 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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( + 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_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jaykeeb/jk65/keymaps/via/keymap.c b/keyboards/jaykeeb/jk65/keymaps/via/keymap.c new file mode 100644 index 00000000000..bc93e7ea2be --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/via/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jaykeeb/jk65/keymaps/via/rules.mk b/keyboards/jaykeeb/jk65/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jaykeeb/jk65/matrix_diagram.md b/keyboards/jaykeeb/jk65/matrix_diagram.md new file mode 100644 index 00000000000..7a36c0ae662 --- /dev/null +++ b/keyboards/jaykeeb/jk65/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for Jaykeeb JK65 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2D │1E │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ +│40 │41 │42 │46 │4A │4B │ │4C │4D │4E │ +└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +┌────────┐ +│30 │ 2.25u LShift +└────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┐ +│40 │41 │42 │46 │4B │ Blocker Tsangan +└─────┴───┴─────┴───────────────────────────┴─────┘ +``` diff --git a/keyboards/jaykeeb/jk65/readme.md b/keyboards/jaykeeb/jk65/readme.md new file mode 100644 index 00000000000..e0dbe05c581 --- /dev/null +++ b/keyboards/jaykeeb/jk65/readme.md @@ -0,0 +1,27 @@ +# JK65 + +![jk65]( https://i.imgur.com/NysDAOy.png ) + +Layout 65% support multi layout and keyboard case exiting + +* Keyboard Maintainer: [Alabahuy](https://github.com/Alabahuy) +* Hardware Supported: JK65 PCB, RP2040 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make jaykeeb/jk65:default + +Flashing example for this keyboard: + + make jaykeeb/jk65:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/jaykeeb/jk65/rules.mk b/keyboards/jaykeeb/jk65/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/jaykeeb/jk65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From b99e09ee0ebdbd473afd2e1dc35266e453c405b2 Mon Sep 17 00:00:00 2001 From: Stefan Gluszek Date: Tue, 30 Apr 2024 04:45:46 +0200 Subject: [PATCH 10/41] [Keyboard] Fatotesa - custom asymmetric split keyboard (#23528) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/fatotesa/info.json | 144 ++++++++++++++++++++ keyboards/fatotesa/keymaps/default/keymap.c | 30 ++++ keyboards/fatotesa/keymaps/default/rules.mk | 1 + keyboards/fatotesa/readme.md | 25 ++++ keyboards/fatotesa/rules.mk | 1 + 5 files changed, 201 insertions(+) create mode 100644 keyboards/fatotesa/info.json create mode 100644 keyboards/fatotesa/keymaps/default/keymap.c create mode 100644 keyboards/fatotesa/keymaps/default/rules.mk create mode 100644 keyboards/fatotesa/readme.md create mode 100644 keyboards/fatotesa/rules.mk diff --git a/keyboards/fatotesa/info.json b/keyboards/fatotesa/info.json new file mode 100644 index 00000000000..bdd5e40478d --- /dev/null +++ b/keyboards/fatotesa/info.json @@ -0,0 +1,144 @@ +{ + "development_board": "promicro", + "manufacturer": "fatotesa", + "keyboard_name": "fatotesa", + "maintainer": "stefangluszek", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "caps_word": true + }, + "encoder": { + "rotary": [ + { "pin_a": "D1", "pin_b": "D0" , "resolution": 2} + ] + }, + "split": { + "enabled": true, + "soft_serial_pin": "D2", + "usb_detect": { + "enabled": true, + "timeout": 2500 + }, + "matrix_pins": { + "right": { + "cols": ["F4", "F5", "F6", "C6", "F7", "B1", "B3", "B2"], + "rows": ["B6", "E6", "D4", "D7", "B4", "B5"] + } + }, + "bootmagic": { + "matrix": [4, 1] + } + }, + "matrix_pins": { + "cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6", null], + "rows": ["D4", "C6", "D7", "E6", "B4", "B5"] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "label":"esc", "x":0, "y":0}, + {"matrix": [0, 2], "label":"f1", "x":2, "y":0}, + {"matrix": [0, 3], "label":"f2", "x":3, "y":0}, + {"matrix": [0, 4], "label":"f3", "x":4, "y":0}, + {"matrix": [0, 5], "label":"f4", "x":5, "y":0}, + + {"matrix": [6, 4], "label":"end", "x":13.25, "y":0}, + {"matrix": [6, 5], "label":"ins", "x":14.25, "y":0}, + {"matrix": [6, 6], "label":"del", "x":15.25, "y":0}, + {"matrix": [6, 7], "label":"enc", "x":16.5, "y":0, "encoder": 0}, + + + {"matrix": [1, 0], "label":"`", "x":0, "y":1}, + {"matrix": [1, 1], "label":"1", "x":1, "y":1}, + {"matrix": [1, 2], "label":"2", "x":2, "y":1}, + {"matrix": [1, 3], "label":"3", "x":3, "y":1}, + {"matrix": [1, 4], "label":"4", "x":4, "y":1}, + {"matrix": [1, 5], "label":"5", "x":5, "y":1}, + {"matrix": [1, 6], "label":"6", "x":6, "y":1}, + + {"matrix": [7, 1], "label":"7", "x":9.5, "y":1}, + {"matrix": [7, 2], "label":"8", "x":10.5, "y":1}, + {"matrix": [7, 3], "label":"9", "x":11.5, "y":1}, + {"matrix": [7, 4], "label":"0", "x":12.5, "y":1}, + {"matrix": [7, 5], "label":"-", "x":13.5, "y":1}, + {"matrix": [7, 6], "label":"=", "x":14.5, "y":1}, + {"matrix": [7, 7], "label":"<", "x":15.5, "y":1, "w":2}, + + + {"matrix": [2, 0], "label":"tab", "x":0, "y":2, "w":1.5}, + {"matrix": [2, 1], "label":"q", "x":1.5, "y":2}, + {"matrix": [2, 2], "label":"w", "x":2.5, "y":2}, + {"matrix": [2, 3], "label":"e", "x":3.5, "y":2}, + {"matrix": [2, 4], "label":"r", "x":4.5, "y":2}, + {"matrix": [2, 5], "label":"t", "x":5.5, "y":2}, + + {"matrix": [8, 0], "label":"y", "x":9, "y":2}, + {"matrix": [8, 1], "label":"u", "x":10, "y":2}, + {"matrix": [8, 2], "label":"i", "x":11, "y":2}, + {"matrix": [8, 3], "label":"o", "x":12, "y":2}, + {"matrix": [8, 4], "label":"p", "x":13, "y":2}, + {"matrix": [8, 5], "label":"[", "x":14, "y":2}, + {"matrix": [8, 6], "label":"]", "x":15, "y":2}, + {"matrix": [8, 7], "x":16.25, "y":2, "w":1.25, "h":2}, + + + {"matrix": [3, 0], "label":"caps", "x":0, "y":3, "w":1.75}, + {"matrix": [3, 1], "label":"a", "x":1.75, "y":3}, + {"matrix": [3, 2], "label":"s", "x":2.75, "y":3}, + {"matrix": [3, 3], "label":"d", "x":3.75, "y":3}, + {"matrix": [3, 4], "label":"f", "x":4.75, "y":3}, + {"matrix": [3, 5], "label":"g", "x":5.75, "y":3}, + + {"matrix": [9, 0], "label":"h", "x":9.25, "y":3}, + {"matrix": [9, 1], "label":"j", "x":10.25, "y":3}, + {"matrix": [9, 2], "label":"k", "x":11.25, "y":3}, + {"matrix": [9, 3], "label":"l", "x":12.25, "y":3}, + {"matrix": [9, 4], "label":";", "x":13.25, "y":3}, + {"matrix": [9, 5], "label":"'", "x":14.25, "y":3}, + {"matrix": [9, 6], "label":"\\", "x":15.25, "y":3}, + + + {"matrix": [4, 0], "label":"shift", "x":0, "y":4, "w":1.25}, + {"matrix": [4, 1], "label":"<", "x":1.25, "y":4}, + {"matrix": [4, 2], "label":"z", "x":2.25, "y":4}, + {"matrix": [4, 3], "label":"x", "x":3.25, "y":4}, + {"matrix": [4, 4], "label":"c", "x":4.25, "y":4}, + {"matrix": [4, 5], "label":"v", "x":5.25, "y":4}, + {"matrix": [4, 6], "label":"b", "x":6.25, "y":4}, + + {"matrix": [10, 2], "label":"n", "x":9.75, "y":4}, + {"matrix": [10, 3], "label":"m", "x":10.75, "y":4}, + {"matrix": [10, 4], "label":",", "x":11.75, "y":4}, + {"matrix": [10, 5], "label":".", "x":12.75, "y":4}, + {"matrix": [10, 6], "label":"/", "x":13.75, "y":4}, + {"matrix": [10, 7], "x":14.75, "y":4}, + + + {"matrix": [5, 0], "label":"ctrl", "x":0, "y":5, "w":1.25}, + {"matrix": [5, 1], "label":"win", "x":1.25, "y":5, "w":1.25}, + {"matrix": [5, 2], "label":"alt", "x":2.5, "y":5, "w":1.25}, + {"matrix": [5, 3], "label":"space", "x":3.75, "y":5, "w":1.75}, + {"matrix": [5, 4], "label":"na", "x":5.5, "y":5}, + + {"matrix": [11, 3], "label":"space", "x":10.5, "y":5, "w":2}, + {"matrix": [11, 4], "label":"alt gr", "x":12.5, "y":5, "w":1.25}, + {"matrix": [11, 5], "label":"ctrl", "x":13.75, "y":5, "w":1.25}, + {"matrix": [11, 6], "label":"?", "x":15, "y":5, "w":1.25}, + {"matrix": [11, 7], "label":"?", "x":16.25, "y":5, "w":1.25} + ] + } + } +} diff --git a/keyboards/fatotesa/keymaps/default/keymap.c b/keyboards/fatotesa/keymaps/default/keymap.c new file mode 100644 index 00000000000..1f6aa804889 --- /dev/null +++ b/keyboards/fatotesa/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, +}; +#endif + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_END, KC_INSERT, KC_DELETE, KC_KB_MUTE, + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, + LT(1, KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_ENTER, + KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_BACKSLASH, + KC_LEFT_SHIFT, KC_LEFT_ANGLE_BRACKET, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, + CW_TOGG, KC_LWIN, KC_LEFT_ALT, KC_BACKSPACE, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, KC_RIGHT_CTRL, KC_NO, KC_NO + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______ + )}; diff --git a/keyboards/fatotesa/keymaps/default/rules.mk b/keyboards/fatotesa/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/fatotesa/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/fatotesa/readme.md b/keyboards/fatotesa/readme.md new file mode 100644 index 00000000000..a3794cfd667 --- /dev/null +++ b/keyboards/fatotesa/readme.md @@ -0,0 +1,25 @@ +# fatotesa + +![fatotesa](https://i.imgur.com/LbxQcU2.png) + +This is the QMK firmware for the [fat-o-tesa](https://github.com/stefangluszek/fat-o-tesa) keyboard. + +* Keyboard Maintainer: [Stefan Gluszek](https://github.com/stefangluszek) + +Make example for this keyboard (after setting up your build environment): + + make fatotesa:default + +Flashing example for this keyboard: + + make fatotesa:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (4,1) in the matrix and plug in the keyboard - this is somewhat unusual choice but our split halves are not symmetrical and we can't use (0,0) but instead a key that maps to the same matrix position regardless of which part is being connected to the computer and flashed. +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/fatotesa/rules.mk b/keyboards/fatotesa/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/fatotesa/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4f4602abd532ede6dca9a99dd9c96a52076916d2 Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:49:34 -0400 Subject: [PATCH 11/41] [Keyboard] Vault35 WKL universal (#23519) --- keyboards/jlw/vault35_wkl_universal/config.h | 11 + keyboards/jlw/vault35_wkl_universal/halconf.h | 8 + keyboards/jlw/vault35_wkl_universal/info.json | 765 ++++++++++++++++++ .../keymaps/default/keymap.c | 36 + .../keymaps/default/rules.mk | 1 + keyboards/jlw/vault35_wkl_universal/mcuconf.h | 11 + keyboards/jlw/vault35_wkl_universal/readme.md | 27 + keyboards/jlw/vault35_wkl_universal/rules.mk | 1 + 8 files changed, 860 insertions(+) create mode 100644 keyboards/jlw/vault35_wkl_universal/config.h create mode 100644 keyboards/jlw/vault35_wkl_universal/halconf.h create mode 100644 keyboards/jlw/vault35_wkl_universal/info.json create mode 100644 keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c create mode 100644 keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk create mode 100644 keyboards/jlw/vault35_wkl_universal/mcuconf.h create mode 100644 keyboards/jlw/vault35_wkl_universal/readme.md create mode 100644 keyboards/jlw/vault35_wkl_universal/rules.mk diff --git a/keyboards/jlw/vault35_wkl_universal/config.h b/keyboards/jlw/vault35_wkl_universal/config.h new file mode 100644 index 00000000000..7edfb1b7c6b --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD17 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_DMA_CHANNEL 1 diff --git a/keyboards/jlw/vault35_wkl_universal/halconf.h b/keyboards/jlw/vault35_wkl_universal/halconf.h new file mode 100644 index 00000000000..e5c3093515a --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/jlw/vault35_wkl_universal/info.json b/keyboards/jlw/vault35_wkl_universal/info.json new file mode 100644 index 00000000000..3274b717731 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/info.json @@ -0,0 +1,765 @@ +{ + "manufacturer": "jlw", + "keyboard_name": "vault 35 WKL universal", + "maintainer": "jlw", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "A7"}, + {"pin_a": "B2", "pin_b": "B1"}, + {"pin_a": "B3", "pin_b": "A15"}, + {"pin_a": "B5", "pin_b": "B4"}, + {"pin_a": "A1", "pin_b": "A2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B6", "B8", "A13", "B13", "B14", "A14", "A0", "A3", "A4", "A5", "A6"], + "rows": ["B9", "B12", "B15", "A8"] + }, + "processor": "STM32F072", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "hue_steps": 4, + "layout": [ + {"matrix": [1, 0], "x": 1, "y": 22, "flags": 4}, + {"matrix": [0, 0], "x": 1, "y": 11, "flags": 4}, + {"matrix": [0, 0], "x": 3, "y": 2, "flags": 4}, + {"matrix": [0, 0], "x": 12, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 23, "y": 2, "flags": 4}, + {"matrix": [1, 1], "x": 30, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 42, "y": 2, "flags": 4}, + {"matrix": [0, 2], "x": 51, "y": 2, "flags": 4}, + {"matrix": [1, 2], "x": 60, "y": 2, "flags": 4}, + {"matrix": [0, 3], "x": 70, "y": 2, "flags": 4}, + {"matrix": [1, 3], "x": 79, "y": 2, "flags": 4}, + {"matrix": [0, 4], "x": 88, "y": 2, "flags": 4}, + {"matrix": [0, 5], "x": 98, "y": 2, "flags": 4}, + {"matrix": [0, 6], "x": 107, "y": 2, "flags": 4}, + {"matrix": [0, 7], "x": 116, "y": 2, "flags": 4}, + {"matrix": [1, 7], "x": 126, "y": 2, "flags": 4}, + {"matrix": [0, 7], "x": 135, "y": 2, "flags": 4}, + {"matrix": [0, 8], "x": 144, "y": 2, "flags": 4}, + {"matrix": [1, 8], "x": 154, "y": 2, "flags": 4}, + {"matrix": [0, 9], "x": 163, "y": 2, "flags": 4}, + {"matrix": [1, 9], "x": 173, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 183, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 192, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 195, "y": 13, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 23, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 32, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 43, "flags": 4}, + {"matrix": [2, 10], "x": 195, "y": 55, "flags": 4}, + {"matrix": [2, 10], "x": 195, "y": 67, "flags": 4}, + {"matrix": [3, 10], "x": 190, "y": 79, "flags": 4}, + {"matrix": [3, 10], "x": 195, "y": 87, "flags": 4}, + {"matrix": [3, 10], "x": 185, "y": 88, "flags": 4}, + {"matrix": [3, 9], "x": 176, "y": 88, "flags": 4}, + {"matrix": [3, 9], "x": 171, "y": 82, "flags": 4}, + {"matrix": [2, 9], "x": 171, "y": 73, "flags": 4}, + {"matrix": [2, 9], "x": 170, "y": 67, "flags": 4}, + {"matrix": [2, 9], "x": 164, "y": 67, "flags": 4}, + {"matrix": [2, 8], "x": 157, "y": 67, "flags": 4}, + {"matrix": [2, 8], "x": 151, "y": 67, "flags": 4}, + {"matrix": [3, 8], "x": 150, "y": 74, "flags": 4}, + {"matrix": [2, 8], "x": 150, "y": 81, "flags": 4}, + {"matrix": [3, 8], "x": 147, "y": 88, "flags": 4}, + {"matrix": [3, 7], "x": 139, "y": 88, "flags": 4}, + {"matrix": [2, 7], "x": 130, "y": 88, "flags": 4}, + {"matrix": [3, 7], "x": 122, "y": 88, "flags": 4}, + {"matrix": [3, 6], "x": 113, "y": 88, "flags": 4}, + {"matrix": [2, 5], "x": 102, "y": 85, "flags": 4}, + {"matrix": [3, 5], "x": 94, "y": 85, "flags": 4}, + {"matrix": [3, 4], "x": 85, "y": 88, "flags": 4}, + {"matrix": [2, 3], "x": 75, "y": 88, "flags": 4}, + {"matrix": [3, 3], "x": 66, "y": 88, "flags": 4}, + {"matrix": [2, 2], "x": 57, "y": 88, "flags": 4}, + {"matrix": [3, 2], "x": 49, "y": 88, "flags": 4}, + {"matrix": [3, 2], "x": 46, "y": 83, "flags": 4}, + {"matrix": [3, 2], "x": 46, "y": 75, "flags": 4}, + {"matrix": [2, 1], "x": 45, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 39, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 33, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 26, "y": 67, "flags": 4}, + {"matrix": [3, 0], "x": 25, "y": 73, "flags": 4}, + {"matrix": [3, 0], "x": 25, "y": 82, "flags": 4}, + {"matrix": [3, 0], "x": 21, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 12, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 1, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 6, "y": 80, "flags": 4}, + {"matrix": [3, 0], "x": 1, "y": 70, "flags": 4}, + {"matrix": [2, 0], "x": 1, "y": 58, "flags": 4}, + {"matrix": [2, 0], "x": 1, "y": 46, "flags": 4}, + {"matrix": [1, 0], "x": 1, "y": 34, "flags": 4} + ], + "sat_steps": 4, + "val_steps": 4 + }, + "url": "https://jlw-kb.com", + "usb": { + "device_version": "0.0.1", + "pid": "0xA457", + "vid": "0x1209" + }, + "ws2812": { + "driver": "pwm", + "pin": "B7" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_alpha": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 6], "x": 5.5, "y": 2}, + {"matrix": [2, 7], "x": 6.5, "y": 2}, + {"matrix": [2, 8], "x": 7.5, "y": 2}, + {"matrix": [2, 9], "x": 8.5, "y": 2}, + {"matrix": [2, 10], "x": 9.5, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_katana": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 5.5, "y": 0}, + {"matrix": [0, 7], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [0, 9], "x": 8.5, "y": 0}, + {"matrix": [0, 10], "x": 9.5, "y": 0, "w": 1.25, "h": 2}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_katana_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 5.5, "y": 0}, + {"matrix": [0, 7], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [0, 9], "x": 8.5, "y": 0}, + {"matrix": [0, 10], "x": 9.5, "y": 0, "w": 1.25, "h": 2}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_125_center1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.25}, + {"matrix": [3, 4], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "w": 1.25}, + {"matrix": [3, 7], "x": 7.25, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_150_center1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "w": 1.5}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_2u_bars": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 2}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 2}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_3u_bars": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 3], "x": 2.5, "y": 3, "w": 3}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_6u_bar": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 2.5, "y": 3, "w": 6}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_cain_bars": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.75}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 1.75}, + {"matrix": [3, 7], "x": 7.25, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_centered_3u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 4, "y": 3, "w": 3}, + {"matrix": [3, 7], "x": 7, "y": 3, "w": 1.5}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_row": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.25, "y": 1}, + {"matrix": [1, 7], "x": 6.25, "y": 1}, + {"matrix": [1, 8], "x": 7.25, "y": 1}, + {"matrix": [1, 9], "x": 8.25, "y": 1}, + {"matrix": [1, 10], "x": 9.25, "y": 1, "w": 1.75}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_treadstone": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_uniform": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.25, "y": 1}, + {"matrix": [1, 7], "x": 6.25, "y": 1}, + {"matrix": [1, 8], "x": 7.25, "y": 1}, + {"matrix": [1, 9], "x": 8.25, "y": 1}, + {"matrix": [1, 10], "x": 9.25, "y": 1, "w": 1.75}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 6], "x": 5.5, "y": 2}, + {"matrix": [2, 7], "x": 6.5, "y": 2}, + {"matrix": [2, 8], "x": 7.5, "y": 2}, + {"matrix": [2, 9], "x": 8.5, "y": 2}, + {"matrix": [2, 10], "x": 9.5, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + } + } +} diff --git a/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c b/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c new file mode 100644 index 00000000000..ae5f304eed6 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_VOLU, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLD, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, RGB_TOG, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_ESC, MO(1), KC_ENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_BSPC + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, + _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, + _______, _______, _______, _______, _______, QK_BOOT, _______, KC_1, KC_2, KC_3, _______, + _______, _______, _______, _______, _______, _______, MO(2), _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_LEFT, _______, + _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) }, + [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } +}; +#endif + diff --git a/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk b/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk new file mode 100644 index 00000000000..a40474b4d5c --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/jlw/vault35_wkl_universal/mcuconf.h b/keyboards/jlw/vault35_wkl_universal/mcuconf.h new file mode 100644 index 00000000000..3f3e8009459 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM17 +#define STM32_PWM_USE_TIM17 TRUE +#define STM32_TIM17_SUPPRESS_ISR + diff --git a/keyboards/jlw/vault35_wkl_universal/readme.md b/keyboards/jlw/vault35_wkl_universal/readme.md new file mode 100644 index 00000000000..d06ee1a998b --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/readme.md @@ -0,0 +1,27 @@ +# Vault 35 WKL Universal + +![Vault 35 WKL Universal](https://i.imgur.com/gtJwgiv.png) + +A drop in replacement PCB for the Vault 35 WKL case, originally designed by ProjectCain Mechvault. + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: Vault 35 WKL Universal PCB +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/vault35_wkl_universal:default + +Flashing example for this keyboard: + + make jlw/vault35_wkl_universal:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/jlw/vault35_wkl_universal/rules.mk b/keyboards/jlw/vault35_wkl_universal/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From f215da3b7c92c2d2c9e5f791bfc1d654ddba6046 Mon Sep 17 00:00:00 2001 From: Joe Scotto <8194147+joe-scotto@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:50:18 -0400 Subject: [PATCH 12/41] Add ScottoWing keyboard (#23513) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/scottokeebs/scottowing/info.json | 75 +++++++++++++++++++ .../scottowing/keymaps/default/config.h | 23 ++++++ .../scottowing/keymaps/default/keymap.c | 45 +++++++++++ keyboards/scottokeebs/scottowing/readme.md | 29 +++++++ keyboards/scottokeebs/scottowing/rules.mk | 1 + 5 files changed, 173 insertions(+) create mode 100644 keyboards/scottokeebs/scottowing/info.json create mode 100644 keyboards/scottokeebs/scottowing/keymaps/default/config.h create mode 100644 keyboards/scottokeebs/scottowing/keymaps/default/keymap.c create mode 100644 keyboards/scottokeebs/scottowing/readme.md create mode 100644 keyboards/scottokeebs/scottowing/rules.mk diff --git a/keyboards/scottokeebs/scottowing/info.json b/keyboards/scottokeebs/scottowing/info.json new file mode 100644 index 00000000000..770e2fd18ec --- /dev/null +++ b/keyboards/scottokeebs/scottowing/info.json @@ -0,0 +1,75 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoWing (PCB Edition)", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "bootmagic": { + "matrix": [0, 1] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP20", "GP22", "GP26", "GP27", "GP28", "GP29"], + "rows": ["GP8", "GP9", "GP23", "GP21"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1026", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT_split_3x6_2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3} + ] + } + } +} diff --git a/keyboards/scottokeebs/scottowing/keymaps/default/config.h b/keyboards/scottokeebs/scottowing/keymaps/default/config.h new file mode 100644 index 00000000000..eb03070d83a --- /dev/null +++ b/keyboards/scottokeebs/scottowing/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2024 Joe Scotto + +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 + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c b/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c new file mode 100644 index 00000000000..9a1c7daef30 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2024 Joe Scotto + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_2( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, KC_QUOT, + KC_LSFT, LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), KC_RSFT, + KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) + ), + [1] = LAYOUT_split_3x6_2( + KC_TRNS, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, KC_TRNS, + KC_TRNS, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x6_2( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x6_2( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/scottokeebs/scottowing/readme.md b/keyboards/scottokeebs/scottowing/readme.md new file mode 100644 index 00000000000..bf20164e666 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/readme.md @@ -0,0 +1,29 @@ +# ScottoWing (PCB Edition) + +![ScottoWing](https://i.imgur.com/ckaYMAx.jpeg) + +The ScottoWing (PCB Edition) is a 3x5 (34-keys) or 3x6 (40-keys) split monoblock ergonomic column-staggered keyboard. + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: RP2040 Pro Micro, nice!nano +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [AliExpress](https://aliexpress.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make scottokeebs/scottowing:default + +Flashing example for this keyboard: + + make scottokeebs/scottowing:default:flash + +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). + +# Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/scottokeebs/scottowing/rules.mk b/keyboards/scottokeebs/scottowing/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From dc2db0c1d4d3168c07ad5c0c36998c9d91df29c7 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:04:04 -0700 Subject: [PATCH 13/41] MechKeys ACR60 Layout Updates (#23309) --- docs/ChangeLog/20240526/PR23309.md | 35 + keyboards/mechkeys/acr60/keyboard.json | 1836 +++++++++++++++++--- keyboards/mechkeys/acr60/matrix_diagram.md | 57 + 3 files changed, 1713 insertions(+), 215 deletions(-) create mode 100644 docs/ChangeLog/20240526/PR23309.md create mode 100644 keyboards/mechkeys/acr60/matrix_diagram.md diff --git a/docs/ChangeLog/20240526/PR23309.md b/docs/ChangeLog/20240526/PR23309.md new file mode 100644 index 00000000000..b5ca5f1e4d0 --- /dev/null +++ b/docs/ChangeLog/20240526/PR23309.md @@ -0,0 +1,35 @@ +# MechKeys ACR60 Layout Updates + +This PR removed and changed some of the layouts that were configured for +the ACR60. If you use one of the following layouts, you will need to +update your keymap: + +- [`LAYOUT_hhkb`](#layout-hhkb) +- [`LAYOUT_true_hhkb`](#layout-true-hhkb) +- [`LAYOUT_directional`](#layout-directional) +- [`LAYOUT_mitchsplit`](#layout-mitchsplit) + +## `LAYOUT_hhkb` :id=layout-hhkb + +1. Change your layout macro to `LAYOUT_60_hhkb`. +2. Remove any keycodes for the key between Left Shift and QWERTY Z. + +## `LAYOUT_true_hhkb` :id=layout-true-hhkb + +1. Change your layout macro to `LAYOUT_60_true_hhkb`. +2. Remove any keycodes for the key between Left Shift and QWERTY Z. + +## `LAYOUT_directional` :id=layout-directional + +1. Change your layout macro to `LAYOUT_60_ansi_arrow_split_bs`. +2. Remove any keycodes for the key between Left Shift and QWERTY Z. +3. Remove any keycodes for the keys immediately before *and* after the +1.25u key of Split Spacebar. + +If you need split spacebars, you may implement +`LAYOUT_60_ansi_arrow_split_space_split_bs` and change your layout to +it, removing the keycode between Left Shift and QWERTY Z. + +## `LAYOUT_mitchsplit` :id=layout-mitchsplit + +1. Use `LAYOUT_60_ansi_split_space_split_rshift`. diff --git a/keyboards/mechkeys/acr60/keyboard.json b/keyboards/mechkeys/acr60/keyboard.json index f2d618b8bd1..916a750b963 100644 --- a/keyboards/mechkeys/acr60/keyboard.json +++ b/keyboards/mechkeys/acr60/keyboard.json @@ -53,8 +53,10 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_ansi_arrow", "64_ansi", "60_hhkb", "60_iso", "60_iso_split_bs_rshift", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift", "64_iso"], "layout_aliases": { - "LAYOUT_2_shifts": "LAYOUT_all" + "LAYOUT_2_shifts": "LAYOUT_all", + "LAYOUT_mitchsplit": "LAYOUT_60_ansi_split_space_split_rshift" }, "layouts": { "LAYOUT_all": { @@ -133,6 +135,1623 @@ {"matrix": [4, 14], "x": 14, "y": 4} ] }, + "LAYOUT_60_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 12], "x": 11.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 12], "x": 11.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_64_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_64_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_true_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 6}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 12], "x": 11.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_60_iso_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 12], "x": 11.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_64_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_64_iso_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_abnt2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3, "w": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -208,220 +1827,7 @@ {"matrix": [4, 14], "x": 14, "y": 4} ] }, - "LAYOUT_hhkb": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [0, 6], "x": 6, "y": 0}, - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, - {"matrix": [0, 11], "x": 11, "y": 0}, - {"matrix": [0, 12], "x": 12, "y": 0}, - {"matrix": [0, 13], "x": 13, "y": 0}, - {"matrix": [0, 14], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1, 2], "x": 1.5, "y": 1}, - {"matrix": [1, 3], "x": 2.5, "y": 1}, - {"matrix": [1, 4], "x": 3.5, "y": 1}, - {"matrix": [1, 5], "x": 4.5, "y": 1}, - {"matrix": [1, 6], "x": 5.5, "y": 1}, - {"matrix": [1, 7], "x": 6.5, "y": 1}, - {"matrix": [1, 8], "x": 7.5, "y": 1}, - {"matrix": [1, 9], "x": 8.5, "y": 1}, - {"matrix": [1, 10], "x": 9.5, "y": 1}, - {"matrix": [1, 11], "x": 10.5, "y": 1}, - {"matrix": [1, 12], "x": 11.5, "y": 1}, - {"matrix": [1, 13], "x": 12.5, "y": 1}, - {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, - - {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2, 2], "x": 1.75, "y": 2}, - {"matrix": [2, 3], "x": 2.75, "y": 2}, - {"matrix": [2, 4], "x": 3.75, "y": 2}, - {"matrix": [2, 5], "x": 4.75, "y": 2}, - {"matrix": [2, 6], "x": 5.75, "y": 2}, - {"matrix": [2, 7], "x": 6.75, "y": 2}, - {"matrix": [2, 8], "x": 7.75, "y": 2}, - {"matrix": [2, 9], "x": 8.75, "y": 2}, - {"matrix": [2, 10], "x": 9.75, "y": 2}, - {"matrix": [2, 11], "x": 10.75, "y": 2}, - {"matrix": [2, 12], "x": 11.75, "y": 2}, - {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, - {"matrix": [3, 1], "x": 1.25, "y": 3}, - {"matrix": [3, 2], "x": 2.25, "y": 3}, - {"matrix": [3, 3], "x": 3.25, "y": 3}, - {"matrix": [3, 4], "x": 4.25, "y": 3}, - {"matrix": [3, 5], "x": 5.25, "y": 3}, - {"matrix": [3, 6], "x": 6.25, "y": 3}, - {"matrix": [3, 7], "x": 7.25, "y": 3}, - {"matrix": [3, 8], "x": 8.25, "y": 3}, - {"matrix": [3, 9], "x": 9.25, "y": 3}, - {"matrix": [3, 10], "x": 10.25, "y": 3}, - {"matrix": [3, 11], "x": 11.25, "y": 3}, - {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, - {"matrix": [3, 14], "x": 14, "y": 3}, - - {"matrix": [4, 1], "x": 1.5, "y": 4}, - {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, - {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, - {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, - {"matrix": [4, 13], "x": 12.5, "y": 4} - ] - }, - "LAYOUT_true_hhkb": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [0, 6], "x": 6, "y": 0}, - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, - {"matrix": [0, 11], "x": 11, "y": 0}, - {"matrix": [0, 12], "x": 12, "y": 0}, - {"matrix": [0, 13], "x": 13, "y": 0}, - {"matrix": [0, 14], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1, 2], "x": 1.5, "y": 1}, - {"matrix": [1, 3], "x": 2.5, "y": 1}, - {"matrix": [1, 4], "x": 3.5, "y": 1}, - {"matrix": [1, 5], "x": 4.5, "y": 1}, - {"matrix": [1, 6], "x": 5.5, "y": 1}, - {"matrix": [1, 7], "x": 6.5, "y": 1}, - {"matrix": [1, 8], "x": 7.5, "y": 1}, - {"matrix": [1, 9], "x": 8.5, "y": 1}, - {"matrix": [1, 10], "x": 9.5, "y": 1}, - {"matrix": [1, 11], "x": 10.5, "y": 1}, - {"matrix": [1, 12], "x": 11.5, "y": 1}, - {"matrix": [1, 13], "x": 12.5, "y": 1}, - {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, - - {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2, 2], "x": 1.75, "y": 2}, - {"matrix": [2, 3], "x": 2.75, "y": 2}, - {"matrix": [2, 4], "x": 3.75, "y": 2}, - {"matrix": [2, 5], "x": 4.75, "y": 2}, - {"matrix": [2, 6], "x": 5.75, "y": 2}, - {"matrix": [2, 7], "x": 6.75, "y": 2}, - {"matrix": [2, 8], "x": 7.75, "y": 2}, - {"matrix": [2, 9], "x": 8.75, "y": 2}, - {"matrix": [2, 10], "x": 9.75, "y": 2}, - {"matrix": [2, 11], "x": 10.75, "y": 2}, - {"matrix": [2, 12], "x": 11.75, "y": 2}, - {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, - {"matrix": [3, 1], "x": 1.25, "y": 3}, - {"matrix": [3, 2], "x": 2.25, "y": 3}, - {"matrix": [3, 3], "x": 3.25, "y": 3}, - {"matrix": [3, 4], "x": 4.25, "y": 3}, - {"matrix": [3, 5], "x": 5.25, "y": 3}, - {"matrix": [3, 6], "x": 6.25, "y": 3}, - {"matrix": [3, 7], "x": 7.25, "y": 3}, - {"matrix": [3, 8], "x": 8.25, "y": 3}, - {"matrix": [3, 9], "x": 9.25, "y": 3}, - {"matrix": [3, 10], "x": 10.25, "y": 3}, - {"matrix": [3, 11], "x": 11.25, "y": 3}, - {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, - {"matrix": [3, 14], "x": 14, "y": 3}, - - {"matrix": [4, 1], "x": 1.5, "y": 4}, - {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, - {"matrix": [4, 6], "x": 4, "y": 4, "w": 6}, - {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, - {"matrix": [4, 11], "x": 11.5, "y": 4} - ] - }, - "LAYOUT_directional": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [0, 6], "x": 6, "y": 0}, - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, - {"matrix": [0, 11], "x": 11, "y": 0}, - {"matrix": [0, 12], "x": 12, "y": 0}, - {"matrix": [0, 13], "x": 13, "y": 0}, - {"matrix": [0, 14], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1, 2], "x": 1.5, "y": 1}, - {"matrix": [1, 3], "x": 2.5, "y": 1}, - {"matrix": [1, 4], "x": 3.5, "y": 1}, - {"matrix": [1, 5], "x": 4.5, "y": 1}, - {"matrix": [1, 6], "x": 5.5, "y": 1}, - {"matrix": [1, 7], "x": 6.5, "y": 1}, - {"matrix": [1, 8], "x": 7.5, "y": 1}, - {"matrix": [1, 9], "x": 8.5, "y": 1}, - {"matrix": [1, 10], "x": 9.5, "y": 1}, - {"matrix": [1, 11], "x": 10.5, "y": 1}, - {"matrix": [1, 12], "x": 11.5, "y": 1}, - {"matrix": [1, 13], "x": 12.5, "y": 1}, - {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, - - {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2, 2], "x": 1.75, "y": 2}, - {"matrix": [2, 3], "x": 2.75, "y": 2}, - {"matrix": [2, 4], "x": 3.75, "y": 2}, - {"matrix": [2, 5], "x": 4.75, "y": 2}, - {"matrix": [2, 6], "x": 5.75, "y": 2}, - {"matrix": [2, 7], "x": 6.75, "y": 2}, - {"matrix": [2, 8], "x": 7.75, "y": 2}, - {"matrix": [2, 9], "x": 8.75, "y": 2}, - {"matrix": [2, 10], "x": 9.75, "y": 2}, - {"matrix": [2, 11], "x": 10.75, "y": 2}, - {"matrix": [2, 12], "x": 11.75, "y": 2}, - {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, - {"matrix": [3, 1], "x": 1.25, "y": 3}, - {"matrix": [3, 2], "x": 2.25, "y": 3}, - {"matrix": [3, 3], "x": 3.25, "y": 3}, - {"matrix": [3, 4], "x": 4.25, "y": 3}, - {"matrix": [3, 5], "x": 5.25, "y": 3}, - {"matrix": [3, 6], "x": 6.25, "y": 3}, - {"matrix": [3, 7], "x": 7.25, "y": 3}, - {"matrix": [3, 8], "x": 8.25, "y": 3}, - {"matrix": [3, 9], "x": 9.25, "y": 3}, - {"matrix": [3, 10], "x": 10.25, "y": 3}, - {"matrix": [3, 12], "x": 11.25, "y": 3, "w": 1.75}, - {"matrix": [3, 13], "x": 13, "y": 3}, - {"matrix": [3, 14], "x": 14, "y": 3}, - - {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, - {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, - {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25}, - {"matrix": [4, 6], "x": 6, "y": 4, "w": 1.25}, - {"matrix": [4, 8], "x": 7.25, "y": 4, "w": 2.75}, - {"matrix": [4, 10], "x": 10, "y": 4}, - {"matrix": [4, 11], "x": 11, "y": 4}, - {"matrix": [4, 12], "x": 12, "y": 4}, - {"matrix": [4, 13], "x": 13, "y": 4}, - {"matrix": [4, 14], "x": 14, "y": 4} - ] - }, - "LAYOUT_mitchsplit": { + "LAYOUT_60_ansi_split_space_split_rshift": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, diff --git a/keyboards/mechkeys/acr60/matrix_diagram.md b/keyboards/mechkeys/acr60/matrix_diagram.md new file mode 100644 index 00000000000..27a38030afb --- /dev/null +++ b/keyboards/mechkeys/acr60/matrix_diagram.md @@ -0,0 +1,57 @@ +# Matrix Diagram for MechKeys ACR60 + +``` + ┌───────┐ + 2u Backspace │0E │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter +│20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │1E │ │ +└──────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────────┘ └───┴────┘ +Shift Row Options: +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ +└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ +┌───────┐ ┌───────┐ +│30 │ 2u LShift 2u RShift │3D │ +└───────┘ └───────┘ +┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┬───┐ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ Standard with Split Shifts +└────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴──────┴───┘ 1.25u/1u LShift + 1u/1.75u/1u RShift +┌────────┐ ┌───┬──────────┐ +│30 │ 2.25u LShift │3B │3D │ 2.75u RShift +└────────┘ └───┴──────────┘ + ┌──────┬───┬───┐ + │3C │3D │3E │ 1.75u/1u/1u RShift + └──────┴───┴───┘ +Bottom Row Options: +┌────┬────┬────┬────────┬────┬──────────┬───┬───┬───┬───┬───┐ +│40 │41 │43 │44 │46 │48 │4A │4B │4C │4D │4E │ 5x 1u Mods +└────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘ + Split Spacebar + [2.25/1.25/2.75] or [2.75/1.25/2.25] + ┌──────────┬────┬────────┐ + │44 │46 │48 │ + └──────────┴────┴────────┘ +┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ ┐ +│40 │41 │43 │46 │4A │4B │4D │4E │ ├─ Standard +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ │ or +┌─────┬───┬─────┬───────────────────────┬─────┬───┬───┬─────┐ │ Infinity/True HHKB +│40 │41 │43 │46 │4A │4B │4D │4E │ │ (same matrix) +└─────┴───┴─────┴───────────────────────┴─────┴───┴───┴─────┘ ┘ +┌─────┬───┬────┬────────────────────────┬───┬───┬───┬───┬───┐ +│40 │41 │43 │46 │4A │4B │4C │4D │4E │ +└─────┴───┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +┌─────┬─────┬───────────────────────────┬───┬───┬───┬───┬───┐ +│40 │41 │46 │4A │4B │4C │4D │4E │ LWKL +└─────┴─────┴───────────────────────────┴───┴───┴───┴───┴───┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │43 │46 │4B │4D │4E │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐ +│40 │41 │43 │46 │4B │4C │4D │4E │ Tsangan Arrow +└─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ +``` From e2618dc35cc04fbbcf857559df78d7eb9aa43640 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Tue, 30 Apr 2024 09:54:05 +0100 Subject: [PATCH 14/41] Uniform ISO Enter key sequence in JIS Community Layouts (#23181) --- layouts/default/60_jis/info.json | 2 +- layouts/default/tkl_f13_jis/info.json | 2 +- layouts/default/tkl_jis/info.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/default/60_jis/info.json b/layouts/default/60_jis/info.json index 56972148bda..039ced42f4a 100644 --- a/layouts/default/60_jis/info.json +++ b/layouts/default/60_jis/info.json @@ -34,7 +34,6 @@ {"x": 10.5, "y": 1}, {"x": 11.5, "y": 1}, {"x": 12.5, "y": 1}, - {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"x": 0, "y": 2, "w": 1.75}, {"x": 1.75, "y": 2}, @@ -49,6 +48,7 @@ {"x": 10.75, "y": 2}, {"x": 11.75, "y": 2}, {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"x": 0, "y": 3, "w": 2.25}, {"x": 2.25, "y": 3}, diff --git a/layouts/default/tkl_f13_jis/info.json b/layouts/default/tkl_f13_jis/info.json index 97f5bd3880e..20ff38f6117 100644 --- a/layouts/default/tkl_f13_jis/info.json +++ b/layouts/default/tkl_f13_jis/info.json @@ -55,7 +55,6 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -73,6 +72,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 0, "y": 4.25, "w": 2.25}, {"x": 2.25, "y": 4.25}, diff --git a/layouts/default/tkl_jis/info.json b/layouts/default/tkl_jis/info.json index 513852193a5..e1d16e2beb7 100644 --- a/layouts/default/tkl_jis/info.json +++ b/layouts/default/tkl_jis/info.json @@ -54,7 +54,6 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -72,6 +71,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 0, "y": 4.25, "w": 2.25}, {"x": 2.25, "y": 4.25}, From 636c96ad256b1b2f21c4c810d195c78402e060a0 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:34:37 +0200 Subject: [PATCH 15/41] Add EC Virgo (#23173) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/cipulot/ec_23u/config.h | 5 - keyboards/cipulot/ec_23u/info.json | 6 + keyboards/cipulot/ec_23u/rules.mk | 3 +- keyboards/cipulot/ec_60/config.h | 6 - keyboards/cipulot/ec_60/info.json | 6 + keyboards/cipulot/ec_60/rules.mk | 3 +- keyboards/cipulot/ec_alveus/1_0_0/config.h | 6 - keyboards/cipulot/ec_alveus/1_0_0/info.json | 6 + keyboards/cipulot/ec_alveus/1_0_0/rules.mk | 3 +- keyboards/cipulot/ec_alveus/1_2_0/config.h | 6 - keyboards/cipulot/ec_alveus/1_2_0/info.json | 6 + keyboards/cipulot/ec_alveus/1_2_0/rules.mk | 3 +- keyboards/cipulot/ec_pro2/config.h | 5 - keyboards/cipulot/ec_pro2/info.json | 6 + keyboards/cipulot/ec_pro2/rules.mk | 3 +- keyboards/cipulot/ec_prox/ansi_iso/config.h | 6 - keyboards/cipulot/ec_prox/ansi_iso/info.json | 6 + keyboards/cipulot/ec_prox/ansi_iso/rules.mk | 3 +- keyboards/cipulot/ec_prox/jis/config.h | 6 - keyboards/cipulot/ec_prox/jis/info.json | 6 + keyboards/cipulot/ec_prox/jis/rules.mk | 3 +- keyboards/cipulot/ec_theca/config.h | 6 - keyboards/cipulot/ec_theca/info.json | 10 +- keyboards/cipulot/ec_theca/rules.mk | 3 +- keyboards/cipulot/ec_virgo/config.h | 66 +++++++++ .../{kawayo/config.h => ec_virgo/halconf.h} | 9 +- keyboards/cipulot/ec_virgo/info.json | 136 ++++++++++++++++++ .../cipulot/ec_virgo/keymaps/default/keymap.c | 37 +++++ .../cipulot/ec_virgo/keymaps/via/keymap.c | 37 +++++ .../cipulot/ec_virgo/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_virgo/mcuconf.h | 22 +++ keyboards/cipulot/ec_virgo/post_rules.mk | 3 + keyboards/cipulot/ec_virgo/readme.md | 26 ++++ keyboards/cipulot/ec_virgo/rules.mk | 5 + keyboards/cipulot/kallos/config.h | 23 --- keyboards/cipulot/kallos/info.json | 6 + keyboards/cipulot/kawayo/info.json | 6 + keyboards/cipulot/rf_r1_8_9xu/config.h | 6 - keyboards/cipulot/rf_r1_8_9xu/info.json | 7 +- keyboards/cipulot/rf_r1_8_9xu/rules.mk | 3 +- 40 files changed, 421 insertions(+), 94 deletions(-) create mode 100644 keyboards/cipulot/ec_virgo/config.h rename keyboards/cipulot/{kawayo/config.h => ec_virgo/halconf.h} (76%) create mode 100644 keyboards/cipulot/ec_virgo/info.json create mode 100644 keyboards/cipulot/ec_virgo/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_virgo/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_virgo/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_virgo/mcuconf.h create mode 100644 keyboards/cipulot/ec_virgo/post_rules.mk create mode 100644 keyboards/cipulot/ec_virgo/readme.md create mode 100644 keyboards/cipulot/ec_virgo/rules.mk delete mode 100644 keyboards/cipulot/kallos/config.h diff --git a/keyboards/cipulot/ec_23u/config.h b/keyboards/cipulot/ec_23u/config.h index 3a3d482e3d3..f5b74b9e600 100644 --- a/keyboards/cipulot/ec_23u/config.h +++ b/keyboards/cipulot/ec_23u/config.h @@ -62,8 +62,3 @@ #define EECONFIG_KB_DATA_SIZE 57 -/* 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 diff --git a/keyboards/cipulot/ec_23u/info.json b/keyboards/cipulot/ec_23u/info.json index 0f656f8e8ca..17aa5eb6e7a 100644 --- a/keyboards/cipulot/ec_23u/info.json +++ b/keyboards/cipulot/ec_23u/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_23u/rules.mk b/keyboards/cipulot/ec_23u/rules.mk index ab6c37cad43..318e0215ce9 100644 --- a/keyboards/cipulot/ec_23u/rules.mk +++ b/keyboards/cipulot/ec_23u/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_60/config.h b/keyboards/cipulot/ec_60/config.h index c936b248c45..24525501439 100644 --- a/keyboards/cipulot/ec_60/config.h +++ b/keyboards/cipulot/ec_60/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 159 - -/* 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 diff --git a/keyboards/cipulot/ec_60/info.json b/keyboards/cipulot/ec_60/info.json index a86b20bfd63..860594f611a 100644 --- a/keyboards/cipulot/ec_60/info.json +++ b/keyboards/cipulot/ec_60/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_60/rules.mk b/keyboards/cipulot/ec_60/rules.mk index 70494b635f6..ce525670a68 100644 --- a/keyboards/cipulot/ec_60/rules.mk +++ b/keyboards/cipulot/ec_60/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/config.h b/keyboards/cipulot/ec_alveus/1_0_0/config.h index ea43ba348d5..ab51289c023 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/config.h +++ b/keyboards/cipulot/ec_alveus/1_0_0/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 169 - -/* 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 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/info.json b/keyboards/cipulot/ec_alveus/1_0_0/info.json index 4652166cc5e..cffd3ade586 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/info.json +++ b/keyboards/cipulot/ec_alveus/1_0_0/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk index 70494b635f6..ce525670a68 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/config.h b/keyboards/cipulot/ec_alveus/1_2_0/config.h index ea43ba348d5..ab51289c023 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/config.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 169 - -/* 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 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/info.json b/keyboards/cipulot/ec_alveus/1_2_0/info.json index 8b63d02f770..da212f83411 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/info.json +++ b/keyboards/cipulot/ec_alveus/1_2_0/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk index 70494b635f6..ce525670a68 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_pro2/config.h b/keyboards/cipulot/ec_pro2/config.h index c936b248c45..a05e716823a 100644 --- a/keyboards/cipulot/ec_pro2/config.h +++ b/keyboards/cipulot/ec_pro2/config.h @@ -65,8 +65,3 @@ #define EECONFIG_KB_DATA_SIZE 159 -/* 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 diff --git a/keyboards/cipulot/ec_pro2/info.json b/keyboards/cipulot/ec_pro2/info.json index 2929edfb19c..2e05cff3c16 100644 --- a/keyboards/cipulot/ec_pro2/info.json +++ b/keyboards/cipulot/ec_pro2/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_pro2/rules.mk b/keyboards/cipulot/ec_pro2/rules.mk index ab6c37cad43..318e0215ce9 100644 --- a/keyboards/cipulot/ec_pro2/rules.mk +++ b/keyboards/cipulot/ec_pro2/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_prox/ansi_iso/config.h b/keyboards/cipulot/ec_prox/ansi_iso/config.h index 6a165cf3abd..bf25d0b7128 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/config.h +++ b/keyboards/cipulot/ec_prox/ansi_iso/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 159 - -/* 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 diff --git a/keyboards/cipulot/ec_prox/ansi_iso/info.json b/keyboards/cipulot/ec_prox/ansi_iso/info.json index 3f390d0bc61..9a68d8b0bf7 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/info.json +++ b/keyboards/cipulot/ec_prox/ansi_iso/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk index ab6c37cad43..318e0215ce9 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk +++ b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_prox/jis/config.h b/keyboards/cipulot/ec_prox/jis/config.h index 6a686d74044..fd3c048bc38 100644 --- a/keyboards/cipulot/ec_prox/jis/config.h +++ b/keyboards/cipulot/ec_prox/jis/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 149 - -/* 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 diff --git a/keyboards/cipulot/ec_prox/jis/info.json b/keyboards/cipulot/ec_prox/jis/info.json index 88067f9305e..4c92f8c6732 100644 --- a/keyboards/cipulot/ec_prox/jis/info.json +++ b/keyboards/cipulot/ec_prox/jis/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_prox/jis/rules.mk b/keyboards/cipulot/ec_prox/jis/rules.mk index ab6c37cad43..318e0215ce9 100644 --- a/keyboards/cipulot/ec_prox/jis/rules.mk +++ b/keyboards/cipulot/ec_prox/jis/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_theca/config.h b/keyboards/cipulot/ec_theca/config.h index 4b834fdff68..d9fea559675 100644 --- a/keyboards/cipulot/ec_theca/config.h +++ b/keyboards/cipulot/ec_theca/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define DYNAMIC_KEYMAP_LAYER_COUNT 3 #define EECONFIG_KB_DATA_SIZE 201 - -/* 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 diff --git a/keyboards/cipulot/ec_theca/info.json b/keyboards/cipulot/ec_theca/info.json index fbd7d7ec471..a438e401806 100644 --- a/keyboards/cipulot/ec_theca/info.json +++ b/keyboards/cipulot/ec_theca/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, @@ -27,10 +33,6 @@ "LAYOUT_all": "LAYOUT_tkl_ansi", "LAYOUT_tkl_ansi_tsangan_wkl": "LAYOUT_tkl_ansi_wkl" }, - "community_layouts": [ - "tkl_ansi", - "tkl_ansi_tsangan" - ], "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/cipulot/ec_theca/rules.mk b/keyboards/cipulot/ec_theca/rules.mk index 70494b635f6..ce525670a68 100644 --- a/keyboards/cipulot/ec_theca/rules.mk +++ b/keyboards/cipulot/ec_theca/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_virgo/config.h b/keyboards/cipulot/ec_virgo/config.h new file mode 100644 index 00000000000..2fce8cd7fa7 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +#define MATRIX_ROW_PINS \ + { B6, B7, B5, B4, B3, A15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 16 + +#define AMUX_EN_PINS \ + { A9, A8 } + +#define AMUX_SEL_PINS \ + { B12, B13, B15, B14 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 7, 11 } + +#define AMUX_0_COL_CHANNELS \ + { 2, 1, 0, 3, 5, 4, 7 } + +#define AMUX_1_COL_CHANNELS \ + { 2, 1, 0, 15, 14, 13, 12, 8, 11, 10, 9 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A3 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 225 diff --git a/keyboards/cipulot/kawayo/config.h b/keyboards/cipulot/ec_virgo/halconf.h similarity index 76% rename from keyboards/cipulot/kawayo/config.h rename to keyboards/cipulot/ec_virgo/halconf.h index a08011b9cf9..835d43b6a0a 100644 --- a/keyboards/cipulot/kawayo/config.h +++ b/keyboards/cipulot/ec_virgo/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2022 Cipulot +/* Copyright 2023 Cipulot * * 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 @@ -16,7 +16,6 @@ #pragma once -/* 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 +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_virgo/info.json b/keyboards/cipulot/ec_virgo/info.json new file mode 100644 index 00000000000..6b37880181b --- /dev/null +++ b/keyboards/cipulot/ec_virgo/info.json @@ -0,0 +1,136 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Virgo EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC0", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 7], "x": 9, "y": 0}, + {"matrix": [0, 8], "x": 10, "y": 0}, + {"matrix": [0, 9], "x": 11, "y": 0}, + {"matrix": [0, 10], "x": 12.25, "y": 0}, + {"matrix": [0, 11], "x": 13.25, "y": 0}, + {"matrix": [0, 12], "x": 14.25, "y": 0}, + {"matrix": [0, 13], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 17.25, "y": 0}, + {"matrix": [0, 16], "x": 18.25, "y": 0}, + {"matrix": [0, 17], "x": 19.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 9, "y": 1.5}, + {"matrix": [1, 8], "x": 10, "y": 1.5}, + {"matrix": [1, 9], "x": 11, "y": 1.5}, + {"matrix": [1, 10], "x": 12, "y": 1.5}, + {"matrix": [1, 11], "x": 13, "y": 1.5}, + {"matrix": [1, 12], "x": 14, "y": 1.5}, + {"matrix": [1, 13], "x": 15, "y": 1.5}, + {"matrix": [1, 14], "x": 16, "y": 1.5}, + {"matrix": [1, 15], "x": 17.25, "y": 1.5}, + {"matrix": [1, 16], "x": 18.25, "y": 1.5}, + {"matrix": [1, 17], "x": 19.25, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 8.5, "y": 2.5}, + {"matrix": [2, 7], "x": 9.5, "y": 2.5}, + {"matrix": [2, 8], "x": 10.5, "y": 2.5}, + {"matrix": [2, 9], "x": 11.5, "y": 2.5}, + {"matrix": [2, 10], "x": 12.5, "y": 2.5}, + {"matrix": [2, 11], "x": 13.5, "y": 2.5}, + {"matrix": [2, 12], "x": 14.5, "y": 2.5}, + {"matrix": [2, 13], "x": 15.5, "y": 2.5}, + {"matrix": [2, 14], "x": 16.5, "y": 2.5, "w": 0.5}, + {"matrix": [2, 15], "x": 17.25, "y": 2.5}, + {"matrix": [2, 16], "x": 18.25, "y": 2.5}, + {"matrix": [2, 17], "x": 19.25, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 8.75, "y": 3.5}, + {"matrix": [3, 7], "x": 9.75, "y": 3.5}, + {"matrix": [3, 8], "x": 10.75, "y": 3.5}, + {"matrix": [3, 9], "x": 11.75, "y": 3.5}, + {"matrix": [3, 10], "x": 12.75, "y": 3.5}, + {"matrix": [3, 11], "x": 13.75, "y": 3.5}, + {"matrix": [3, 12], "x": 14.75, "y": 3.5}, + {"matrix": [3, 13], "x": 15.75, "y": 3.5, "w": 1.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"matrix": [5, 6], "x": 8.25, "y": 4.5}, + {"matrix": [4, 7], "x": 9.25, "y": 4.5}, + {"matrix": [4, 8], "x": 10.25, "y": 4.5}, + {"matrix": [4, 9], "x": 11.25, "y": 4.5}, + {"matrix": [4, 10], "x": 12.25, "y": 4.5}, + {"matrix": [4, 11], "x": 13.25, "y": 4.5}, + {"matrix": [4, 13], "x": 14.25, "y": 4.5, "w": 1.75}, + {"matrix": [4, 14], "x": 16, "y": 4.5}, + {"matrix": [4, 16], "x": 18.25, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.5, "w": 1.25}, + {"matrix": [5, 5], "x": 5, "y": 5.5, "w": 2.25}, + {"matrix": [5, 7], "x": 8.25, "y": 5.5, "w": 2.75}, + {"matrix": [5, 9], "x": 11, "y": 5.5, "w": 1.25}, + {"matrix": [5, 10], "x": 12.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 14.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 15], "x": 17.25, "y": 5.5}, + {"matrix": [5, 16], "x": 18.25, "y": 5.5}, + {"matrix": [5, 17], "x": 19.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c b/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c new file mode 100644 index 00000000000..f176ec71dc0 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + + // clang-format on +}; diff --git a/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c b/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c new file mode 100644 index 00000000000..f176ec71dc0 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + + // clang-format on +}; diff --git a/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk b/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_virgo/mcuconf.h b/keyboards/cipulot/ec_virgo/mcuconf.h new file mode 100644 index 00000000000..fa3c955e0d8 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_virgo/post_rules.mk b/keyboards/cipulot/ec_virgo/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_virgo/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_virgo/readme.md b/keyboards/cipulot/ec_virgo/readme.md new file mode 100644 index 00000000000..ddf976ca792 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/readme.md @@ -0,0 +1,26 @@ +# Virgo EC + +![Virgo EC PCB](https://i.imgur.com/iaKYqySh.jpeg) + +EC version of the Virgo keyboard. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Virgo EC PCB +* Hardware Availability: [Antipode](https://www.antipode.no/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_virgo:default + +Flashing example for this keyboard: + + make cipulot/ec_virgo:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to QK_BOOT if it is available diff --git a/keyboards/cipulot/ec_virgo/rules.mk b/keyboards/cipulot/ec_virgo/rules.mk new file mode 100644 index 00000000000..ce525670a68 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 diff --git a/keyboards/cipulot/kallos/config.h b/keyboards/cipulot/kallos/config.h deleted file mode 100644 index dfe6b13b066..00000000000 --- a/keyboards/cipulot/kallos/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Cipulot - -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 - -/* 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 diff --git a/keyboards/cipulot/kallos/info.json b/keyboards/cipulot/kallos/info.json index b2f265c13fd..77330c2a66d 100644 --- a/keyboards/cipulot/kallos/info.json +++ b/keyboards/cipulot/kallos/info.json @@ -30,6 +30,12 @@ "cols": ["F5", "F6", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "F7", "D2", "D1", "B7"], "rows": ["B3", "B2", "F0", "C7", "F4", "F1"] }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/cipulot/kawayo/info.json b/keyboards/cipulot/kawayo/info.json index 85a5f81c2b3..93c362d6649 100644 --- a/keyboards/cipulot/kawayo/info.json +++ b/keyboards/cipulot/kawayo/info.json @@ -12,6 +12,12 @@ "cols": ["B10", "A0", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "A14", "A4", "A3", "A2", "A1"], "rows": ["B1", "B12", "C13", "A7", "B0"] }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "processor": "STM32F411", "bootloader": "stm32-dfu", diff --git a/keyboards/cipulot/rf_r1_8_9xu/config.h b/keyboards/cipulot/rf_r1_8_9xu/config.h index fbd65f259fd..cd98ff7f3da 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/config.h +++ b/keyboards/cipulot/rf_r1_8_9xu/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define DYNAMIC_KEYMAP_LAYER_COUNT 3 #define EECONFIG_KB_DATA_SIZE 201 - -/* 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 diff --git a/keyboards/cipulot/rf_r1_8_9xu/info.json b/keyboards/cipulot/rf_r1_8_9xu/info.json index 6d3ab8b7091..4c1a0e4384c 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/info.json +++ b/keyboards/cipulot/rf_r1_8_9xu/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, @@ -47,7 +53,6 @@ }, "vid": "0x6369" }, - "community_layouts": ["tkl_jis", "tkl_iso_tsangan", "tkl_ansi_tsangan"], "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/cipulot/rf_r1_8_9xu/rules.mk b/keyboards/cipulot/rf_r1_8_9xu/rules.mk index ab6c37cad43..318e0215ce9 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/rules.mk +++ b/keyboards/cipulot/rf_r1_8_9xu/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 From 4e9967557ef9d68202f9e321a0798be2490b51a7 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:35:40 +0200 Subject: [PATCH 16/41] Add EC Type-B (#23170) --- keyboards/cipulot/ec_typeb/config.h | 66 +++++++++++++ keyboards/cipulot/ec_typeb/halconf.h | 21 ++++ keyboards/cipulot/ec_typeb/info.json | 98 +++++++++++++++++++ .../cipulot/ec_typeb/keymaps/default/keymap.c | 42 ++++++++ .../cipulot/ec_typeb/keymaps/via/keymap.c | 42 ++++++++ .../cipulot/ec_typeb/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_typeb/mcuconf.h | 22 +++++ keyboards/cipulot/ec_typeb/post_rules.mk | 3 + keyboards/cipulot/ec_typeb/readme.md | 26 +++++ keyboards/cipulot/ec_typeb/rules.mk | 5 + 10 files changed, 326 insertions(+) create mode 100644 keyboards/cipulot/ec_typeb/config.h create mode 100644 keyboards/cipulot/ec_typeb/halconf.h create mode 100644 keyboards/cipulot/ec_typeb/info.json create mode 100644 keyboards/cipulot/ec_typeb/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_typeb/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_typeb/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_typeb/mcuconf.h create mode 100644 keyboards/cipulot/ec_typeb/post_rules.mk create mode 100644 keyboards/cipulot/ec_typeb/readme.md create mode 100644 keyboards/cipulot/ec_typeb/rules.mk diff --git a/keyboards/cipulot/ec_typeb/config.h b/keyboards/cipulot/ec_typeb/config.h new file mode 100644 index 00000000000..bf25d0b7128 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { A7, B0, A4, A5, A6 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B3 } + +#define AMUX_SEL_PINS \ + { B4, B5, B6 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6, 4 } + +#define AMUX_1_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A2 +#define ANALOG_PORT A1 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_typeb/halconf.h b/keyboards/cipulot/ec_typeb/halconf.h new file mode 100644 index 00000000000..835d43b6a0a --- /dev/null +++ b/keyboards/cipulot/ec_typeb/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_typeb/info.json b/keyboards/cipulot/ec_typeb/info.json new file mode 100644 index 00000000000..2036632af59 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/info.json @@ -0,0 +1,98 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Type-B", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BAA", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "3,14", "matrix": [3, 14], "x": 14, "y": 3}, + {"label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "4,2", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "4,6", "matrix": [4, 6], "x": 4, "y": 4, "w": 6}, + {"label": "4,9", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.5}, + {"label": "4,10", "matrix": [4, 10], "x": 11.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c b/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c new file mode 100644 index 00000000000..71f8cd0368d --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_DEL, + 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_ENTER, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c b/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c new file mode 100644 index 00000000000..71f8cd0368d --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_DEL, + 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_ENTER, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk b/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_typeb/mcuconf.h b/keyboards/cipulot/ec_typeb/mcuconf.h new file mode 100644 index 00000000000..fa3c955e0d8 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_typeb/post_rules.mk b/keyboards/cipulot/ec_typeb/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_typeb/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_typeb/readme.md b/keyboards/cipulot/ec_typeb/readme.md new file mode 100644 index 00000000000..c3bfe812388 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/readme.md @@ -0,0 +1,26 @@ +# EC Type-B + +![EC Type-B](https://i.imgur.com/B6yFoUJh.jpg) + +EC Type-B Keyboard by bababaul. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Type-B +* Hardware Availability: [Sand Keys](https://sandkeys.me/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_typeb:default + +Flashing example for this keyboard: + + make cipulot/ec_typeb:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_typeb/rules.mk b/keyboards/cipulot/ec_typeb/rules.mk new file mode 100644 index 00000000000..ce525670a68 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From a426abf017cce185c0b79fc2eb7f16a8c1442bed Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:36:28 +0200 Subject: [PATCH 17/41] Add EC TKL (#23177) --- keyboards/cipulot/ec_tkl/config.h | 69 +++ keyboards/cipulot/ec_tkl/halconf.h | 23 + keyboards/cipulot/ec_tkl/info.json | 433 ++++++++++++++++++ .../cipulot/ec_tkl/keymaps/default/keymap.c | 39 ++ .../ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c | 37 ++ .../ec_tkl/keymaps/tkl_iso_tsangan/keymap.c | 37 ++ .../cipulot/ec_tkl/keymaps/tkl_jis/keymap.c | 39 ++ keyboards/cipulot/ec_tkl/keymaps/via/config.h | 20 + keyboards/cipulot/ec_tkl/keymaps/via/keymap.c | 39 ++ keyboards/cipulot/ec_tkl/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_tkl/mcuconf.h | 25 + keyboards/cipulot/ec_tkl/post_rules.mk | 3 + keyboards/cipulot/ec_tkl/readme.md | 26 ++ keyboards/cipulot/ec_tkl/rules.mk | 5 + 14 files changed, 796 insertions(+) create mode 100644 keyboards/cipulot/ec_tkl/config.h create mode 100644 keyboards/cipulot/ec_tkl/halconf.h create mode 100644 keyboards/cipulot/ec_tkl/info.json create mode 100644 keyboards/cipulot/ec_tkl/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/config.h create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_tkl/mcuconf.h create mode 100644 keyboards/cipulot/ec_tkl/post_rules.mk create mode 100644 keyboards/cipulot/ec_tkl/readme.md create mode 100644 keyboards/cipulot/ec_tkl/rules.mk diff --git a/keyboards/cipulot/ec_tkl/config.h b/keyboards/cipulot/ec_tkl/config.h new file mode 100644 index 00000000000..95a7f9137a1 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/config.h @@ -0,0 +1,69 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS \ + { B6, B5, B12, B10, B13, B7 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 16 + +#define AMUX_EN_PINS \ + { A8 } + +#define AMUX_SEL_PINS \ + { B14, B15, A9, A10 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 16 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE +#define EECONFIG_KB_DATA_SIZE 201 + +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 5 diff --git a/keyboards/cipulot/ec_tkl/halconf.h b/keyboards/cipulot/ec_tkl/halconf.h new file mode 100644 index 00000000000..f2c22202313 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE +#define HAL_USE_PAL TRUE +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/cipulot/ec_tkl/info.json b/keyboards/cipulot/ec_tkl/info.json new file mode 100644 index 00000000000..0c56fb838d8 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/info.json @@ -0,0 +1,433 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC TKL", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 22 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC3", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "B4" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,13", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 14, "y": 1.25}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,13", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 0.75}, + {"label": "2,14", "matrix": [2, 14], "x": 14.25, "y": 2.25, "w": 0.75}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "3,13", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,12", "matrix": [4, 12], "x": 12.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,4", "matrix": [5, 4], "x": 4, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 5.5, "y": 5.25, "w": 2.5}, + {"label": "5,7", "matrix": [5, 7], "x": 8, "y": 5.25, "w": 1.5}, + {"label": "5,8", "matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 1.5}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,13", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,13", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,14", "matrix": [2, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_jis": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,13", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 14, "y": 1.25}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,14", "matrix": [2, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,12", "matrix": [4, 12], "x": 12.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,4", "matrix": [5, 4], "x": 4, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 5.5, "y": 5.25, "w": 2.5}, + {"label": "5,7", "matrix": [5, 7], "x": 8, "y": 5.25, "w": 1.5}, + {"label": "5,8", "matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 1.5}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c new file mode 100644 index 00000000000..983bdefe8a9 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_KANA, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c new file mode 100644 index 00000000000..ba948b4fc12 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_ansi_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_tkl_ansi_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c new file mode 100644 index 00000000000..1689d44d408 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_iso_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_ENT, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_tkl_iso_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c new file mode 100644 index 00000000000..e44575f74f9 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_jis( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + JP_ZKHK, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, JP_Q, JP_W, JP_E, JP_R, JP_T, JP_Y, JP_U, JP_I, JP_O, JP_P, JP_AT, JP_LBRC, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + JP_EISU, JP_A, JP_S, JP_D, JP_F, JP_G, JP_H, JP_J, JP_K, JP_L, JP_SCLN, JP_COLN, JP_RBRC, + KC_LSFT, JP_Z, JP_X, JP_C, JP_V, JP_B, JP_N, JP_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_tkl_jis( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/config.h b/keyboards/cipulot/ec_tkl/keymaps/via/config.h new file mode 100644 index 00000000000..1ab0d3d9aa2 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +// This is the firmware version for VIA support to avoid conflicts on menu fetching +#define VIA_FIRMWARE_VERSION 1 diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c new file mode 100644 index 00000000000..983bdefe8a9 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_KANA, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk b/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_tkl/mcuconf.h b/keyboards/cipulot/ec_tkl/mcuconf.h new file mode 100644 index 00000000000..206928272fb --- /dev/null +++ b/keyboards/cipulot/ec_tkl/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/cipulot/ec_tkl/post_rules.mk b/keyboards/cipulot/ec_tkl/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_tkl/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_tkl/readme.md b/keyboards/cipulot/ec_tkl/readme.md new file mode 100644 index 00000000000..31467b94d74 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/readme.md @@ -0,0 +1,26 @@ +# EC TKL + +![EC TKL PCB](https://i.imgur.com/jQTHGzBh.png) + +Universal TKL Electrostatic Capacitive PCB, with multi-layout support. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC TKL PCB Rev 1.1 +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_tkl:default + +Flashing example for this keyboard: + + make cipulot/ec_tkl:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pins on the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_tkl/rules.mk b/keyboards/cipulot/ec_tkl/rules.mk new file mode 100644 index 00000000000..318e0215ce9 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 2 From 3377813f5d2e08818474c4ea1b0029b776826be7 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:38:12 +0200 Subject: [PATCH 18/41] Add EC660C (#23171) --- keyboards/cipulot/ec_660c/config.h | 66 +++++++++++ keyboards/cipulot/ec_660c/halconf.h | 21 ++++ keyboards/cipulot/ec_660c/info.json | 111 ++++++++++++++++++ .../cipulot/ec_660c/keymaps/default/keymap.c | 43 +++++++ .../cipulot/ec_660c/keymaps/via/keymap.c | 43 +++++++ .../cipulot/ec_660c/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_660c/mcuconf.h | 22 ++++ keyboards/cipulot/ec_660c/post_rules.mk | 3 + keyboards/cipulot/ec_660c/readme.md | 26 ++++ keyboards/cipulot/ec_660c/rules.mk | 5 + 10 files changed, 341 insertions(+) create mode 100644 keyboards/cipulot/ec_660c/config.h create mode 100644 keyboards/cipulot/ec_660c/halconf.h create mode 100644 keyboards/cipulot/ec_660c/info.json create mode 100644 keyboards/cipulot/ec_660c/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_660c/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_660c/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_660c/mcuconf.h create mode 100644 keyboards/cipulot/ec_660c/post_rules.mk create mode 100644 keyboards/cipulot/ec_660c/readme.md create mode 100644 keyboards/cipulot/ec_660c/rules.mk diff --git a/keyboards/cipulot/ec_660c/config.h b/keyboards/cipulot/ec_660c/config.h new file mode 100644 index 00000000000..9e883c40da2 --- /dev/null +++ b/keyboards/cipulot/ec_660c/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B1, B10, B0, A1, A0 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B6 } + +#define AMUX_SEL_PINS \ + { B5, B4, B3 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A5 +#define ANALOG_PORT A4 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_660c/halconf.h b/keyboards/cipulot/ec_660c/halconf.h new file mode 100644 index 00000000000..835d43b6a0a --- /dev/null +++ b/keyboards/cipulot/ec_660c/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_660c/info.json b/keyboards/cipulot/ec_660c/info.json new file mode 100644 index 00000000000..32ac397b6bf --- /dev/null +++ b/keyboards/cipulot/ec_660c/info.json @@ -0,0 +1,111 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 660C", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B14", + "scroll_lock": "B15" + }, + "processor": "STM32F401", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BA6", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "1,14", "matrix": [1, 14], "x": 15.5, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "2,14", "matrix": [2, 14], "x": 15.5, "y": 1}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,12", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.25}, + {"label": "3,13", "matrix": [3, 13], "x": 14.5, "y": 3}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "4,6", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6}, + {"label": "4,9", "matrix": [4, 9], "x": 9.75, "y": 4, "w": 1.25}, + {"label": "4,10", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.25}, + {"label": "4,11", "matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.25}, + {"label": "4,12", "matrix": [4, 12], "x": 13.5, "y": 4}, + {"label": "4,13", "matrix": [4, 13], "x": 14.5, "y": 4}, + {"label": "4,14", "matrix": [4, 14], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_660c/keymaps/default/keymap.c b/keyboards/cipulot/ec_660c/keymaps/default/keymap.c new file mode 100644 index 00000000000..5d82bdc3abd --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + 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_BSPC, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, 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_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_660c/keymaps/via/keymap.c b/keyboards/cipulot/ec_660c/keymaps/via/keymap.c new file mode 100644 index 00000000000..5d82bdc3abd --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + 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_BSPC, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, 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_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_660c/keymaps/via/rules.mk b/keyboards/cipulot/ec_660c/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_660c/mcuconf.h b/keyboards/cipulot/ec_660c/mcuconf.h new file mode 100644 index 00000000000..fa3c955e0d8 --- /dev/null +++ b/keyboards/cipulot/ec_660c/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_660c/post_rules.mk b/keyboards/cipulot/ec_660c/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_660c/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_660c/readme.md b/keyboards/cipulot/ec_660c/readme.md new file mode 100644 index 00000000000..c01bb3252e0 --- /dev/null +++ b/keyboards/cipulot/ec_660c/readme.md @@ -0,0 +1,26 @@ +# EC660C + +![EC660C PCB](https://i.imgur.com/HfTvrkph.jpg) + +Replacement PCB for the Leopold FC660C. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC660C PCB +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_660c:default + +Flashing example for this keyboard: + + make cipulot/ec_660c:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_660c/rules.mk b/keyboards/cipulot/ec_660c/rules.mk new file mode 100644 index 00000000000..ce525670a68 --- /dev/null +++ b/keyboards/cipulot/ec_660c/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From d21363325dcc197725ddbe77063527314452751e Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:39:50 +0200 Subject: [PATCH 19/41] Add EC Dolice (#23178) --- keyboards/cipulot/ec_dolice/config.h | 66 ++++ keyboards/cipulot/ec_dolice/halconf.h | 21 ++ keyboards/cipulot/ec_dolice/info.json | 319 ++++++++++++++++++ .../ec_dolice/keymaps/default/keymap.c | 41 +++ .../cipulot/ec_dolice/keymaps/via/keymap.c | 41 +++ .../cipulot/ec_dolice/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_dolice/mcuconf.h | 22 ++ keyboards/cipulot/ec_dolice/post_rules.mk | 3 + keyboards/cipulot/ec_dolice/readme.md | 26 ++ keyboards/cipulot/ec_dolice/rules.mk | 5 + 10 files changed, 545 insertions(+) create mode 100644 keyboards/cipulot/ec_dolice/config.h create mode 100644 keyboards/cipulot/ec_dolice/halconf.h create mode 100644 keyboards/cipulot/ec_dolice/info.json create mode 100644 keyboards/cipulot/ec_dolice/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_dolice/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_dolice/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_dolice/mcuconf.h create mode 100644 keyboards/cipulot/ec_dolice/post_rules.mk create mode 100644 keyboards/cipulot/ec_dolice/readme.md create mode 100644 keyboards/cipulot/ec_dolice/rules.mk diff --git a/keyboards/cipulot/ec_dolice/config.h b/keyboards/cipulot/ec_dolice/config.h new file mode 100644 index 00000000000..a5c56e79491 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B13, A8, B12, B14, B15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B9, B8 } + +#define AMUX_SEL_PINS \ + { B7, B6, B5 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A3 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_dolice/halconf.h b/keyboards/cipulot/ec_dolice/halconf.h new file mode 100644 index 00000000000..835d43b6a0a --- /dev/null +++ b/keyboards/cipulot/ec_dolice/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_dolice/info.json b/keyboards/cipulot/ec_dolice/info.json new file mode 100644 index 00000000000..e81422e2c54 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/info.json @@ -0,0 +1,319 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Dolice EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B4", + "num_lock": "A15", + "scroll_lock": "B3", + "on_state": 0 + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB9", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_alice_split_bs" + }, + "layouts": { + "LAYOUT_alice": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [1, 8], "x": 10.75, "y": 1}, + {"matrix": [1, 9], "x": 11.75, "y": 1}, + {"matrix": [1, 10], "x": 12.75, "y": 1}, + {"matrix": [1, 11], "x": 13.75, "y": 1}, + {"matrix": [1, 12], "x": 14.75, "y": 1}, + {"matrix": [1, 13], "x": 15.75, "y": 1}, + {"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 10, "y": 2}, + {"matrix": [2, 8], "x": 11, "y": 2}, + {"matrix": [2, 9], "x": 12, "y": 2}, + {"matrix": [2, 10], "x": 13, "y": 2}, + {"matrix": [2, 11], "x": 14, "y": 2}, + {"matrix": [2, 12], "x": 15, "y": 2}, + {"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.5, "y": 3}, + {"matrix": [3, 3], "x": 4.5, "y": 3}, + {"matrix": [3, 4], "x": 5.5, "y": 3}, + {"matrix": [3, 5], "x": 6.5, "y": 3}, + {"matrix": [3, 6], "x": 7.5, "y": 3}, + {"matrix": [3, 7], "x": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 17.25, "y": 3}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_alice_split_bs": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 13], "x": 16.25, "y": 0}, + {"matrix": [0, 14], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [1, 8], "x": 10.75, "y": 1}, + {"matrix": [1, 9], "x": 11.75, "y": 1}, + {"matrix": [1, 10], "x": 12.75, "y": 1}, + {"matrix": [1, 11], "x": 13.75, "y": 1}, + {"matrix": [1, 12], "x": 14.75, "y": 1}, + {"matrix": [1, 13], "x": 15.75, "y": 1}, + {"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 10, "y": 2}, + {"matrix": [2, 8], "x": 11, "y": 2}, + {"matrix": [2, 9], "x": 12, "y": 2}, + {"matrix": [2, 10], "x": 13, "y": 2}, + {"matrix": [2, 11], "x": 14, "y": 2}, + {"matrix": [2, 12], "x": 15, "y": 2}, + {"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.5, "y": 3}, + {"matrix": [3, 3], "x": 4.5, "y": 3}, + {"matrix": [3, 4], "x": 5.5, "y": 3}, + {"matrix": [3, 5], "x": 6.5, "y": 3}, + {"matrix": [3, 6], "x": 7.5, "y": 3}, + {"matrix": [3, 7], "x": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 17.25, "y": 3}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_long_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [1, 8], "x": 10.75, "y": 1}, + {"matrix": [1, 9], "x": 11.75, "y": 1}, + {"matrix": [1, 10], "x": 12.75, "y": 1}, + {"matrix": [1, 11], "x": 13.75, "y": 1}, + {"matrix": [1, 12], "x": 14.75, "y": 1}, + {"matrix": [1, 13], "x": 15.75, "y": 1}, + {"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 10, "y": 2}, + {"matrix": [2, 8], "x": 11, "y": 2}, + {"matrix": [2, 9], "x": 12, "y": 2}, + {"matrix": [2, 10], "x": 13, "y": 2}, + {"matrix": [2, 11], "x": 14, "y": 2}, + {"matrix": [2, 12], "x": 15, "y": 2}, + {"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.5, "y": 3}, + {"matrix": [3, 3], "x": 4.5, "y": 3}, + {"matrix": [3, 4], "x": 5.5, "y": 3}, + {"matrix": [3, 5], "x": 6.5, "y": 3}, + {"matrix": [3, 6], "x": 7.5, "y": 3}, + {"matrix": [3, 7], "x": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_long_rshift_split_bs": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 13], "x": 16.25, "y": 0}, + {"matrix": [0, 14], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [1, 8], "x": 10.75, "y": 1}, + {"matrix": [1, 9], "x": 11.75, "y": 1}, + {"matrix": [1, 10], "x": 12.75, "y": 1}, + {"matrix": [1, 11], "x": 13.75, "y": 1}, + {"matrix": [1, 12], "x": 14.75, "y": 1}, + {"matrix": [1, 13], "x": 15.75, "y": 1}, + {"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 10, "y": 2}, + {"matrix": [2, 8], "x": 11, "y": 2}, + {"matrix": [2, 9], "x": 12, "y": 2}, + {"matrix": [2, 10], "x": 13, "y": 2}, + {"matrix": [2, 11], "x": 14, "y": 2}, + {"matrix": [2, 12], "x": 15, "y": 2}, + {"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.5, "y": 3}, + {"matrix": [3, 3], "x": 4.5, "y": 3}, + {"matrix": [3, 4], "x": 5.5, "y": 3}, + {"matrix": [3, 5], "x": 6.5, "y": 3}, + {"matrix": [3, 6], "x": 7.5, "y": 3}, + {"matrix": [3, 7], "x": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c b/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c new file mode 100644 index 00000000000..5a501e29823 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_PSCR, 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_BSPC, KC_DEL, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = 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_DEL, KC_DEL, + _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c b/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c new file mode 100644 index 00000000000..5a501e29823 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_PSCR, 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_BSPC, KC_DEL, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = 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_DEL, KC_DEL, + _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk b/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_dolice/mcuconf.h b/keyboards/cipulot/ec_dolice/mcuconf.h new file mode 100644 index 00000000000..fa3c955e0d8 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_dolice/post_rules.mk b/keyboards/cipulot/ec_dolice/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_dolice/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_dolice/readme.md b/keyboards/cipulot/ec_dolice/readme.md new file mode 100644 index 00000000000..a947df139c3 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/readme.md @@ -0,0 +1,26 @@ +# Dolice EC + +![Dolice EC](https://i.imgur.com/uvM0G5v.png) + +The Dolice is a alice keyboard designed by Lx3 (Linworks) and yuktsi (TGR) and run by KLC. EC Version designed by Cipulot. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Dolice EC +* Hardware availability: Groupbuys. Check the ongoing ones on [the KLC Discord](https://discord.gg/d2A72mGPRB) or [Webshop](https://klc-playground.com/). + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_dolice:default + +Flashing example for this keyboard: + + make cipulot/ec_dolice:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_dolice/rules.mk b/keyboards/cipulot/ec_dolice/rules.mk new file mode 100644 index 00000000000..ce525670a68 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 822ba1edfa0a4309eeb8304749fb31fd414d369c Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:40:40 +0200 Subject: [PATCH 20/41] Add EC Vero (#23176) --- keyboards/cipulot/ec_vero/config.h | 61 +++++++ keyboards/cipulot/ec_vero/halconf.h | 21 +++ keyboards/cipulot/ec_vero/info.json | 165 ++++++++++++++++++ .../cipulot/ec_vero/keymaps/60_hhkb/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/default/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/via/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_vero/mcuconf.h | 22 +++ keyboards/cipulot/ec_vero/post_rules.mk | 3 + keyboards/cipulot/ec_vero/readme.md | 26 +++ keyboards/cipulot/ec_vero/rules.mk | 5 + 11 files changed, 430 insertions(+) create mode 100644 keyboards/cipulot/ec_vero/config.h create mode 100644 keyboards/cipulot/ec_vero/halconf.h create mode 100644 keyboards/cipulot/ec_vero/info.json create mode 100644 keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_vero/mcuconf.h create mode 100644 keyboards/cipulot/ec_vero/post_rules.mk create mode 100644 keyboards/cipulot/ec_vero/readme.md create mode 100644 keyboards/cipulot/ec_vero/rules.mk diff --git a/keyboards/cipulot/ec_vero/config.h b/keyboards/cipulot/ec_vero/config.h new file mode 100644 index 00000000000..89f7474b552 --- /dev/null +++ b/keyboards/cipulot/ec_vero/config.h @@ -0,0 +1,61 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B7, B6, A9, A10, B3 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 15 + +#define AMUX_EN_PINS \ + { B14 } + +#define AMUX_SEL_PINS \ + { B13, B12, B15, A8 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 15 } + +#define AMUX_0_COL_CHANNELS \ + { 1, 2, 3, 4, 5, 6, 7, 0, 8, 9, 10, 11, 13, 12, 14} + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_vero/halconf.h b/keyboards/cipulot/ec_vero/halconf.h new file mode 100644 index 00000000000..835d43b6a0a --- /dev/null +++ b/keyboards/cipulot/ec_vero/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_vero/info.json b/keyboards/cipulot/ec_vero/info.json new file mode 100644 index 00000000000..a2cc1e4a07d --- /dev/null +++ b/keyboards/cipulot/ec_vero/info.json @@ -0,0 +1,165 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Vero EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC1", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 6}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 0.75}, + {"matrix": [1, 14], "x": 14.25, "y": 1, "w": 0.75}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 6}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c b/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c new file mode 100644 index 00000000000..bd4df694af9 --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_DEL, + 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_ENTER, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/default/keymap.c b/keyboards/cipulot/ec_vero/keymaps/default/keymap.c new file mode 100644 index 00000000000..06b3651d94a --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_DEL, KC_ENTER, + 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_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_all( + _______, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/via/keymap.c b/keyboards/cipulot/ec_vero/keymaps/via/keymap.c new file mode 100644 index 00000000000..06b3651d94a --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_DEL, KC_ENTER, + 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_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_all( + _______, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/via/rules.mk b/keyboards/cipulot/ec_vero/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_vero/mcuconf.h b/keyboards/cipulot/ec_vero/mcuconf.h new file mode 100644 index 00000000000..fa3c955e0d8 --- /dev/null +++ b/keyboards/cipulot/ec_vero/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_vero/post_rules.mk b/keyboards/cipulot/ec_vero/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_vero/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_vero/readme.md b/keyboards/cipulot/ec_vero/readme.md new file mode 100644 index 00000000000..590423fa023 --- /dev/null +++ b/keyboards/cipulot/ec_vero/readme.md @@ -0,0 +1,26 @@ +# Vero EC + +![Vero EC PCB](https://i.imgur.com/JV8pMaXh.jpg) + +EC version of the Vero R2 keyboard. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Vero EC PCB +* Hardware Availability: [Antipode](https://www.antipode.no/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_vero:default + +Flashing example for this keyboard: + + make cipulot/ec_vero:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_vero/rules.mk b/keyboards/cipulot/ec_vero/rules.mk new file mode 100644 index 00000000000..ce525670a68 --- /dev/null +++ b/keyboards/cipulot/ec_vero/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 900bec6211eb5c801c158bd30969397ff06b47fe Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:41:29 +0200 Subject: [PATCH 21/41] Add EC Menhir (#23175) --- keyboards/cipulot/ec_menhir/config.h | 61 +++++++++++++ keyboards/cipulot/ec_menhir/halconf.h | 21 +++++ keyboards/cipulot/ec_menhir/info.json | 87 +++++++++++++++++++ .../ec_menhir/keymaps/default/keymap.c | 27 ++++++ .../cipulot/ec_menhir/keymaps/via/keymap.c | 27 ++++++ .../cipulot/ec_menhir/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_menhir/mcuconf.h | 22 +++++ keyboards/cipulot/ec_menhir/post_rules.mk | 3 + keyboards/cipulot/ec_menhir/readme.md | 26 ++++++ keyboards/cipulot/ec_menhir/rules.mk | 4 + 10 files changed, 279 insertions(+) create mode 100644 keyboards/cipulot/ec_menhir/config.h create mode 100644 keyboards/cipulot/ec_menhir/halconf.h create mode 100644 keyboards/cipulot/ec_menhir/info.json create mode 100644 keyboards/cipulot/ec_menhir/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_menhir/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_menhir/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_menhir/mcuconf.h create mode 100644 keyboards/cipulot/ec_menhir/post_rules.mk create mode 100644 keyboards/cipulot/ec_menhir/readme.md create mode 100644 keyboards/cipulot/ec_menhir/rules.mk diff --git a/keyboards/cipulot/ec_menhir/config.h b/keyboards/cipulot/ec_menhir/config.h new file mode 100644 index 00000000000..bd0094c7f15 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/config.h @@ -0,0 +1,61 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_ROW_PINS \ + { A0, A3, A2, A1 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 12 + +#define AMUX_EN_PINS \ + { C10 } + +#define AMUX_SEL_PINS \ + { C11, B3, A15, A14 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 12 } + +#define AMUX_0_COL_CHANNELS \ + { 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A5 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +#define EECONFIG_KB_DATA_SIZE 105 diff --git a/keyboards/cipulot/ec_menhir/halconf.h b/keyboards/cipulot/ec_menhir/halconf.h new file mode 100644 index 00000000000..835d43b6a0a --- /dev/null +++ b/keyboards/cipulot/ec_menhir/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_menhir/info.json b/keyboards/cipulot/ec_menhir/info.json new file mode 100644 index 00000000000..4cc6a845259 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/info.json @@ -0,0 +1,87 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Menhir", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "embedded_flash", + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32G431", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB8", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.75}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0.5, "y": 2, "w": 1.25}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2, "w": 1.5}, + {"matrix": [3, 1], "x": 1.75, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3, "w": 2}, + {"matrix": [3, 5], "x": 6, "y": 3}, + {"matrix": [3, 6], "x": 7, "y": 3, "w": 2}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3} + ] + } + } +} diff --git a/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c b/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c new file mode 100644 index 00000000000..e6780e6439f --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LCTL) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c b/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c new file mode 100644 index 00000000000..e6780e6439f --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LCTL) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk b/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_menhir/mcuconf.h b/keyboards/cipulot/ec_menhir/mcuconf.h new file mode 100644 index 00000000000..b120f145c5b --- /dev/null +++ b/keyboards/cipulot/ec_menhir/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC2 +#define STM32_ADC_USE_ADC2 TRUE diff --git a/keyboards/cipulot/ec_menhir/post_rules.mk b/keyboards/cipulot/ec_menhir/post_rules.mk new file mode 100644 index 00000000000..d726a112a8c --- /dev/null +++ b/keyboards/cipulot/ec_menhir/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_menhir/readme.md b/keyboards/cipulot/ec_menhir/readme.md new file mode 100644 index 00000000000..234b1ab9d0e --- /dev/null +++ b/keyboards/cipulot/ec_menhir/readme.md @@ -0,0 +1,26 @@ +# EC Menhir + +![EC Menhir](https://i.imgur.com/m0feb2Zh.png) + +EC version of the Menhir. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Menhir +* Hardware Availability: [fruitykeeb](https://fruitykeeb.xyz/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_menhir:default + +Flashing example for this keyboard: + + make cipulot/ec_menhir:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_menhir/rules.mk b/keyboards/cipulot/ec_menhir/rules.mk new file mode 100644 index 00000000000..e7d73cefc98 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/rules.mk @@ -0,0 +1,4 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c From 69acadf967ed9b8389a3087425c3d2a772c09495 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:43:06 +0200 Subject: [PATCH 22/41] Add Chroma Support (#22889) Co-authored-by: Duncan Sutherland Co-authored-by: Drashna Jaelre --- keyboards/cipulot/chroma/info.json | 679 ++++++++++++++++++ .../chroma/keymaps/60_ansi_tsangan/keymap.c | 43 ++ .../chroma/keymaps/60_ansi_wkl/keymap.c | 43 ++ .../60_ansi_wkl_split_bs_rshift/keymap.c | 43 ++ .../chroma/keymaps/60_iso_tsangan/keymap.c | 43 ++ .../60_iso_tsangan_split_bs_rshift/keymap.c | 43 ++ .../chroma/keymaps/60_iso_wkl/keymap.c | 43 ++ .../60_iso_wkl_split_bs_rshift/keymap.c | 43 ++ .../cipulot/chroma/keymaps/default/keymap.c | 43 ++ keyboards/cipulot/chroma/keymaps/via/keymap.c | 43 ++ keyboards/cipulot/chroma/keymaps/via/rules.mk | 1 + keyboards/cipulot/chroma/readme.md | 27 + keyboards/cipulot/chroma/rules.mk | 0 13 files changed, 1094 insertions(+) create mode 100644 keyboards/cipulot/chroma/info.json create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/chroma/readme.md create mode 100644 keyboards/cipulot/chroma/rules.mk diff --git a/keyboards/cipulot/chroma/info.json b/keyboards/cipulot/chroma/info.json new file mode 100644 index 00000000000..5d418fdce1f --- /dev/null +++ b/keyboards/cipulot/chroma/info.json @@ -0,0 +1,679 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Chroma", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11", "B12", "A15", "B3", "B4", "B5", "B7", "B6"], + "rows": ["F0", "A2", "A3", "A4", "C15"] + }, + "processor": "STM32F072", + "usb": { + "device_version": "0.0.1", + "pid": "0x6BBF", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "community_layouts": ["60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"], + "layouts": { + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c new file mode 100644 index 00000000000..df27a14861a --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_tsangan( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_60_ansi_tsangan( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c new file mode 100644 index 00000000000..4bc80d1d24b --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_wkl( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_ansi_wkl( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_ansi_wkl( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..e9cdf26567f --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_wkl_split_bs_rshift( + 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_ansi_wkl_split_bs_rshift( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_ansi_wkl_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c new file mode 100644 index 00000000000..55492c3e4d4 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_tsangan( + 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_BSPC, + 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_CAPS, 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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_60_iso_tsangan( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_iso_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..3cce7112447 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_tsangan_split_bs_rshift( + 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_BSPC, KC_BSPC, + 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_CAPS, 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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_60_iso_tsangan_split_bs_rshift( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_iso_tsangan_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c new file mode 100644 index 00000000000..01bb84f50d4 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_wkl( + 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_BSPC, + 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_CAPS, 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, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_iso_wkl( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_iso_wkl( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..d412f2a977d --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_wkl_split_bs_rshift( + 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_BSPC, KC_BSPC, + 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_CAPS, 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(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_iso_wkl_split_bs_rshift( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_iso_wkl_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/default/keymap.c b/keyboards/cipulot/chroma/keymaps/default/keymap.c new file mode 100644 index 00000000000..c93d9110efe --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, 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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/via/keymap.c b/keyboards/cipulot/chroma/keymaps/via/keymap.c new file mode 100644 index 00000000000..c93d9110efe --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, 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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/via/rules.mk b/keyboards/cipulot/chroma/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/chroma/readme.md b/keyboards/cipulot/chroma/readme.md new file mode 100644 index 00000000000..9a08bbecac1 --- /dev/null +++ b/keyboards/cipulot/chroma/readme.md @@ -0,0 +1,27 @@ +# Chroma + +![Chroma](https://i.imgur.com/clhRkDDh.png) + +A 60% hot swap PCB for MX switches. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Chroma +* Hardware Availability: [Eloquent Clicks](https://eloquentclicks.com/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/chroma:default + +Flashing example for this keyboard: + + make cipulot/chroma:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured. +* **Physical reset button**: Long press the reset button soldered on the PCB. +* **Bootmagic reset**: Hold down the top left key and plug in the controller. diff --git a/keyboards/cipulot/chroma/rules.mk b/keyboards/cipulot/chroma/rules.mk new file mode 100644 index 00000000000..e69de29bb2d From 31c81d432cbe963a1132f231036d38aa908c9403 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 20:32:08 +0200 Subject: [PATCH 23/41] Add EC980C (#23172) --- keyboards/cipulot/ec_980c/config.h | 86 +++ keyboards/cipulot/ec_980c/ec_980c.c | 116 ++++ keyboards/cipulot/ec_980c/ec_switch_matrix.c | 318 +++++++++++ keyboards/cipulot/ec_980c/ec_switch_matrix.h | 83 +++ keyboards/cipulot/ec_980c/halconf.h | 23 + keyboards/cipulot/ec_980c/info.json | 170 ++++++ .../cipulot/ec_980c/keymaps/default/keymap.c | 48 ++ .../cipulot/ec_980c/keymaps/via/keymap.c | 48 ++ .../cipulot/ec_980c/keymaps/via/rules.mk | 3 + .../ec_980c/keymaps/via/via_ec_indicators.c | 499 ++++++++++++++++++ keyboards/cipulot/ec_980c/matrix.c | 42 ++ keyboards/cipulot/ec_980c/mcuconf.h | 28 + keyboards/cipulot/ec_980c/readme.md | 26 + keyboards/cipulot/ec_980c/rules.mk | 4 + 14 files changed, 1494 insertions(+) create mode 100644 keyboards/cipulot/ec_980c/config.h create mode 100644 keyboards/cipulot/ec_980c/ec_980c.c create mode 100644 keyboards/cipulot/ec_980c/ec_switch_matrix.c create mode 100644 keyboards/cipulot/ec_980c/ec_switch_matrix.h create mode 100644 keyboards/cipulot/ec_980c/halconf.h create mode 100644 keyboards/cipulot/ec_980c/info.json create mode 100644 keyboards/cipulot/ec_980c/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c create mode 100644 keyboards/cipulot/ec_980c/matrix.c create mode 100644 keyboards/cipulot/ec_980c/mcuconf.h create mode 100644 keyboards/cipulot/ec_980c/readme.md create mode 100644 keyboards/cipulot/ec_980c/rules.mk diff --git a/keyboards/cipulot/ec_980c/config.h b/keyboards/cipulot/ec_980c/config.h new file mode 100644 index 00000000000..e3723822e33 --- /dev/null +++ b/keyboards/cipulot/ec_980c/config.h @@ -0,0 +1,86 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 19 + +#define MATRIX_ROW_PINS \ + { B13, B12, B14, A9, B6, B7 } + +#define AMUX_COUNT 3 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { A0, A1, A8 } + +#define AMUX_SEL_PINS \ + { A4, A3, A2 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7, 4 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 1, 0, 3, 2, 4, 6, 7 } + +#define AMUX_2_COL_CHANNELS \ + { 4, 6, 7, 5 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS, AMUX_2_COL_CHANNELS + +#define DISCHARGE_PIN A6 +#define ANALOG_PORT A7 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +//#define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 249 + +// Indicators +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 + +#define NUM_INDICATOR_INDEX 0 +#define CAPS_INDICATOR_INDEX 1 +#define SCROLL_INDICATOR_INDEX 2 + +#define RGB_MATRIX_DEFAULT_VAL 60 +#define RGB_MATRIX_SLEEP +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR diff --git a/keyboards/cipulot/ec_980c/ec_980c.c b/keyboards/cipulot/ec_980c/ec_980c.c new file mode 100644 index 00000000000..2b40d5a5e69 --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_980c.c @@ -0,0 +1,116 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 "ec_switch_matrix.h" +#include "quantum.h" + +void eeconfig_init_kb(void) { + // Default values + eeprom_ec_config.num.h = 0; + eeprom_ec_config.num.s = 0; + eeprom_ec_config.num.v = 60; + eeprom_ec_config.num.enabled = true; + eeprom_ec_config.caps.h = 0; + eeprom_ec_config.caps.s = 0; + eeprom_ec_config.caps.v = 60; + eeprom_ec_config.caps.enabled = true; + eeprom_ec_config.scroll.h = 0; + eeprom_ec_config.scroll.s = 0; + eeprom_ec_config.scroll.v = 60; + eeprom_ec_config.scroll.enabled = true; + eeprom_ec_config.actuation_mode = DEFAULT_ACTUATION_MODE; + eeprom_ec_config.mode_0_actuation_threshold = DEFAULT_MODE_0_ACTUATION_LEVEL; + eeprom_ec_config.mode_0_release_threshold = DEFAULT_MODE_0_RELEASE_LEVEL; + eeprom_ec_config.mode_1_initial_deadzone_offset = DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET; + eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; + eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + eeprom_ec_config.bottoming_reading[row][col] = DEFAULT_BOTTOMING_READING; + } + } + // Write default value to EEPROM now + eeconfig_update_kb_datablock(&eeprom_ec_config); + + eeconfig_init_user(); +} + +// On Keyboard startup +void keyboard_post_init_kb(void) { + // Read custom menu variables from memory + eeconfig_read_kb_datablock(&eeprom_ec_config); + + // Set runtime values to EEPROM values + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + ec_config.mode_0_actuation_threshold = eeprom_ec_config.mode_0_actuation_threshold; + ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; + ec_config.mode_1_initial_deadzone_offset = eeprom_ec_config.mode_1_initial_deadzone_offset; + ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; + ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; + ec_config.bottoming_calibration = false; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.bottoming_calibration_starter[row][col] = true; + ec_config.bottoming_reading[row][col] = eeprom_ec_config.bottoming_reading[row][col]; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + + // Call the indicator callback to set the indicator color + rgb_matrix_indicators_kb(); + + keyboard_post_init_user(); +} + +// INDICATOR CALLBACK ------------------------------------------------------------------------------ +/* LED index to physical position + * + * LED0 | LED1 | LED2 + * -----+------+-------- + * Num | Caps | Scroll | + */ +bool rgb_matrix_indicators_kb(void) { + if (eeprom_ec_config.num.enabled) { + // The rgb_matrix_set_color function needs an RGB code to work, so first the indicator color is cast to an HSV value and then translated to RGB + HSV hsv_num_indicator_color = {eeprom_ec_config.num.h, eeprom_ec_config.num.s, eeprom_ec_config.num.v}; + RGB rgb_num_indicator_color = hsv_to_rgb(hsv_num_indicator_color); + if (host_keyboard_led_state().num_lock) + rgb_matrix_set_color(NUM_INDICATOR_INDEX, rgb_num_indicator_color.r, rgb_num_indicator_color.g, rgb_num_indicator_color.b); + else + rgb_matrix_set_color(NUM_INDICATOR_INDEX, 0, 0, 0); + } + if (eeprom_ec_config.caps.enabled) { + HSV hsv_caps_indicator_color = {eeprom_ec_config.caps.h, eeprom_ec_config.caps.s, eeprom_ec_config.caps.v}; + RGB rgb_caps_indicator_color = hsv_to_rgb(hsv_caps_indicator_color); + if (host_keyboard_led_state().caps_lock) + rgb_matrix_set_color(CAPS_INDICATOR_INDEX, rgb_caps_indicator_color.r, rgb_caps_indicator_color.g, rgb_caps_indicator_color.b); + else + rgb_matrix_set_color(CAPS_INDICATOR_INDEX, 0, 0, 0); + } + if (eeprom_ec_config.scroll.enabled) { + HSV hsv_scroll_indicator_color = {eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s, eeprom_ec_config.scroll.v}; + RGB rgb_scroll_indicator_color = hsv_to_rgb(hsv_scroll_indicator_color); + if (host_keyboard_led_state().scroll_lock) + rgb_matrix_set_color(SCROLL_INDICATOR_INDEX, rgb_scroll_indicator_color.r, rgb_scroll_indicator_color.g, rgb_scroll_indicator_color.b); + else + rgb_matrix_set_color(SCROLL_INDICATOR_INDEX, 0, 0, 0); + } + + return true; +} diff --git a/keyboards/cipulot/ec_980c/ec_switch_matrix.c b/keyboards/cipulot/ec_980c/ec_switch_matrix.c new file mode 100644 index 00000000000..33123bd236e --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_switch_matrix.c @@ -0,0 +1,318 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "math.h" +#include "print.h" +#include "wait.h" + +#if defined(__AVR__) +# error "AVR platforms not supported due to a variety of reasons. Among them there are limited memory, limited number of pins and ADC not being able to give satisfactory results." +#endif + +#define OPEN_DRAIN_SUPPORT defined(PAL_MODE_OUTPUT_OPENDRAIN) + +eeprom_ec_config_t eeprom_ec_config; +ec_config_t ec_config; + +// Pin and port array +const pin_t row_pins[] = MATRIX_ROW_PINS; +const pin_t amux_sel_pins[] = AMUX_SEL_PINS; +const pin_t amux_en_pins[] = AMUX_EN_PINS; +const pin_t amux_n_col_sizes[] = AMUX_COL_CHANNELS_SIZES; +const pin_t amux_n_col_channels[][AMUX_MAX_COLS_COUNT] = {AMUX_COL_CHANNELS}; + +#define AMUX_SEL_PINS_COUNT ARRAY_SIZE(amux_sel_pins) +#define EXPECTED_AMUX_SEL_PINS_COUNT ceil(log2(AMUX_MAX_COLS_COUNT) +// Checks for the correctness of the configuration +_Static_assert(ARRAY_SIZE(amux_en_pins) == AMUX_COUNT, "AMUX_EN_PINS doesn't have the minimum number of bits required to enable all the multiplexers available"); +// Check that number of select pins is enough to select all the channels +_Static_assert(AMUX_SEL_PINS_COUNT == EXPECTED_AMUX_SEL_PINS_COUNT), "AMUX_SEL_PINS doesn't have the minimum number of bits required address all the channels"); +// Check that number of elements in AMUX_COL_CHANNELS_SIZES is enough to specify the number of channels for all the multiplexers available +_Static_assert(ARRAY_SIZE(amux_n_col_sizes) == AMUX_COUNT, "AMUX_COL_CHANNELS_SIZES doesn't have the minimum number of elements required to specify the number of channels for all the multiplexers available"); + +static uint16_t sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +// Initialize the row pins +void init_row(void) { + // Set all row pins as output and low + for (uint8_t idx = 0; idx < MATRIX_ROWS; idx++) { + gpio_set_pin_output(row_pins[idx]); + gpio_write_pin_low(row_pins[idx]); + } +} + +// Initialize the multiplexers +void init_amux(void) { + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + gpio_set_pin_output(amux_en_pins[idx]); + gpio_write_pin_low(amux_en_pins[idx]); + } + for (uint8_t idx = 0; idx < AMUX_SEL_PINS_COUNT; idx++) { + gpio_set_pin_output(amux_sel_pins[idx]); + } +} + +// Select the multiplexer channel of the specified multiplexer +void select_amux_channel(uint8_t channel, uint8_t col) { + // Get the channel for the specified multiplexer + uint8_t ch = amux_n_col_channels[channel][col]; + // momentarily disable specified multiplexer + gpio_write_pin_high(amux_en_pins[channel]); + // Select the multiplexer channel + for (uint8_t i = 0; i < AMUX_SEL_PINS_COUNT; i++) { + gpio_write_pin(amux_sel_pins[i], ch & (1 << i)); + } + // re enable specified multiplexer + gpio_write_pin_low(amux_en_pins[channel]); +} + +// Disable all the unused multiplexers +void disable_unused_amux(uint8_t channel) { + // disable all the other multiplexers apart from the current selected one + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + if (idx != channel) { + gpio_write_pin_high(amux_en_pins[idx]); + } + } +} +// Discharge the peak hold capacitor +void discharge_capacitor(void) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_low(DISCHARGE_PIN); +#else + gpio_write_pin_low(DISCHARGE_PIN); + gpio_set_pin_output(DISCHARGE_PIN); +#endif +} + +// Charge the peak hold capacitor +void charge_capacitor(uint8_t row) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_high(DISCHARGE_PIN); +#else + gpio_set_pin_input(DISCHARGE_PIN); +#endif + gpio_write_pin_high(row_pins[row]); +} + +// Initialize the peripherals pins +int ec_init(void) { + // Initialize ADC + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + // Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + gpio_write_pin_low(DISCHARGE_PIN); +#ifdef OPEN_DRAIN_SUPPORT + gpio_set_pin_output_open_drain(DISCHARGE_PIN); +#else + gpio_set_pin_output(DISCHARGE_PIN); +#endif + + // Initialize drive lines + init_row(); + + // Initialize AMUXs + init_amux(); + + return 0; +} + +// Get the noise floor +void ec_noise_floor(void) { + // Initialize the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] = 0; + } + } + + // Sample the noise floor + for (uint8_t i = 0; i < DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; i++) { + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + ec_config.noise_floor[row][adjusted_col] += ec_readkey_raw(amux, row, col); + } + } + } + wait_ms(5); + } + + // Average the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] /= DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; + } + } +} + +// Scan key values and update matrix state +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + sw_value[row][adjusted_col] = ec_readkey_raw(amux, row, col); + + if (ec_config.bottoming_calibration) { + if (ec_config.bottoming_calibration_starter[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + ec_config.bottoming_calibration_starter[row][adjusted_col] = false; + } else if (sw_value[row][adjusted_col] > ec_config.bottoming_reading[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + } + } else { + updated |= ec_update_key(¤t_matrix[row], row, adjusted_col, sw_value[row][adjusted_col]); + } + } + } + } + + return ec_config.bottoming_calibration ? false : updated; +} + +// Read the capacitive sensor value +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + select_amux_channel(channel, col); + + // Set the row pin to low state to avoid ghosting + gpio_write_pin_low(row_pins[row]); + + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Real Time Noise Floor Calibration + if (sw_value < (ec_config.noise_floor[row][col] - NOISE_FLOOR_THRESHOLD)) { + uprintf("Noise Floor Change: %d, %d, %d\n", row, col, sw_value); + ec_config.noise_floor[row][col] = sw_value; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + + // Normal board-wide APC + if (ec_config.actuation_mode == 0) { + if (current_state && sw_value < ec_config.rescaled_mode_0_release_threshold[row][col]) { + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + if ((!current_state) && sw_value > ec_config.rescaled_mode_0_actuation_threshold[row][col]) { + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Rapid Trigger + else if (ec_config.actuation_mode == 1) { + // Is key in active zone? + if (sw_value > ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]) { + // Is key pressed while in active zone? + if (current_state) { + // Is the key still moving down? + if (sw_value > ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + } + // Has key moved up enough to be released? + else if (sw_value < ec_config.extremum[row][col] - ec_config.mode_1_release_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Key is not pressed while in active zone + else { + // Is the key still moving up? + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + } + // Has key moved down enough to be pressed? + else if (sw_value > ec_config.extremum[row][col] + ec_config.mode_1_actuation_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + } + // Key is not in active zone + else { + // Check to avoid key being stuck in pressed state near the active zone threshold + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + return true; + } + } + } + return false; +} + +// Print the matrix values +void ec_print_matrix(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", sw_value[row][col]); + } + uprintf("%4d\n", sw_value[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Rescale the value to a different range +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max) { + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} diff --git a/keyboards/cipulot/ec_980c/ec_switch_matrix.h b/keyboards/cipulot/ec_980c/ec_switch_matrix.h new file mode 100644 index 00000000000..8a75b5de5fb --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_switch_matrix.h @@ -0,0 +1,83 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 +#include +#include "matrix.h" +#include "eeconfig.h" +#include "util.h" + +typedef struct _indicator_config_t { + uint8_t h; + uint8_t s; + uint8_t v; + bool enabled; +} indicator_config; + +typedef struct PACKED { + indicator_config num; + indicator_config caps; + indicator_config scroll; + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point, 2: Rapid trigger from resting point + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 and 2 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 and 2 (1-255) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} eeprom_ec_config_t; + +typedef struct { + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point (it can be very near that baseline noise and be "full travel") + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 (initial deadzone) + uint16_t rescaled_mode_0_actuation_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 0 rescaled to actual scale + uint16_t rescaled_mode_0_release_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key release in mode 0 rescaled to actual scale + uint16_t rescaled_mode_1_initial_deadzone_offset[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 1 (initial deadzone) rescaled to actual scale + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 (1-255) + uint16_t extremum[MATRIX_ROWS][MATRIX_COLS]; // extremum values for mode 1 + uint16_t noise_floor[MATRIX_ROWS][MATRIX_COLS]; // noise floor detected during startup + bool bottoming_calibration; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + bool bottoming_calibration_starter[MATRIX_ROWS][MATRIX_COLS]; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} ec_config_t; + +// Check if the size of the reserved persistent memory is the same as the size of struct eeprom_ec_config_t +_Static_assert(sizeof(eeprom_ec_config_t) == EECONFIG_KB_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +extern eeprom_ec_config_t eeprom_ec_config; + +extern ec_config_t ec_config; + +void init_row(void); +void init_amux(void); +void select_amux_channel(uint8_t channel, uint8_t col); +void disable_unused_amux(uint8_t channel); +void discharge_capacitor(void); +void charge_capacitor(uint8_t row); + +int ec_init(void); +void ec_noise_floor(void); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ec_print_matrix(void); + +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max); diff --git a/keyboards/cipulot/ec_980c/halconf.h b/keyboards/cipulot/ec_980c/halconf.h new file mode 100644 index 00000000000..24de0954858 --- /dev/null +++ b/keyboards/cipulot/ec_980c/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 + +#define HAL_USE_ADC TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/cipulot/ec_980c/info.json b/keyboards/cipulot/ec_980c/info.json new file mode 100644 index 00000000000..6d3cb22719c --- /dev/null +++ b/keyboards/cipulot/ec_980c/info.json @@ -0,0 +1,170 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 980C", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_left_right": true, + "solid_color": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 15], "x": 16.25, "y": 1, "flags": 4}, + {"matrix": [0, 16], "x": 17.25, "y": 1, "flags": 4}, + {"matrix": [0, 17], "x": 18.25, "y": 1, "flags": 4} + ], + "led_count": 3, + "max_brightness": 255 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BBE", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "B15" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.5, "y": 0}, + {"matrix": [0, 16], "x": 16.5, "y": 0}, + {"matrix": [0, 17], "x": 17.5, "y": 0}, + {"matrix": [0, 18], "x": 18.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [1, 8], "x": 8, "y": 1.5}, + {"matrix": [1, 9], "x": 9, "y": 1.5}, + {"matrix": [1, 10], "x": 10, "y": 1.5}, + {"matrix": [1, 11], "x": 11, "y": 1.5}, + {"matrix": [1, 12], "x": 12, "y": 1.5}, + {"matrix": [1, 13], "x": 13, "y": 1.5}, + {"matrix": [1, 14], "x": 14, "y": 1.5}, + {"matrix": [1, 15], "x": 15.5, "y": 1.5}, + {"matrix": [1, 16], "x": 16.5, "y": 1.5}, + {"matrix": [1, 17], "x": 17.5, "y": 1.5}, + {"matrix": [1, 18], "x": 18.5, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [2, 7], "x": 7.5, "y": 2.5}, + {"matrix": [2, 8], "x": 8.5, "y": 2.5}, + {"matrix": [2, 9], "x": 9.5, "y": 2.5}, + {"matrix": [2, 10], "x": 10.5, "y": 2.5}, + {"matrix": [2, 11], "x": 11.5, "y": 2.5}, + {"matrix": [2, 12], "x": 12.5, "y": 2.5}, + {"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 0.75}, + {"matrix": [2, 14], "x": 14.25, "y": 2.5, "w": 0.75}, + {"matrix": [2, 15], "x": 15.5, "y": 2.5}, + {"matrix": [2, 16], "x": 16.5, "y": 2.5}, + {"matrix": [2, 17], "x": 17.5, "y": 2.5}, + {"matrix": [2, 18], "x": 18.5, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [3, 7], "x": 7.75, "y": 3.5}, + {"matrix": [3, 8], "x": 8.75, "y": 3.5}, + {"matrix": [3, 9], "x": 9.75, "y": 3.5}, + {"matrix": [3, 10], "x": 10.75, "y": 3.5}, + {"matrix": [3, 11], "x": 11.75, "y": 3.5}, + {"matrix": [3, 12], "x": 12.75, "y": 3.5}, + {"matrix": [3, 13], "x": 13.75, "y": 3.5, "w": 1.25}, + {"matrix": [3, 15], "x": 15.5, "y": 3.5}, + {"matrix": [3, 16], "x": 16.5, "y": 3.5}, + {"matrix": [3, 17], "x": 17.5, "y": 3.5}, + {"matrix": [3, 18], "x": 18.5, "y": 3.5}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75}, + {"matrix": [4, 14], "x": 14.25, "y": 4.75}, + {"matrix": [4, 15], "x": 15.5, "y": 4.5}, + {"matrix": [4, 16], "x": 16.5, "y": 4.5}, + {"matrix": [4, 17], "x": 17.5, "y": 4.5}, + {"matrix": [4, 18], "x": 18.5, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.5}, + {"matrix": [5, 2], "x": 2.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 3], "x": 3.5, "y": 5.5}, + {"matrix": [5, 5], "x": 4.5, "y": 5.5, "w": 2.5}, + {"matrix": [5, 6], "x": 7, "y": 5.5, "w": 1.25}, + {"matrix": [5, 8], "x": 8.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 9], "x": 9.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 10], "x": 10.75, "y": 5.5}, + {"matrix": [5, 11], "x": 11.75, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 13.25, "y": 5.75}, + {"matrix": [5, 14], "x": 14.25, "y": 5.75}, + {"matrix": [5, 15], "x": 15.25, "y": 5.75}, + {"matrix": [5, 16], "x": 16.5, "y": 5.5}, + {"matrix": [5, 17], "x": 17.5, "y": 5.5}, + {"matrix": [5, 18], "x": 18.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_980c/keymaps/default/keymap.c b/keyboards/cipulot/ec_980c/keymaps/default/keymap.c new file mode 100644 index 00000000000..c60db783528 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, KC_SPC, _______, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + // clang-format on +}; diff --git a/keyboards/cipulot/ec_980c/keymaps/via/keymap.c b/keyboards/cipulot/ec_980c/keymaps/via/keymap.c new file mode 100644 index 00000000000..c60db783528 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, KC_SPC, _______, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + // clang-format on +}; diff --git a/keyboards/cipulot/ec_980c/keymaps/via/rules.mk b/keyboards/cipulot/ec_980c/keymaps/via/rules.mk new file mode 100644 index 00000000000..b870b6349c0 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_ec_indicators.c diff --git a/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c b/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c new file mode 100644 index 00000000000..f885e794357 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c @@ -0,0 +1,499 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 "keyboards/cipulot/common/eeprom_tools.h" +#include "ec_switch_matrix.h" +#include "action.h" +#include "print.h" +#include "via.h" + +#ifdef VIA_ENABLE + +void ec_rescale_values(uint8_t item); +void ec_save_threshold_data(uint8_t option); +void ec_save_bottoming_reading(void); +void ec_show_calibration_data(void); +void ec_clear_bottoming_calibration_data(void); + +// Declaring enums for VIA config menu +enum via_enums { + // clang-format off + id_num_indicator_enabled = 1, + id_num_indicator_brightness = 2, + id_num_indicator_color = 3, + id_caps_indicator_enabled = 4, + id_caps_indicator_brightness = 5, + id_caps_indicator_color = 6, + id_scroll_indicator_enabled = 7, + id_scroll_indicator_brightness = 8, + id_scroll_indicator_color = 9, + id_actuation_mode = 10, + id_mode_0_actuation_threshold = 11, + id_mode_0_release_threshold = 12, + id_save_threshold_data = 13, + id_mode_1_initial_deadzone_offset = 14, + id_mode_1_actuation_offset = 15, + id_mode_1_release_offset = 16, + id_bottoming_calibration = 17, + id_noise_floor_calibration = 18, + id_show_calibration_data = 19, + id_clear_bottoming_calibration_data = 20 + // clang-format on +}; + +// Handle the data received by the keyboard from the VIA menus +void via_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.num.enabled = true; + uprintf("#########################\n"); + uprintf("# Num indicator enabled #\n"); + uprintf("#########################\n"); + } else { + eeprom_ec_config.num.enabled = false; + uprintf("##########################\n"); + uprintf("# Num indicator disabled #\n"); + uprintf("##########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.enabled); + break; + } + case id_num_indicator_brightness: { + eeprom_ec_config.num.v = value_data[0]; + uprintf("Num indicator brightness: %d\n", eeprom_ec_config.num.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.v); + break; + } + case id_num_indicator_color: { + eeprom_ec_config.num.h = value_data[0]; + eeprom_ec_config.num.s = value_data[1]; + uprintf("Num indicator color: %d, %d\n", eeprom_ec_config.num.h, eeprom_ec_config.num.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.s); + break; + } + case id_caps_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.caps.enabled = true; + uprintf("##########################\n"); + uprintf("# Caps indicator enabled #\n"); + uprintf("##########################\n"); + } else { + eeprom_ec_config.caps.enabled = false; + uprintf("###########################\n"); + uprintf("# Caps indicator disabled #\n"); + uprintf("###########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.enabled); + break; + } + case id_caps_indicator_brightness: { + eeprom_ec_config.caps.v = value_data[0]; + uprintf("Caps indicator brightness: %d\n", eeprom_ec_config.caps.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.v); + break; + } + case id_caps_indicator_color: { + eeprom_ec_config.caps.h = value_data[0]; + eeprom_ec_config.caps.s = value_data[1]; + uprintf("Caps indicator color: %d, %d\n", eeprom_ec_config.caps.h, eeprom_ec_config.caps.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.s); + break; + } + case id_scroll_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.scroll.enabled = true; + uprintf("############################\n"); + uprintf("# Scroll indicator enabled #\n"); + uprintf("############################\n"); + } else { + eeprom_ec_config.scroll.enabled = false; + uprintf("#############################\n"); + uprintf("# Scroll indicator disabled #\n"); + uprintf("#############################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.enabled); + break; + } + case id_scroll_indicator_brightness: { + eeprom_ec_config.scroll.v = value_data[0]; + uprintf("Scroll indicator brightness: %d\n", eeprom_ec_config.scroll.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.v); + break; + } + case id_scroll_indicator_color: { + eeprom_ec_config.scroll.h = value_data[0]; + eeprom_ec_config.scroll.s = value_data[1]; + uprintf("Scroll indicator color: %d, %d\n", eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.s); + break; + } + case id_actuation_mode: { + eeprom_ec_config.actuation_mode = value_data[0]; + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + if (ec_config.actuation_mode == 0) { + uprintf("#########################\n"); + uprintf("# Actuation Mode: APC #\n"); + uprintf("#########################\n"); + } else if (ec_config.actuation_mode == 1) { + uprintf("#################################\n"); + uprintf("# Actuation Mode: Rapid Trigger #\n"); + uprintf("#################################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, actuation_mode); + break; + } + case id_mode_0_actuation_threshold: { + ec_config.mode_0_actuation_threshold = value_data[1] | (value_data[0] << 8); + uprintf("APC Mode Actuation Threshold: %d\n", ec_config.mode_0_actuation_threshold); + break; + } + case id_mode_0_release_threshold: { + ec_config.mode_0_release_threshold = value_data[1] | (value_data[0] << 8); + uprintf("APC Mode Release Threshold: %d\n", ec_config.mode_0_release_threshold); + break; + } + case id_mode_1_initial_deadzone_offset: { + ec_config.mode_1_initial_deadzone_offset = value_data[1] | (value_data[0] << 8); + uprintf("Rapid Trigger Mode Initial Deadzone Offset: %d\n", ec_config.mode_1_initial_deadzone_offset); + break; + } + case id_mode_1_actuation_offset: { + ec_config.mode_1_actuation_offset = value_data[0]; + uprintf("Rapid Trigger Mode Actuation Offset: %d\n", ec_config.mode_1_actuation_offset); + break; + } + case id_mode_1_release_offset: { + ec_config.mode_1_release_offset = value_data[0]; + uprintf("Rapid Trigger Mode Release Offset: %d\n", ec_config.mode_1_release_offset); + break; + } + case id_bottoming_calibration: { + if (value_data[0] == 1) { + ec_config.bottoming_calibration = true; + uprintf("##############################\n"); + uprintf("# Bottoming calibration mode #\n"); + uprintf("##############################\n"); + } else { + ec_config.bottoming_calibration = false; + ec_save_bottoming_reading(); + uprintf("## Bottoming calibration done ##\n"); + ec_show_calibration_data(); + } + break; + } + case id_save_threshold_data: { + ec_save_threshold_data(value_data[0]); + break; + } + case id_noise_floor_calibration: { + if (value_data[0] == 0) { + ec_noise_floor(); + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + uprintf("#############################\n"); + uprintf("# Noise floor data acquired #\n"); + uprintf("#############################\n"); + break; + } + } + case id_show_calibration_data: { + if (value_data[0] == 0) { + ec_show_calibration_data(); + break; + } + } + case id_clear_bottoming_calibration_data: { + if (value_data[0] == 0) { + ec_clear_bottoming_calibration_data(); + } + } + default: { + // Unhandled value. + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void via_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + value_data[0] = eeprom_ec_config.num.enabled; + break; + } + case id_num_indicator_brightness: { + value_data[0] = eeprom_ec_config.num.v; + break; + } + case id_num_indicator_color: { + value_data[0] = eeprom_ec_config.num.h; + value_data[1] = eeprom_ec_config.num.s; + break; + } + case id_caps_indicator_enabled: { + value_data[0] = eeprom_ec_config.caps.enabled; + break; + } + case id_caps_indicator_brightness: { + value_data[0] = eeprom_ec_config.caps.v; + break; + } + case id_caps_indicator_color: { + value_data[0] = eeprom_ec_config.caps.h; + value_data[1] = eeprom_ec_config.caps.s; + break; + } + case id_scroll_indicator_enabled: { + value_data[0] = eeprom_ec_config.scroll.enabled; + break; + } + case id_scroll_indicator_brightness: { + value_data[0] = eeprom_ec_config.scroll.v; + break; + } + case id_scroll_indicator_color: { + value_data[0] = eeprom_ec_config.scroll.h; + value_data[1] = eeprom_ec_config.scroll.s; + break; + } + case id_actuation_mode: { + value_data[0] = eeprom_ec_config.actuation_mode; + break; + } + case id_mode_0_actuation_threshold: { + value_data[0] = eeprom_ec_config.mode_0_actuation_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_actuation_threshold & 0xFF; + break; + } + case id_mode_0_release_threshold: { + value_data[0] = eeprom_ec_config.mode_0_release_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_release_threshold & 0xFF; + break; + } + case id_mode_1_initial_deadzone_offset: { + value_data[0] = eeprom_ec_config.mode_1_initial_deadzone_offset >> 8; + value_data[1] = eeprom_ec_config.mode_1_initial_deadzone_offset & 0xFF; + break; + } + case id_mode_1_actuation_offset: { + value_data[0] = eeprom_ec_config.mode_1_actuation_offset; + break; + } + case id_mode_1_release_offset: { + value_data[0] = eeprom_ec_config.mode_1_release_offset; + break; + } + default: { + // Unhandled value. + break; + } + } +} + +// Handle the commands sent and received by the keyboard with VIA +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + via_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + via_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + // Bypass the save function in favor of pinpointed saves + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Rescale the values received by VIA to fit the new range +void ec_rescale_values(uint8_t item) { + switch (item) { + // Rescale the APC mode actuation thresholds + case 0: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the APC mode release thresholds + case 1: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the Rapid Trigger mode initial deadzone offsets + case 2: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + + default: + // Unhandled item. + break; + } +} + +void ec_save_threshold_data(uint8_t option) { + // Save APC mode thresholds and rescale them for runtime usage + if (option == 0) { + eeprom_ec_config.mode_0_actuation_threshold = ec_config.mode_0_actuation_threshold; + eeprom_ec_config.mode_0_release_threshold = ec_config.mode_0_release_threshold; + ec_rescale_values(0); + ec_rescale_values(1); + } + // Save Rapid Trigger mode thresholds and rescale them for runtime usage + else if (option == 1) { + eeprom_ec_config.mode_1_initial_deadzone_offset = ec_config.mode_1_initial_deadzone_offset; + eeprom_ec_config.mode_1_actuation_offset = ec_config.mode_1_actuation_offset; + eeprom_ec_config.mode_1_release_offset = ec_config.mode_1_release_offset; + ec_rescale_values(2); + } + eeconfig_update_kb_datablock(&eeprom_ec_config); + uprintf("####################################\n"); + uprintf("# New thresholds applied and saved #\n"); + uprintf("####################################\n"); +} + +// Save the bottoming reading +void ec_save_bottoming_reading(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + // If the bottom reading doesn't go over the noise floor by BOTTOMING_CALIBRATION_THRESHOLD, it is likely that: + // 1. The key is not actually in the matrix + // 2. The key is on an alternative layout, therefore not being pressed + // 3. The key in in the current layout but not being pressed + if (ec_config.bottoming_reading[row][col] < (ec_config.noise_floor[row][col] + BOTTOMING_CALIBRATION_THRESHOLD)) { + eeprom_ec_config.bottoming_reading[row][col] = 1023; + } else { + eeprom_ec_config.bottoming_reading[row][col] = ec_config.bottoming_reading[row][col]; + } + } + } + // Rescale the values to fit the new range for runtime usage + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + eeconfig_update_kb_datablock(&eeprom_ec_config); +} + +// Show the calibration data +void ec_show_calibration_data(void) { + uprintf("\n###############\n"); + uprintf("# Noise Floor #\n"); + uprintf("###############\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.noise_floor[row][col]); + } + uprintf("%4d\n", ec_config.noise_floor[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################\n"); + uprintf("# Bottoming Readings #\n"); + uprintf("######################\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", eeprom_ec_config.bottoming_reading[row][col]); + } + uprintf("%4d\n", eeprom_ec_config.bottoming_reading[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Actuation Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Actuation Point: %4d\n", ec_config.mode_0_actuation_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_actuation_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_actuation_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Release Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Release Point: %4d\n", ec_config.mode_0_release_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_release_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_release_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n#######################################################\n"); + uprintf("# Rescaled Rapid Trigger Mode Initial Deadzone Offset #\n"); + uprintf("#######################################################\n"); + uprintf("Original Rapid Trigger Mode Initial Deadzone Offset: %4d\n", ec_config.mode_1_initial_deadzone_offset); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_1_initial_deadzone_offset[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Clear the calibration data +void ec_clear_bottoming_calibration_data(void) { + // Clear the EEPROM data + eeconfig_init_kb(); + + // Reset the runtime values to the EEPROM values + keyboard_post_init_kb(); + + uprintf("######################################\n"); + uprintf("# Bottoming calibration data cleared #\n"); + uprintf("######################################\n"); +} + +#endif // VIA_ENABLE diff --git a/keyboards/cipulot/ec_980c/matrix.c b/keyboards/cipulot/ec_980c/matrix.c new file mode 100644 index 00000000000..cfa2efe0506 --- /dev/null +++ b/keyboards/cipulot/ec_980c/matrix.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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 "ec_switch_matrix.h" +#include "matrix.h" + +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +// Custom matrix init function +void matrix_init_custom(void) { + // Initialize EC + ec_init(); + + // Get the noise floor at boot + ec_noise_floor(); +} + +// Custom matrix scan function +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + return updated; +} + +// Bootmagic overriden to avoid conflicts with EC +void bootmagic_scan(void) { + ; +} diff --git a/keyboards/cipulot/ec_980c/mcuconf.h b/keyboards/cipulot/ec_980c/mcuconf.h new file mode 100644 index 00000000000..5f9ecca48dd --- /dev/null +++ b/keyboards/cipulot/ec_980c/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2023 Cipulot + * + * 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 3 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_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/cipulot/ec_980c/readme.md b/keyboards/cipulot/ec_980c/readme.md new file mode 100644 index 00000000000..20be2d4928b --- /dev/null +++ b/keyboards/cipulot/ec_980c/readme.md @@ -0,0 +1,26 @@ +# EC980C + +![EC980C PCB](https://i.imgur.com/KcnLdVFh.png) + +Replacement PCB for the Leopold FC980C. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC980C PCB +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_980c:default + +Flashing example for this keyboard: + + make cipulot/ec_980c:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_980c/rules.mk b/keyboards/cipulot/ec_980c/rules.mk new file mode 100644 index 00000000000..1ff311f102d --- /dev/null +++ b/keyboards/cipulot/ec_980c/rules.mk @@ -0,0 +1,4 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +SRC += matrix.c ec_switch_matrix.c +OPT = 2 From 54c1ae55bfb931a2b095aa97480cb49b3fccfd8f Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 1 May 2024 02:52:34 +0100 Subject: [PATCH 24/41] Align 'qmk lint' argument handling (#23297) --- lib/python/qmk/cli/lint.py | 35 +++++++++++++++-------------------- lib/python/qmk/keyboard.py | 2 ++ 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py index 7ebb0cf9c45..ba0c3f274cf 100644 --- a/lib/python/qmk/cli/lint.py +++ b/lib/python/qmk/cli/lint.py @@ -6,9 +6,9 @@ from milc import cli from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json -from qmk.keyboard import keyboard_completer, list_keyboards +from qmk.keyboard import keyboard_completer, keyboard_folder_or_all, is_all_keyboards, list_keyboards from qmk.keymap import locate_keymap, list_keymaps -from qmk.path import is_keyboard, keyboard +from qmk.path import keyboard from qmk.git import git_get_ignored_files from qmk.c_parse import c_source_files @@ -198,39 +198,34 @@ def keyboard_check(kb): @cli.argument('--strict', action='store_true', help='Treat warnings as errors') -@cli.argument('-kb', '--keyboard', completer=keyboard_completer, help='Comma separated list of keyboards to check') +@cli.argument('-kb', '--keyboard', action='append', type=keyboard_folder_or_all, completer=keyboard_completer, help='Keyboard to check. May be passed multiple times.') @cli.argument('-km', '--keymap', help='The keymap to check') -@cli.argument('--all-kb', action='store_true', arg_only=True, help='Check all keyboards') -@cli.argument('--all-km', action='store_true', arg_only=True, help='Check all keymaps') @cli.subcommand('Check keyboard and keymap for common mistakes.') @automagic_keyboard @automagic_keymap def lint(cli): """Check keyboard and keymap for common mistakes. """ - failed = [] - # Determine our keyboard list - if cli.args.all_kb: - if cli.args.keyboard: - cli.log.warning('Both --all-kb and --keyboard passed, --all-kb takes precedence.') - - keyboard_list = list_keyboards() - elif not cli.config.lint.keyboard: - cli.log.error('Missing required arguments: --keyboard or --all-kb') + if not cli.config.lint.keyboard: + cli.log.error('Missing required arguments: --keyboard') cli.print_help() return False + + if isinstance(cli.config.lint.keyboard, str): + # if provided via config - string not array + keyboard_list = [cli.config.lint.keyboard] + elif is_all_keyboards(cli.args.keyboard[0]): + keyboard_list = list_keyboards() else: - keyboard_list = cli.config.lint.keyboard.split(',') + keyboard_list = cli.config.lint.keyboard + + failed = [] # Lint each keyboard for kb in keyboard_list: - if not is_keyboard(kb): - cli.log.error('No such keyboard: %s', kb) - continue - # Determine keymaps to also check - if cli.args.all_km: + if cli.args.keymap == 'all': keymaps = list_keymaps(kb) elif cli.config.lint.keymap: keymaps = {cli.config.lint.keymap} diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index 0fcc2e868d1..fcf5b5b1588 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py @@ -99,6 +99,8 @@ def find_keyboard_from_dir(): keymap_index = len(current_path.parts) - current_path.parts.index('keymaps') - 1 current_path = current_path.parents[keymap_index] + current_path = resolve_keyboard(current_path) + if qmk.path.is_keyboard(current_path): return str(current_path) From 94e9bb406b5537c093db34dc791ff86eaec6317b Mon Sep 17 00:00:00 2001 From: Simon <68034180+rarepotato8de@users.noreply.github.com> Date: Wed, 1 May 2024 08:31:23 +0200 Subject: [PATCH 25/41] [Keyboard] 3x3macropad (#23594) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- .../rarepotato8de/3x3macropad/3x3macropad.c | 54 ++++++++++++++++ keyboards/rarepotato8de/3x3macropad/info.json | 63 +++++++++++++++++++ .../3x3macropad/keymaps/default/keymap.c | 25 ++++++++ keyboards/rarepotato8de/3x3macropad/readme.md | 28 +++++++++ keyboards/rarepotato8de/3x3macropad/rules.mk | 0 5 files changed, 170 insertions(+) create mode 100644 keyboards/rarepotato8de/3x3macropad/3x3macropad.c create mode 100644 keyboards/rarepotato8de/3x3macropad/info.json create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c create mode 100644 keyboards/rarepotato8de/3x3macropad/readme.md create mode 100644 keyboards/rarepotato8de/3x3macropad/rules.mk diff --git a/keyboards/rarepotato8de/3x3macropad/3x3macropad.c b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c new file mode 100644 index 00000000000..ad7ad642158 --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c @@ -0,0 +1,54 @@ +/* Copyright 2024 RarePotato8DE + * + * 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" + +#ifdef OLED_ENABLE +static void render_bongo1(void) { + static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x1c, 0x0e, 0x03, 0x01, 0x03, 0x07, 0x1c, 0x38, 0x30, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x30, 0x18, 0x18, 0x08, 0x18, 0x98, 0x30, 0x70, 0xf0, 0xb0, 0x18, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x30, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x8e, 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1e, 0x1e, 0x0e, 0x00, 0x10, 0x38, 0x70, 0x70, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x1c, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x87, 0xc7, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + oled_write_raw_P(data, sizeof(data)); +} + +static void render_bongo2(void) { + static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x18, 0x0e, 0x07, 0x03, 0x01, 0x07, 0x0e, 0x1c, 0x30, 0x20, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x70, 0x30, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0x08, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x20, 0x30, 0x30, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe0, 0x38, 0x1c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x0e, 0x04, 0x00, 0x38, 0x30, 0x70, 0x30, 0x70, 0xe0, 0xe0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x70, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x90, 0x00, 0x1f, 0x31, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x03, 0x07, 0x07, 0x00, 0xff, 0xff, 0x00, 0x08, 0x01, 0x38, 0x38, 0x02, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + oled_write_raw_P(data, sizeof(data)); +} + +/* This code switches the shown image on the oled on every 350th call of this function */ +bool showBongo1 = true; +int calls = 0; +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (calls++ > 350) { + showBongo1 = !showBongo1; + calls = 0; + } + if (showBongo1) { + render_bongo1(); + } else { + render_bongo2(); + } + return false; +} +#endif diff --git a/keyboards/rarepotato8de/3x3macropad/info.json b/keyboards/rarepotato8de/3x3macropad/info.json new file mode 100644 index 00000000000..607c6509966 --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/info.json @@ -0,0 +1,63 @@ +{ + "manufacturer": "RarePotato8DE", + "keyboard_name": "3x3macropad", + "maintainer": "RarePotato8DE", + "development_board": "promicro", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "F4", "pin_b": "B1"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "nkro": true, + "oled": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D7", "B3", "B2"], + "rows": ["F7", "B5", "B6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true + }, + "led_count": 6 + }, + "url": "https://github.com/rarepotato8de/3x3macropad", + "usb": { + "device_version": "0.0.1", + "pid": "0x0001", + "vid": "0x5353" + }, + "ws2812": { + "pin": "E6" + }, + "community_layouts": ["ortho_3x3"], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k10", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "k20", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c new file mode 100644 index 00000000000..7f68e145e73 --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +/* Copyright 2024 RarePotato8DE + * + * 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/rarepotato8de/3x3macropad/readme.md b/keyboards/rarepotato8de/3x3macropad/readme.md new file mode 100644 index 00000000000..60a5caa2220 --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/readme.md @@ -0,0 +1,28 @@ +# 3x3macropad + +![3x3macropad](https://i.imgur.com/LMkcKOw.jpg) + +The 3x3macropad is a small macropad with a cool OLED screen and rotary encoder. +It was inspired by stacked FR4 keyboards like the Discipline65. + +* Keyboard Maintainer: [RarePotato8DE](https://github.com/rarepotato8de) +* Hardware Supported: 3x3macropad +* Hardware Availability: [Open source!](https://github.com/rarepotato8de/3x3macropad) + +Make example for this keyboard (after setting up your build environment): + + make rarepotato8de/3x3macropad:default + +Flashing example for this keyboard: + + make rarepotato8de/3x3macropad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (the top left one below the OLED) and plug in the keyboard +* **Physical reset button**: Short the two through hole pins on the back of the PCB (positioned at the rotary encoder) +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/rarepotato8de/3x3macropad/rules.mk b/keyboards/rarepotato8de/3x3macropad/rules.mk new file mode 100644 index 00000000000..e69de29bb2d From c5fb6b4348dc01aa02846bf7b56e1b0a8a11013c Mon Sep 17 00:00:00 2001 From: DavidSannier Date: Wed, 1 May 2024 08:31:53 +0200 Subject: [PATCH 26/41] Refactoring successive press() -> release() calls (#23573) --- tests/basic/test_one_shot_keys.cpp | 50 ++++++------------------------ 1 file changed, 10 insertions(+), 40 deletions(-) diff --git a/tests/basic/test_one_shot_keys.cpp b/tests/basic/test_one_shot_keys.cpp index 9748dad7daf..64a8673a5cd 100644 --- a/tests/basic/test_one_shot_keys.cpp +++ b/tests/basic/test_one_shot_keys.cpp @@ -32,10 +32,7 @@ TEST_F(OneShot, OSMWithoutAdditionalKeypressDoesNothing) { /* Press and release OSM key*/ EXPECT_NO_REPORT(driver); - osm_key.press(); - run_one_scan_loop(); - osm_key.release(); - run_one_scan_loop(); + tap_key(osm_key); VERIFY_AND_CLEAR(driver); /* OSM are added when an actual report is send */ @@ -88,10 +85,7 @@ TEST_P(OneShotParametrizedTestFixture, OSMWithAdditionalKeypress) { /* Press and release OSM */ EXPECT_NO_REPORT(driver); - osm_key.press(); - run_one_scan_loop(); - osm_key.release(); - run_one_scan_loop(); + tap_key(osm_key); VERIFY_AND_CLEAR(driver); /* Press regular key */ @@ -171,18 +165,12 @@ TEST_F(OneShot, OSMChainingTwoOSMs) { /* Press and release OSM1 */ EXPECT_NO_REPORT(driver); - osm_key1.press(); - run_one_scan_loop(); - osm_key1.release(); - run_one_scan_loop(); + tap_key(osm_key1); VERIFY_AND_CLEAR(driver); /* Press and relesea OSM2 */ EXPECT_NO_REPORT(driver); - osm_key2.press(); - run_one_scan_loop(); - osm_key2.release(); - run_one_scan_loop(); + tap_key(osm_key2); VERIFY_AND_CLEAR(driver); /* Press regular key */ @@ -209,22 +197,13 @@ TEST_F(OneShot, OSMDoubleTapNotLockingOSMs) { /* Press and release OSM1 */ EXPECT_NO_REPORT(driver); - osm_key1.press(); - run_one_scan_loop(); - osm_key1.release(); - run_one_scan_loop(); + tap_key(osm_key1); VERIFY_AND_CLEAR(driver); /* Press and release OSM2 twice */ EXPECT_NO_REPORT(driver); - osm_key2.press(); - run_one_scan_loop(); - osm_key2.release(); - run_one_scan_loop(); - osm_key2.press(); - run_one_scan_loop(); - osm_key2.release(); - run_one_scan_loop(); + tap_key(osm_key2); + tap_key(osm_key2); VERIFY_AND_CLEAR(driver); /* Press regular key */ @@ -263,10 +242,7 @@ TEST_F(OneShot, OSMHoldNotLockingOSMs) { /* Press and release OSM1 */ EXPECT_NO_REPORT(driver); - osm_key1.press(); - run_one_scan_loop(); - osm_key1.release(); - run_one_scan_loop(); + tap_key(osm_key1); VERIFY_AND_CLEAR(driver); /* Press and hold OSM2 */ @@ -279,10 +255,7 @@ TEST_F(OneShot, OSMHoldNotLockingOSMs) { /* Press and release regular key */ EXPECT_REPORT(driver, (osm_key1.report_code, osm_key2.report_code, regular_key.report_code)).Times(1); EXPECT_REPORT(driver, (osm_key2.report_code)).Times(1); - regular_key.press(); - run_one_scan_loop(); - regular_key.release(); - run_one_scan_loop(); + tap_key(regular_key); VERIFY_AND_CLEAR(driver); /* Release OSM2 */ @@ -362,10 +335,7 @@ TEST_F(OneShot, OSLWithOsmAndAdditionalKeypress) { /* Press and release OSM */ EXPECT_NO_REPORT(driver); - osm_key.press(); - run_one_scan_loop(); - osm_key.release(); - run_one_scan_loop(); + tap_key(osm_key); EXPECT_TRUE(layer_state_is(1)); VERIFY_AND_CLEAR(driver); From 9289d934b00ad5e522cfefe1a156baa77762dbf2 Mon Sep 17 00:00:00 2001 From: Ivan Gromov <38141348+key10iq@users.noreply.github.com> Date: Wed, 1 May 2024 10:32:35 +0400 Subject: [PATCH 27/41] [Keyboard] Add imi60 (#23570) Co-authored-by: Drashna Jaelre --- keyboards/keyten/imi60/info.json | 92 +++++++++++++++++++ .../keyten/imi60/keymaps/default/keymap.c | 22 +++++ keyboards/keyten/imi60/keymaps/via/keymap.c | 22 +++++ keyboards/keyten/imi60/keymaps/via/rules.mk | 1 + keyboards/keyten/imi60/readme.md | 27 ++++++ keyboards/keyten/imi60/rules.mk | 0 6 files changed, 164 insertions(+) create mode 100644 keyboards/keyten/imi60/info.json create mode 100644 keyboards/keyten/imi60/keymaps/default/keymap.c create mode 100644 keyboards/keyten/imi60/keymaps/via/keymap.c create mode 100644 keyboards/keyten/imi60/keymaps/via/rules.mk create mode 100644 keyboards/keyten/imi60/readme.md create mode 100644 keyboards/keyten/imi60/rules.mk diff --git a/keyboards/keyten/imi60/info.json b/keyboards/keyten/imi60/info.json new file mode 100644 index 00000000000..2ccf8314116 --- /dev/null +++ b/keyboards/keyten/imi60/info.json @@ -0,0 +1,92 @@ +{ + "manufacturer": "keyten", + "keyboard_name": "imi60", + "maintainer": "key10iq", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A15", "A5", "F1", "A6", "F0", "A7", "C15", "B0", "C14", "B1", "C13", "B11", "B4", "B3"], + "rows": ["B10", "B2", "B7", "B6", "B5"] + }, + "processor": "STM32F072", + "usb": { + "device_version": "0.0.1", + "pid": "0x6005", + "vid": "0xEB69" + }, + "community_layouts": ["60_tsangan_hhkb"], + "layouts": { + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [2, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [4, 12], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "w": 1.5, "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4}, + {"matrix": [4, 6], "w": 7, "x": 4, "y": 4}, + {"matrix": [4, 10], "w": 1.5, "x": 11, "y": 4}, + {"matrix": [4, 11], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4} + ] + } + } +} diff --git a/keyboards/keyten/imi60/keymaps/default/keymap.c b/keyboards/keyten/imi60/keymaps/default/keymap.c new file mode 100644 index 00000000000..36859fad550 --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_tsangan_hhkb( + 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/keymaps/via/keymap.c b/keyboards/keyten/imi60/keymaps/via/keymap.c new file mode 100644 index 00000000000..36859fad550 --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_tsangan_hhkb( + 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/keymaps/via/rules.mk b/keyboards/keyten/imi60/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keyten/imi60/readme.md b/keyboards/keyten/imi60/readme.md new file mode 100644 index 00000000000..0d4db774e09 --- /dev/null +++ b/keyboards/keyten/imi60/readme.md @@ -0,0 +1,27 @@ +# keyten imi60 + +imi60 - 60% PCB compatible with keyboards by La-Versa: Animi, Mirimi and Otsukimi + +![imi60](https://i.imgur.com/s37K4wY.png) + +* Keyboard Maintainer: [keyten](https://github.com/key10iq) +* Hardware Supported: keyten imi60 +* Hardware Availability: private GB + +Make example for this keyboard (after setting up your build environment): + + make keyten/imi60:default + +Flashing example for this keyboard: + + make keyten/imi60:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available +* Physical reset button: Hold the button on the back of the PCB diff --git a/keyboards/keyten/imi60/rules.mk b/keyboards/keyten/imi60/rules.mk new file mode 100644 index 00000000000..e69de29bb2d From 8129b73d8a79647ab7e0338ab006c58ecb4a958b Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Wed, 1 May 2024 02:35:39 -0400 Subject: [PATCH 28/41] [Keyboard] add Bruce the keyboard (#23639) --- keyboards/jlw/bruce_the_keyboard/info.json | 68 +++++++++++++++++++ .../keymaps/default/keymap.c | 35 ++++++++++ keyboards/jlw/bruce_the_keyboard/readme.md | 29 ++++++++ keyboards/jlw/bruce_the_keyboard/rules.mk | 1 + 4 files changed, 133 insertions(+) create mode 100644 keyboards/jlw/bruce_the_keyboard/info.json create mode 100644 keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c create mode 100644 keyboards/jlw/bruce_the_keyboard/readme.md create mode 100644 keyboards/jlw/bruce_the_keyboard/rules.mk diff --git a/keyboards/jlw/bruce_the_keyboard/info.json b/keyboards/jlw/bruce_the_keyboard/info.json new file mode 100644 index 00000000000..0405869d408 --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/info.json @@ -0,0 +1,68 @@ +{ + "keyboard_name": "Bruce the Keyboard", + "manufacturer": "jlw", + "url": "https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources", + "maintainer": "jlw", + "usb": { + "vid": "0x1209", + "pid": "0xA459", + "device_version": "3.0.0" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B0", "A7", "A4", "A3", "B7", "B6", "B5", "B4", "B3"], + "rows": ["B11", "B9", "A5", "A6"] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "h":1.75}, + {"matrix": [0, 1], "x": 1, "y": 0, "h":1.5}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0, "h":1.25}, + {"matrix": [0, 4], "x": 4, "y": 0, "h":1.25}, + {"matrix": [0, 5], "x": 5, "y": 0, "h":1.25}, + {"matrix": [0, 6], "x": 6, "y": 0, "h":1.25}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0, "h":1.5}, + {"matrix": [0, 9], "x": 9, "y": 0, "h":1.75}, + + {"matrix": [1, 0], "x": 0, "y": 1.75}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1.5}, + {"matrix": [1, 9], "x": 9, "y": 1.75}, + + {"matrix": [2, 0], "x": 0, "y": 2.75, "h":1.5}, + {"matrix": [2, 1], "x": 1, "y": 2.5, "h":1.75}, + {"matrix": [2, 2], "x": 2, "y": 2, "h":1.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "x": 4, "y": 2.25}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [2, 6], "x": 6, "y": 2.25}, + {"matrix": [2, 7], "x": 7, "y": 2, "h":1.25}, + {"matrix": [2, 8], "x": 8, "y": 2.5, "h":1.75}, + {"matrix": [2, 9], "x": 9, "y": 2.75, "h":1.5}, + + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25, "w": 2}, + {"matrix": [3, 5], "x": 5, "y": 3.25, "w": 2}, + {"matrix": [3, 7], "x": 7, "y": 3.25}, + ] + } + + } +} diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c new file mode 100644 index 00000000000..73ef2e0213c --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), KC_T, KC_G, KC_M, KC_N, RCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + LT(3, KC_TAB), SFT_T(KC_BSPC), LT(1, KC_SPC), LT(2,KC_ENT) + ), + + [1] = LAYOUT( + KC_GRAVE, KC_F2, XXXXXXX, KC_F4, KC_F5, KC_BSLS, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(1), XXXXXXX, _______, _______, KC_SCLN, + _______, _______, _______, _______ + ), + + [2] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [3] = LAYOUT( + XXXXXXX, XXXXXXX, LSG(KC_4),LSG(KC_S),XXXXXXX, KC_HOME, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, + KC_LGUI, KC_LALT, KC_LCTL, KC_LGUI, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/jlw/bruce_the_keyboard/readme.md b/keyboards/jlw/bruce_the_keyboard/readme.md new file mode 100644 index 00000000000..a12624c3705 --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/readme.md @@ -0,0 +1,29 @@ +# Bruce the Keyboard + +Please note that Bruce is a keyboard, not a human. + +Bruce the Keyboard is a column staggered 34-key board created by [jlw](github.com/josh-l-wang) and whydobearsxplod with a single layout. + +![Bruce the Keyboard](https://i.imgur.com/HkbwkK0.jpeg) + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: [Bruce the Keyboard the PCB and the Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/bruce_the_keyboard:default + +Flashing example for this keyboard: + + make jlw/bruce_the_keyboard:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/jlw/bruce_the_keyboard/rules.mk b/keyboards/jlw/bruce_the_keyboard/rules.mk new file mode 100644 index 00000000000..218d8921e51 --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank. From 719c99afa1a5449edee4453cf5b1bf3c8e75e0eb Mon Sep 17 00:00:00 2001 From: Joy Lee Date: Wed, 1 May 2024 14:35:58 +0800 Subject: [PATCH 29/41] [Keyboard] Add skiller_sgk50_s4 keyboard (#23636) Co-authored-by: wb Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- keyboards/sharkoon/skiller_sgk50_s4/config.h | 13 + keyboards/sharkoon/skiller_sgk50_s4/halconf.h | 10 + keyboards/sharkoon/skiller_sgk50_s4/info.json | 356 ++++++++++++++++++ .../skiller_sgk50_s4/keymaps/default/keymap.c | 22 ++ .../skiller_sgk50_s4/keymaps/via/keymap.c | 22 ++ .../skiller_sgk50_s4/keymaps/via/rules.mk | 1 + keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h | 9 + keyboards/sharkoon/skiller_sgk50_s4/readme.md | 24 ++ keyboards/sharkoon/skiller_sgk50_s4/rules.mk | 1 + 9 files changed, 458 insertions(+) create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/config.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/halconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/info.json create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/readme.md create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/rules.mk diff --git a/keyboards/sharkoon/skiller_sgk50_s4/config.h b/keyboards/sharkoon/skiller_sgk50_s4/config.h new file mode 100644 index 00000000000..1d0f8f9a901 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/config.h @@ -0,0 +1,13 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* SPI Config for spi flash*/ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 +#define SPI_MOSI_PAL_MODE 5 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 diff --git a/keyboards/sharkoon/skiller_sgk50_s4/halconf.h b/keyboards/sharkoon/skiller_sgk50_s4/halconf.h new file mode 100644 index 00000000000..9d456a5106f --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/sharkoon/skiller_sgk50_s4/info.json b/keyboards/sharkoon/skiller_sgk50_s4/info.json new file mode 100644 index 00000000000..7d36616e52b --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/info.json @@ -0,0 +1,356 @@ +{ + "manufacturer": "Sharkoon Technologies GmbH", + "keyboard_name": "SKILLER SGK50 S4", + "maintainer": "JoyLee", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "backing_size": 4096, + "driver": "spi_flash" + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "A6", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7"], + "rows": ["A0", "A1", "A2", "A3", "C13"] + }, + "processor": "WB32FQ95", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "default": { + "val": 80 + }, + "driver": "ws2812", + "layout": [ + {"matrix": [4, 6], "x": 103, "y": 64, "flags": 4}, + {"matrix": [4, 10], "x": 172, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 190, "y": 64, "flags": 4}, + {"matrix": [4, 12], "x": 207, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 224, "y": 64, "flags": 4}, + {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4}, + {"matrix": [3, 11], "x": 190, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 172, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 155, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 138, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 121, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 103, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 86, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 34, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 17, "y": 48, "flags": 4}, + {"matrix": [4, 2], "x": 34, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 17, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 17, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 34, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 69, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 103, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 121, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 138, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 155, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 190, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 207, "y": 32, "flags": 4}, + {"matrix": [2, 12], "x": 224, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 207, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 190, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 172, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 155, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 138, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 103, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 86, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 69, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 52, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 34, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 17, "y": 16, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 17, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 34, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 69, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 86, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 103, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 121, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 138, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 155, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 172, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 190, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 207, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 224, "y": 0, "flags": 4} + ], + "max_brightness": 110, + "sleep": true, + "val_steps": 28 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x1020", + "suspend_wakeup_delay": 1000, + "vid": "0x6332" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": ["60_ansi", "60_iso"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c new file mode 100644 index 00000000000..84e72510d79 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + + [1] = 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_DEL, + _______, _______, _______, _______, _______, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, RGB_VAI, + _______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAD, _______, + _______, GU_TOGG, _______, _______, _______, _______, RGB_HUI, RGB_MOD + ) +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c new file mode 100644 index 00000000000..84e72510d79 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + + [1] = 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_DEL, + _______, _______, _______, _______, _______, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, RGB_VAI, + _______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAD, _______, + _______, GU_TOGG, _______, _______, _______, _______, RGB_HUI, RGB_MOD + ) +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h b/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h new file mode 100644 index 00000000000..ae7ee58001a --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE diff --git a/keyboards/sharkoon/skiller_sgk50_s4/readme.md b/keyboards/sharkoon/skiller_sgk50_s4/readme.md new file mode 100644 index 00000000000..db6650546ed --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/readme.md @@ -0,0 +1,24 @@ +# SHARKOON SKILLER SGK50 S4 + +![ISO](https://i.imgur.com/4WDIMm0.png) + +* Keyboard Maintainer: [JoyLee](https://github.com/itarze) +* Hardware Supported: [SHARKOON SKILLER SGK50 S4 PCB](http://www.sharkoon.com/) + +Make example for this keyboard (after setting up your build environment): + + make sharkoon/skiller_sgk50_s4:default + +Flashing example for this keyboard: + + make sharkoon/skiller_sgk50_s4:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/sharkoon/skiller_sgk50_s4/rules.mk b/keyboards/sharkoon/skiller_sgk50_s4/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 8fbdc4564886d03680fb0b7321db34bb043c8cf1 Mon Sep 17 00:00:00 2001 From: Druah <54309603+Druah@users.noreply.github.com> Date: Wed, 1 May 2024 02:42:43 -0400 Subject: [PATCH 30/41] [Keyboard] Add DK Saver Redux (#23510) --- keyboards/druah/dk_saver_redux/info.json | 323 ++++++++++++++++++ .../dk_saver_redux/keymaps/default/keymap.c | 32 ++ .../druah/dk_saver_redux/keymaps/via/keymap.c | 32 ++ .../druah/dk_saver_redux/keymaps/via/rules.mk | 1 + keyboards/druah/dk_saver_redux/readme.md | 27 ++ keyboards/druah/dk_saver_redux/rules.mk | 1 + 6 files changed, 416 insertions(+) create mode 100644 keyboards/druah/dk_saver_redux/info.json create mode 100644 keyboards/druah/dk_saver_redux/keymaps/default/keymap.c create mode 100644 keyboards/druah/dk_saver_redux/keymaps/via/keymap.c create mode 100644 keyboards/druah/dk_saver_redux/keymaps/via/rules.mk create mode 100644 keyboards/druah/dk_saver_redux/readme.md create mode 100644 keyboards/druah/dk_saver_redux/rules.mk diff --git a/keyboards/druah/dk_saver_redux/info.json b/keyboards/druah/dk_saver_redux/info.json new file mode 100644 index 00000000000..6c76e107565 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/info.json @@ -0,0 +1,323 @@ +{ + "manufacturer": "KBDMania", + "keyboard_name": "DK Saver", + "maintainer": "Druah", + "backlight": { + "breathing": true, + "levels": 10, + "pin": "B7" + }, + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "C2", + "scroll_lock": "C1" + }, + "matrix_pins": { + "cols": ["F5", "F6", "F7", "A1", "A2", "B5", "B4", "B3", "B2", "F2", "F1", "F0", "F4", "B1", "C5", "C6", "C0"], + "rows": ["C3", "F3", "B6", "A0", "C7", "C4"] + }, + "processor": "at90usb646", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "url": "https://druah.moe", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x444E" + }, + "community_layouts": ["tkl_f13_ansi", "tkl_f13_ansi_tsangan"], + "layout_aliases": { + "LAYOUT_all": "LAYOUT_tkl_f13_ansi" + }, + "layouts": { + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 7], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c b/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c new file mode 100644 index 00000000000..cf959d606a8 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2024 Druah (@Druah) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + */ + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c b/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c new file mode 100644 index 00000000000..cf959d606a8 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2024 Druah (@Druah) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + */ + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk b/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/druah/dk_saver_redux/readme.md b/keyboards/druah/dk_saver_redux/readme.md new file mode 100644 index 00000000000..0929182b880 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/readme.md @@ -0,0 +1,27 @@ +# DK Saver Redux + +![PCB](https://i.imgur.com/eEw8Yog.png) + +A replacement TKL PCB for the DK Saver keyboard + +* Keyboard Maintainer: [Druah](https://github.com/Druah) +* Hardware Supported: DK Saver Redux +* Hardware Availability: Private buy + +Make example for this keyboard (after setting up your build environment): + + make druah/dk_saver_redux:default + +Flashing example for this keyboard: + + make druah/dk_saver_redux:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the Escape/top left key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB labelled with "RESET" +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/druah/dk_saver_redux/rules.mk b/keyboards/druah/dk_saver_redux/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 0a3c486476ce384bd292d7291d1ac6fd3427e735 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 30 Apr 2024 23:43:43 -0700 Subject: [PATCH 31/41] Epomaker Tide 65: Layout Data Cleanup (#23643) --- keyboards/epomaker/tide65/info.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/epomaker/tide65/info.json b/keyboards/epomaker/tide65/info.json index 2715b923f47..60f1b46f708 100644 --- a/keyboards/epomaker/tide65/info.json +++ b/keyboards/epomaker/tide65/info.json @@ -184,7 +184,7 @@ {"matrix": [1, 11], "x": 11.5, "y": 1}, {"matrix": [1, 12], "x": 12.5, "y": 1}, {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - {"matrix": [1, 14], "x": 15, "y": 1.25}, + {"matrix": [1, 14], "x": 15, "y": 1}, {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, {"matrix": [2, 1], "x": 1.75, "y": 2}, {"matrix": [2, 2], "x": 2.75, "y": 2}, @@ -197,8 +197,8 @@ {"matrix": [2, 9], "x": 9.75, "y": 2}, {"matrix": [2, 10], "x": 10.75, "y": 2}, {"matrix": [2, 11], "x": 11.75, "y": 2}, - {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 1.75}, - {"matrix": [2, 14], "x": 15, "y": 2.25}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, {"matrix": [3, 1], "x": 2.25, "y": 3}, {"matrix": [3, 2], "x": 3.25, "y": 3}, @@ -217,8 +217,8 @@ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, {"matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25}, - {"matrix": [4, 5], "x": 6, "y": 3.75, "w": 1.25}, - {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 1.25, "h": 0.5}, + {"matrix": [4, 4], "x": 6, "y": 4.5, "w": 1.25, "h": 0.5}, {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.75}, {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, From 5f755b982266970ae586ba516c4120c6cc684310 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Wed, 1 May 2024 15:50:53 +0900 Subject: [PATCH 32/41] [Keyboard] Add N87 (#23457) --- keyboards/era/linx3/n87/config.h | 8 + keyboards/era/linx3/n87/info.json | 455 ++++++++++++++++++ .../era/linx3/n87/keymaps/default/keymap.c | 24 + keyboards/era/linx3/n87/keymaps/via/keymap.c | 24 + keyboards/era/linx3/n87/keymaps/via/rules.mk | 1 + keyboards/era/linx3/n87/readme.md | 23 + keyboards/era/linx3/n87/rules.mk | 1 + 7 files changed, 536 insertions(+) create mode 100644 keyboards/era/linx3/n87/config.h create mode 100644 keyboards/era/linx3/n87/info.json create mode 100644 keyboards/era/linx3/n87/keymaps/default/keymap.c create mode 100644 keyboards/era/linx3/n87/keymaps/via/keymap.c create mode 100644 keyboards/era/linx3/n87/keymaps/via/rules.mk create mode 100644 keyboards/era/linx3/n87/readme.md create mode 100644 keyboards/era/linx3/n87/rules.mk diff --git a/keyboards/era/linx3/n87/config.h b/keyboards/era/linx3/n87/config.h new file mode 100644 index 00000000000..8b294dd91b1 --- /dev/null +++ b/keyboards/era/linx3/n87/config.h @@ -0,0 +1,8 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U \ No newline at end of file diff --git a/keyboards/era/linx3/n87/info.json b/keyboards/era/linx3/n87/info.json new file mode 100644 index 00000000000..548a37faddb --- /dev/null +++ b/keyboards/era/linx3/n87/info.json @@ -0,0 +1,455 @@ +{ + "manufacturer": "eerraa", + "keyboard_name": "N87", + "maintainer": "eerraa", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP11", "GP9", "GP5"], + "rows": ["GP3", "GP2", "GP1", "GP0", "GP10", "GP8"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 16], "x": 224, "y": 0, "flags": 4}, + {"matrix": [0, 15], "x": 211, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 198, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 182, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 169, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 156, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 143, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 123, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 97, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 65, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 39, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4}, + {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4}, + {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4}, + {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4}, + {"matrix": [1, 13], "x": 175, "y": 15, "flags": 1}, + {"matrix": [2, 14], "x": 198, "y": 15, "flags": 4}, + {"matrix": [1, 15], "x": 211, "y": 15, "flags": 4}, + {"matrix": [1, 16], "x": 224, "y": 15, "flags": 4}, + {"matrix": [2, 16], "x": 224, "y": 27, "flags": 4}, + {"matrix": [2, 15], "x": 211, "y": 27, "flags": 4}, + {"matrix": [3, 14], "x": 198, "y": 27, "flags": 4}, + {"matrix": [2, 13], "x": 179, "y": 27, "flags": 4}, + {"matrix": [2, 12], "x": 162, "y": 27, "flags": 4}, + {"matrix": [2, 11], "x": 149, "y": 27, "flags": 4}, + {"matrix": [2, 10], "x": 136, "y": 27, "flags": 4}, + {"matrix": [2, 9], "x": 123, "y": 27, "flags": 4}, + {"matrix": [2, 8], "x": 110, "y": 27, "flags": 4}, + {"matrix": [2, 7], "x": 97, "y": 27, "flags": 4}, + {"matrix": [2, 6], "x": 84, "y": 27, "flags": 4}, + {"matrix": [2, 5], "x": 71, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 58, "y": 27, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 27, "flags": 4}, + {"matrix": [2, 1], "x": 19, "y": 27, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1}, + {"matrix": [3, 0], "x": 2, "y": 40, "flags": 1}, + {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4}, + {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4}, + {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4}, + {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4}, + {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4}, + {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4}, + {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4}, + {"matrix": [3, 13], "x": 174, "y": 40, "flags": 1}, + {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1}, + {"matrix": [4, 13], "x": 182, "y": 52, "flags": 4}, + {"matrix": [4, 12], "x": 170, "y": 52, "flags": 1}, + {"matrix": [4, 11], "x": 146, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 133, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 120, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 107, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 94, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 81, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 68, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 55, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4}, + {"matrix": [4, 0], "x": 8, "y": 52, "flags": 1}, + {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1}, + {"x": 57, "y": 64, "flags": 4}, + {"x": 70, "y": 64, "flags": 4}, + {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4}, + {"x": 96, "y": 64, "flags": 4}, + {"x": 109, "y": 64, "flags": 4}, + {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1}, + {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1}, + {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1}, + {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1}, + {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1}, + {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1}, + {"matrix": [5, 16], "x": 224, "y": 64, "flags": 1} + ], + "sleep": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0009", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP4" + }, + "community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12, "y": 0}, + {"matrix": [0, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12, "y": 0}, + {"matrix": [0, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/linx3/n87/keymaps/default/keymap.c b/keyboards/era/linx3/n87/keymaps/default/keymap.c new file mode 100644 index 00000000000..a16e6a21105 --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/linx3/n87/keymaps/via/keymap.c b/keyboards/era/linx3/n87/keymaps/via/keymap.c new file mode 100644 index 00000000000..a16e6a21105 --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/linx3/n87/keymaps/via/rules.mk b/keyboards/era/linx3/n87/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/linx3/n87/readme.md b/keyboards/era/linx3/n87/readme.md new file mode 100644 index 00000000000..ff5b29d3bd1 --- /dev/null +++ b/keyboards/era/linx3/n87/readme.md @@ -0,0 +1,23 @@ +# N87 + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: Syryan & Linx3 +* Hardware availability: [Syryan](https://srind.mysoho.com/) & [Linx3](https://allthatkeyboard.com) + +Make example for this keyboard (after setting up your build environment): + + make era/linx3/n87:default + +Flashing example for this keyboard: + + make era/linx3/n87:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/era/linx3/n87/rules.mk b/keyboards/era/linx3/n87/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/era/linx3/n87/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 1fc4bfa3132d77bf21dbed71f63cdd1a06e04cf2 Mon Sep 17 00:00:00 2001 From: Pavel Kroupa <63880977+Tabonx@users.noreply.github.com> Date: Wed, 1 May 2024 08:53:30 +0200 Subject: [PATCH 33/41] Add MacOS Czech ISO and ANSI keymaps #23346 (#23412) --- .../keycodes_czech_mac_ansi_0.0.1.hjson | 580 ++++++++++++++++++ .../extras/keycodes_czech_mac_iso_0.0.1.hjson | 580 ++++++++++++++++++ docs/reference_keymap_extras.md | 2 + quantum/keymap_extras/keymap_czech_mac_ansi.h | 162 +++++ quantum/keymap_extras/keymap_czech_mac_iso.h | 162 +++++ .../keymap_extras/sendstring_czech_mac_ansi.h | 120 ++++ .../keymap_extras/sendstring_czech_mac_iso.h | 120 ++++ 7 files changed, 1726 insertions(+) create mode 100644 data/constants/keycodes/extras/keycodes_czech_mac_ansi_0.0.1.hjson create mode 100644 data/constants/keycodes/extras/keycodes_czech_mac_iso_0.0.1.hjson create mode 100644 quantum/keymap_extras/keymap_czech_mac_ansi.h create mode 100644 quantum/keymap_extras/keymap_czech_mac_iso.h create mode 100644 quantum/keymap_extras/sendstring_czech_mac_ansi.h create mode 100644 quantum/keymap_extras/sendstring_czech_mac_iso.h diff --git a/data/constants/keycodes/extras/keycodes_czech_mac_ansi_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_czech_mac_ansi_0.0.1.hjson new file mode 100644 index 00000000000..d0eb554126d --- /dev/null +++ b/data/constants/keycodes/extras/keycodes_czech_mac_ansi_0.0.1.hjson @@ -0,0 +1,580 @@ +{ + "aliases": { +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ \ │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ' │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ú │ ) │ ¨ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "KC_GRV": { + "key": "CZ_BSLS", + "label": "\\", + } + "KC_1": { + "key": "CZ_PLUS", + "label": "+", + } + "KC_2": { + "key": "CZ_ECAR", + "label": "ě", + } + "KC_3": { + "key": "CZ_SCAR", + "label": "š", + } + "KC_4": { + "key": "CZ_CCAR", + "label": "č", + } + "KC_5": { + "key": "CZ_RCAR", + "label": "ř", + } + "KC_6": { + "key": "CZ_ZCAR", + "label": "ž", + } + "KC_7": { + "key": "CZ_YACU", + "label": "ý", + } + "KC_8": { + "key": "CZ_AACU", + "label": "á", + } + "KC_9": { + "key": "CZ_IACU", + "label": "í", + } + "KC_0": { + "key": "CZ_EACU", + "label": "é", + } + "KC_MINS": { + "key": "CZ_EQL", + "label": "=", + } + "KC_EQL": { + "key": "CZ_ACUT", + "label": "' (dead)", + } + "KC_Q": { + "key": "CZ_Q", + "label": "Q", + } + "KC_W": { + "key": "CZ_W", + "label": "W", + } + "KC_E": { + "key": "CZ_E", + "label": "E", + } + "KC_R": { + "key": "CZ_R", + "label": "R", + } + "KC_T": { + "key": "CZ_T", + "label": "T", + } + "KC_Y": { + "key": "CZ_Z", + "label": "Z", + } + "KC_U": { + "key": "CZ_U", + "label": "U", + } + "KC_I": { + "key": "CZ_I", + "label": "I", + } + "KC_O": { + "key": "CZ_O", + "label": "O", + } + "KC_P": { + "key": "CZ_P", + "label": "P", + } + "KC_LBRC": { + "key": "CZ_UACU", + "label": "ú", + } + "KC_RBRC": { + "key": "CZ_RPRN", + "label": ")", + } + "KC_NUHS": { + "key": "CZ_DIAE", + "label": "¨ (dead)", + } + "KC_A": { + "key": "CZ_A", + "label": "A", + } + "KC_S": { + "key": "CZ_S", + "label": "S", + } + "KC_D": { + "key": "CZ_D", + "label": "D", + } + "KC_F": { + "key": "CZ_F", + "label": "F", + } + "KC_G": { + "key": "CZ_G", + "label": "G", + } + "KC_H": { + "key": "CZ_H", + "label": "H", + } + "KC_J": { + "key": "CZ_J", + "label": "J", + } + "KC_K": { + "key": "CZ_K", + "label": "K", + } + "KC_L": { + "key": "CZ_L", + "label": "L", + } + "KC_SCLN": { + "key": "CZ_URNG", + "label": "ů", + } + "KC_QUOT": { + "key": "CZ_SECT", + "label": "§", + } + "KC_Z": { + "key": "CZ_Y", + "label": "Y", + } + "KC_X": { + "key": "CZ_X", + "label": "X", + } + "KC_C": { + "key": "CZ_C", + "label": "C", + } + "KC_V": { + "key": "CZ_V", + "label": "V", + } + "KC_B": { + "key": "CZ_B", + "label": "B", + } + "KC_N": { + "key": "CZ_N", + "label": "N", + } + "KC_M": { + "key": "CZ_M", + "label": "M", + } + "KC_COMM": { + "key": "CZ_COMM", + "label": ",", + } + "KC_DOT": { + "key": "CZ_DOT", + "label": ".", + } + "KC_SLSH": { + "key": "CZ_MINS", + "label": "-", + } +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ ` │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ │ │ │ │ │ │ │ │ │ " │ ! │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ │ │ │ │ │ │ │ ? │ : │ _ │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "S(CZ_BSLS)": { + "key": "CZ_PIPE", + "label": "|", + } + "S(CZ_PLUS)": { + "key": "CZ_1", + "label": "1", + } + "S(CZ_ECAR)": { + "key": "CZ_2", + "label": "2", + } + "S(CZ_SCAR)": { + "key": "CZ_3", + "label": "3", + } + "S(CZ_CCAR)": { + "key": "CZ_4", + "label": "4", + } + "S(CZ_RCAR)": { + "key": "CZ_5", + "label": "5", + } + "S(CZ_ZCAR)": { + "key": "CZ_6", + "label": "6", + } + "S(CZ_YACU)": { + "key": "CZ_7", + "label": "7", + } + "S(CZ_AACU)": { + "key": "CZ_8", + "label": "8", + } + "S(CZ_IACU)": { + "key": "CZ_9", + "label": "9", + } + "S(CZ_EACU)": { + "key": "CZ_0", + "label": "0", + } + "S(CZ_EQL)": { + "key": "CZ_PERC", + "label": "%", + } + "S(CZ_ACUT)": { + "key": "CZ_CARN", + "label": "ˇ (dead)", + } + "S(CZ_UACU)": { + "key": "CZ_SLSH", + "label": "/", + } + "S(CZ_RPRN)": { + "key": "CZ_LPRN", + "label": "(", + } + "S(CZ_DIAE)": { + "key": "CZ_GRV", + "label": "`", + } + "S(CZ_URNG)": { + "key": "CZ_DQUO", + "label": "\"", + } + "S(CZ_SECT)": { + "key": "CZ_EXLM", + "label": "!", + } + "S(CZ_COMM)": { + "key": "CZ_QUES", + "label": "?", + } + "S(CZ_DOT)": { + "key": "CZ_COLN", + "label": ":", + } + "S(CZ_MINS)": { + "key": "CZ_UNDS", + "label": "_", + } +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ │ @ │ # │ $ │ ~ │ ^ │ & │ * │ { │ } │ ° │ ^ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ ė │ ę │ € │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ ą │ ß │ ∂ │ │ │ ‘ │ ’ │ │ ł │ ; │ ' │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ │ │ │ │ │ ‚ │ │ < │ > │ – │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "A(CZ_ECAR)": { + "key": "CZ_AT", + "label": "@", + } + "A(CZ_SCAR)": { + "key": "CZ_HASH", + "label": "#", + } + "A(CZ_CCAR)": { + "key": "CZ_DLR", + "label": "$", + } + "A(CZ_RCAR)": { + "key": "CZ_TILD", + "label": "~", + } + "A(CZ_ZCAR)": { + "key": "CZ_CIRC", + "label": "^", + } + "A(CZ_YACU)": { + "key": "CZ_AMPR", + "label": "&", + } + "A(CZ_AACU)": { + "key": "CZ_ASTR", + "label": "*", + } + "A(CZ_IACU)": { + "key": "CZ_LCBR", + "label": "{", + } + "A(CZ_EACU)": { + "key": "CZ_RCBR", + "label": "}", + } + "A(CZ_EQL)": { + "key": "CZ_RNGA", + "label": "° (dead)", + } + "A(CZ_ACUT)": { + "key": "CZ_DCIR", + "label": "^ (dead)", + } + "A(CZ_W)": { + "key": "CZ_LEDT", + "label": "ė", + } + "A(CZ_E)": { + "key": "CZ_LEOG", + "label": "ę", + } + "A(CZ_R)": { + "key": "CZ_EURO", + "label": "€", + } + "A(CZ_Z)": { + "key": "CZ_LZDT", + "label": "ż", + } + "A(CZ_UACU)": { + "key": "CZ_LBRC", + "label": "[", + } + "A(CZ_RPRN)": { + "key": "CZ_RBRC", + "label": "]", + } + "A(CZ_A)": { + "key": "CZ_LAOG", + "label": "ą", + } + "A(CZ_S)": { + "key": "CZ_SS", + "label": "ß", + } + "A(CZ_D)": { + "key": "CZ_PDIF", + "label": "∂", + } + "A(CZ_H)": { + "key": "CZ_LSQU", + "label": "‘", + } + "A(CZ_J)": { + "key": "CZ_RSQU", + "label": "’", + } + "A(CZ_L)": { + "key": "CZ_LLST", + "label": "ł", + } + "A(CZ_URNG)": { + "key": "CZ_SCLN", + "label": ";", + } + "A(CZ_SECT)": { + "key": "CZ_QUOT", + "label": "'", + } + "A(CZ_N)": { + "key": "CZ_SLQU", + "label": "‚", + } + "A(CZ_COMM)": { + "key": "CZ_LABK", + "label": "<", + } + "A(CZ_DOT)": { + "key": "CZ_RABK", + "label": ">", + } + "A(CZ_MINS)": { + "key": "CZ_NDSH", + "label": "–", + } +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ ¬ │ • │ ≠ │ £ │ ◊ │ † │ ¶ │ ÷ │ « │ » │ , │ - │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ Ė │ Ę │ ® │ ™ │ Ż │ │ │ │ │ ‹ │ › │ " │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ Ą │ ∑ │ ∆ │ │ │ “ │ ” │ │ Ł │ … │ ~ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ │ │ © │ √ │ │ „ │ │ ≤ │ ≥ │ — │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "S(A(CZ_1))": { + "key": "CZ_NOT", + "label": "¬", + } + "S(A(CZ_2))": { + "key": "CZ_BULT", + "label": "•", + } + "S(A(CZ_3))": { + "key": "CZ_NEQL", + "label": "≠", + } + "S(A(CZ_4))": { + "key": "CZ_PND", + "label": "£", + } + "S(A(CZ_5))": { + "key": "CZ_LOZN", + "label": "◊", + } + "S(A(CZ_6))": { + "key": "CZ_DAGG", + "label": "†", + } + "S(A(CZ_7))": { + "key": "CZ_PARA", + "label": "¶", + } + "S(A(CZ_8))": { + "key": "CZ_DIV", + "label": "÷", + } + "S(A(CZ_9))": { + "key": "CZ_LDAQ", + "label": "«", + } + "S(A(CZ_0))": { + "key": "CZ_RDAQ", + "label": "»", + } + "S(A(CZ_EQL))": { + "key": "CZ_DCOM", + "label": ", (dead)", + } + "S(A(CZ_ACUT))": { + "key": "CZ_DHPN", + "label": "- (dead)", + } + "S(A(CZ_W))": { + "key": "CZ_CEDT", + "label": "Ė", + } + "S(A(CZ_E))": { + "key": "CZ_CEOG", + "label": "Ę", + } + "S(A(CZ_R))": { + "key": "CZ_REGD", + "label": "®", + } + "S(A(CZ_T))": { + "key": "CZ_TM", + "label": "™", + } + "S(A(CZ_Z))": { + "key": "CZ_CZDT", + "label": "Ż", + } + "S(A(CZ_UACU))": { + "key": "CZ_LSAQ", + "label": "‹", + } + "S(A(CZ_RPRN))": { + "key": "CZ_RSAQ", + "label": "›", + } + "S(A(CZ_DIAE))": { + "key": "CZ_DDQT", + "label": "\" (dead)", + } + "S(A(CZ_A))": { + "key": "CZ_CAOG", + "label": "Ą", + } + "S(A(CZ_S))": { + "key": "CZ_NARS", + "label": "∑", + } + "S(A(CZ_D))": { + "key": "CZ_INCR", + "label": "∆", + } + "S(A(CZ_H))": { + "key": "CZ_LDQU", + "label": "“", + } + "S(A(CZ_J))": { + "key": "CZ_RDQU", + "label": "”", + } + "S(A(CZ_L))": { + "key": "CZ_CLST", + "label": "Ł", + } + "S(A(CZ_URNG))": { + "key": "CZ_ELLP", + "label": "…", + } + "S(A(CZ_SECT))": { + "key": "CZ_DTIL", + "label": "~ (dead)", + } + "S(A(CZ_C))": { + "key": "CZ_COPY", + "label": "©", + } + "S(A(CZ_V))": { + "key": "CZ_SQRT", + "label": "√", + } + "S(A(CZ_N))": { + "key": "CZ_DLQU", + "label": "„", + } + "S(A(CZ_COMM))": { + "key": "CZ_LEQL", + "label": "≤", + } + "S(A(CZ_DOT))": { + "key": "CZ_GEQL", + "label": "≥", + } + "S(A(CZ_MINS))": { + "key": "CZ_MDSH", + "label": "—", + } + } +} diff --git a/data/constants/keycodes/extras/keycodes_czech_mac_iso_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_czech_mac_iso_0.0.1.hjson new file mode 100644 index 00000000000..5158ea16d8d --- /dev/null +++ b/data/constants/keycodes/extras/keycodes_czech_mac_iso_0.0.1.hjson @@ -0,0 +1,580 @@ +{ + "aliases": { +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ' │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "KC_1": { + "key": "CZ_PLUS", + "label": "+", + } + "KC_2": { + "key": "CZ_ECAR", + "label": "ě", + } + "KC_3": { + "key": "CZ_SCAR", + "label": "š", + } + "KC_4": { + "key": "CZ_CCAR", + "label": "č", + } + "KC_5": { + "key": "CZ_RCAR", + "label": "ř", + } + "KC_6": { + "key": "CZ_ZCAR", + "label": "ž", + } + "KC_7": { + "key": "CZ_YACU", + "label": "ý", + } + "KC_8": { + "key": "CZ_AACU", + "label": "á", + } + "KC_9": { + "key": "CZ_IACU", + "label": "í", + } + "KC_0": { + "key": "CZ_EACU", + "label": "é", + } + "KC_MINS": { + "key": "CZ_EQL", + "label": "=", + } + "KC_EQL": { + "key": "CZ_ACUT", + "label": "' (dead)", + } + "KC_Q": { + "key": "CZ_Q", + "label": "Q", + } + "KC_W": { + "key": "CZ_W", + "label": "W", + } + "KC_E": { + "key": "CZ_E", + "label": "E", + } + "KC_R": { + "key": "CZ_R", + "label": "R", + } + "KC_T": { + "key": "CZ_T", + "label": "T", + } + "KC_Y": { + "key": "CZ_Z", + "label": "Z", + } + "KC_U": { + "key": "CZ_U", + "label": "U", + } + "KC_I": { + "key": "CZ_I", + "label": "I", + } + "KC_O": { + "key": "CZ_O", + "label": "O", + } + "KC_P": { + "key": "CZ_P", + "label": "P", + } + "KC_LBRC": { + "key": "CZ_UACU", + "label": "ú", + } + "KC_RBRC": { + "key": "CZ_RPRN", + "label": ")", + } + "KC_A": { + "key": "CZ_A", + "label": "A", + } + "KC_S": { + "key": "CZ_S", + "label": "S", + } + "KC_D": { + "key": "CZ_D", + "label": "D", + } + "KC_F": { + "key": "CZ_F", + "label": "F", + } + "KC_G": { + "key": "CZ_G", + "label": "G", + } + "KC_H": { + "key": "CZ_H", + "label": "H", + } + "KC_J": { + "key": "CZ_J", + "label": "J", + } + "KC_K": { + "key": "CZ_K", + "label": "K", + } + "KC_L": { + "key": "CZ_L", + "label": "L", + } + "KC_SCLN": { + "key": "CZ_URNG", + "label": "ů", + } + "KC_QUOT": { + "key": "CZ_SECT", + "label": "§", + } + "KC_NUHS": { + "key": "CZ_DIAE", + "label": "¨ (dead)", + } + "KC_NUBS": { + "key": "CZ_BSLS", + "label": "\\", + } + "KC_Z": { + "key": "CZ_Y", + "label": "Y", + } + "KC_X": { + "key": "CZ_X", + "label": "X", + } + "KC_C": { + "key": "CZ_C", + "label": "C", + } + "KC_V": { + "key": "CZ_V", + "label": "V", + } + "KC_B": { + "key": "CZ_B", + "label": "B", + } + "KC_N": { + "key": "CZ_N", + "label": "N", + } + "KC_M": { + "key": "CZ_M", + "label": "M", + } + "KC_COMM": { + "key": "CZ_COMM", + "label": ",", + } + "KC_DOT": { + "key": "CZ_DOT", + "label": ".", + } + "KC_SLSH": { + "key": "CZ_MINS", + "label": "-", + } +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ` │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ | │ │ │ │ │ │ │ │ ? │ : │ _ │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "S(CZ_PLUS)": { + "key": "CZ_1", + "label": "1", + } + "S(CZ_ECAR)": { + "key": "CZ_2", + "label": "2", + } + "S(CZ_SCAR)": { + "key": "CZ_3", + "label": "3", + } + "S(CZ_CCAR)": { + "key": "CZ_4", + "label": "4", + } + "S(CZ_RCAR)": { + "key": "CZ_5", + "label": "5", + } + "S(CZ_ZCAR)": { + "key": "CZ_6", + "label": "6", + } + "S(CZ_YACU)": { + "key": "CZ_7", + "label": "7", + } + "S(CZ_AACU)": { + "key": "CZ_8", + "label": "8", + } + "S(CZ_IACU)": { + "key": "CZ_9", + "label": "9", + } + "S(CZ_EACU)": { + "key": "CZ_0", + "label": "0", + } + "S(CZ_EQL)": { + "key": "CZ_PERC", + "label": "%", + } + "S(CZ_ACUT)": { + "key": "CZ_CARN", + "label": "ˇ (dead)", + } + "S(CZ_UACU)": { + "key": "CZ_SLSH", + "label": "/", + } + "S(CZ_RPRN)": { + "key": "CZ_LPRN", + "label": "(", + } + "S(CZ_URNG)": { + "key": "CZ_DQUO", + "label": "\"", + } + "S(CZ_SECT)": { + "key": "CZ_EXLM", + "label": "!", + } + "S(CZ_DIAE)": { + "key": "CZ_GRV", + "label": "`", + } + "S(CZ_BSLS)": { + "key": "CZ_PIPE", + "label": "|", + } + "S(CZ_COMM)": { + "key": "CZ_QUES", + "label": "?", + } + "S(CZ_DOT)": { + "key": "CZ_COLN", + "label": ":", + } + "S(CZ_MINS)": { + "key": "CZ_UNDS", + "label": "_", + } +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ │ @ │ # │ $ │ ~ │ ^ │ & │ * │ { │ } │ ° │ ^ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ ė │ ę │ € │ │ ż │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ą │ ß │ ∂ │ │ │ ‘ │ ’ │ │ ł │ ; │ ' │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ │ │ │ │ │ │ ‚ │ │ < │ > │ – │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "A(CZ_ECAR)": { + "key": "CZ_AT", + "label": "@", + } + "A(CZ_SCAR)": { + "key": "CZ_HASH", + "label": "#", + } + "A(CZ_CCAR)": { + "key": "CZ_DLR", + "label": "$", + } + "A(CZ_RCAR)": { + "key": "CZ_TILD", + "label": "~", + } + "A(CZ_ZCAR)": { + "key": "CZ_CIRC", + "label": "^", + } + "A(CZ_YACU)": { + "key": "CZ_AMPR", + "label": "&", + } + "A(CZ_AACU)": { + "key": "CZ_ASTR", + "label": "*", + } + "A(CZ_IACU)": { + "key": "CZ_LCBR", + "label": "{", + } + "A(CZ_EACU)": { + "key": "CZ_RCBR", + "label": "}", + } + "A(CZ_EQL)": { + "key": "CZ_RNGA", + "label": "° (dead)", + } + "A(CZ_ACUT)": { + "key": "CZ_DCIR", + "label": "^ (dead)", + } + "A(CZ_W)": { + "key": "CZ_LEDT", + "label": "ė", + } + "A(CZ_E)": { + "key": "CZ_LEOG", + "label": "ę", + } + "A(CZ_R)": { + "key": "CZ_EURO", + "label": "€", + } + "A(CZ_Z)": { + "key": "CZ_LZDT", + "label": "ż", + } + "A(CZ_UACU)": { + "key": "CZ_LBRC", + "label": "[", + } + "A(CZ_RPRN)": { + "key": "CZ_RBRC", + "label": "]", + } + "A(CZ_A)": { + "key": "CZ_LAOG", + "label": "ą", + } + "A(CZ_S)": { + "key": "CZ_SS", + "label": "ß", + } + "A(CZ_D)": { + "key": "CZ_PDIF", + "label": "∂", + } + "A(CZ_H)": { + "key": "CZ_LSQU", + "label": "‘", + } + "A(CZ_J)": { + "key": "CZ_RSQU", + "label": "’", + } + "A(CZ_L)": { + "key": "CZ_LLST", + "label": "ł", + } + "A(CZ_URNG)": { + "key": "CZ_SCLN", + "label": ";", + } + "A(CZ_SECT)": { + "key": "CZ_QUOT", + "label": "'", + } + "A(CZ_N)": { + "key": "CZ_SLQU", + "label": "‚", + } + "A(CZ_COMM)": { + "key": "CZ_LABK", + "label": "<", + } + "A(CZ_DOT)": { + "key": "CZ_RABK", + "label": ">", + } + "A(CZ_MINS)": { + "key": "CZ_NDSH", + "label": "–", + } +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ ¬ │ • │ ≠ │ £ │ ◊ │ † │ ¶ │ ÷ │ « │ » │ , │ - │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ Ė │ Ę │ ® │ ™ │ Ż │ │ │ │ │ ‹ │ › │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Ą │ ∑ │ ∆ │ │ │ “ │ ” │ │ Ł │ … │ ~ │ " │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ │ │ │ © │ √ │ │ „ │ │ ≤ │ ≥ │ — │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ + "S(A(CZ_1))": { + "key": "CZ_NOT", + "label": "¬", + } + "S(A(CZ_2))": { + "key": "CZ_BULT", + "label": "•", + } + "S(A(CZ_3))": { + "key": "CZ_NEQL", + "label": "≠", + } + "S(A(CZ_4))": { + "key": "CZ_PND", + "label": "£", + } + "S(A(CZ_5))": { + "key": "CZ_LOZN", + "label": "◊", + } + "S(A(CZ_6))": { + "key": "CZ_DAGG", + "label": "†", + } + "S(A(CZ_7))": { + "key": "CZ_PARA", + "label": "¶", + } + "S(A(CZ_8))": { + "key": "CZ_DIV", + "label": "÷", + } + "S(A(CZ_9))": { + "key": "CZ_LDAQ", + "label": "«", + } + "S(A(CZ_0))": { + "key": "CZ_RDAQ", + "label": "»", + } + "S(A(CZ_EQL))": { + "key": "CZ_DCOM", + "label": ", (dead)", + } + "S(A(CZ_ACUT))": { + "key": "CZ_DHPN", + "label": "- (dead)", + } + "S(A(CZ_W))": { + "key": "CZ_CEDT", + "label": "Ė", + } + "S(A(CZ_E))": { + "key": "CZ_CEOG", + "label": "Ę", + } + "S(A(CZ_R))": { + "key": "CZ_REGD", + "label": "®", + } + "S(A(CZ_T))": { + "key": "CZ_TM", + "label": "™", + } + "S(A(CZ_Z))": { + "key": "CZ_CZDT", + "label": "Ż", + } + "S(A(CZ_UACU))": { + "key": "CZ_LSAQ", + "label": "‹", + } + "S(A(CZ_RPRN))": { + "key": "CZ_RSAQ", + "label": "›", + } + "S(A(CZ_A))": { + "key": "CZ_CAOG", + "label": "Ą", + } + "S(A(CZ_S))": { + "key": "CZ_NARS", + "label": "∑", + } + "S(A(CZ_D))": { + "key": "CZ_INCR", + "label": "∆", + } + "S(A(CZ_H))": { + "key": "CZ_LDQU", + "label": "“", + } + "S(A(CZ_J))": { + "key": "CZ_RDQU", + "label": "”", + } + "S(A(CZ_L))": { + "key": "CZ_CLST", + "label": "Ł", + } + "S(A(CZ_URNG))": { + "key": "CZ_ELLP", + "label": "…", + } + "S(A(CZ_SECT))": { + "key": "CZ_DTIL", + "label": "~ (dead)", + } + "S(A(CZ_DIAE))": { + "key": "CZ_DDQT", + "label": "\" (dead)", + } + "S(A(CZ_C))": { + "key": "CZ_COPY", + "label": "©", + } + "S(A(CZ_V))": { + "key": "CZ_SQRT", + "label": "√", + } + "S(A(CZ_N))": { + "key": "CZ_DLQU", + "label": "„", + } + "S(A(CZ_COMM))": { + "key": "CZ_LEQL", + "label": "≤", + } + "S(A(CZ_DOT))": { + "key": "CZ_GEQL", + "label": "≥", + } + "S(A(CZ_MINS))": { + "key": "CZ_MDSH", + "label": "—", + } + } +} diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md index cf2ab288761..191e0d4ea8d 100644 --- a/docs/reference_keymap_extras.md +++ b/docs/reference_keymap_extras.md @@ -23,6 +23,8 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q |Canadian Multilingual (CSA) |`keymap_canadian_multilingual.h` |`sendstring_canadian_multilingual.h`| |Croatian |`keymap_croatian.h` |`sendstring_croatian.h` | |Czech |`keymap_czech.h` |`sendstring_czech.h` | +|Czech (macOS, ANSI) |`keymap_czech_mac_ansi.h` |`sendstring_czech_mac_ansi.h` | +|Czech (macOS, ISO) |`keymap_czech_mac_iso.h` |`sendstring_czech_mac_iso.h` | |Danish |`keymap_danish.h` |`sendstring_danish.h` | |Dutch (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` | |English (Ireland) |`keymap_irish.h` | | diff --git a/quantum/keymap_extras/keymap_czech_mac_ansi.h b/quantum/keymap_extras/keymap_czech_mac_ansi.h new file mode 100644 index 00000000000..ac2f078d980 --- /dev/null +++ b/quantum/keymap_extras/keymap_czech_mac_ansi.h @@ -0,0 +1,162 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +/******************************************************************************* + 88888888888 888 d8b .d888 d8b 888 d8b + 888 888 Y8P d88P" Y8P 888 Y8P + 888 888 888 888 + 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b + 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K + 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b. + 888 888 888 888 X88 888 888 888 Y8b. 888 X88 + 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P' + 888 888 + 888 888 + 888 888 + .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888 + d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888 + 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888 + Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888 + "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888 + 888 + Y8b d88P + "Y88P" +*******************************************************************************/ + +#pragma once +#include "keycodes.h" +// clang-format off + +// Aliases +#define CZ_BSLS KC_GRV // (backslash) +#define CZ_PLUS KC_1 // + +#define CZ_ECAR KC_2 // ě +#define CZ_SCAR KC_3 // š +#define CZ_CCAR KC_4 // č +#define CZ_RCAR KC_5 // ř +#define CZ_ZCAR KC_6 // ž +#define CZ_YACU KC_7 // ý +#define CZ_AACU KC_8 // á +#define CZ_IACU KC_9 // í +#define CZ_EACU KC_0 // é +#define CZ_EQL KC_MINS // = +#define CZ_ACUT KC_EQL // ' (dead) +#define CZ_Q KC_Q // Q +#define CZ_W KC_W // W +#define CZ_E KC_E // E +#define CZ_R KC_R // R +#define CZ_T KC_T // T +#define CZ_Z KC_Y // Z +#define CZ_U KC_U // U +#define CZ_I KC_I // I +#define CZ_O KC_O // O +#define CZ_P KC_P // P +#define CZ_UACU KC_LBRC // ú +#define CZ_RPRN KC_RBRC // ) +#define CZ_DIAE KC_NUHS // ¨ (dead) +#define CZ_A KC_A // A +#define CZ_S KC_S // S +#define CZ_D KC_D // D +#define CZ_F KC_F // F +#define CZ_G KC_G // G +#define CZ_H KC_H // H +#define CZ_J KC_J // J +#define CZ_K KC_K // K +#define CZ_L KC_L // L +#define CZ_URNG KC_SCLN // ů +#define CZ_SECT KC_QUOT // § +#define CZ_Y KC_Z // Y +#define CZ_X KC_X // X +#define CZ_C KC_C // C +#define CZ_V KC_V // V +#define CZ_B KC_B // B +#define CZ_N KC_N // N +#define CZ_M KC_M // M +#define CZ_COMM KC_COMM // , +#define CZ_DOT KC_DOT // . +#define CZ_MINS KC_SLSH // - +#define CZ_PIPE S(CZ_BSLS) // | +#define CZ_1 S(CZ_PLUS) // 1 +#define CZ_2 S(CZ_ECAR) // 2 +#define CZ_3 S(CZ_SCAR) // 3 +#define CZ_4 S(CZ_CCAR) // 4 +#define CZ_5 S(CZ_RCAR) // 5 +#define CZ_6 S(CZ_ZCAR) // 6 +#define CZ_7 S(CZ_YACU) // 7 +#define CZ_8 S(CZ_AACU) // 8 +#define CZ_9 S(CZ_IACU) // 9 +#define CZ_0 S(CZ_EACU) // 0 +#define CZ_PERC S(CZ_EQL) // % +#define CZ_CARN S(CZ_ACUT) // ˇ (dead) +#define CZ_SLSH S(CZ_UACU) // / +#define CZ_LPRN S(CZ_RPRN) // ( +#define CZ_GRV S(CZ_DIAE) // ` +#define CZ_DQUO S(CZ_URNG) // " +#define CZ_EXLM S(CZ_SECT) // ! +#define CZ_QUES S(CZ_COMM) // ? +#define CZ_COLN S(CZ_DOT) // : +#define CZ_UNDS S(CZ_MINS) // _ +#define CZ_AT A(CZ_ECAR) // @ +#define CZ_HASH A(CZ_SCAR) // # +#define CZ_DLR A(CZ_CCAR) // $ +#define CZ_TILD A(CZ_RCAR) // ~ +#define CZ_CIRC A(CZ_ZCAR) // ^ +#define CZ_AMPR A(CZ_YACU) // & +#define CZ_ASTR A(CZ_AACU) // * +#define CZ_LCBR A(CZ_IACU) // { +#define CZ_RCBR A(CZ_EACU) // } +#define CZ_RNGA A(CZ_EQL) // ° (dead) +#define CZ_DCIR A(CZ_ACUT) // ^ (dead) +#define CZ_LEDT A(CZ_W) // ė +#define CZ_LEOG A(CZ_E) // ę +#define CZ_EURO A(CZ_R) // € +#define CZ_LZDT A(CZ_Z) // ż +#define CZ_LBRC A(CZ_UACU) // [ +#define CZ_RBRC A(CZ_RPRN) // ] +#define CZ_LAOG A(CZ_A) // ą +#define CZ_SS A(CZ_S) // ß +#define CZ_PDIF A(CZ_D) // ∂ +#define CZ_LSQU A(CZ_H) // ‘ +#define CZ_RSQU A(CZ_J) // ’ +#define CZ_LLST A(CZ_L) // ł +#define CZ_SCLN A(CZ_URNG) // ; +#define CZ_QUOT A(CZ_SECT) // ' +#define CZ_SLQU A(CZ_N) // ‚ +#define CZ_LABK A(CZ_COMM) // < +#define CZ_RABK A(CZ_DOT) // > +#define CZ_NDSH A(CZ_MINS) // – +#define CZ_NOT S(A(CZ_1)) // ¬ +#define CZ_BULT S(A(CZ_2)) // • +#define CZ_NEQL S(A(CZ_3)) // ≠ +#define CZ_PND S(A(CZ_4)) // £ +#define CZ_LOZN S(A(CZ_5)) // ◊ +#define CZ_DAGG S(A(CZ_6)) // † +#define CZ_PARA S(A(CZ_7)) // ¶ +#define CZ_DIV S(A(CZ_8)) // ÷ +#define CZ_LDAQ S(A(CZ_9)) // « +#define CZ_RDAQ S(A(CZ_0)) // » +#define CZ_DCOM S(A(CZ_EQL)) // , (dead) +#define CZ_DHPN S(A(CZ_ACUT)) // - (dead) +#define CZ_CEDT S(A(CZ_W)) // Ė +#define CZ_CEOG S(A(CZ_E)) // Ę +#define CZ_REGD S(A(CZ_R)) // ® +#define CZ_TM S(A(CZ_T)) // ™ +#define CZ_CZDT S(A(CZ_Z)) // Ż +#define CZ_LSAQ S(A(CZ_UACU)) // ‹ +#define CZ_RSAQ S(A(CZ_RPRN)) // › +#define CZ_DDQT S(A(CZ_DIAE)) // " (dead) +#define CZ_CAOG S(A(CZ_A)) // Ą +#define CZ_NARS S(A(CZ_S)) // ∑ +#define CZ_INCR S(A(CZ_D)) // ∆ +#define CZ_LDQU S(A(CZ_H)) // “ +#define CZ_RDQU S(A(CZ_J)) // ” +#define CZ_CLST S(A(CZ_L)) // Ł +#define CZ_ELLP S(A(CZ_URNG)) // … +#define CZ_DTIL S(A(CZ_SECT)) // ~ (dead) +#define CZ_COPY S(A(CZ_C)) // © +#define CZ_SQRT S(A(CZ_V)) // √ +#define CZ_DLQU S(A(CZ_N)) // „ +#define CZ_LEQL S(A(CZ_COMM)) // ≤ +#define CZ_GEQL S(A(CZ_DOT)) // ≥ +#define CZ_MDSH S(A(CZ_MINS)) // — + diff --git a/quantum/keymap_extras/keymap_czech_mac_iso.h b/quantum/keymap_extras/keymap_czech_mac_iso.h new file mode 100644 index 00000000000..4b56e15df13 --- /dev/null +++ b/quantum/keymap_extras/keymap_czech_mac_iso.h @@ -0,0 +1,162 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +/******************************************************************************* + 88888888888 888 d8b .d888 d8b 888 d8b + 888 888 Y8P d88P" Y8P 888 Y8P + 888 888 888 888 + 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b + 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K + 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b. + 888 888 888 888 X88 888 888 888 Y8b. 888 X88 + 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P' + 888 888 + 888 888 + 888 888 + .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888 + d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888 + 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888 + Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888 + "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888 + 888 + Y8b d88P + "Y88P" +*******************************************************************************/ + +#pragma once +#include "keycodes.h" +// clang-format off + +// Aliases +#define CZ_PLUS KC_1 // + +#define CZ_ECAR KC_2 // ě +#define CZ_SCAR KC_3 // š +#define CZ_CCAR KC_4 // č +#define CZ_RCAR KC_5 // ř +#define CZ_ZCAR KC_6 // ž +#define CZ_YACU KC_7 // ý +#define CZ_AACU KC_8 // á +#define CZ_IACU KC_9 // í +#define CZ_EACU KC_0 // é +#define CZ_EQL KC_MINS // = +#define CZ_ACUT KC_EQL // ' (dead) +#define CZ_Q KC_Q // Q +#define CZ_W KC_W // W +#define CZ_E KC_E // E +#define CZ_R KC_R // R +#define CZ_T KC_T // T +#define CZ_Z KC_Y // Z +#define CZ_U KC_U // U +#define CZ_I KC_I // I +#define CZ_O KC_O // O +#define CZ_P KC_P // P +#define CZ_UACU KC_LBRC // ú +#define CZ_RPRN KC_RBRC // ) +#define CZ_A KC_A // A +#define CZ_S KC_S // S +#define CZ_D KC_D // D +#define CZ_F KC_F // F +#define CZ_G KC_G // G +#define CZ_H KC_H // H +#define CZ_J KC_J // J +#define CZ_K KC_K // K +#define CZ_L KC_L // L +#define CZ_URNG KC_SCLN // ů +#define CZ_SECT KC_QUOT // § +#define CZ_DIAE KC_NUHS // ¨ (dead) +#define CZ_BSLS KC_NUBS // (backslash) +#define CZ_Y KC_Z // Y +#define CZ_X KC_X // X +#define CZ_C KC_C // C +#define CZ_V KC_V // V +#define CZ_B KC_B // B +#define CZ_N KC_N // N +#define CZ_M KC_M // M +#define CZ_COMM KC_COMM // , +#define CZ_DOT KC_DOT // . +#define CZ_MINS KC_SLSH // - +#define CZ_1 S(CZ_PLUS) // 1 +#define CZ_2 S(CZ_ECAR) // 2 +#define CZ_3 S(CZ_SCAR) // 3 +#define CZ_4 S(CZ_CCAR) // 4 +#define CZ_5 S(CZ_RCAR) // 5 +#define CZ_6 S(CZ_ZCAR) // 6 +#define CZ_7 S(CZ_YACU) // 7 +#define CZ_8 S(CZ_AACU) // 8 +#define CZ_9 S(CZ_IACU) // 9 +#define CZ_0 S(CZ_EACU) // 0 +#define CZ_PERC S(CZ_EQL) // % +#define CZ_CARN S(CZ_ACUT) // ˇ (dead) +#define CZ_SLSH S(CZ_UACU) // / +#define CZ_LPRN S(CZ_RPRN) // ( +#define CZ_DQUO S(CZ_URNG) // " +#define CZ_EXLM S(CZ_SECT) // ! +#define CZ_GRV S(CZ_DIAE) // ` +#define CZ_PIPE S(CZ_BSLS) // | +#define CZ_QUES S(CZ_COMM) // ? +#define CZ_COLN S(CZ_DOT) // : +#define CZ_UNDS S(CZ_MINS) // _ +#define CZ_AT A(CZ_ECAR) // @ +#define CZ_HASH A(CZ_SCAR) // # +#define CZ_DLR A(CZ_CCAR) // $ +#define CZ_TILD A(CZ_RCAR) // ~ +#define CZ_CIRC A(CZ_ZCAR) // ^ +#define CZ_AMPR A(CZ_YACU) // & +#define CZ_ASTR A(CZ_AACU) // * +#define CZ_LCBR A(CZ_IACU) // { +#define CZ_RCBR A(CZ_EACU) // } +#define CZ_RNGA A(CZ_EQL) // ° (dead) +#define CZ_DCIR A(CZ_ACUT) // ^ (dead) +#define CZ_LEDT A(CZ_W) // ė +#define CZ_LEOG A(CZ_E) // ę +#define CZ_EURO A(CZ_R) // € +#define CZ_LZDT A(CZ_Z) // ż +#define CZ_LBRC A(CZ_UACU) // [ +#define CZ_RBRC A(CZ_RPRN) // ] +#define CZ_LAOG A(CZ_A) // ą +#define CZ_SS A(CZ_S) // ß +#define CZ_PDIF A(CZ_D) // ∂ +#define CZ_LSQU A(CZ_H) // ‘ +#define CZ_RSQU A(CZ_J) // ’ +#define CZ_LLST A(CZ_L) // ł +#define CZ_SCLN A(CZ_URNG) // ; +#define CZ_QUOT A(CZ_SECT) // ' +#define CZ_SLQU A(CZ_N) // ‚ +#define CZ_LABK A(CZ_COMM) // < +#define CZ_RABK A(CZ_DOT) // > +#define CZ_NDSH A(CZ_MINS) // – +#define CZ_NOT S(A(CZ_1)) // ¬ +#define CZ_BULT S(A(CZ_2)) // • +#define CZ_NEQL S(A(CZ_3)) // ≠ +#define CZ_PND S(A(CZ_4)) // £ +#define CZ_LOZN S(A(CZ_5)) // ◊ +#define CZ_DAGG S(A(CZ_6)) // † +#define CZ_PARA S(A(CZ_7)) // ¶ +#define CZ_DIV S(A(CZ_8)) // ÷ +#define CZ_LDAQ S(A(CZ_9)) // « +#define CZ_RDAQ S(A(CZ_0)) // » +#define CZ_DCOM S(A(CZ_EQL)) // , (dead) +#define CZ_DHPN S(A(CZ_ACUT)) // - (dead) +#define CZ_CEDT S(A(CZ_W)) // Ė +#define CZ_CEOG S(A(CZ_E)) // Ę +#define CZ_REGD S(A(CZ_R)) // ® +#define CZ_TM S(A(CZ_T)) // ™ +#define CZ_CZDT S(A(CZ_Z)) // Ż +#define CZ_LSAQ S(A(CZ_UACU)) // ‹ +#define CZ_RSAQ S(A(CZ_RPRN)) // › +#define CZ_CAOG S(A(CZ_A)) // Ą +#define CZ_NARS S(A(CZ_S)) // ∑ +#define CZ_INCR S(A(CZ_D)) // ∆ +#define CZ_LDQU S(A(CZ_H)) // “ +#define CZ_RDQU S(A(CZ_J)) // ” +#define CZ_CLST S(A(CZ_L)) // Ł +#define CZ_ELLP S(A(CZ_URNG)) // … +#define CZ_DTIL S(A(CZ_SECT)) // ~ (dead) +#define CZ_DDQT S(A(CZ_DIAE)) // " (dead) +#define CZ_COPY S(A(CZ_C)) // © +#define CZ_SQRT S(A(CZ_V)) // √ +#define CZ_DLQU S(A(CZ_N)) // „ +#define CZ_LEQL S(A(CZ_COMM)) // ≤ +#define CZ_GEQL S(A(CZ_DOT)) // ≥ +#define CZ_MDSH S(A(CZ_MINS)) // — + diff --git a/quantum/keymap_extras/sendstring_czech_mac_ansi.h b/quantum/keymap_extras/sendstring_czech_mac_ansi.h new file mode 100644 index 00000000000..a60faa3237b --- /dev/null +++ b/quantum/keymap_extras/sendstring_czech_mac_ansi.h @@ -0,0 +1,120 @@ +/* Copyright 2024 Tabonx + * + * 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 . + */ + +// Sendstring lookup tables for macOS Czech ANSI layouts + +#pragma once + +#include "keymap_czech_mac_ansi.h" +#include "send_string.h" + +// clang-format off + +const uint8_t ascii_to_shift_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0) +}; + +const uint8_t ascii_to_altgr_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 1, 1, 0, 1, 1), + KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 1, 0, 1, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0), +}; + +const uint8_t ascii_to_dead_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0) +}; + +const uint8_t ascii_to_keycode_lut[128] PROGMEM = { + // NUL SOH STX ETX EOT ENQ ACK BEL + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // BS TAB LF VT FF CR SO SI + KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // DLE DC1 DC2 DC3 DC4 NAK SYN ETB + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // CAN EM SUB ESC FS GS RS US + XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // ! " # $ % & ' + KC_SPC, CZ_SECT, CZ_URNG, CZ_SCAR, CZ_CCAR, CZ_EQL, CZ_YACU, CZ_SECT, + // ( ) * + , - . / + CZ_RPRN, CZ_RPRN, CZ_AACU, CZ_PLUS, CZ_COMM, CZ_MINS, CZ_DOT, CZ_UACU, + // 0 1 2 3 4 5 6 7 + CZ_EACU, CZ_PLUS, CZ_ECAR, CZ_SCAR, CZ_CCAR, CZ_RCAR, CZ_ZCAR, CZ_YACU, + // 8 9 : ; < = > ? + CZ_AACU, CZ_IACU, CZ_DOT, CZ_URNG, CZ_COMM, CZ_EQL, CZ_DOT, CZ_COMM, + // @ A B C D E F G + CZ_ECAR, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G, + // H I J K L M N O + CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O, + // P Q R S T U V W + CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W, + // X Y Z [ \ ] ^ _ + CZ_X, CZ_Y, CZ_Z, CZ_UACU, CZ_BSLS, CZ_RPRN, CZ_ZCAR, CZ_MINS, + // ` a b c d e f g + CZ_DIAE, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G, + // h i j k l m n o + CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O, + // p q r s t u v w + CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W, + // x y z { | } ~ DEL + CZ_X, CZ_Y, CZ_Z, CZ_IACU, CZ_BSLS, CZ_EACU, CZ_RCAR, KC_DEL +}; diff --git a/quantum/keymap_extras/sendstring_czech_mac_iso.h b/quantum/keymap_extras/sendstring_czech_mac_iso.h new file mode 100644 index 00000000000..9d47087da05 --- /dev/null +++ b/quantum/keymap_extras/sendstring_czech_mac_iso.h @@ -0,0 +1,120 @@ +/* Copyright 2024 Tabonx + * + * 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 . + */ + +// Sendstring lookup tables for macOS Czech ISO layouts + +#pragma once + +#include "keymap_czech_mac_iso.h" +#include "send_string.h" + +// clang-format off + +const uint8_t ascii_to_shift_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0) +}; + +const uint8_t ascii_to_altgr_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 1, 1, 0, 1, 1), + KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 1, 0, 1, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0), +}; + +const uint8_t ascii_to_dead_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0) +}; + +const uint8_t ascii_to_keycode_lut[128] PROGMEM = { + // NUL SOH STX ETX EOT ENQ ACK BEL + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // BS TAB LF VT FF CR SO SI + KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // DLE DC1 DC2 DC3 DC4 NAK SYN ETB + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // CAN EM SUB ESC FS GS RS US + XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // ! " # $ % & ' + KC_SPC, CZ_SECT, CZ_URNG, CZ_SCAR, CZ_CCAR, CZ_EQL, CZ_YACU, CZ_SECT, + // ( ) * + , - . / + CZ_RPRN, CZ_RPRN, CZ_AACU, CZ_PLUS, CZ_COMM, CZ_MINS, CZ_DOT, CZ_UACU, + // 0 1 2 3 4 5 6 7 + CZ_EACU, CZ_PLUS, CZ_ECAR, CZ_SCAR, CZ_CCAR, CZ_RCAR, CZ_ZCAR, CZ_YACU, + // 8 9 : ; < = > ? + CZ_AACU, CZ_IACU, CZ_DOT, CZ_URNG, CZ_COMM, CZ_EQL, CZ_DOT, CZ_COMM, + // @ A B C D E F G + CZ_ECAR, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G, + // H I J K L M N O + CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O, + // P Q R S T U V W + CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W, + // X Y Z [ \ ] ^ _ + CZ_X, CZ_Y, CZ_Z, CZ_UACU, CZ_BSLS, CZ_RPRN, CZ_ZCAR, CZ_MINS, + // ` a b c d e f g + CZ_DIAE, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G, + // h i j k l m n o + CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O, + // p q r s t u v w + CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W, + // x y z { | } ~ DEL + CZ_X, CZ_Y, CZ_Z, CZ_IACU, CZ_BSLS, CZ_EACU, CZ_RCAR, KC_DEL +}; From 4a0ffea41ed5f8836223367181abcf9561cb5dd0 Mon Sep 17 00:00:00 2001 From: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Date: Wed, 1 May 2024 02:58:36 -0400 Subject: [PATCH 34/41] refactor: mechwild/waka60 (#23423) --- keyboards/mechwild/waka60/config.h | 25 +- keyboards/mechwild/waka60/info.json | 1273 ++++++++++++++++- .../mechwild/waka60/keymaps/default/keymap.c | 36 +- .../mechwild/waka60/keymaps/via/keymap.c | 36 +- 4 files changed, 1247 insertions(+), 123 deletions(-) diff --git a/keyboards/mechwild/waka60/config.h b/keyboards/mechwild/waka60/config.h index d9eed88676a..db91eb667e6 100644 --- a/keyboards/mechwild/waka60/config.h +++ b/keyboards/mechwild/waka60/config.h @@ -17,23 +17,10 @@ along with this program. If not, see . #pragma once -/* 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 +#define AUDIO_PIN B5 +#define AUDIO_PWM_DRIVER PWMD1 +#define AUDIO_PWM_CHANNEL 1 +#define AUDIO_STATE_TIMER GPTD4 -/* - * 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 +#define AUDIO_CLICKY +#define AUDIO_INIT_DELAY diff --git a/keyboards/mechwild/waka60/info.json b/keyboards/mechwild/waka60/info.json index f7a0300a6a9..f8b8cad5100 100644 --- a/keyboards/mechwild/waka60/info.json +++ b/keyboards/mechwild/waka60/info.json @@ -1,47 +1,12 @@ { - "keyboard_name": "Waka60", "manufacturer": "MechWild", - "url": "mechwild.com", + "keyboard_name": "Waka60", "maintainer": "Kyle McCreery", - "usb": { - "vid": "0x6D77", - "pid": "0x1709", - "device_version": "1.0.1" - }, - "rgblight": { - "saturation_steps": 8, - "brightness_steps": 8, - "led_count": 3, - "sleep": true, - "animations": { - "breathing": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "knight": true, - "christmas": true, - "static_gradient": true, - "rgb_test": true, - "alternating": true, - "twinkle": true - } - }, - "ws2812": { - "pin": "A1" - }, - "features": { - "bootmagic": true, - "command": false, - "console": false, - "encoder": true, - "extrakey": true, - "mousekey": true, - "nkro": false, - "rgblight": true - }, - "matrix_pins": { - "cols": ["B10", "B1", "B0", "A7", "A6", "A5", "A4"], - "rows": ["B8", "B4", "B3", "B9", "A15", "B12", "B13", "B14", "B15", "A8"] + "audio": { + "default": { + "clicky": false + }, + "driver": "pwm_software" }, "diode_direction": "COL2ROW", "encoder": { @@ -49,11 +14,84 @@ {"pin_a": "A3", "pin_b": "A2"} ] }, + "features": { + "audio": true, + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B10", "B1", "B0", "A7", "A6", "A5", "A4"], + "rows": ["B8", "B4", "B3", "B9", "A15", "B12", "B13", "B14", "B15", "A8"] + }, "qmk": { + "locking": { + "enabled": true, + "resync": true + }, "tap_keycode_delay": 10 }, + "rgb_matrix": { + "animations": { + "band_spiral_sat": true, + "band_spiral_val": true, + "breathing": true, + "cycle_all": true, + "cycle_out_in": true, + "cycle_up_down": true, + "gradient_up_down": true, + "hue_breathing": true, + "jellybean_raindrops": true, + "pixel_flow": true, + "pixel_rain": true, + "rainbow_beacon": true, + "raindrops": true + }, + "center_point": [112, 40], + "driver": "ws2812", + "layout": [ + {"x": 112, "y": 12, "flags": 8}, + {"x": 112, "y": 27, "flags": 8}, + {"x": 112, "y": 40, "flags": 8} + ], + "sat_steps": 8, + "sleep": true, + "val_steps": 8 + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 8, + "led_count": 3, + "saturation_steps": 8, + "sleep": true + }, + "url": "mechwild.com", + "usb": { + "device_version": "1.0.1", + "pid": "0x1709", + "vid": "0x6D77" + }, + "ws2812": { + "pin": "A1" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { + "LAYOUT_1u_1u_1u_1u_1u_2u": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -61,56 +99,1191 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [5, 0], "x": 7, "y": 0}, {"matrix": [5, 1], "x": 8, "y": 0}, {"matrix": [5, 2], "x": 9, "y": 0}, {"matrix": [5, 3], "x": 10, "y": 0}, {"matrix": [5, 4], "x": 11, "y": 0}, {"matrix": [5, 5], "x": 12, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [6, 0], "x": 7, "y": 1}, {"matrix": [6, 1], "x": 8, "y": 1}, {"matrix": [6, 2], "x": 9, "y": 1}, {"matrix": [6, 3], "x": 10, "y": 1}, {"matrix": [6, 4], "x": 11, "y": 1}, {"matrix": [6, 5], "x": 12, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [7, 0], "x": 7, "y": 2}, {"matrix": [7, 1], "x": 8, "y": 2}, {"matrix": [7, 2], "x": 9, "y": 2}, {"matrix": [7, 3], "x": 10, "y": 2}, {"matrix": [7, 4], "x": 11, "y": 2}, {"matrix": [7, 5], "x": 12, "y": 2}, - {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, {"matrix": [3, 2], "x": 2, "y": 3}, {"matrix": [3, 3], "x": 3, "y": 3}, {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 2], "x": 8, "y": 4, "w": 2}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_1u_1u_1u_2u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 2}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_1u_1u_1u_3u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 3}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_1u_3u_1u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 3}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_1u_3u_2u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 3}, + {"matrix": [9, 2], "x": 8, "y": 4, "w": 2}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_2u_1u_1u_1u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_2u_1u_2u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 2}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_1u_2u_1u_3u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 3}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_2u_1u_1u_1u_1u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4, "w": 2}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_2u_1u_1u_1u_2u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4, "w": 2}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 2], "x": 8, "y": 4, "w": 2}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_2u_1u_1u_3u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4, "w": 2}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 3}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_2u_3u_1u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 3}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_2u_3u_2u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 3}, + {"matrix": [9, 2], "x": 8, "y": 4, "w": 2}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_3u_1u_1u_1u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 3, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_3u_1u_1u_2u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 3, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 2], "x": 8, "y": 4, "w": 2}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_3u_1u_2u_1u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 3, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 2}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_3u_1u_3u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 3, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4, "w": 3}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_7u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 6], "x": 3, "y": 4, "w": 7}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "encoder": 0}, {"matrix": [8, 0], "x": 7, "y": 3}, {"matrix": [8, 1], "x": 8, "y": 3}, {"matrix": [8, 2], "x": 9, "y": 3}, {"matrix": [8, 3], "x": 10, "y": 3}, {"matrix": [8, 4], "x": 11, "y": 3}, {"matrix": [8, 5], "x": 12, "y": 3}, - {"matrix": [4, 0], "x": 0, "y": 4}, {"matrix": [4, 1], "x": 1, "y": 4}, {"matrix": [4, 2], "x": 2, "y": 4}, diff --git a/keyboards/mechwild/waka60/keymaps/default/keymap.c b/keyboards/mechwild/waka60/keymaps/default/keymap.c index beb2d9e9e2f..3a7df5d3280 100644 --- a/keyboards/mechwild/waka60/keymaps/default/keymap.c +++ b/keyboards/mechwild/waka60/keymaps/default/keymap.c @@ -19,48 +19,30 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { _BASE, - _FN1, - _FN2, - _FN3 + _FN1 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ - [_BASE] = LAYOUT( + [_BASE] = LAYOUT_all( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL ), - [_FN1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, - KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [_FN2] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [_FN3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_FN1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, AU_TOGG, CK_UP, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MU_TOGG, MU_NEXT, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, CK_TOGG, CK_DOWN, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } }; #endif diff --git a/keyboards/mechwild/waka60/keymaps/via/keymap.c b/keyboards/mechwild/waka60/keymaps/via/keymap.c index 4d29baea78a..3a7df5d3280 100644 --- a/keyboards/mechwild/waka60/keymaps/via/keymap.c +++ b/keyboards/mechwild/waka60/keymaps/via/keymap.c @@ -19,48 +19,30 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { _BASE, - _FN1, - _FN2, - _FN3 + _FN1 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ - [_BASE] = LAYOUT( + [_BASE] = LAYOUT_all( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL ), - [_FN1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, - KC_TRNS, AU_TOGG, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, MU_TOGG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, MU_NEXT, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [_FN2] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [_FN3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_FN1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, AU_TOGG, CK_UP, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MU_TOGG, MU_NEXT, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, CK_TOGG, CK_DOWN, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } }; #endif From 8753ae354be6a62965b3d0ab931e0877bf34ef77 Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Wed, 1 May 2024 03:05:45 -0400 Subject: [PATCH 35/41] add Bruce le Clavier (#23640) --- keyboards/jlw/bruce_le_clavier/info.json | 82 +++++++++++++++++++ .../bruce_le_clavier/keymaps/default/keymap.c | 43 ++++++++++ keyboards/jlw/bruce_le_clavier/readme.md | 53 ++++++++++++ keyboards/jlw/bruce_le_clavier/rules.mk | 1 + 4 files changed, 179 insertions(+) create mode 100644 keyboards/jlw/bruce_le_clavier/info.json create mode 100644 keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c create mode 100644 keyboards/jlw/bruce_le_clavier/readme.md create mode 100644 keyboards/jlw/bruce_le_clavier/rules.mk diff --git a/keyboards/jlw/bruce_le_clavier/info.json b/keyboards/jlw/bruce_le_clavier/info.json new file mode 100644 index 00000000000..998140599dd --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Bruce the Keyboard", + "manufacturer": "jlw", + "url": "https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources", + "maintainer": "jlw", + "usb": { + "vid": "0x1209", + "pid": "0xA460", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B0", "A7", "A4", "A3", "B7", "B6", "B5", "B4", "B3", "B14"], + "rows": ["B11", "B9", "A5", "A6", "B15"] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "bootmagic": { + "matrix": [4, 10] + }, + "encoder": { + "rotary": [ + {"pin_a": "B12", "pin_b": "B13"} + ] + }, + "ws2812": { + "pin": "B8" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "h":1.75}, + {"matrix": [0, 1], "x": 1, "y": 0, "h":1.5}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0, "h":1.25}, + {"matrix": [0, 4], "x": 4, "y": 0, "h":1.25}, + + {"matrix": [4, 10], "x": 5.25, "y": 0}, + + {"matrix": [0, 5], "x": 6.5, "y": 0, "h":1.25}, + {"matrix": [0, 6], "x": 7.5, "y": 0, "h":1.25}, + {"matrix": [0, 7], "x": 8.5, "y": 0}, + {"matrix": [0, 8], "x": 9.5, "y": 0, "h":1.5}, + {"matrix": [0, 9], "x": 10.5, "y": 0, "h":1.75}, + + {"matrix": [1, 0], "x": 0, "y": 1.75}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 6.5, "y": 1.25}, + {"matrix": [1, 6], "x": 7.5, "y": 1.25}, + {"matrix": [1, 7], "x": 8.5, "y": 1}, + {"matrix": [1, 8], "x": 9.5, "y": 1.5}, + {"matrix": [1, 9], "x": 10.5,"y": 1.75}, + + {"matrix": [2, 0], "x": 0, "y": 2.75, "h":1.5}, + {"matrix": [2, 1], "x": 1, "y": 2.5, "h":1.75}, + {"matrix": [2, 2], "x": 2, "y": 2, "h":1.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "x": 4, "y": 2.25}, + {"matrix": [2, 5], "x": 6.5, "y": 2.25}, + {"matrix": [2, 6], "x": 7.5, "y": 2.25}, + {"matrix": [2, 7], "x": 8.5, "y": 2, "h":1.25}, + {"matrix": [2, 8], "x": 9.5, "y": 2.5, "h":1.75}, + {"matrix": [2, 9], "x": 10.5,"y": 2.75, "h":1.5}, + + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25, "w": 2}, + {"matrix": [3, 5], "x": 6.5, "y": 3.25, "w": 2}, + {"matrix": [3, 7], "x": 8.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c b/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c new file mode 100644 index 00000000000..51a8f0939d4 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +// Copyright 2023 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, QK_BOOT, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), KC_T, KC_G, KC_M, KC_N, RCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + LT(3, KC_TAB), SFT_T(KC_BSPC), LT(1, KC_SPC), LT(2,KC_ENT) + ), + + [1] = LAYOUT( + KC_GRAVE, KC_F2, XXXXXXX, KC_F4, KC_F5, XXXXXXX, KC_BSLS, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(1), XXXXXXX, _______, _______, KC_SCLN, + _______, _______, _______, _______ + ), + + [2] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [3] = LAYOUT( + XXXXXXX, XXXXXXX, LSG(KC_4),LSG(KC_S),XXXXXXX, XXXXXXX, KC_HOME, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, + KC_LGUI, KC_LALT, KC_LCTL, KC_LGUI, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ) +}; + +// Encoder Map +#ifdef ENCODER_MAP_ENABLE + const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(S(KC_F2), KC_F2) }, + [1] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, + [2] = { ENCODER_CCW_CW(_______, _______) }, + [3] = { ENCODER_CCW_CW(_______, _______) } + }; +#endif diff --git a/keyboards/jlw/bruce_le_clavier/readme.md b/keyboards/jlw/bruce_le_clavier/readme.md new file mode 100644 index 00000000000..7bef2d5eef7 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/readme.md @@ -0,0 +1,53 @@ +# Bruce le Clavier + +Please note that Bruce le Clavier is a keyboard, not a human, and is also not Bruce the Keyboard. + +Bruce the Keyboard is a column staggered unibody split 35-key board created by [jlw](github.com/josh-l-wang), with the option to replace the middle key for an EC11 rotary encoder (with or without switch function). + +This keyboard has RGB, 3.3V, and GND pins broken out if you wish to add an LED strip. + +![Bruce le Clavier](https://i.imgur.com/qL9WHW4.jpg) + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: [Bruce le Clavier and Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/bruce_le_clavier:default + +Flashing example for this keyboard: + + make jlw/bruce_le_clavier:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + + + + +# Ceci est le micrologiciel pour Bruce le clavier + +Notez bien que Bruce le clavier n'est pas un humain. + +Bruce le clavier est un clavier de 35 touches colonnaire créé par [jlw](github.com/josh-l-wang). Il y a une option d'utiliser un encodeur rotatif au centre. + +* Maintaineur de clavier: [jlw](https://github.com/josh-l-wang) +* Matériel supporté: [Bruce le Clavier and Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Matériel disponibilité: [jlw-kb.com](https://jlw-kb.com) + +Exemple de « make » (après avoir installé votre environnement de développement): + + make jlw/bruce_le_clavier:default + +Exemple de flash pour ce clavier: + + make jlw/bruce_le_clavier:flash + \ No newline at end of file diff --git a/keyboards/jlw/bruce_le_clavier/rules.mk b/keyboards/jlw/bruce_le_clavier/rules.mk new file mode 100644 index 00000000000..d4f87a82781 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/rules.mk @@ -0,0 +1 @@ +#This file intentionally left blank From 7b838f330f11a2dd3ffb49b2ffbea48020004b7c Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 1 May 2024 20:02:03 +0100 Subject: [PATCH 36/41] add tkl_(ansi|iso)_wkl* community layouts (#21809) * update layouts/default/readme.md * add tkl_wkl layouts to layouts/default * amend layouts/default/readme.md * `tsangan_wkl` to `wkl` * Update readme.md * update keymap.c * local testing corrections applied * add layouts/community readmes * minor text correction(s) * Apply suggestions from code review * further copyright header changes --- layouts/community/tkl_ansi_wkl/readme.md | 3 + .../tkl_ansi_wkl_split_bs_rshift/readme.md | 3 + layouts/community/tkl_f13_ansi_wkl/readme.md | 3 + .../readme.md | 3 + layouts/community/tkl_f13_iso_wkl/readme.md | 3 + .../tkl_f13_iso_wkl_split_bs_rshift/readme.md | 3 + layouts/community/tkl_iso_wkl/readme.md | 3 + .../tkl_iso_wkl_split_bs_rshift/readme.md | 3 + layouts/default/readme.md | 249 ++++++++++++++---- .../default_tkl_ansi_wkl/keymap.c | 32 +++ layouts/default/tkl_ansi_wkl/info.json | 105 ++++++++ layouts/default/tkl_ansi_wkl/layout.json | 6 + layouts/default/tkl_ansi_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_ansi_wkl_split_bs_rshift/info.json | 107 ++++++++ .../tkl_ansi_wkl_split_bs_rshift/layout.json | 6 + .../tkl_ansi_wkl_split_bs_rshift/readme.md | 3 + .../default_tkl_f13_ansi_wkl/keymap.c | 32 +++ layouts/default/tkl_f13_ansi_wkl/info.json | 106 ++++++++ layouts/default/tkl_f13_ansi_wkl/layout.json | 6 + layouts/default/tkl_f13_ansi_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../info.json | 108 ++++++++ .../layout.json | 6 + .../readme.md | 3 + .../default_tkl_f13_iso_wkl/keymap.c | 32 +++ layouts/default/tkl_f13_iso_wkl/info.json | 107 ++++++++ layouts/default/tkl_f13_iso_wkl/layout.json | 6 + layouts/default/tkl_f13_iso_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_f13_iso_wkl_split_bs_rshift/info.json | 109 ++++++++ .../layout.json | 6 + .../tkl_f13_iso_wkl_split_bs_rshift/readme.md | 3 + .../tkl_iso_wkl/default_tkl_iso_wkl/keymap.c | 32 +++ layouts/default/tkl_iso_wkl/info.json | 106 ++++++++ layouts/default/tkl_iso_wkl/layout.json | 6 + layouts/default/tkl_iso_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_iso_wkl_split_bs_rshift/info.json | 108 ++++++++ .../tkl_iso_wkl_split_bs_rshift/layout.json | 6 + .../tkl_iso_wkl_split_bs_rshift/readme.md | 3 + 41 files changed, 1404 insertions(+), 53 deletions(-) create mode 100644 layouts/community/tkl_ansi_wkl/readme.md create mode 100644 layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_f13_ansi_wkl/readme.md create mode 100644 layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_f13_iso_wkl/readme.md create mode 100644 layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_iso_wkl/readme.md create mode 100644 layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c create mode 100644 layouts/default/tkl_ansi_wkl/info.json create mode 100644 layouts/default/tkl_ansi_wkl/layout.json create mode 100644 layouts/default/tkl_ansi_wkl/readme.md create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c create mode 100644 layouts/default/tkl_f13_ansi_wkl/info.json create mode 100644 layouts/default/tkl_f13_ansi_wkl/layout.json create mode 100644 layouts/default/tkl_f13_ansi_wkl/readme.md create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c create mode 100644 layouts/default/tkl_f13_iso_wkl/info.json create mode 100644 layouts/default/tkl_f13_iso_wkl/layout.json create mode 100644 layouts/default/tkl_f13_iso_wkl/readme.md create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c create mode 100644 layouts/default/tkl_iso_wkl/info.json create mode 100644 layouts/default/tkl_iso_wkl/layout.json create mode 100644 layouts/default/tkl_iso_wkl/readme.md create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md diff --git a/layouts/community/tkl_ansi_wkl/readme.md b/layouts/community/tkl_ansi_wkl/readme.md new file mode 100644 index 00000000000..6541a0f23ab --- /dev/null +++ b/layouts/community/tkl_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl + + LAYOUT_tkl_ansi_wkl diff --git a/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..35235603728 --- /dev/null +++ b/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_ansi_wkl_split_bs_rshift diff --git a/layouts/community/tkl_f13_ansi_wkl/readme.md b/layouts/community/tkl_f13_ansi_wkl/readme.md new file mode 100644 index 00000000000..607692c2392 --- /dev/null +++ b/layouts/community/tkl_f13_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl + + LAYOUT_tkl_f13_ansi_wkl diff --git a/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..614c0913f62 --- /dev/null +++ b/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift diff --git a/layouts/community/tkl_f13_iso_wkl/readme.md b/layouts/community/tkl_f13_iso_wkl/readme.md new file mode 100644 index 00000000000..46c44195923 --- /dev/null +++ b/layouts/community/tkl_f13_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl + + LAYOUT_tkl_f13_iso_wkl diff --git a/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..a9059abfba2 --- /dev/null +++ b/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl_split_bs_rshift + + LAYOUT_tkl_f13_iso_wkl_split_bs_rshift diff --git a/layouts/community/tkl_iso_wkl/readme.md b/layouts/community/tkl_iso_wkl/readme.md new file mode 100644 index 00000000000..56fe1e91473 --- /dev/null +++ b/layouts/community/tkl_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl + + LAYOUT_tkl_iso_wkl diff --git a/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..ec820424a5b --- /dev/null +++ b/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl_split_bs_rshift + + LAYOUT_tkl_iso_split_bs_rshift diff --git a/layouts/default/readme.md b/layouts/default/readme.md index 892dbf1e034..fab13d47c55 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -641,6 +641,42 @@ LAYOUT_tkl_ansi_tsangan_split_bs_rshift └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_ansi_wkl +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_ansi_wkl_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_iso ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ @@ -713,6 +749,42 @@ LAYOUT_tkl_iso_tsangan_split_bs_rshift └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_iso_wkl +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_iso_wkl_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_jis ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ @@ -787,20 +859,56 @@ LAYOUT_tkl_f13_ansi_tsangan ``` LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ ││ │ │ │ -└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_ansi_wkl +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ ``` ``` @@ -823,20 +931,20 @@ LAYOUT_tkl_f13_iso ``` LAYOUT_tkl_f13_iso_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ │ ││ │ │ │ -└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` ``` @@ -859,39 +967,74 @@ LAYOUT_tkl_f13_iso_tsangan ``` LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ ││ │ │ │ -└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_iso_wkl +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_iso_wkl_split_bs_rshift +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ ``` ``` LAYOUT_tkl_f13_jis -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴──┬┴───┴───┴───┴─┬─┴──┬┴───┼───┴┬──┴─┬────┤┌───┼───┼───┐ -│ │ │ │ │ │ │ │ │ │ ││ │ │ │ -└────┴────┴────┴────┴──────────────┴────┴────┴────┴────┴────┘└───┴───┴───┘ - +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬───┴┬──┴─┬─┴──┬┴───┴───┴───┴─┬─┴──┬┴───┼───┴┬──┴─┬────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────┴──────────────┴────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` ``` diff --git a/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c b/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c new file mode 100644 index 00000000000..3d8cef64fc2 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_wkl/info.json b/layouts/default/tkl_ansi_wkl/info.json new file mode 100644 index 00000000000..eb08eacd370 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_wkl/layout.json b/layouts/default/tkl_ansi_wkl/layout.json new file mode 100644 index 00000000000..b6d3505b159 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_wkl/readme.md b/layouts/default/tkl_ansi_wkl/readme.md new file mode 100644 index 00000000000..6541a0f23ab --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl + + LAYOUT_tkl_ansi_wkl diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..a5b27ee42bb --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json b/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json new file mode 100644 index 00000000000..62b48e3bc84 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json new file mode 100644 index 00000000000..0fba13348bb --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..35235603728 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_ansi_wkl_split_bs_rshift diff --git a/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c b/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c new file mode 100644 index 00000000000..709988ac76d --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_ansi_wkl/info.json b/layouts/default/tkl_f13_ansi_wkl/info.json new file mode 100644 index 00000000000..ca03585d00a --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with F13 key", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_ansi_wkl/layout.json b/layouts/default/tkl_f13_ansi_wkl/layout.json new file mode 100644 index 00000000000..850ffc9bdc9 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_ansi_wkl/readme.md b/layouts/default/tkl_f13_ansi_wkl/readme.md new file mode 100644 index 00000000000..607692c2392 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl + + LAYOUT_tkl_f13_ansi_wkl diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..6089b7681f9 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Sft│ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json new file mode 100644 index 00000000000..755e7a80d78 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with F13 key, split Backspace, and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json new file mode 100644 index 00000000000..6992dff912b --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..614c0913f62 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift diff --git a/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c b/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c new file mode 100644 index 00000000000..5a32e674e8d --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_iso_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_iso_wkl/info.json b/layouts/default/tkl_f13_iso_wkl/info.json new file mode 100644 index 00000000000..e597716b5dc --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_iso_wkl/layout.json b/layouts/default/tkl_f13_iso_wkl/layout.json new file mode 100644 index 00000000000..0c6f178b452 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_iso_wkl/readme.md b/layouts/default/tkl_f13_iso_wkl/readme.md new file mode 100644 index 00000000000..46c44195923 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl + + LAYOUT_tkl_f13_iso_wkl diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..7642de46e2f --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_iso_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json new file mode 100644 index 00000000000..4ccde283690 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout with F13 key, split Backspace, and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_iso_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json new file mode 100644 index 00000000000..a07a1307e77 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..a9059abfba2 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl_split_bs_rshift + + LAYOUT_tkl_f13_iso_wkl_split_bs_rshift diff --git a/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c b/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c new file mode 100644 index 00000000000..940c968917b --- /dev/null +++ b/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_wkl/info.json b/layouts/default/tkl_iso_wkl/info.json new file mode 100644 index 00000000000..07f3311296d --- /dev/null +++ b/layouts/default/tkl_iso_wkl/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_wkl/layout.json b/layouts/default/tkl_iso_wkl/layout.json new file mode 100644 index 00000000000..8d51a4064da --- /dev/null +++ b/layouts/default/tkl_iso_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_wkl/readme.md b/layouts/default/tkl_iso_wkl/readme.md new file mode 100644 index 00000000000..56fe1e91473 --- /dev/null +++ b/layouts/default/tkl_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl + + LAYOUT_tkl_iso_wkl diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..5b9474863bc --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json b/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json new file mode 100644 index 00000000000..aa0ebce31ed --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json new file mode 100644 index 00000000000..09c79e0f4a4 --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 00000000000..ec820424a5b --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl_split_bs_rshift + + LAYOUT_tkl_iso_split_bs_rshift From 7220715dd1619dfb073db78cfc23998a67994655 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 1 May 2024 20:18:20 +0100 Subject: [PATCH 37/41] Remove 60_ansi_arrow_split_bs_7u_spc Community Layout (#23259) --- keyboards/dz60/keyboard.json | 2 +- keyboards/dztech/dz60v2/keyboard.json | 1 - .../krush/krush60/solder/keyboard.json | 2 +- .../60_ansi_arrow_split_bs_7u_spc/readme.md | 3 - .../keymap.c | 27 ------- .../60_ansi_arrow_split_bs_7u_spc/info.json | 78 ------------------- .../60_ansi_arrow_split_bs_7u_spc/layout.json | 5 -- .../60_ansi_arrow_split_bs_7u_spc/readme.md | 30 ------- layouts/default/readme.md | 15 ---- 9 files changed, 2 insertions(+), 161 deletions(-) delete mode 100644 layouts/community/60_ansi_arrow_split_bs_7u_spc/readme.md delete mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c delete mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json delete mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json delete mode 100644 layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md diff --git a/keyboards/dz60/keyboard.json b/keyboards/dz60/keyboard.json index eb831143b79..a6beff0d63a 100644 --- a/keyboards/dz60/keyboard.json +++ b/keyboards/dz60/keyboard.json @@ -54,7 +54,7 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", - "community_layouts": ["60_ansi", "60_ansi_arrow_split_bs_7u_spc", "60_ansi_arrow", "60_ansi_split_bs_rshift", "60_hhkb", "60_iso", "60_abnt2", "60_tsangan_hhkb"], + "community_layouts": ["60_ansi", "60_ansi_arrow", "60_ansi_split_bs_rshift", "60_hhkb", "60_iso", "60_abnt2", "60_tsangan_hhkb"], "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dztech/dz60v2/keyboard.json b/keyboards/dztech/dz60v2/keyboard.json index bd1479b77c0..52889396089 100644 --- a/keyboards/dztech/dz60v2/keyboard.json +++ b/keyboards/dztech/dz60v2/keyboard.json @@ -51,7 +51,6 @@ "60_abnt2", "60_ansi", "60_ansi_arrow", - "60_ansi_arrow_split_bs_7u_spc", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_hhkb", diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keyboard.json b/keyboards/sawnsprojects/krush/krush60/solder/keyboard.json index b3d4f8f97c6..4f5ca808ceb 100644 --- a/keyboards/sawnsprojects/krush/krush60/solder/keyboard.json +++ b/keyboards/sawnsprojects/krush/krush60/solder/keyboard.json @@ -48,7 +48,7 @@ "LAYOUT_60_ansi_arrow_split_bs_7u_spc": "LAYOUT_60_ansi_arrow_tsangan_split_bs", "LAYOUT_60_ansi_arrow_7u_spc": "LAYOUT_60_ansi_arrow_tsangan" }, - "community_layouts": ["60_ansi", "60_ansi_arrow", "60_ansi_arrow_split_bs_7u_spc"], + "community_layouts": ["60_ansi", "60_ansi_arrow"], "layouts": { "LAYOUT_all": { "layout": [ diff --git a/layouts/community/60_ansi_arrow_split_bs_7u_spc/readme.md b/layouts/community/60_ansi_arrow_split_bs_7u_spc/readme.md deleted file mode 100644 index d60387a000b..00000000000 --- a/layouts/community/60_ansi_arrow_split_bs_7u_spc/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# 60_ansi_arrow_split_bs_7u_spc - - LAYOUT_60_ansi_arrow_split_bs_7u_spc diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c b/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c deleted file mode 100644 index 409f415318b..00000000000 --- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/default_60_ansi_arrow_split_bs_7u_spc/keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2020 QMK / Sendy YK -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ - * │Ctrl │GUI│Alt │Space │Alt│← │↓ │→ │ - * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ - */ - [0] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( - QK_GESC, 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_DEL, - 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT - ) -}; diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json deleted file mode 100644 index bf30205f3d3..00000000000 --- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "keyboard_name": "60% ANSI Arrow Split Backspace & 7U Space Layout", - "url": "https://mr.sendyyk.com", - "maintainer": "Sendy YK ", - "layouts": { - "LAYOUT_60_ansi_arrow_split_bs_7u_spc": { - "layout": [ - {"x": 0, "y": 0}, - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, - {"x": 5, "y": 0}, - {"x": 6, "y": 0}, - {"x": 7, "y": 0}, - {"x": 8, "y": 0}, - {"x": 9, "y": 0}, - {"x": 10, "y": 0}, - {"x": 11, "y": 0}, - {"x": 12, "y": 0}, - {"x": 13, "y": 0}, - {"x": 14, "y": 0}, - - {"x": 0, "y": 1, "w": 1.5}, - {"x": 1.5, "y": 1}, - {"x": 2.5, "y": 1}, - {"x": 3.5, "y": 1}, - {"x": 4.5, "y": 1}, - {"x": 5.5, "y": 1}, - {"x": 6.5, "y": 1}, - {"x": 7.5, "y": 1}, - {"x": 8.5, "y": 1}, - {"x": 9.5, "y": 1}, - {"x": 10.5, "y": 1}, - {"x": 11.5, "y": 1}, - {"x": 12.5, "y": 1}, - {"x": 13.5, "y": 1, "w": 1.5}, - - {"x": 0, "y": 2, "w": 1.75}, - {"x": 1.75, "y": 2}, - {"x": 2.75, "y": 2}, - {"x": 3.75, "y": 2}, - {"x": 4.75, "y": 2}, - {"x": 5.75, "y": 2}, - {"x": 6.75, "y": 2}, - {"x": 7.75, "y": 2}, - {"x": 8.75, "y": 2}, - {"x": 9.75, "y": 2}, - {"x": 10.75, "y": 2}, - {"x": 11.75, "y": 2}, - {"x": 12.75, "y": 2, "w": 2.25}, - - {"x": 0, "y": 3, "w": 2.25}, - {"x": 2.25, "y": 3}, - {"x": 3.25, "y": 3}, - {"x": 4.25, "y": 3}, - {"x": 5.25, "y": 3}, - {"x": 6.25, "y": 3}, - {"x": 7.25, "y": 3}, - {"x": 8.25, "y": 3}, - {"x": 9.25, "y": 3}, - {"x": 10.25, "y": 3}, - {"x": 11.25, "y": 3, "w": 1.75}, - {"x": 13, "y": 3}, - {"x": 14, "y": 3}, - - {"x": 0, "y": 4, "w": 1.5}, - {"x": 1.5, "y": 4}, - {"x": 2.5, "y": 4, "w": 1.5}, - {"x": 4, "y": 4, "w": 7}, - {"x": 11, "y": 4}, - {"x": 12, "y": 4}, - {"x": 13, "y": 4}, - {"x": 14, "y": 4} - ] - } - } -} diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json deleted file mode 100644 index db9c8d167b5..00000000000 --- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json +++ /dev/null @@ -1,5 +0,0 @@ -[{a:7},"","","","","","","","","","","","","","",""], -[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""], -[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], -[{w:2.25},"","","","","","","","","","",{w:1.75},"","",""], -[{w:1.5},"","",{w:1.5},"",{w:7},"","","","",""] diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md b/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md deleted file mode 100644 index 30292abb90d..00000000000 --- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# 60_ansi_arrow_split_bs_7u_spc Keymap - -Default 60 ANSI Arrow Split Backspace & 7U Space Keymap by [Sendy YK](https://mr.sendyyk.com). - -```c - /* - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │\ │Del│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │Bspc │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ - * │Ctrl │GUI│Alt │Space │Alt│← │↓ │→ │ - * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ - */ -``` - -## Build The Firmware - -Make example for keyboard (after setting up your build environment): - - make :default_60_ansi_arrow_split_bs_7u_spc - -More information: -* [Setting Up Your QMK Environment](https://docs.qmk.fm/#/getting_started_build_tools) -* [More Detailed make Instructions](https://docs.qmk.fm/#/getting_started_make_guide) -* [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs) diff --git a/layouts/default/readme.md b/layouts/default/readme.md index fab13d47c55..159b339383f 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -49,21 +49,6 @@ LAYOUT_60_ansi_arrow └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ ``` -``` -LAYOUT_60_ansi_arrow_split_bs_7u_spc -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ -├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ -│ │ │ │ │ │ │ │ │ -└─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ -``` - ``` LAYOUT_60_ansi_split_bs_rshift ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ From 337776105dc614a08d2d3a0db66c7c5be34afc4c Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 1 May 2024 20:27:40 +0100 Subject: [PATCH 38/41] add 60_iso_arrow and arrow_split_bs Community Layouts (#22556) --- .../60_ansi_arrow_split_bs/readme.md | 3 + layouts/community/60_iso_arrow/readme.md | 3 + .../community/60_iso_arrow_split_bs/readme.md | 3 + .../default_60_ansi_arrow/keymap.c | 10 +-- .../default_60_ansi_arrow_split_bs/keymap.c | 27 +++++++ .../default/60_ansi_arrow_split_bs/info.json | 79 ++++++++++++++++++ .../60_ansi_arrow_split_bs/layout.json | 5 ++ .../default/60_ansi_arrow_split_bs/readme.md | 3 + .../default_60_iso_arrow/keymap.c | 27 +++++++ layouts/default/60_iso_arrow/info.json | 79 ++++++++++++++++++ layouts/default/60_iso_arrow/layout.json | 5 ++ layouts/default/60_iso_arrow/readme.md | 3 + .../default_60_iso_arrow_split_bs/keymap.c | 27 +++++++ .../default/60_iso_arrow_split_bs/info.json | 80 +++++++++++++++++++ .../default/60_iso_arrow_split_bs/layout.json | 5 ++ .../default/60_iso_arrow_split_bs/readme.md | 3 + layouts/default/readme.md | 45 +++++++++++ 17 files changed, 402 insertions(+), 5 deletions(-) create mode 100644 layouts/community/60_ansi_arrow_split_bs/readme.md create mode 100644 layouts/community/60_iso_arrow/readme.md create mode 100644 layouts/community/60_iso_arrow_split_bs/readme.md create mode 100644 layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c create mode 100644 layouts/default/60_ansi_arrow_split_bs/info.json create mode 100644 layouts/default/60_ansi_arrow_split_bs/layout.json create mode 100644 layouts/default/60_ansi_arrow_split_bs/readme.md create mode 100644 layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c create mode 100644 layouts/default/60_iso_arrow/info.json create mode 100644 layouts/default/60_iso_arrow/layout.json create mode 100644 layouts/default/60_iso_arrow/readme.md create mode 100644 layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c create mode 100644 layouts/default/60_iso_arrow_split_bs/info.json create mode 100644 layouts/default/60_iso_arrow_split_bs/layout.json create mode 100644 layouts/default/60_iso_arrow_split_bs/readme.md diff --git a/layouts/community/60_ansi_arrow_split_bs/readme.md b/layouts/community/60_ansi_arrow_split_bs/readme.md new file mode 100644 index 00000000000..c008b4a6dec --- /dev/null +++ b/layouts/community/60_ansi_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_ansi_arrow_split_bs + + LAYOUT_60_ansi_arrow_split_bs diff --git a/layouts/community/60_iso_arrow/readme.md b/layouts/community/60_iso_arrow/readme.md new file mode 100644 index 00000000000..73015ab248e --- /dev/null +++ b/layouts/community/60_iso_arrow/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow + + LAYOUT_60_iso_arrow diff --git a/layouts/community/60_iso_arrow_split_bs/readme.md b/layouts/community/60_iso_arrow_split_bs/readme.md new file mode 100644 index 00000000000..8f47644fe23 --- /dev/null +++ b/layouts/community/60_iso_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow_split_bs + + LAYOUT_60_iso_arrow_split_bs diff --git a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c index c0baf9f47a7..5ad94501d06 100644 --- a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c +++ b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c @@ -6,15 +6,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │Bspc │ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │Space │Alt│GUI│← │↓ │→ │ + * │Ctrl│GUI │Alt │Space │Alt│GUI│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_60_ansi_arrow( diff --git a/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c b/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c new file mode 100644 index 00000000000..e95baa6f4db --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │ ` │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ Bspc│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_ansi_arrow_split_bs( + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_ansi_arrow_split_bs/info.json b/layouts/default/60_ansi_arrow_split_bs/info.json new file mode 100644 index 00000000000..23e4b6937d4 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "60% ANSI Arrow Layout with Split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_ansi_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_ansi_arrow_split_bs/layout.json b/layouts/default/60_ansi_arrow_split_bs/layout.json new file mode 100644 index 00000000000..595b88bb558 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_ansi_arrow_split_bs/readme.md b/layouts/default/60_ansi_arrow_split_bs/readme.md new file mode 100644 index 00000000000..c008b4a6dec --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_ansi_arrow_split_bs + + LAYOUT_60_ansi_arrow_split_bs diff --git a/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c b/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c new file mode 100644 index 00000000000..d3eaa478685 --- /dev/null +++ b/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ Backsp│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_iso_arrow( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_CAPS, 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_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_iso_arrow/info.json b/layouts/default/60_iso_arrow/info.json new file mode 100644 index 00000000000..a14008b14f7 --- /dev/null +++ b/layouts/default/60_iso_arrow/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "60% ISO Arrow Layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_iso_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_iso_arrow/layout.json b/layouts/default/60_iso_arrow/layout.json new file mode 100644 index 00000000000..90f25c3ca8c --- /dev/null +++ b/layouts/default/60_iso_arrow/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","",{w:2},""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_iso_arrow/readme.md b/layouts/default/60_iso_arrow/readme.md new file mode 100644 index 00000000000..73015ab248e --- /dev/null +++ b/layouts/default/60_iso_arrow/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow + + LAYOUT_60_iso_arrow diff --git a/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c b/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c new file mode 100644 index 00000000000..651c97366c2 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │Bsp│Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_iso_arrow_split_bs( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + 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_CAPS, 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_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_iso_arrow_split_bs/info.json b/layouts/default/60_iso_arrow_split_bs/info.json new file mode 100644 index 00000000000..5a7b78e40d5 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "60% ISO Arrow Layout with Split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_iso_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_iso_arrow_split_bs/layout.json b/layouts/default/60_iso_arrow_split_bs/layout.json new file mode 100644 index 00000000000..bf494ab25f1 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_iso_arrow_split_bs/readme.md b/layouts/default/60_iso_arrow_split_bs/readme.md new file mode 100644 index 00000000000..8f47644fe23 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow_split_bs + + LAYOUT_60_iso_arrow_split_bs diff --git a/layouts/default/readme.md b/layouts/default/readme.md index fab13d47c55..2460f64701f 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -49,6 +49,21 @@ LAYOUT_60_ansi_arrow └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ ``` +``` +LAYOUT_60_ansi_arrow_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_60_ansi_arrow_split_bs_7u_spc ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -154,6 +169,36 @@ LAYOUT_60_iso └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ ``` +``` +LAYOUT_60_iso_arrow +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + +``` +LAYOUT_60_iso_arrow_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_60_iso_split_bs_rshift ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ From 61c7c1f74cc5365501a3038181df551df11f719e Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 2 May 2024 19:48:49 +1000 Subject: [PATCH 39/41] Convert some AVR GPIO operations to macros (#23424) --- keyboards/40percentclub/ut47/led.c | 14 +- keyboards/40percentclub/ut47/matrix.c | 44 ++++--- keyboards/amjkeyboard/amj96/matrix.c | 63 ++++----- keyboards/bajjak/bajjak.c | 10 +- keyboards/bpiphany/sixshooter/sixshooter.h | 61 +++++++-- keyboards/ckeys/obelus/obelus.c | 4 +- keyboards/clueboard/66/rev2/rev2.c | 24 ++-- keyboards/clueboard/66/rev3/rev3.c | 24 ++-- .../66_hotswap/prototype/prototype.c | 24 ++-- keyboards/converter/hp_46010a/matrix.c | 31 ++--- keyboards/converter/sun_usb/matrix.c | 6 +- keyboards/crawlpad/keymaps/default/keymap.c | 35 ++--- keyboards/do60/do60.h | 21 ++- keyboards/ergodox_ez/ergodox_ez.c | 17 +-- keyboards/ergodox_ez/ergodox_ez.h | 42 ++++-- keyboards/gboards/ergotaco/ergotaco.c | 29 +++-- keyboards/gboards/georgi/georgi.c | 17 ++- keyboards/gboards/gergo/gergo.c | 17 ++- keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c | 1 - keyboards/gh80_3000/keymaps/default/keymap.c | 1 - .../gh80_3000/keymaps/iso_default/keymap.c | 1 - keyboards/gh80_3000/keymaps/iso_std/keymap.c | 1 - keyboards/gh80_3000/keymaps/iso_wkl/keymap.c | 1 - .../glenpickle/chimera_ergo/chimera_ergo.c | 10 +- .../glenpickle/chimera_ergo/chimera_ergo.h | 40 ++---- keyboards/glenpickle/chimera_ls/chimera_ls.c | 10 +- keyboards/glenpickle/chimera_ls/chimera_ls.h | 40 ++---- .../glenpickle/chimera_ortho/chimera_ortho.c | 10 +- .../glenpickle/chimera_ortho/chimera_ortho.h | 40 ++---- .../chimera_ortho_plus/chimera_ortho_plus.c | 12 +- .../chimera_ortho_plus/chimera_ortho_plus.h | 16 ++- .../arrow_pad/keymaps/default/keymap.c | 14 +- .../arrow_pad/keymaps/pad_21/keymap.c | 16 +-- .../arrow_pad/keymaps/pad_24/keymap.c | 14 +- keyboards/handwired/atreus50/atreus50.c | 4 +- keyboards/handwired/datahand/matrix.c | 16 +-- keyboards/handwired/frenchdev/frenchdev.c | 11 +- keyboards/handwired/frenchdev/frenchdev.h | 42 ++++-- keyboards/handwired/frenchdev/matrix.c | 54 ++++---- keyboards/handwired/gamenum/gamenum.c | 8 +- .../gamenum/keymaps/default/keymap.c | 8 +- keyboards/handwired/retro_refit/retro_refit.c | 4 +- keyboards/hotdox/hotdox.h | 45 +++++-- keyboards/hotdox/matrix.c | 45 ++++--- keyboards/keyboardio/model01/leds.c | 7 +- keyboards/keyboardio/model01/matrix.c | 4 +- keyboards/kira/kira75/kira75.h | 23 +++- keyboards/kmini/matrix.c | 104 ++++++++------- .../mini/keymaps/default-gsm-newbs/keymap.c | 120 +++++++++--------- keyboards/knops/mini/keymaps/default/keymap.c | 120 +++++++++--------- keyboards/lazydesigners/the50/the50.c | 7 +- keyboards/mitosis/mitosis.c | 10 +- keyboards/mitosis/mitosis.h | 40 ++---- .../noxary/268/keymaps/sixtyeight/keymap.c | 5 +- keyboards/org60/org60.h | 21 ++- keyboards/planck/light/light.c | 4 +- .../comet46/keymaps/default-rgbled/keymap.c | 22 ++-- keyboards/sirius/uni660/rev1/rev1.c | 12 +- keyboards/sirius/uni660/rev1/rev1.h | 40 ++---- keyboards/sirius/uni660/rev2/rev2.c | 12 +- keyboards/sirius/uni660/rev2/rev2.h | 40 ++---- keyboards/sirius/unigo66/main.c | 20 +-- keyboards/sixkeyboard/matrix.c | 13 +- keyboards/sixkeyboard/sixkeyboard.c | 29 ++--- keyboards/tmo50/tmo50.c | 40 ++---- keyboards/v60_type_r/config.h | 6 +- keyboards/v60_type_r/v60_type_r.c | 16 ++- .../omnikey_bh/keymaps/default/keymap.c | 23 +--- keyboards/wilba_tech/wt_rgb_backlight.c | 9 +- keyboards/xiudi/xd60/xd60.h | 21 ++- keyboards/ydkb/yd68/keymaps/default/keymap.c | 2 +- 71 files changed, 877 insertions(+), 840 deletions(-) diff --git a/keyboards/40percentclub/ut47/led.c b/keyboards/40percentclub/ut47/led.c index 867a6e2e2a3..fa431de760c 100644 --- a/keyboards/40percentclub/ut47/led.c +++ b/keyboards/40percentclub/ut47/led.c @@ -25,16 +25,14 @@ bool led_update_kb(led_t led_state) if (res) { if (led_state.caps_lock) { // output low - DDRB |= (1<<0); - PORTB &= ~(1<<0); - DDRD |= (1<<5); - PORTD &= ~(1<<5); + gpio_set_pin_output(B0); + gpio_write_pin_low(B0); + gpio_set_pin_output(D5); + gpio_write_pin_low(D5); } else { // Hi-Z - DDRB &= ~(1<<0); - PORTB &= ~(1<<0); - DDRD &= ~(1<<5); - PORTD &= ~(1<<5); + gpio_set_pin_input(B0); + gpio_set_pin_input(D5); } } return false; diff --git a/keyboards/40percentclub/ut47/matrix.c b/keyboards/40percentclub/ut47/matrix.c index 02ed88b7091..d803f11c5e4 100644 --- a/keyboards/40percentclub/ut47/matrix.c +++ b/keyboards/40percentclub/ut47/matrix.c @@ -126,14 +126,18 @@ void matrix_print(void) static void init_cols(void) { // Input with pull-up(DDR:0, PORT:1) - DDRF &= ~(1<<4 | 1<<5 | 1<<6 | 1<<7); - PORTF |= (1<<4 | 1<<5 | 1<<6 | 1<<7); - DDRE &= ~(1<<6); - PORTE |= (1<<6); - DDRD &= ~(1<<7); - PORTD |= (1<<7); - DDRB &= ~(1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6); - PORTB |= (1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6); + gpio_set_pin_input_high(F4); + gpio_set_pin_input_high(F5); + gpio_set_pin_input_high(F6); + gpio_set_pin_input_high(F7); + gpio_set_pin_input_high(E6); + gpio_set_pin_input_high(D7); + gpio_set_pin_input_high(B1); + gpio_set_pin_input_high(B2); + gpio_set_pin_input_high(B3); + gpio_set_pin_input_high(B4); + gpio_set_pin_input_high(B5); + gpio_set_pin_input_high(B6); } static matrix_row_t read_cols(void) @@ -160,10 +164,10 @@ static matrix_row_t read_cols(void) static void unselect_rows(void) { // Hi-Z(DDR:0, PORT:0) to unselect - DDRD &= ~0b00010011; - PORTD &= ~0b00010011; - DDRC &= ~0b01000000; - PORTC &= ~0b01000000; + gpio_set_pin_input(C6); + gpio_set_pin_input(D0); + gpio_set_pin_input(D1); + gpio_set_pin_input(D4); } static void select_row(uint8_t row) @@ -171,20 +175,20 @@ static void select_row(uint8_t row) // Output low(DDR:1, PORT:0) to select switch (row) { case 0: - DDRD |= (1<<1); - PORTD &= ~(1<<1); + gpio_set_pin_output(D1); + gpio_write_pin_low(D1); break; case 1: - DDRD |= (1<<0); - PORTD &= ~(1<<0); + gpio_set_pin_output(D0); + gpio_write_pin_low(D0); break; case 2: - DDRD |= (1<<4); - PORTD &= ~(1<<4); + gpio_set_pin_output(D4); + gpio_write_pin_low(D4); break; case 3: - DDRC |= (1<<6); - PORTC &= ~(1<<6); + gpio_set_pin_output(C6); + gpio_write_pin_low(C6); break; } } diff --git a/keyboards/amjkeyboard/amj96/matrix.c b/keyboards/amjkeyboard/amj96/matrix.c index 7faf40d4fe7..448508971fb 100644 --- a/keyboards/amjkeyboard/amj96/matrix.c +++ b/keyboards/amjkeyboard/amj96/matrix.c @@ -65,8 +65,8 @@ void matrix_init(void) #endif // 85 REST - DDRD |= _BV(PD7); - PORTD |= _BV(PD7); + gpio_set_pin_output(D7); + gpio_write_pin_high(D7); // initialize row and col init_rows(); @@ -143,36 +143,35 @@ static void init_cols(void) DDRD &= 0b00011100; PORTD |= 0b11100011; - DDRB &= ~(_BV(PB6) | _BV(PB7)| _BV(PB0)); - PORTB |= (_BV(PB6) | _BV(PB7)| _BV(PB0)); + gpio_set_pin_input_high(B0); + gpio_set_pin_input_high(B6); + gpio_set_pin_input_high(B7); - DDRE &= ~_BV(PE6); - PORTE |= _BV(PE6); + gpio_set_pin_input_high(E6); - DDRC &= ~_BV(PC7); - PORTC |= _BV(PC7); + gpio_set_pin_input_high(C7); } static matrix_row_t read_cols(void) { - return (PINF&_BV(PF7) ? 0 : (1<<0)) | - (PINF&_BV(PF6) ? 0 : (1<<1)) | - (PINF&_BV(PF5) ? 0 : (1<<2)) | - (PINF&_BV(PF4) ? 0 : (1<<3)) | - (PINF&_BV(PF1) ? 0 : (1<<4)) | - (PINF&_BV(PF0) ? 0 : (1<<5)) | - (PINE&_BV(PE6) ? 0 : (1<<6)) | - (PIND&_BV(PD7) ? 0 : (1<<7)) | - (PIND&_BV(PD6) ? 0 : (1<<8)) | - (PIND&_BV(PD5) ? 0 : (1<<9)) | - (PIND&_BV(PD1) ? 0 : (1<<10)) | - (PIND&_BV(PD0) ? 0 : (1<<11)) | - (PINB&_BV(PB7) ? 0 : (1<<12)) | - (PINB&_BV(PB6) ? 0 : (1<<13)) | - (PINB&_BV(PB0) ? 0 : (1<<14)) | - (PINC&_BV(PC7) ? 0 : (1<<15)); + return (gpio_read_pin(F7) ? 0 : (1<<0)) | + (gpio_read_pin(F6) ? 0 : (1<<1)) | + (gpio_read_pin(F5) ? 0 : (1<<2)) | + (gpio_read_pin(F4) ? 0 : (1<<3)) | + (gpio_read_pin(F1) ? 0 : (1<<4)) | + (gpio_read_pin(F0) ? 0 : (1<<5)) | + (gpio_read_pin(E6) ? 0 : (1<<6)) | + (gpio_read_pin(D7) ? 0 : (1<<7)) | + (gpio_read_pin(D6) ? 0 : (1<<8)) | + (gpio_read_pin(D5) ? 0 : (1<<9)) | + (gpio_read_pin(D1) ? 0 : (1<<10)) | + (gpio_read_pin(D0) ? 0 : (1<<11)) | + (gpio_read_pin(B7) ? 0 : (1<<12)) | + (gpio_read_pin(B6) ? 0 : (1<<13)) | + (gpio_read_pin(B0) ? 0 : (1<<14)) | + (gpio_read_pin(C7) ? 0 : (1<<15)); } /* Row pin configuration @@ -184,21 +183,23 @@ static matrix_row_t read_cols(void) static void init_rows(void) { - DDRB |= (1<> bit ; } @@ -138,18 +138,19 @@ void Matrix_ThrowByte(void) { void matrix_init (void) { // debug_matrix = 1; // PB0 (SS) and PB1 (SCLK) set to outputs - DDRB |= RESET | SCLK ; + gpio_set_pin_output(HP_46010A_RESET_PIN); + gpio_set_pin_output(HP_46010A_SCLK_PIN); // PB2, is unused, and PB3 is our serial input - DDRB &= ~SDATA ; + gpio_set_pin_input(HP_46010A_SDATA_PIN); // SS is reset for this board, and is active High // SCLK is the serial clock and is active High - PORTB &= ~RESET ; - PORTB |= SCLK ; + gpio_write_pin_low(HP_46010A_RESET_PIN); + gpio_write_pin_high(HP_46010A_SCLK_PIN); // led pin - DDRD |= LED ; - PORTD &= ~LED ; + gpio_set_pin_output(HP_46010A_LED_PIN); + gpio_write_pin_low(HP_46010A_LED_PIN); matrix_init_kb(); diff --git a/keyboards/converter/sun_usb/matrix.c b/keyboards/converter/sun_usb/matrix.c index 6d52d5cd6c5..93354ee114b 100644 --- a/keyboards/converter/sun_usb/matrix.c +++ b/keyboards/converter/sun_usb/matrix.c @@ -74,8 +74,8 @@ uint8_t matrix_cols(void) void matrix_init(void) { - /* DDRD |= (1<<6); */ - /* PORTD |= (1<<6); */ + /* gpio_set_pin_output(D6); */ + /* gpio_write_pin_high(D6); */ debug_enable = true; uart_init(1200); @@ -99,7 +99,7 @@ void matrix_init(void) /* } */ /* print(" Done\n"); */ - /* PORTD &= ~(1<<6); */ + /* gpio_write_pin_low(D6) */ matrix_init_kb(); return; diff --git a/keyboards/crawlpad/keymaps/default/keymap.c b/keyboards/crawlpad/keymaps/default/keymap.c index 547132bb7dd..306ade6e5f8 100755 --- a/keyboards/crawlpad/keymaps/default/keymap.c +++ b/keyboards/crawlpad/keymaps/default/keymap.c @@ -40,32 +40,16 @@ void set_led(int idx, bool enable) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case BL1: - if (record->event.pressed) { - PORTB |= (1 << 4); - } else { - PORTB &= ~(1 << 4); - } + gpio_write_pin(B4, record->event.pressed); return false; case BL2: - if (record->event.pressed) { - PORTB |= (1 << 5); - } else { - PORTB &= ~(1 << 5); - } + gpio_write_pin(B5, record->event.pressed); return false; case BL3: - if (record->event.pressed) { - PORTB |= (1 << 6); - } else { - PORTB &= ~(1 << 6); - } + gpio_write_pin(B6, record->event.pressed); return false; case BL4: - if (record->event.pressed) { - PORTB |= (1 << 7); - } else { - PORTB &= ~(1 << 7); - } + gpio_write_pin(B7, record->event.pressed); return false; } return true; @@ -73,6 +57,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void matrix_init_user(void) { /* set LED row pins to output and low */ - DDRB |= (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7); - PORTB &= ~(1 << 4) & ~(1 << 5) & ~(1 << 6) & ~(1 << 7); + gpio_set_pin_output(B4); + gpio_set_pin_output(B5); + gpio_set_pin_output(B6); + gpio_set_pin_output(B7); + + gpio_write_pin_low(B4); + gpio_write_pin_low(B5); + gpio_write_pin_low(B6); + gpio_write_pin_low(B7); } diff --git a/keyboards/do60/do60.h b/keyboards/do60/do60.h index de64b8f134d..5aa9c17f2ea 100644 --- a/keyboards/do60/do60.h +++ b/keyboards/do60/do60.h @@ -2,6 +2,9 @@ #include "quantum.h" +#define DO60_CAPS_LOCK_LED_PIN B2 +#define DO60_BACKLIGHT_PIN F4 + /* DO60 LEDs * GPIO pads * 0 F7 not connected @@ -13,11 +16,21 @@ */ /* -inline void do60_caps_led_on(void) { DDRB |= (1<<2); PORTB &= ~(1<<2); } -inline void do60_bl_led_on(void) { DDRF |= (1<<4); PORTF &= ~(1<<4); } +inline void do60_caps_led_on(void) { + gpio_set_pin_output(DO60_CAPS_LOCK_LED_PIN); + gpio_write_pin_low(DO60_CAPS_LOCK_LED_PIN); +} +inline void do60_bl_led_on(void) { + gpio_set_pin_output(DO60_BACKLIGHT_PIN); + gpio_write_pin_low(DO60_BACKLIGHT_PIN); +} -inline void do60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); } -inline void do60_bl_led_off(void) { DDRF &= ~(1<<4); PORTF &= ~(1<<4); } +inline void do60_caps_led_off(void) { + gpio_set_pin_input(DO60_CAPS_LOCK_LED_PIN); +} +inline void do60_bl_led_off(void) { + gpio_set_pin_input(DO60_BACKLIGHT_PIN); +} */ inline void setdefaultrgb(void){ rgblight_sethsv(100,100,100); } diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index 5270738f86d..5fc173917fd 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -24,13 +24,11 @@ extern inline void ergodox_board_led_on(void); extern inline void ergodox_right_led_1_on(void); extern inline void ergodox_right_led_2_on(void); extern inline void ergodox_right_led_3_on(void); -extern inline void ergodox_right_led_on(uint8_t led); extern inline void ergodox_board_led_off(void); extern inline void ergodox_right_led_1_off(void); extern inline void ergodox_right_led_2_off(void); extern inline void ergodox_right_led_3_off(void); -extern inline void ergodox_right_led_off(uint8_t led); extern inline void ergodox_led_all_on(void); extern inline void ergodox_led_all_off(void); @@ -53,17 +51,14 @@ void matrix_init_kb(void) { TCCR1B = 0b00001001; // set and configure fast PWM // (tied to Vcc for hardware convenience) - DDRB &= ~(1 << 4); // set B(4) as input - PORTB &= ~(1 << 4); // set B(4) internal pull-up disabled + gpio_set_pin_input(B4); // set B(4) as input, internal pull-up disabled - // unused pins - C7, D4, D5, D7, E6 + // unused pins - C7, D4, D5, E6 // set as input with internal pull-up enabled - DDRC &= ~(1 << 7); - DDRD &= ~(1 << 5 | 1 << 4); - DDRE &= ~(1 << 6); - PORTC |= (1 << 7); - PORTD |= (1 << 5 | 1 << 4); - PORTE |= (1 << 6); + gpio_set_pin_input_high(C7); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D5); + gpio_set_pin_input_high(E6); keyboard_config.raw = eeconfig_read_kb(); ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4); diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h index df2dbed7157..3938ff49f16 100644 --- a/keyboards/ergodox_ez/ergodox_ez.h +++ b/keyboards/ergodox_ez/ergodox_ez.h @@ -51,18 +51,40 @@ uint8_t ergodox_left_leds_update(void); #define LED_BRIGHTNESS_HI 255 #endif +#define ERGODOX_EZ_BOARD_LED_PIN D6 +#define ERGODOX_EZ_RIGHT_LED_1_PIN B5 +#define ERGODOX_EZ_RIGHT_LED_2_PIN B6 +#define ERGODOX_EZ_RIGHT_LED_3_PIN B7 -inline void ergodox_board_led_on(void) { DDRD |= (1<<6); PORTD |= (1<<6); } -inline void ergodox_right_led_1_on(void) { DDRB |= (1<<5); PORTB |= (1<<5); } -inline void ergodox_right_led_2_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); } -inline void ergodox_right_led_3_on(void) { DDRB |= (1<<7); PORTB |= (1<<7); } -inline void ergodox_right_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); } +inline void ergodox_board_led_on(void) { + gpio_set_pin_output(ERGODOX_EZ_BOARD_LED_PIN); + gpio_write_pin_high(ERGODOX_EZ_BOARD_LED_PIN); +} +inline void ergodox_right_led_1_on(void) { + gpio_set_pin_output(ERGODOX_EZ_RIGHT_LED_1_PIN); + gpio_write_pin_high(ERGODOX_EZ_RIGHT_LED_1_PIN); +} +inline void ergodox_right_led_2_on(void) { + gpio_set_pin_output(ERGODOX_EZ_RIGHT_LED_2_PIN); + gpio_write_pin_high(ERGODOX_EZ_RIGHT_LED_2_PIN); +} +inline void ergodox_right_led_3_on(void) { + gpio_set_pin_output(ERGODOX_EZ_RIGHT_LED_3_PIN); + gpio_write_pin_high(ERGODOX_EZ_RIGHT_LED_3_PIN); +} -inline void ergodox_board_led_off(void) { DDRD &= ~(1<<6); PORTD &= ~(1<<6); } -inline void ergodox_right_led_1_off(void) { DDRB &= ~(1<<5); PORTB &= ~(1<<5); } -inline void ergodox_right_led_2_off(void) { DDRB &= ~(1<<6); PORTB &= ~(1<<6); } -inline void ergodox_right_led_3_off(void) { DDRB &= ~(1<<7); PORTB &= ~(1<<7); } -inline void ergodox_right_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); } +inline void ergodox_board_led_off(void) { + gpio_set_pin_input(ERGODOX_EZ_BOARD_LED_PIN); +} +inline void ergodox_right_led_1_off(void) { + gpio_set_pin_input(ERGODOX_EZ_RIGHT_LED_1_PIN); +} +inline void ergodox_right_led_2_off(void) { + gpio_set_pin_input(ERGODOX_EZ_RIGHT_LED_2_PIN); +} +inline void ergodox_right_led_3_off(void) { + gpio_set_pin_input(ERGODOX_EZ_RIGHT_LED_3_PIN); +} #ifdef LEFT_LEDS bool ergodox_left_led_1; diff --git a/keyboards/gboards/ergotaco/ergotaco.c b/keyboards/gboards/ergotaco/ergotaco.c index 6795dfde4f2..1e526f15e29 100644 --- a/keyboards/gboards/ergotaco/ergotaco.c +++ b/keyboards/gboards/ergotaco/ergotaco.c @@ -5,25 +5,30 @@ i2c_status_t mcp23018_status = 0x20; void matrix_init_kb(void) { // (tied to Vcc for hardware convenience) - //DDRB &= ~(1<<4); // set B(4) as input - //PORTB &= ~(1<<4); // set B(4) internal pull-up disabled + //gpio_set_pin_input(B4); // set B(4) as input, internal pull-up disabled // unused pins // set as input with internal pull-up enabled - DDRB &= ~(1<<4 | 1<<5 | 1<<6 | 1<<7); - PORTB |= (1<<4 | 1<<5 | 1<<6 | 1<<7); + gpio_set_pin_input_high(B4); + gpio_set_pin_input_high(B5); + gpio_set_pin_input_high(B6); + gpio_set_pin_input_high(B7); - DDRC &= ~(1<<7 | 1<<6); - PORTC |= (1<<7 | 1<<6); + gpio_set_pin_input_high(C6); + gpio_set_pin_input_high(C7); - DDRD &= ~(1<<4 | 1<<5 | 1<<6 | 1<<7); - PORTD |= (1<<4 | 1<<5 | 1<<6 | 1<<7); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D5); + gpio_set_pin_input_high(D6); + gpio_set_pin_input_high(D7); - DDRE &= ~(1<<6); - PORTE |= (1<<6); + gpio_set_pin_input_high(E6); - DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<6 | 1<<7); - PORTF |= (1<<0 | 1<<1 | 1<<4 | 1<<6 | 1<<7); + gpio_set_pin_input_high(D0); + gpio_set_pin_input_high(D1); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D6); + gpio_set_pin_input_high(D7); matrix_init_user(); } diff --git a/keyboards/gboards/georgi/georgi.c b/keyboards/gboards/georgi/georgi.c index 44b7067b475..da88e6ed8ba 100644 --- a/keyboards/gboards/georgi/georgi.c +++ b/keyboards/gboards/georgi/georgi.c @@ -7,17 +7,16 @@ void matrix_init_kb(void) { steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT // (tied to Vcc for hardware convenience) - //DDRB &= ~(1<<4); // set B(4) as input - //PORTB &= ~(1<<4); // set B(4) internal pull-up disabled + //gpio_set_pin_input(B4); // set B(4) as input, internal pull-up disabled - // unused pins - C7, D4, D5, D7, E6 + // unused pins - C7, D4, D5, D6, D7, E6 // set as input with internal pull-up enabled - DDRC &= ~(1<<7); - DDRD &= ~(1<<5 | 1<<4 | 1<<6 | 1<<7); - DDRE &= ~(1<<6); - PORTC |= (1<<7); - PORTD |= (1<<5 | 1<<4 | 1<<6 | 1<<7); - PORTE |= (1<<6); + gpio_set_pin_input_high(C7); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D5); + gpio_set_pin_input_high(D6); + gpio_set_pin_input_high(D7); + gpio_set_pin_input_high(E6); matrix_init_user(); } diff --git a/keyboards/gboards/gergo/gergo.c b/keyboards/gboards/gergo/gergo.c index fa73c4b42f5..1ec6105eeb6 100644 --- a/keyboards/gboards/gergo/gergo.c +++ b/keyboards/gboards/gergo/gergo.c @@ -5,17 +5,16 @@ i2c_status_t mcp23018_status = 0x20; void matrix_init_kb(void) { // (tied to Vcc for hardware convenience) - //DDRB &= ~(1<<4); // set B(4) as input - //PORTB &= ~(1<<4); // set B(4) internal pull-up disabled + //gpio_set_pin_input(B4); // set B(4) as input, internal pull-up disabled - // unused pins - C7, D4, D5, D7, E6 + // unused pins - C7, D4, D5, D6, D7, E6 // set as input with internal pull-up enabled - DDRC &= ~(1<<7); - DDRD &= ~(1<<5 | 1<<4 | 1<<6 | 1<<7); - DDRE &= ~(1<<6); - PORTC |= (1<<7); - PORTD |= (1<<5 | 1<<4 | 1<<6 | 1<<7); - PORTE |= (1<<6); + gpio_set_pin_input_high(C7); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D5); + gpio_set_pin_input_high(D6); + gpio_set_pin_input_high(D7); + gpio_set_pin_input_high(E6); matrix_init_user(); } diff --git a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c index a949b11941e..54fdb3400d3 100644 --- a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c +++ b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c @@ -11,4 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ) }; - diff --git a/keyboards/gh80_3000/keymaps/default/keymap.c b/keyboards/gh80_3000/keymaps/default/keymap.c index 08f43c1d685..4a54df83cc0 100644 --- a/keyboards/gh80_3000/keymaps/default/keymap.c +++ b/keyboards/gh80_3000/keymaps/default/keymap.c @@ -11,4 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT ) }; - diff --git a/keyboards/gh80_3000/keymaps/iso_default/keymap.c b/keyboards/gh80_3000/keymaps/iso_default/keymap.c index ff2b373a544..b3433eb21a5 100644 --- a/keyboards/gh80_3000/keymaps/iso_default/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_default/keymap.c @@ -11,4 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT ) }; - diff --git a/keyboards/gh80_3000/keymaps/iso_std/keymap.c b/keyboards/gh80_3000/keymaps/iso_std/keymap.c index 7783aae0a9f..26fbb855e83 100644 --- a/keyboards/gh80_3000/keymaps/iso_std/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_std/keymap.c @@ -11,4 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ) }; - diff --git a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c index 9108f6aba41..4d20f5a402e 100644 --- a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c +++ b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c @@ -11,4 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ) }; - diff --git a/keyboards/glenpickle/chimera_ergo/chimera_ergo.c b/keyboards/glenpickle/chimera_ergo/chimera_ergo.c index 47653c2e4b6..40748e0b3d2 100644 --- a/keyboards/glenpickle/chimera_ergo/chimera_ergo.c +++ b/keyboards/glenpickle/chimera_ergo/chimera_ergo.c @@ -1,10 +1,12 @@ #include "chimera_ergo.h" void led_init(void) { - DDRD |= (1<<1); - PORTD |= (1<<1); - DDRF |= (1<<4) | (1<<5); - PORTF |= (1<<4) | (1<<5); + gpio_set_pin_output(CHIMERA_ERGO_GREEN_LED_PIN); + gpio_write_pin_high(CHIMERA_ERGO_GREEN_LED_PIN); + gpio_set_pin_output(CHIMERA_ERGO_BLUE_LED_PIN); + gpio_write_pin_high(CHIMERA_ERGO_BLUE_LED_PIN); + gpio_set_pin_output(CHIMERA_ERGO_RED_LED_PIN); + gpio_write_pin_high(CHIMERA_ERGO_RED_LED_PIN); } diff --git a/keyboards/glenpickle/chimera_ergo/chimera_ergo.h b/keyboards/glenpickle/chimera_ergo/chimera_ergo.h index 04ef56503ff..46f0b931e8a 100644 --- a/keyboards/glenpickle/chimera_ergo/chimera_ergo.h +++ b/keyboards/glenpickle/chimera_ergo/chimera_ergo.h @@ -2,12 +2,16 @@ #include "quantum.h" -#define red_led_off PORTF |= (1<<5) -#define red_led_on PORTF &= ~(1<<5) -#define blu_led_off PORTF |= (1<<4) -#define blu_led_on PORTF &= ~(1<<4) -#define grn_led_off PORTD |= (1<<1) -#define grn_led_on PORTD &= ~(1<<1) +#define CHIMERA_ERGO_RED_LED_PIN F5 +#define CHIMERA_ERGO_GREEN_LED_PIN D1 +#define CHIMERA_ERGO_BLUE_LED_PIN F4 + +#define red_led_off gpio_write_pin_high(CHIMERA_ERGO_RED_LED_PIN) +#define red_led_on gpio_write_pin_low(CHIMERA_ERGO_RED_LED_PIN) +#define blu_led_off gpio_write_pin_high(CHIMERA_ERGO_BLUE_LED_PIN) +#define blu_led_on gpio_write_pin_low(CHIMERA_ERGO_BLUE_LED_PIN) +#define grn_led_off gpio_write_pin_high(CHIMERA_ERGO_GREEN_LED_PIN) +#define grn_led_on gpio_write_pin_low(CHIMERA_ERGO_GREEN_LED_PIN) #define set_led_off red_led_off; grn_led_off; blu_led_off #define set_led_red red_led_on; grn_led_off; blu_led_off @@ -17,27 +21,3 @@ #define set_led_magenta red_led_on; grn_led_off; blu_led_on #define set_led_cyan red_led_off; grn_led_on; blu_led_on #define set_led_white red_led_on; grn_led_on; blu_led_on - -/* -#define LED_B 5 -#define LED_R 6 -#define LED_G 7 - -#define all_leds_off PORTF &= ~(1<event.pressed) { - PORTC |= (1 << 6); // PC6 goes high + gpio_write_pin_high(C6); } return true; case TO(OSY): if (record->event.pressed) { - PORTC &= ~(1 << 6); // PC6 goes high - PORTD |= (1<<4); + gpio_write_pin_low(C6); + gpio_write_pin_high(D4); } return true; case TO(DEF): if (record->event.pressed) { - PORTD &= ~(1 << 4); // PC6 goes high + gpio_write_pin_low(D4); } return true; diff --git a/keyboards/handwired/retro_refit/retro_refit.c b/keyboards/handwired/retro_refit/retro_refit.c index b7e1ec03fa2..f23ef1fd404 100644 --- a/keyboards/handwired/retro_refit/retro_refit.c +++ b/keyboards/handwired/retro_refit/retro_refit.c @@ -6,8 +6,8 @@ void matrix_init_kb(void) { // runs once when the firmware starts up // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS) - DDRD |= (1<<6); - PORTD |= (1<<6); + gpio_set_pin_output(D6); + gpio_write_pin_high(D6); matrix_init_user(); }; diff --git a/keyboards/hotdox/hotdox.h b/keyboards/hotdox/hotdox.h index b9333444393..d0b6c401f94 100644 --- a/keyboards/hotdox/hotdox.h +++ b/keyboards/hotdox/hotdox.h @@ -4,17 +4,46 @@ #include #include +#define HOTDOX_BOARD_LED_PIN B7 +#define HOTDOX_RIGHT_LED_1_PIN B5 +#define HOTDOX_RIGHT_LED_2_PIN B6 +#define HOTDOX_RIGHT_LED_3_PIN B4 + void init_ergodox(void); -inline void ergodox_board_led_on(void) { DDRB |= (1< #include #include -#include // LUFA #include "lufa.h" @@ -9,6 +7,8 @@ #include "sendchar.h" #include "debug.h" #include "keyboard.h" +#include "gpio.h" +#include "wait.h" #include "led.h" /* LED ping configuration */ @@ -16,16 +16,16 @@ //#define LEONARDO_LED #if defined(TMK_LED) // For TMK converter and Teensy -#define LED_TX_INIT (DDRD |= (1<<6)) -#define LED_TX_ON (PORTD |= (1<<6)) -#define LED_TX_OFF (PORTD &= ~(1<<6)) -#define LED_TX_TOGGLE (PORTD ^= (1<<6)) +#define LED_TX_INIT gpio_set_pin_output(D6) +#define LED_TX_ON gpio_write_pin_high(D6) +#define LED_TX_OFF gpio_write_pin_low(D6) +#define LED_TX_TOGGLE gpio_toggle_pin(D6) #elif defined(LEONARDO_LED) // For Leonardo(TX LED) -#define LED_TX_INIT (DDRD |= (1<<5)) -#define LED_TX_ON (PORTD &= ~(1<<5)) -#define LED_TX_OFF (PORTD |= (1<<5)) -#define LED_TX_TOGGLE (PORTD ^= (1<<5)) +#define LED_TX_INIT gpio_set_pin_output(D5) +#define LED_TX_ON gpio_write_pin_low(D5) +#define LED_TX_OFF gpio_write_pin_high(D5) +#define LED_TX_TOGGLE gpio_toggle_pin(D5) #else #define LED_TX_INIT #define LED_TX_ON diff --git a/keyboards/sixkeyboard/matrix.c b/keyboards/sixkeyboard/matrix.c index ddbd41ac553..24cb647297e 100644 --- a/keyboards/sixkeyboard/matrix.c +++ b/keyboards/sixkeyboard/matrix.c @@ -71,13 +71,12 @@ uint8_t matrix_cols(void) void matrix_init(void) { - - DDRC &= ~(1<<7); - PORTC |= (1<<7); - DDRB &= ~(1<<7 | 1<<5); - PORTB |= (1<<7 | 1<<5); - DDRD &= ~(1<<6 | 1<<4 | 1<<1); - PORTD |= (1<<6 | 1<<4 | 1<<1); + gpio_set_pin_input_high(C7); + gpio_set_pin_input_high(B5); + gpio_set_pin_input_high(B7); + gpio_set_pin_input_high(D1); + gpio_set_pin_input_high(D4); + gpio_set_pin_input_high(D6); for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; diff --git a/keyboards/sixkeyboard/sixkeyboard.c b/keyboards/sixkeyboard/sixkeyboard.c index 7667ee7f44b..5a5c818d13f 100644 --- a/keyboards/sixkeyboard/sixkeyboard.c +++ b/keyboards/sixkeyboard/sixkeyboard.c @@ -4,27 +4,26 @@ void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up - DDRC |= (1<<4); - PORTC &= ~(1<<4); + gpio_set_pin_output(C4); + gpio_write_pin_low(C4); + gpio_set_pin_output(C6); + gpio_write_pin_low(C6); - DDRC |= (1<<6); - PORTC &= ~(1<<6); + gpio_set_pin_output(B6); + gpio_write_pin_low(B6); - DDRB |= (1<<6); - PORTB &= ~(1<<6); + gpio_set_pin_output(B4); + gpio_write_pin_low(B4); - DDRB |= (1<<4); - PORTB &= ~(1<<4); + gpio_set_pin_output(D5); + gpio_write_pin_low(D5); - DDRD |= (1<<5); - PORTD &= ~(1<<5); + gpio_set_pin_output(D2); + gpio_write_pin_low(D2); - DDRD |= (1<<2); - PORTD &= ~(1<<2); - - DDRD |= (1<<3); - PORTD &= ~(1<<3); + gpio_set_pin_output(D3); + gpio_write_pin_low(D3); matrix_init_user(); }; \ No newline at end of file diff --git a/keyboards/tmo50/tmo50.c b/keyboards/tmo50/tmo50.c index 80eb286f45c..635b9db0036 100644 --- a/keyboards/tmo50/tmo50.c +++ b/keyboards/tmo50/tmo50.c @@ -19,14 +19,14 @@ void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up - DDRB |= (1 << PB0); //init B0 - PORTB &= ~(1 << PB0); //turn on B0 - DDRB |= (1 << PB1); - PORTB |= (1<. #define RGB_STEP 16 -#define RGB_RED_PIN PF6 -#define RGB_GREEN_PIN PF5 -#define RGB_BLUE_PIN PF4 +#define RGB_RED_PIN F6 +#define RGB_GREEN_PIN F5 +#define RGB_BLUE_PIN F4 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/v60_type_r/v60_type_r.c b/keyboards/v60_type_r/v60_type_r.c index 540c5ec6ecf..6bace804e2b 100644 --- a/keyboards/v60_type_r/v60_type_r.c +++ b/keyboards/v60_type_r/v60_type_r.c @@ -115,18 +115,22 @@ void rgb_timer_init(void) { } void rgb_init(void) { - DDRF |= (_BV(PF6) | _BV(PF5) | _BV(PF4)); - PORTF |= (_BV(PF6) | _BV(PF5) | _BV(PF4)); + gpio_set_pin_output(F4); + gpio_set_pin_output(F5); + gpio_set_pin_output(F6); + gpio_write_pin_high(F4); + gpio_write_pin_high(F5); + gpio_write_pin_high(F6); rgb_timer_init(); } -void set_rgb_pin_on(uint8_t pin) { - PORTF &= ~_BV(pin); +void set_rgb_pin_on(pin_t pin) { + gpio_write_pin_low(pin); } -void set_rgb_pin_off(uint8_t pin) { - PORTF |= _BV(pin); +void set_rgb_pin_off(pin_t pin) { + gpio_write_pin_high(pin); } ISR(TIMER3_COMPA_vect) diff --git a/keyboards/viktus/omnikey_bh/keymaps/default/keymap.c b/keyboards/viktus/omnikey_bh/keymaps/default/keymap.c index e5fb6bf9025..ad63d050233 100644 --- a/keyboards/viktus/omnikey_bh/keymaps/default/keymap.c +++ b/keyboards/viktus/omnikey_bh/keymaps/default/keymap.c @@ -23,24 +23,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; bool led_update_user(led_t led_state) { - DDRB |= (1 << 4) | (1 << 5) | (1 << 6); + gpio_set_pin_output(B4); + gpio_set_pin_output(B5); + gpio_set_pin_output(B6); - if (led_state.num_lock) { - PORTB |= (1 << 4); - } else { - PORTB &= ~(1 << 4); - } + gpio_write_pin(B4, led_state.num_lock); + gpio_write_pin(B5, led_state.caps_lock); + gpio_write_pin(B6, led_state.scroll_lock); - if (led_state.caps_lock) { - PORTB |= (1 << 5); - } else { - PORTB &= ~(1 << 5); - } - - if (led_state.scroll_lock) { - PORTB |= (1 << 6); - } else { - PORTB &= ~(1 << 6); - } return false; } diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index 02bcdd610be..936286c2eef 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c @@ -2629,15 +2629,12 @@ void backlight_debug_led( bool state ) { if (state) { - // Output high. - DDRE |= (1<<6); - PORTE |= (1<<6); + gpio_set_pin_output(E6); + gpio_write_pin_high(E6); } else { - // Output low. - DDRE &= ~(1<<6); - PORTE &= ~(1<<6); + gpio_set_pin_input(E6); } } #endif // defined(RGB_DEBUGGING_ONLY) diff --git a/keyboards/xiudi/xd60/xd60.h b/keyboards/xiudi/xd60/xd60.h index 3d3c1ae885c..c399b2965d3 100644 --- a/keyboards/xiudi/xd60/xd60.h +++ b/keyboards/xiudi/xd60/xd60.h @@ -2,6 +2,9 @@ #include "quantum.h" +#define XD60_CAPS_LOCK_LED_PIN B2 +#define XD60_BACKLIGHT_PIN F5 + /* XD60 LEDs * GPIO pads * 0 F7 not connected @@ -11,8 +14,18 @@ * B2 Capslock LED * B0 not connected */ -inline void xd60_caps_led_on(void) { DDRB |= (1<<2); PORTB &= ~(1<<2); } -inline void xd60_bl_led_on(void) { DDRF |= (1<<5); PORTF &= ~(1<<5); } +inline void xd60_caps_led_on(void) { + gpio_set_pin_output(XD60_CAPS_LOCK_LED_PIN); + gpio_write_pin_low(XD60_CAPS_LOCK_LED_PIN); +} +inline void xd60_bl_led_on(void) { + gpio_set_pin_output(XD60_BACKLIGHT_PIN); + gpio_write_pin_low(XD60_BACKLIGHT_PIN); +} -inline void xd60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); } -inline void xd60_bl_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); } +inline void xd60_caps_led_off(void) { + gpio_set_pin_input(XD60_CAPS_LOCK_LED_PIN); +} +inline void xd60_bl_led_off(void) { + gpio_set_pin_input(XD60_BACKLIGHT_PIN); +} diff --git a/keyboards/ydkb/yd68/keymaps/default/keymap.c b/keyboards/ydkb/yd68/keymaps/default/keymap.c index 45b3144b9c1..44fe57da6af 100644 --- a/keyboards/ydkb/yd68/keymaps/default/keymap.c +++ b/keyboards/ydkb/yd68/keymaps/default/keymap.c @@ -43,7 +43,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case YD68_RGB_PWR: if (record->event.pressed) { // when keycode YD68_RGB_PWR is pressed - PORTE ^= (1<<2); + gpio_toggle_pin(E2); } else { // when keycode YD68_RGB_PWR is released } From 29a4e5c50b9cc828ea0a14a7c2cbe8d309a19079 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 2 May 2024 03:02:38 -0700 Subject: [PATCH 40/41] N86: Layout Data Correction (#23644) * Correct `LAYOUT_all` data Corrects incorrect key sizes and positioning. * Correct `LAYOUT_tkl_ansi_tsangan` data Corrects incorrect matrix assignments on the bottom row. * Correct `LAYOUT_tkl_ansi_tsangan_split_bs_rshift` data Corrects incorrect matrix assignments on the bottom row. * Set `LAYOUT_all` as an alias Sets `LAYOUT_all` as an alias for `LAYOUT_tkl_ansi_tsangan_split_bs_rshift`, because the layout and matrix data for these two macros is identical. --- keyboards/era/linx3/n86/info.json | 109 +++--------------------------- 1 file changed, 10 insertions(+), 99 deletions(-) diff --git a/keyboards/era/linx3/n86/info.json b/keyboards/era/linx3/n86/info.json index 40e1f78baaa..c0b8b5525a1 100644 --- a/keyboards/era/linx3/n86/info.json +++ b/keyboards/era/linx3/n86/info.json @@ -171,100 +171,11 @@ "driver": "vendor", "pin": "GP4" }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_tkl_ansi_tsangan_split_bs_rshift" + }, "community_layouts": ["tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift"], "layouts": { - "LAYOUT_all": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 2], "x": 2.25, "y": 0}, - {"matrix": [0, 3], "x": 3.25, "y": 0}, - {"matrix": [0, 4], "x": 4.25, "y": 0}, - {"matrix": [0, 5], "x": 5.5, "y": 0}, - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 7], "x": 7.5, "y": 0}, - {"matrix": [0, 8], "x": 8.5, "y": 0}, - {"matrix": [0, 9], "x": 9.75, "y": 0}, - {"matrix": [0, 10], "x": 10.75, "y": 0}, - {"matrix": [0, 11], "x": 11.75, "y": 0}, - {"matrix": [0, 12], "x": 12.75, "y": 0}, - {"matrix": [0, 13], "x": 14, "y": 0}, - {"matrix": [0, 14], "x": 15.25, "y": 0}, - {"matrix": [0, 15], "x": 16.25, "y": 0}, - {"matrix": [0, 16], "x": 17.25, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1.25}, - {"matrix": [1, 1], "x": 1, "y": 1.25}, - {"matrix": [1, 2], "x": 2, "y": 1.25}, - {"matrix": [1, 3], "x": 3, "y": 1.25}, - {"matrix": [1, 4], "x": 4, "y": 1.25}, - {"matrix": [1, 5], "x": 5, "y": 1.25}, - {"matrix": [1, 6], "x": 6, "y": 1.25}, - {"matrix": [1, 7], "x": 7, "y": 1.25}, - {"matrix": [1, 8], "x": 8, "y": 1.25}, - {"matrix": [1, 9], "x": 9, "y": 1.25}, - {"matrix": [1, 10], "x": 10, "y": 1.25}, - {"matrix": [1, 11], "x": 11, "y": 1.25}, - {"matrix": [1, 12], "x": 12, "y": 1.25}, - {"matrix": [1, 13], "x": 13, "y": 1.25}, - {"matrix": [1, 14], "x": 14, "y": 1.25}, - {"matrix": [2, 14], "x": 15.25, "y": 1.25}, - {"matrix": [1, 15], "x": 16.25, "y": 1.25}, - {"matrix": [1, 16], "x": 17.25, "y": 1.25}, - {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, - {"matrix": [2, 1], "x": 1.5, "y": 2.25}, - {"matrix": [2, 2], "x": 2.5, "y": 2.25}, - {"matrix": [2, 3], "x": 3.5, "y": 2.25}, - {"matrix": [2, 4], "x": 4.5, "y": 2.25}, - {"matrix": [2, 5], "x": 5.5, "y": 2.25}, - {"matrix": [2, 6], "x": 6.5, "y": 2.25}, - {"matrix": [2, 7], "x": 7.5, "y": 2.25}, - {"matrix": [2, 8], "x": 8.5, "y": 2.25}, - {"matrix": [2, 9], "x": 9.5, "y": 2.25}, - {"matrix": [2, 10], "x": 10.5, "y": 2.25}, - {"matrix": [2, 11], "x": 11.5, "y": 2.25}, - {"matrix": [2, 12], "x": 12.5, "y": 2.25}, - {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, - {"matrix": [3, 14], "x": 15.25, "y": 2.25}, - {"matrix": [2, 15], "x": 16.25, "y": 2.25}, - {"matrix": [2, 16], "x": 17.25, "y": 2.25}, - {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, - {"matrix": [3, 1], "x": 1.75, "y": 3.25}, - {"matrix": [3, 2], "x": 2.75, "y": 3.25}, - {"matrix": [3, 3], "x": 3.75, "y": 3.25}, - {"matrix": [3, 4], "x": 4.75, "y": 3.25}, - {"matrix": [3, 5], "x": 5.75, "y": 3.25}, - {"matrix": [3, 6], "x": 6.75, "y": 3.25}, - {"matrix": [3, 7], "x": 7.75, "y": 3.25}, - {"matrix": [3, 8], "x": 8.75, "y": 3.25}, - {"matrix": [3, 9], "x": 9.75, "y": 3.25}, - {"matrix": [3, 10], "x": 11.75, "y": 3.25}, - {"matrix": [3, 11], "x": 12.75, "y": 3.25}, - {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25}, - {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, - {"matrix": [4, 2], "x": 2.25, "y": 4.25}, - {"matrix": [4, 3], "x": 3.25, "y": 4.25}, - {"matrix": [4, 4], "x": 4.25, "y": 4.25}, - {"matrix": [4, 5], "x": 5.25, "y": 4.25}, - {"matrix": [4, 6], "x": 6.25, "y": 4.25}, - {"matrix": [4, 7], "x": 7.25, "y": 4.25}, - {"matrix": [4, 8], "x": 8.25, "y": 4.25}, - {"matrix": [4, 9], "x": 9.25, "y": 4.25}, - {"matrix": [4, 10], "x": 10.25, "y": 4.25}, - {"matrix": [4, 11], "x": 11.25, "y": 4.25}, - {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, - {"matrix": [4, 13], "x": 14, "y": 4.25}, - {"matrix": [4, 15], "x": 16.25, "y": 4.25}, - {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, - {"matrix": [5, 1], "x": 1.5, "y": 5.25, "w": 1}, - {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 7], "x": 4, "y": 5.25, "w": 7}, - {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, - {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1}, - {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 14], "x": 15.25, "y": 5.25}, - {"matrix": [5, 15], "x": 16.25, "y": 5.25}, - {"matrix": [5, 16], "x": 17.25, "y": 5.25} - ] - }, "LAYOUT_tkl_ansi_tsangan": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -346,9 +257,9 @@ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, {"matrix": [5, 1], "x": 1.5, "y": 5.25}, {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, - {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, - {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, {"matrix": [5, 14], "x": 15.25, "y": 5.25}, {"matrix": [5, 15], "x": 16.25, "y": 5.25}, @@ -438,9 +349,9 @@ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, {"matrix": [5, 1], "x": 1.5, "y": 5.25}, {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, - {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, - {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, {"matrix": [5, 14], "x": 15.25, "y": 5.25}, {"matrix": [5, 15], "x": 16.25, "y": 5.25}, @@ -448,4 +359,4 @@ ] } } -} \ No newline at end of file +} From 9a4f39b7388745b6e395710e020cce8835f0d781 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Thu, 2 May 2024 20:08:41 +1000 Subject: [PATCH 41/41] clangd enhancements. (#23310) --- .clangd | 2 +- .../qmk/cli/generate/compilation_database.py | 34 ++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.clangd b/.clangd index 2be2d817fc7..6133ae7229d 100644 --- a/.clangd +++ b/.clangd @@ -1,4 +1,4 @@ CompileFlags: Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option] - Remove: [-W*, -mcall-prologues] + Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues] Compiler: clang diff --git a/lib/python/qmk/cli/generate/compilation_database.py b/lib/python/qmk/cli/generate/compilation_database.py index a2190fee66c..b9c716bf0c5 100755 --- a/lib/python/qmk/cli/generate/compilation_database.py +++ b/lib/python/qmk/cli/generate/compilation_database.py @@ -25,7 +25,6 @@ def system_libs(binary: str) -> List[Path]: """Find the system include directory that the given build tool uses. """ cli.log.debug("searching for system library directory for binary: %s", binary) - bin_path = shutil.which(binary) # Actually query xxxxxx-gcc to find its include paths. if binary.endswith("gcc") or binary.endswith("g++"): @@ -37,7 +36,31 @@ def system_libs(binary: str) -> List[Path]: paths.append(Path(line.strip()).resolve()) return paths - return list(Path(bin_path).resolve().parent.parent.glob("*/include")) if bin_path else [] + return list(Path(binary).resolve().parent.parent.glob("*/include")) if binary else [] + + +@lru_cache(maxsize=10) +def cpu_defines(binary: str, compiler_args: str) -> List[str]: + cli.log.debug("gathering definitions for compilation: %s %s", binary, compiler_args) + if binary.endswith("gcc") or binary.endswith("g++"): + invocation = [binary, '-dM', '-E'] + if binary.endswith("gcc"): + invocation.extend(['-x', 'c']) + elif binary.endswith("g++"): + invocation.extend(['-x', 'c++']) + compiler_args = shlex.split(compiler_args) + invocation.extend(compiler_args) + invocation.append('-') + result = cli.run(invocation, capture_output=True, check=True, stdin=None, input='\n') + define_args = [] + for line in result.stdout.splitlines(): + line_args = line.split(' ', 2) + if len(line_args) == 3 and line_args[0] == '#define': + define_args.append(f'-D{line_args[1]}={line_args[2]}') + elif len(line_args) == 2 and line_args[0] == '#define': + define_args.append(f'-D{line_args[1]}') + return list(sorted(set(define_args))) + return [] file_re = re.compile(r'printf "Compiling: ([^"]+)') @@ -68,9 +91,12 @@ def parse_make_n(f: Iterator[str]) -> List[Dict[str, str]]: # we have a hit! this_cmd = m.group(1) args = shlex.split(this_cmd) - for s in system_libs(args[0]): + binary = shutil.which(args[0]) + compiler_args = set(filter(lambda x: x.startswith('-m') or x.startswith('-f'), args)) + for s in system_libs(binary): args += ['-isystem', '%s' % s] - new_cmd = ' '.join(shlex.quote(s) for s in args if s != '-mno-thumb-interwork') + args.extend(cpu_defines(binary, ' '.join(shlex.quote(s) for s in compiler_args))) + new_cmd = ' '.join(shlex.quote(s) for s in args) records.append({"directory": str(QMK_FIRMWARE.resolve()), "command": new_cmd, "file": this_file}) state = 'start'