From 6fbfd659ff361072a512ba8cbdb77632c0357dcc Mon Sep 17 00:00:00 2001 From: takashicompany Date: Wed, 6 Nov 2024 16:43:35 +0900 Subject: [PATCH 01/20] Add new keyboard "KLEC-02" (#24559) Co-authored-by: jack <0x6a73@protonmail.com> --- .../takashicompany/klec_02/keyboard.json | 73 +++++++++++++++++++ .../klec_02/keymaps/default/keymap.c | 70 ++++++++++++++++++ keyboards/takashicompany/klec_02/readme.md | 28 +++++++ 3 files changed, 171 insertions(+) create mode 100644 keyboards/takashicompany/klec_02/keyboard.json create mode 100644 keyboards/takashicompany/klec_02/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/klec_02/readme.md diff --git a/keyboards/takashicompany/klec_02/keyboard.json b/keyboards/takashicompany/klec_02/keyboard.json new file mode 100644 index 00000000000..045c4ef315c --- /dev/null +++ b/keyboards/takashicompany/klec_02/keyboard.json @@ -0,0 +1,73 @@ +{ + "manufacturer": "takashicompany", + "keyboard_name": "KLEC-02", + "maintainer": "takashicompany", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D4", "C6", "D7", "E6", "B4"], + "rows": ["F4", "F5", "F6", "F7"] + }, + "split": { + "enabled": true, + "serial": { + "pin": "D2" + } + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x1002", + "vid": "0x7463" + }, + "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": [4, 0], "x": 6.25, "y": 0}, + {"matrix": [4, 1], "x": 7.25, "y": 0}, + {"matrix": [4, 2], "x": 8.25, "y": 0}, + {"matrix": [4, 3], "x": 9.25, "y": 0}, + {"matrix": [4, 4], "x": 10.25, "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": [5, 0], "x": 6.5, "y": 1}, + {"matrix": [5, 1], "x": 7.5, "y": 1}, + {"matrix": [5, 2], "x": 8.5, "y": 1}, + {"matrix": [5, 3], "x": 9.5, "y": 1}, + {"matrix": [5, 4], "x": 10.5, "y": 1}, + {"matrix": [2, 0], "x": 0.5, "y": 2}, + {"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": [6, 0], "x": 6.75, "y": 2}, + {"matrix": [6, 1], "x": 7.75, "y": 2}, + {"matrix": [6, 2], "x": 8.75, "y": 2}, + {"matrix": [6, 3], "x": 9.75, "y": 2}, + {"matrix": [6, 4], "x": 10.75, "y": 2}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.25}, + {"matrix": [3, 4], "x": 5, "y": 3}, + {"matrix": [7, 0], "x": 6.25, "y": 3}, + {"matrix": [7, 1], "x": 7.25, "y": 3, "w": 1.25}, + {"matrix": [7, 2], "x": 8.5, "y": 3} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/klec_02/keymaps/default/keymap.c b/keyboards/takashicompany/klec_02/keymaps/default/keymap.c new file mode 100644 index 00000000000..0431b8e6b7e --- /dev/null +++ b/keyboards/takashicompany/klec_02/keymaps/default/keymap.c @@ -0,0 +1,70 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, + LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, + KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI + ), + + [1] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, + LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), + KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), + KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, + LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, + KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI + ), + + [4] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3, + LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT( + KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, + KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, + KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [6] = LAYOUT( + KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [7] = LAYOUT( + KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [8] = LAYOUT( + UG_TOGG, UG_NEXT, UG_HUEU, UG_SATU, UG_VALU, KC_NO, KC_NO, KC_NO, DF(0), DF(3), + RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/takashicompany/klec_02/readme.md b/keyboards/takashicompany/klec_02/readme.md new file mode 100644 index 00000000000..0b492a5e18a --- /dev/null +++ b/keyboards/takashicompany/klec_02/readme.md @@ -0,0 +1,28 @@ +# KLEC-02 + +![takashicompany/klec_02](https://i.imgur.com/1w6agBI.jpeg) + +The KLEC-02 is a 36-key segmented keyboard. +The PCB can be fitted with key switch sockets, allowing easy replacement of key switches. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/klec_02 + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/klec_02:default + +Flashing example for this keyboard: + + make takashicompany/klec_02: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 From f5f11b7c797c28f2ed8177fcf7c81e6207346184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20B=C3=BCchler?= Date: Wed, 6 Nov 2024 08:45:20 +0100 Subject: [PATCH 02/20] Add keyboards/converter/thinkpad_t6x/rpi_pico (#23696) --- .../thinkpad_t6x/rpi_pico/keyboard.json | 131 ++++++++++++++++++ .../rpi_pico/keymaps/default/keymap.c | 17 +++ .../converter/thinkpad_t6x/rpi_pico/readme.md | 27 ++++ 3 files changed, 175 insertions(+) create mode 100644 keyboards/converter/thinkpad_t6x/rpi_pico/keyboard.json create mode 100644 keyboards/converter/thinkpad_t6x/rpi_pico/keymaps/default/keymap.c create mode 100644 keyboards/converter/thinkpad_t6x/rpi_pico/readme.md diff --git a/keyboards/converter/thinkpad_t6x/rpi_pico/keyboard.json b/keyboards/converter/thinkpad_t6x/rpi_pico/keyboard.json new file mode 100644 index 00000000000..4f876a4a94e --- /dev/null +++ b/keyboards/converter/thinkpad_t6x/rpi_pico/keyboard.json @@ -0,0 +1,131 @@ +{ + "manufacturer": "strobo5", + "keyboard_name": "converter/thinkpad_t6x/rpi_pico", + "maintainer": "strobo5", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["GP7", "GP9", "GP11", "GP13", "GP17", "GP16", "GP14", "GP12", "GP15", "GP8", "GP10", "GP6", "GP4", "GP2", "GP5", "GP3"], + "rows": ["GP20", "GP26", "GP22", "GP21", "GP18", "GP19", "GP27", "GP28"] + }, + "processor": "RP2040", + "ps2": { + "clock_pin": "GP1", + "data_pin": "GP0", + "driver": "vendor", + "enabled": true, + "mouse_enabled": true + }, + "url": "https://github.com/strobo5/T61_PiPico_Scanner", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_iso": { + "layout": [ + {"label": "Esc", "matrix": [5, 0], "x": 0, "y": 0, "w": 0.9, "h": 0.75}, + {"label": "Mute", "matrix": [4, 10], "x": 0.9, "y": 0, "w": 0.75, "h": 0.5}, + {"label": "Vol -", "matrix": [3, 10], "x": 1.65, "y": 0, "w": 0.75, "h": 0.5}, + {"label": "Vol +", "matrix": [2, 10], "x": 2.4, "y": 0, "w": 0.75, "h": 0.5}, + {"label": "ThinkVantage", "matrix": [5, 10], "x": 3.5, "y": 0, "w": 1.25, "h": 0.5}, + {"label": "PrtSc", "matrix": [1, 13], "x": 8.9, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "ScrLk", "matrix": [2, 13], "x": 9.8, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "Pause", "matrix": [6, 12], "x": 10.7, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "Insert", "matrix": [0, 9], "x": 12, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "Home", "matrix": [0, 12], "x": 12.9, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "PgUp", "matrix": [0, 11], "x": 13.8, "y": 0, "w": 0.9, "h": 0.65}, + {"label": "F1", "matrix": [0, 1], "x": 0, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F2", "matrix": [0, 2], "x": 0.9, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F3", "matrix": [3, 2], "x": 1.8, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F4", "matrix": [5, 2], "x": 2.7, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F5", "matrix": [5, 8], "x": 4, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F6", "matrix": [5, 5], "x": 4.9, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F7", "matrix": [3, 6], "x": 5.8, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F8", "matrix": [0, 6], "x": 6.7, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F9", "matrix": [0, 8], "x": 8, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F10", "matrix": [1, 8], "x": 8.9, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F11", "matrix": [1, 10], "x": 9.8, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "F12", "matrix": [1, 9], "x": 10.7, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "Delete", "matrix": [0, 10], "x": 12, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "End", "matrix": [1, 12], "x": 12.9, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "PgDn", "matrix": [1, 11], "x": 13.8, "y": 0.75, "w": 0.9, "h": 0.65}, + {"label": "`\u00ac", "matrix": [0, 0], "x": 0, "y": 1.4}, + {"label": "1!", "matrix": [1, 0], "x": 1, "y": 1.4}, + {"label": "2\"", "matrix": [1, 1], "x": 2, "y": 1.4}, + {"label": "3\u00a3", "matrix": [1, 2], "x": 3, "y": 1.4}, + {"label": "4$", "matrix": [1, 3], "x": 4, "y": 1.4}, + {"label": "5%", "matrix": [0, 3], "x": 5, "y": 1.4}, + {"label": "6^", "matrix": [0, 4], "x": 6, "y": 1.4}, + {"label": "7&", "matrix": [1, 4], "x": 7, "y": 1.4}, + {"label": "8*", "matrix": [1, 5], "x": 8, "y": 1.4}, + {"label": "9(", "matrix": [1, 6], "x": 9, "y": 1.4}, + {"label": "0)", "matrix": [1, 7], "x": 10, "y": 1.4}, + {"label": "-_", "matrix": [0, 7], "x": 11, "y": 1.4}, + {"label": "=+", "matrix": [0, 5], "x": 12, "y": 1.4}, + {"label": "Bksp", "matrix": [3, 8], "x": 13, "y": 1.4, "w": 2}, + {"label": "Tab", "matrix": [3, 0], "x": 0, "y": 2.4, "w": 1.5}, + {"label": "Q", "matrix": [2, 0], "x": 1.5, "y": 2.4}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 2.4}, + {"label": "E", "matrix": [2, 2], "x": 3.5, "y": 2.4}, + {"label": "R", "matrix": [2, 3], "x": 4.5, "y": 2.4}, + {"label": "T", "matrix": [3, 3], "x": 5.5, "y": 2.4}, + {"label": "Y", "matrix": [3, 4], "x": 6.5, "y": 2.4}, + {"label": "U", "matrix": [2, 4], "x": 7.5, "y": 2.4}, + {"label": "I", "matrix": [2, 5], "x": 8.5, "y": 2.4}, + {"label": "O", "matrix": [2, 6], "x": 9.5, "y": 2.4}, + {"label": "P", "matrix": [2, 7], "x": 10.5, "y": 2.4}, + {"label": "[{", "matrix": [3, 7], "x": 11.5, "y": 2.4}, + {"label": "]}", "matrix": [3, 5], "x": 12.5, "y": 2.4}, + {"label": "Caps Lock", "matrix": [3, 1], "x": 0, "y": 3.4, "w": 1.75}, + {"label": "A", "matrix": [4, 0], "x": 1.75, "y": 3.4}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 3.4}, + {"label": "D", "matrix": [4, 2], "x": 3.75, "y": 3.4}, + {"label": "F", "matrix": [4, 3], "x": 4.75, "y": 3.4}, + {"label": "G", "matrix": [5, 3], "x": 5.75, "y": 3.4}, + {"label": "H", "matrix": [5, 4], "x": 6.75, "y": 3.4}, + {"label": "J", "matrix": [4, 4], "x": 7.75, "y": 3.4}, + {"label": "K", "matrix": [4, 5], "x": 8.75, "y": 3.4}, + {"label": "L", "matrix": [4, 6], "x": 9.75, "y": 3.4}, + {"label": ";:", "matrix": [4, 7], "x": 10.75, "y": 3.4}, + {"label": "'@", "matrix": [5, 7], "x": 11.75, "y": 3.4}, + {"label": "#~", "matrix": [6, 7], "x": 12.75, "y": 3.4}, + {"label": "Enter", "matrix": [6, 8], "x": 13.75, "y": 2.4, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [3, 14], "x": 0, "y": 4.4, "w": 1.25}, + {"label": "\\|", "matrix": [5, 1], "x": 1.25, "y": 4.4}, + {"label": "Z", "matrix": [6, 0], "x": 2.25, "y": 4.4}, + {"label": "X", "matrix": [6, 1], "x": 3.25, "y": 4.4}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 4.4}, + {"label": "V", "matrix": [6, 3], "x": 5.25, "y": 4.4}, + {"label": "B", "matrix": [7, 3], "x": 6.25, "y": 4.4}, + {"label": "N", "matrix": [7, 4], "x": 7.25, "y": 4.4}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 4.4}, + {"label": ",<", "matrix": [6, 5], "x": 9.25, "y": 4.4}, + {"label": ".>", "matrix": [6, 6], "x": 10.25, "y": 4.4}, + {"label": "/?", "matrix": [7, 7], "x": 11.25, "y": 4.4}, + {"label": "Shift", "matrix": [6, 14], "x": 12.25, "y": 4.4, "w": 2.75}, + {"label": "Fn", "matrix": [4, 9], "x": 0, "y": 5.4}, + {"label": "Ctrl", "matrix": [0, 15], "x": 1, "y": 5.4, "w": 1.25}, + {"label": "Left OS", "matrix": [2, 11], "x": 2.25, "y": 5.4, "w": 0.9}, + {"label": "Alt", "matrix": [5, 13], "x": 3.15, "y": 5.4}, + {"label": "Space", "matrix": [7, 8], "x": 4.15, "y": 5.4, "w": 5}, + {"label": "AltGr", "matrix": [7, 13], "x": 9.25, "y": 5.4}, + {"label": "Menu", "matrix": [4, 11], "x": 10.25, "y": 5.4}, + {"label": "Ctrl", "matrix": [6, 15], "x": 11.25, "y": 5.4}, + {"label": "Browser Back", "matrix": [6, 11], "x": 12.25, "y": 5.4, "w": 0.9, "h": 0.75}, + {"label": "Up", "matrix": [5, 12], "x": 13.15, "y": 5.4, "w": 0.9, "h": 0.75}, + {"label": "Browser Forward", "matrix": [7, 11], "x": 14.05, "y": 5.4, "w": 0.9, "h": 0.75}, + {"label": "Left", "matrix": [7, 12], "x": 12.25, "y": 6.15, "w": 0.9, "h": 0.75}, + {"label": "Down", "matrix": [7, 10], "x": 13.15, "y": 6.15, "w": 0.9, "h": 0.75}, + {"label": "Right", "matrix": [7, 9], "x": 14.05, "y": 6.15, "w": 0.9, "h": 0.75} + ] + } + } +} diff --git a/keyboards/converter/thinkpad_t6x/rpi_pico/keymaps/default/keymap.c b/keyboards/converter/thinkpad_t6x/rpi_pico/keymaps/default/keymap.c new file mode 100644 index 00000000000..4dac20888fb --- /dev/null +++ b/keyboards/converter/thinkpad_t6x/rpi_pico/keymaps/default/keymap.c @@ -0,0 +1,17 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_ESC, KC_MUTE, KC_VOLD, KC_VOLU, QK_BOOT, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, KC_HOME, KC_PGUP, + 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_END, 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, 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_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_WBAK, KC_UP , KC_WFWD, + KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/converter/thinkpad_t6x/rpi_pico/readme.md b/keyboards/converter/thinkpad_t6x/rpi_pico/readme.md new file mode 100644 index 00000000000..0008dad2f14 --- /dev/null +++ b/keyboards/converter/thinkpad_t6x/rpi_pico/readme.md @@ -0,0 +1,27 @@ +# converter/thinkpad_t6x/rpi_pico + +![converter/thinkpad_t6x/rpi_pico](https://i.imgur.com/wUG9p6eh.jpeg) + +This is a converter PCB for Lenovo Thinkpad keyboards from a wide range of models (T60, T61, X220, ...), based on the Raspberry Pi Pico. The QMK implementation here is specific to the converter in the link below. Similar PCB designs to convert a Thinkpad keyboard to USB exist, but they use a different microcontroller and wiring of the keyboard connector with the MCU. + +* Keyboard Maintainer: [Michael Büchler](https://github.com/strobo5) +* Hardware Supported: The linked converter PCB with keyboards from various Thinkpad models +* Hardware Availability: [Custom PCB](https://github.com/strobo5/T61_PiPico_Scanner) + +Make example for this keyboard (after setting up your build environment): + + make converter/thinkpad_t6x/rpi_pico:default + +Flashing example for this keyboard: + + make converter/thinkpad_t6x/rpi_pico: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 From f4e6af2dbe8c2b0d24dfa14e58d3be02bd6b2b7d Mon Sep 17 00:00:00 2001 From: Diego Andres Rabaioli Date: Wed, 6 Nov 2024 08:46:17 +0100 Subject: [PATCH 03/20] Adding SdraKb00 keyboard (#24552) Co-authored-by: jack Co-authored-by: Duncan Sutherland --- keyboards/sdrakbs/sdrakb00/keyboard.json | 71 ++++++++++++++++++ .../sdrakbs/sdrakb00/keymaps/default/keymap.c | 74 +++++++++++++++++++ keyboards/sdrakbs/sdrakb00/readme.md | 52 +++++++++++++ 3 files changed, 197 insertions(+) create mode 100644 keyboards/sdrakbs/sdrakb00/keyboard.json create mode 100644 keyboards/sdrakbs/sdrakb00/keymaps/default/keymap.c create mode 100644 keyboards/sdrakbs/sdrakb00/readme.md diff --git a/keyboards/sdrakbs/sdrakb00/keyboard.json b/keyboards/sdrakbs/sdrakb00/keyboard.json new file mode 100644 index 00000000000..f9e24cc63f0 --- /dev/null +++ b/keyboards/sdrakbs/sdrakb00/keyboard.json @@ -0,0 +1,71 @@ +{ + "manufacturer": "Diego Andres Rabaioli", + "keyboard_name": "sdrakb00", + "maintainer": "drabaioli", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B5", "pin_b": "B6", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5"], + "rows": ["D4", "D6", "D7"] + }, + "processor": "atmega32u4", + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4} + ], + "max_brightness": 100, + "sleep": true, + "timeout": 300000 + }, + "url": "https://github.com/drabaioli/SdraKb00", + "usb": { + "device_version": "1.0.0", + "pid": "0x4200", + "vid": "0x7331" + }, + "ws2812": { + "pin": "B0" + }, + "layouts": { + "LAYOUT_ortho_3x4": { + "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, "encoder": 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": [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} + ] + } + } +} diff --git a/keyboards/sdrakbs/sdrakb00/keymaps/default/keymap.c b/keyboards/sdrakbs/sdrakb00/keymaps/default/keymap.c new file mode 100644 index 00000000000..c5481b1076e --- /dev/null +++ b/keyboards/sdrakbs/sdrakb00/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +/* Keymap for 3x4 Macropad + * + * Layer 0 (Base Layer) - Numpad layout with mute button and layer toggle: + * ,----------------------, + * | 7 | 8 | 9 | MUTE | + * |-------+-------+-------+--------| + * | 4 | 5 | 6 | Layer1 | + * |-------+-------+-------+--------| + * | 1 | 2 | 3 | 0 | + * `-----------------------^--------' + * + * Layer 1 (Function Layer) - Accessed by holding MO(1): + * ,----------------------, + * | BKSP | / | - | ---- | + * |-------+-------+-------+--------| + * | = | * | + | ---- | + * |-------+-------+-------+--------| + * | ENTER | ---- | ---- | . | + * `-----------------------^--------' + * + * The base layer (0) provides standard numpad functionality with: + * - Numbers 0-9 in traditional numpad layout + * - Mute button in top right + * - Layer 1 momentary toggle (MO1) in middle right + * + * The function layer (1) adds: + * - Basic mathematical operators (+, -, *, /) + * - Backspace, Enter, and decimal point + * - Equal sign for calculations + * - Empty slots marked as ---- (KC_NO) + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_3x4( + KC_KP_7, KC_KP_8, KC_KP_9, KC_MUTE, + KC_KP_4, KC_KP_5, KC_KP_6, MO(1), + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_0 + ), + + [1] = LAYOUT_ortho_3x4( + KC_BACKSPACE, KC_KP_SLASH, KC_KP_MINUS, _______, + KC_EQUAL, KC_KP_ASTERISK, KC_KP_PLUS, _______, + KC_ENTER, _______, _______, KC_KP_DOT + ) +}; + + +/* + * Handle layer state changes by updating RGB matrix colors + * + * Sets RGB matrix colors based on active layer: + * - Layer 0: Light green (#88FB7A) + * - Layer 1: Red + * - Other layers: Red (fallback) + */ +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + rgb_matrix_sethsv(85, 255, 251); // #88FB7A for layer 0 + break; + case 1: + rgb_matrix_sethsv(0, 255, 255); // Red for layer 1 + break; + default: + rgb_matrix_sethsv(0, 255, 255); // Red for any other layer + break; + } + return state; +} diff --git a/keyboards/sdrakbs/sdrakb00/readme.md b/keyboards/sdrakbs/sdrakb00/readme.md new file mode 100644 index 00000000000..21e56f9595a --- /dev/null +++ b/keyboards/sdrakbs/sdrakb00/readme.md @@ -0,0 +1,52 @@ +# sdrakb00 + +![sdrakb00](https://i.imgur.com/0HfpFqW.jpeg) + +11 keys hot-swap macropad with rotary encoder. + +Macropad features: +- 11 hot-swap keys +- Rotary encoder with push button +- AtMega32U4 MCU +- Per-key RGB led for backlighting +- USB-C connector +- On PCB SPI header +- MCU reset button +- Switch mounting plate +- Power LED indicator + +* Keyboard Maintainer: [Diego Andres Rabaioli](https://github.com/drabaioli) +* Hardware Supported: Pro Micro Atmega32u4 based macropad with 11 keys, RGB LED chain and rotary encoder +* Hardware Availability: [Get the gerbers and have fun building it your self ;)](https://github.com/drabaioli/SdraKb00) + +Build SdraKb00 firmware: + + make sdrakbs/sdrakb00:default + +Flashing SdraKb00 firmware, execute: + + make sdrakbs/sdrakb00:default:flash + +Then press the reset button on the back side of the PCB. + +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: + +* **Physical reset button** (preferred): Briefly press the button on the back of the PCB +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard + +## Default Keymap + +### Base Layer (0) +- NumPad layout (1-9, 0) +- Encoder: Volume Up/Down +- Encoder Push: Mute +- Layer Switch: Hold (1,3) key for function layer + +### Function Layer (1) +- NumPad operators (+, -, *, /) +- Enter, "=" and backspace keys +- Decimal point From 54860ed23841524376084f609651a3bfd71dc6ca Mon Sep 17 00:00:00 2001 From: Bennett Balogh <88569963+AwesomeBalogh@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:58:33 -0700 Subject: [PATCH 04/20] [Keyboard] Add Teton78 (#24562) * Added Teton_78 qmk keyboard files * Fixed a syntax issue * Waffles suggested changes * Read me updated Used the Alpine65 reame to model off. * Update keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c Co-authored-by: jack * Accidental File * Updated readme with missing info * Update readme.md * Update keyboards/mountainmechdesigns/teton_78/readme.md Co-authored-by: Ryan * Update keyboards/mountainmechdesigns/teton_78/readme.md Co-authored-by: Ryan * Update keyboards/mountainmechdesigns/teton_78/readme.md Co-authored-by: Joel Challis --------- Co-authored-by: jack Co-authored-by: Ryan Co-authored-by: Joel Challis --- .../teton_78/keyboard.json | 113 ++++++++++++++++++ .../teton_78/keymaps/default/keymap.c | 29 +++++ .../mountainmechdesigns/teton_78/readme.md | 37 ++++++ 3 files changed, 179 insertions(+) create mode 100644 keyboards/mountainmechdesigns/teton_78/keyboard.json create mode 100644 keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c create mode 100644 keyboards/mountainmechdesigns/teton_78/readme.md diff --git a/keyboards/mountainmechdesigns/teton_78/keyboard.json b/keyboards/mountainmechdesigns/teton_78/keyboard.json new file mode 100644 index 00000000000..d6f5ce9cd83 --- /dev/null +++ b/keyboards/mountainmechdesigns/teton_78/keyboard.json @@ -0,0 +1,113 @@ +{ + "manufacturer": "Bennett Balogh", + "keyboard_name": "teton_78", + "maintainer": "qmk", + "bootloader": "atmel-dfu", + "bootmagic": { + "matrix": [0, 2] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7"], + "rows": ["D0", "D1", "D2", "D3", "D5"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x3349", + "vid": "0x8A5B" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 0, "y": 1}, + {"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.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.25, "y": 0}, + {"matrix": [0, 11], "x": 11.25, "y": 0}, + {"matrix": [0, 12], "x": 12.25, "y": 0}, + {"matrix": [0, 13], "x": 13.25, "y": 0}, + {"matrix": [0, 14], "x": 14.25, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0, "w": 2}, + {"matrix": [0, 16], "x": 17.5, "y": 0}, + {"matrix": [0, 17], "x": 18.5, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5}, + {"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": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1}, + {"matrix": [1, 14], "x": 14.75, "y": 1}, + {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5}, + {"matrix": [1, 16], "x": 17.5, "y": 1}, + {"matrix": [1, 17], "x": 18.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75}, + {"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": 8, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11, "y": 2}, + {"matrix": [2, 11], "x": 12, "y": 2}, + {"matrix": [2, 12], "x": 13, "y": 2}, + {"matrix": [2, 13], "x": 14, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25}, + {"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": 8.5, "y": 3}, + {"matrix": [3, 8], "x": 9.5, "y": 3}, + {"matrix": [3, 9], "x": 10.5, "y": 3}, + {"matrix": [3, 10], "x": 11.5, "y": 3}, + {"matrix": [3, 11], "x": 12.5, "y": 3}, + {"matrix": [3, 12], "x": 13.5, "y": 3}, + {"matrix": [3, 13], "x": 14.5, "y": 3, "w": 2.75}, + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 6, "y": 4, "w": 6.25}, + {"matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 14.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 16.5, "y": 4, "w": 1.25}, + {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 1.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4, "w": 1.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c b/keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c new file mode 100644 index 00000000000..c4762d577d6 --- /dev/null +++ b/keyboards/mountainmechdesigns/teton_78/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2024 Bennett Balogh LLC + * + * 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( + + KC_F1, KC_F6, 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_F2, KC_F7, 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_F3, KC_F8, 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_F4, KC_F9, 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_F5, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT) +}; diff --git a/keyboards/mountainmechdesigns/teton_78/readme.md b/keyboards/mountainmechdesigns/teton_78/readme.md new file mode 100644 index 00000000000..40ef5c436bf --- /dev/null +++ b/keyboards/mountainmechdesigns/teton_78/readme.md @@ -0,0 +1,37 @@ +# Teton 78 QMK Firmware + +## Introduction + +![Teton 78](https://i.imgur.com/MnASIrv.jpeg) + +This is the QMK firmware repository for the Teton78, a 68XT solder and hotswao keyboard designed by Mountain Mech Designs - Bennett Balogh. + +The Teton 78 has entered GB and sucessfully finalized in November 2024 The IC page for the keyboard can be found [here](https://geekhack.org/index.php?topic=123275.0). +The sale page can be found [here](https://www.mountainmechdesigns.com/) +Discord link can be found [here](https://discord.gg/h9dMwRNfVy) + +## About + +* Keyboard Maintainer: [Bennett Balogh](https://github.com/AwesomeBalogh) +* Hardware Supported: Atmega32u4 +* Hardware Availability: N/A + +## How to compile + +After setting up your build environment, you can compile the Teton 78 default keymap by using: + + make mountainmechdesigns/teton_78:default + +Flash using + + make mountainmechdesigns/teton_78: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 \ No newline at end of file From 3cda9ffcd65cd8d08039e389e3888eb493bd69e2 Mon Sep 17 00:00:00 2001 From: "Christian C. Berclaz" Date: Fri, 8 Nov 2024 01:58:57 +0100 Subject: [PATCH 05/20] Adding support for Windstudio's Wind X R1 keyboard (#24564) * Added a default firmware and layout for the WindStudio Wind X R1 keyboard. * Wind X R1: cleaned-up the folders to make clear that this firmware is for the release 1 of this keyboard. * Added rules.mk to the default layout * Renamed the folder R1 into r1. * Added readme.md files for the keyboard and default layout. * Added a license header to keymap.c * Update keyboards/windstudio/wind_x/r1/keyboard.json Co-authored-by: jack * Update keyboards/windstudio/wind_x/r1/keyboard.json Co-authored-by: jack * Update keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c Co-authored-by: jack * Update keyboards/windstudio/wind_x/r1/readme.md Co-authored-by: jack * Added a proper link to the image (logo of windstudio) * Wind X R1 - Corrected the default keymap with the QK_GESC key instead of the KC_ESC. - Removed the unnecessary rules.mk in the default layout * Wind X R1: applied `qmk format-json -i` on keyboard.json to conform with the project formatt standards. * Added a picture of the keyboard. * Added a caption to the image. --------- Co-authored-by: jack --- keyboards/windstudio/wind_x/r1/keyboard.json | 205 ++++++++++++++++++ .../wind_x/r1/keymaps/default/keymap.c | 40 ++++ .../wind_x/r1/keymaps/default/readme.md | 6 + keyboards/windstudio/wind_x/r1/readme.md | 28 +++ 4 files changed, 279 insertions(+) create mode 100644 keyboards/windstudio/wind_x/r1/keyboard.json create mode 100644 keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c create mode 100644 keyboards/windstudio/wind_x/r1/keymaps/default/readme.md create mode 100644 keyboards/windstudio/wind_x/r1/readme.md diff --git a/keyboards/windstudio/wind_x/r1/keyboard.json b/keyboards/windstudio/wind_x/r1/keyboard.json new file mode 100644 index 00000000000..1b5f34fe3e8 --- /dev/null +++ b/keyboards/windstudio/wind_x/r1/keyboard.json @@ -0,0 +1,205 @@ +{ + "manufacturer": "Windstudio", + "keyboard_name": "Wind X R1", + "maintainer": "chrisgve", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C7", "C6", "B6", "E6", "F6", "D6", "D7", "B4", "B5", "F7", "B7", "F4", "F5", "D4", "B0", "B1", "B2", "B3"], + "rows": ["F0", "F1", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0x6801", + "vid": "0x6F75" + }, + "layout_aliases": { + "LAYOUT_tsangan": "LAYOUT_7u_space_bar_split_bs" + }, + "layouts": { + "LAYOUT": { + "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": "Del", "matrix": [4, 11], "x": 16, "y": 0}, + {"label": "NumLock", "matrix": [0, 14], "x": 18, "y": 0}, + {"label": "KP/", "matrix": [0, 15], "x": 19, "y": 0}, + {"label": "KP*", "matrix": [0, 16], "x": 20, "y": 0}, + {"label": "KP-", "matrix": [0, 17], "x": 21, "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, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "PgUp", "matrix": [4, 12], "x": 16, "y": 1}, + {"label": "KP7", "matrix": [1, 14], "x": 18, "y": 1}, + {"label": "KP8", "matrix": [1, 15], "x": 19, "y": 1}, + {"label": "KP9", "matrix": [1, 16], "x": 20, "y": 1}, + {"label": "KP+", "matrix": [1, 17], "x": 21, "y": 1}, + {"label": "Caps", "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": "Return", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PgDn", "matrix": [4, 13], "x": 16, "y": 2}, + {"label": "KP4", "matrix": [2, 14], "x": 18, "y": 2}, + {"label": "KP5", "matrix": [2, 15], "x": 19, "y": 2}, + {"label": "KP6", "matrix": [2, 16], "x": 20, "y": 2}, + {"label": "KP+", "matrix": [2, 17], "x": 21, "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": "Up", "matrix": [3, 13], "x": 13, "y": 3}, + {"label": "KP1", "matrix": [3, 14], "x": 18, "y": 3}, + {"label": "KP2", "matrix": [3, 15], "x": 19, "y": 3}, + {"label": "KP3", "matrix": [3, 16], "x": 20, "y": 3}, + {"label": "Enter", "matrix": [3, 17], "x": 21, "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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "GUI", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Left", "matrix": [4, 8], "x": 14, "y": 4}, + {"label": "Down", "matrix": [4, 9], "x": 15, "y": 4}, + {"label": "Right", "matrix": [4, 10], "x": 16, "y": 4}, + {"label": "KP0", "matrix": [4, 16], "x": 18, "y": 4}, + {"label": "KP.", "matrix": [4, 17], "x": 19, "y": 4} + ] + }, + "LAYOUT_7u_space_bar_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": "\\", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "`", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "PgUp", "matrix": [4, 11], "x": 16, "y": 0}, + {"label": "NumLock", "matrix": [0, 14], "x": 18, "y": 0}, + {"label": "KP/", "matrix": [0, 15], "x": 19, "y": 0}, + {"label": "KP*", "matrix": [0, 16], "x": 20, "y": 0}, + {"label": "KP-", "matrix": [0, 17], "x": 21, "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": "Backspace", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "PgDn", "matrix": [4, 12], "x": 16, "y": 1}, + {"label": "KP7", "matrix": [1, 14], "x": 18, "y": 1}, + {"label": "KP8", "matrix": [1, 15], "x": 19, "y": 1}, + {"label": "KP9", "matrix": [1, 16], "x": 20, "y": 1}, + {"label": "KP+", "matrix": [1, 17], "x": 21, "y": 1}, + {"label": "Ctrl", "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": "Return", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "End", "matrix": [4, 13], "x": 16, "y": 2}, + {"label": "KP4", "matrix": [2, 14], "x": 18, "y": 2}, + {"label": "KP5", "matrix": [2, 15], "x": 19, "y": 2}, + {"label": "KP6", "matrix": [2, 16], "x": 20, "y": 2}, + {"label": "KP+", "matrix": [2, 17], "x": 21, "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": "Up", "matrix": [3, 13], "x": 13, "y": 3}, + {"label": "KP1", "matrix": [3, 14], "x": 18, "y": 3}, + {"label": "KP2", "matrix": [3, 15], "x": 19, "y": 3}, + {"label": "KP3", "matrix": [3, 16], "x": 20, "y": 3}, + {"label": "Enter", "matrix": [3, 17], "x": 21, "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, 5], "x": 4, "y": 4, "w": 7}, + {"label": "Ctrl", "matrix": [4, 7], "x": 11, "y": 4, "w": 1.5}, + {"label": "Left", "matrix": [4, 8], "x": 13, "y": 4}, + {"label": "Down", "matrix": [4, 9], "x": 14, "y": 4}, + {"label": "Right", "matrix": [4, 10], "x": 15, "y": 4}, + {"label": "KP0", "matrix": [4, 16], "x": 18, "y": 4}, + {"label": "KP.", "matrix": [4, 17], "x": 19, "y": 4} + ] + } + } +} diff --git a/keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c b/keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c new file mode 100644 index 00000000000..dd3134e2a0f --- /dev/null +++ b/keyboards/windstudio/wind_x/r1/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2024 chrisgve + * + * 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 + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + 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_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_PGUP, 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_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, LT(1, KC_SPC), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + +// clang-format on diff --git a/keyboards/windstudio/wind_x/r1/keymaps/default/readme.md b/keyboards/windstudio/wind_x/r1/keymaps/default/readme.md new file mode 100644 index 00000000000..2fa0952a830 --- /dev/null +++ b/keyboards/windstudio/wind_x/r1/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# Default Wind X R1 Layout + +This is the default layout that comes flashed on every Wind X R1. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/windstudio/wind_x/r1/readme.md b/keyboards/windstudio/wind_x/r1/readme.md new file mode 100644 index 00000000000..c501951e422 --- /dev/null +++ b/keyboards/windstudio/wind_x/r1/readme.md @@ -0,0 +1,28 @@ +# WindX R1 by Windstudio + +![WindX R1](https://i.imgur.com/FEVczwG.jpg) +_Compact, yet feature full working or gaming keyboard_ + +A large layout keyboard without the function keys. [More info on geekhack.org](https://geekhack.org/index.php?topic=114767.0) + +- Keyboard Maintainer: [Christian C. Berclaz](https://github.com/chrisgve) +- Hardware Supported: Wind X R1 w/ ATmega32U4 microcontroller +- Hardware Availability: [windstudio.store](https://windstudio.store/collections/wind-x) + +Make example for this keyboard (after setting up your build environment): + + make windstudio/wind_x/r1:default + +Flashing example for this keyboard: + + make windstudio/wind_x/r1:default:flash + +See the [build environment setup](getting_started_build_tools) and the [make instructions](getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](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 From 4f9ef90754a79774da5685b786403c130d836ac4 Mon Sep 17 00:00:00 2001 From: HereVoLand <65162585+Vem-596@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:52:41 +0800 Subject: [PATCH 06/20] Add keyboard buff75 (#24297) * Create herevoland * Delete keyboards/herevoland * Add files via upload * Delete keyboards/herevoland/buff75 directory * Add files via upload * Delete keyboards/herevoland/buff75/buff75.h * Delete keyboards/herevoland/buff75/rules.mk * Delete keyboards/herevoland/buff75/halconf.h * Update and rename info.json to keyboard.json * Delete keyboards/herevoland/buff75/matrix_diagram.md * Update readme.md * Update readme.md * Add files via upload * Delete keyboards/herevoland/buff75/keymaps/via directory * Update readme.md * Update keymap.c * Update matrix_diagram.md * Update readme.md * Update keyboard.json * Update readme.md * Update matrix_diagram.md * Update keyboard.json * Update keymap.c * Update keymap.c * Update keyboard.json * Update mcuconf.h * Delete keyboards/herevoland/buff75/mcuconf.h --- keyboards/herevoland/buff75/keyboard.json | 137 ++++++++++++++++++ .../buff75/keymaps/default/keymap.c | 36 +++++ keyboards/herevoland/buff75/matrix_diagram.md | 18 +++ keyboards/herevoland/buff75/readme.md | 25 ++++ 4 files changed, 216 insertions(+) create mode 100644 keyboards/herevoland/buff75/keyboard.json create mode 100644 keyboards/herevoland/buff75/keymaps/default/keymap.c create mode 100644 keyboards/herevoland/buff75/matrix_diagram.md create mode 100644 keyboards/herevoland/buff75/readme.md diff --git a/keyboards/herevoland/buff75/keyboard.json b/keyboards/herevoland/buff75/keyboard.json new file mode 100644 index 00000000000..15f3e27ac18 --- /dev/null +++ b/keyboards/herevoland/buff75/keyboard.json @@ -0,0 +1,137 @@ +{ + "keyboard_name": "Buff75", + "processor": "STM32F103", + "bootloader": "stm32duino", + "manufacturer": "HereVoLand", + "url": "", + "maintainer": "Here VoLand @Vem", + "usb": { + "vid": "0xB727", + "pid": "0xB727", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 1, + "brightness_steps": 8, + "saturation_steps": 8, + "sleep": true, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "knight": true, + "christmas": true, + "static_gradient": true, + "alternating": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "B2" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "A8", "B15", "B14", "B13", "B12", "A3", "A4" ], + "rows": ["A5", "B10", "B1", "B0", "A7", "A6"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "matrix": [0,0], "x":0, "y":0}, + {"label":"F1", "matrix": [0,1], "x":1.5, "y":0}, + {"label":"F2", "matrix": [0,2], "x":2.5, "y":0}, + {"label":"F3", "matrix": [0,3], "x":3.5, "y":0}, + {"label":"F4", "matrix": [0,4], "x":4.5, "y":0}, + {"label":"F5", "matrix": [0,6], "x":6, "y":0}, + {"label":"F6", "matrix": [0,7], "x":7, "y":0}, + {"label":"F7", "matrix": [0,8], "x":8, "y":0}, + {"label":"F8", "matrix": [0,9], "x":9, "y":0}, + {"label":"F9", "matrix": [0,10], "x":10.5, "y":0}, + {"label":"F10", "matrix": [0,11], "x":11.5, "y":0}, + {"label":"F11", "matrix": [0,12], "x":12.5, "y":0}, + {"label":"F12", "matrix": [0,13], "x":13.5, "y":0}, + {"label":"Home", "matrix": [0,14], "x":15, "y":0}, + + {"label":"`~", "matrix": [1,0], "x":0, "y":1.25}, + {"label":"1!", "matrix": [1,1], "x":1, "y":1.25}, + {"label":"2@", "matrix": [1,2], "x":2, "y":1.25}, + {"label":"3#", "matrix": [1,3], "x":3, "y":1.25}, + {"label":"4$", "matrix": [1,4], "x":4, "y":1.25}, + {"label":"5%", "matrix": [1,5], "x":5, "y":1.25}, + {"label":"6^", "matrix": [1,6], "x":6, "y":1.25}, + {"label":"7&", "matrix": [1,7], "x":7, "y":1.25}, + {"label":"8*", "matrix": [1,8], "x":8, "y":1.25}, + {"label":"9(", "matrix": [1,9], "x":9, "y":1.25}, + {"label":"0)", "matrix": [1,10], "x":10, "y":1.25}, + {"label":"-_", "matrix": [1,11], "x":11, "y":1.25}, + {"label":"=+", "matrix": [1,12], "x":12, "y":1.25}, + {"label":"Backspace", "matrix": [1,13], "x":13, "y":1.25}, + {"label":"Page Up", "matrix": [1,14], "x":15, "y":1.25}, + + {"label":"Tab", "matrix": [2,0], "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "matrix": [2,1], "x":1.5, "y":2.25}, + {"label":"W", "matrix": [2,2], "x":2.5, "y":2.25}, + {"label":"E", "matrix": [2,3], "x":3.5, "y":2.25}, + {"label":"R", "matrix": [2,4], "x":4.5, "y":2.25}, + {"label":"T", "matrix": [2,5], "x":5.5, "y":2.25}, + {"label":"Y", "matrix": [2,6], "x":6.5, "y":2.25}, + {"label":"U", "matrix": [2,7], "x":7.5, "y":2.25}, + {"label":"I", "matrix": [2,8], "x":8.5, "y":2.25}, + {"label":"O", "matrix": [2,9], "x":9.5, "y":2.25}, + {"label":"P", "matrix": [2,10], "x":10.5, "y":2.25}, + {"label":"[", "matrix": [2,11], "x":11.5, "y":2.25}, + {"label":"]", "matrix": [2,12], "x":12.5, "y":2.25}, + {"label":"\\", "matrix": [2,13], "x":13.5, "y":2.25, "w":1.5}, + {"label":"Page Down", "matrix": [2,14], "x":15, "y":2.25}, + + {"label":"Caps Lock", "matrix": [3,0], "x":0, "y":3.25, "w":1.75}, + {"label":"A", "matrix": [3,1], "x":1.75, "y":3.25}, + {"label":"S", "matrix": [3,2], "x":2.75, "y":3.25}, + {"label":"D", "matrix": [3,3], "x":3.75, "y":3.25}, + {"label":"F", "matrix": [3,4], "x":4.75, "y":3.25}, + {"label":"G", "matrix": [3,5], "x":5.75, "y":3.25}, + {"label":"H", "matrix": [3,6], "x":6.75, "y":3.25}, + {"label":"J", "matrix": [3,7], "x":7.75, "y":3.25}, + {"label":"K", "matrix": [3,8], "x":8.75, "y":3.25}, + {"label":"L", "matrix": [3,9], "x":9.75, "y":3.25}, + {"label":";", "matrix": [3,10], "x":10.75, "y":3.25}, + {"label":"'", "matrix": [3,11], "x":11.75, "y":3.25}, + {"label":"Enter", "matrix": [3,13], "x":12.75, "y":3.25, "w":2.25}, + {"label":"End", "matrix": [3,14], "x":15, "y":3.25}, + + {"label":"Shift", "matrix": [4,0], "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "matrix": [4,2], "x":2.25, "y":4.25}, + {"label":"X", "matrix": [4,3], "x":3.25, "y":4.25}, + {"label":"C", "matrix": [4,4], "x":4.25, "y":4.25}, + {"label":"V", "matrix": [4,5], "x":5.25, "y":4.25}, + {"label":"B", "matrix": [4,6], "x":6.25, "y":4.25}, + {"label":"N", "matrix": [4,7], "x":7.25, "y":4.25}, + {"label":"M", "matrix": [4,8], "x":8.25, "y":4.25}, + {"label":",", "matrix": [4,9], "x":9.25, "y":4.25}, + {"label":".", "matrix": [4,10], "x":10.25, "y":4.25}, + {"label":"/", "matrix": [4,11], "x":11.25, "y":4.25}, + {"label":"Shift", "matrix": [4,12], "x":12.25, "y":4.25, "w":1.75}, + {"label":"Up", "matrix": [4,13], "x":14, "y":4.25}, + {"label":"End", "matrix": [4,14], "x":15, "y":4.25}, + + {"label":"Ctrl", "matrix": [5,0], "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "matrix": [5,1], "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "matrix": [5,2], "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "matrix": [5,6], "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "matrix": [5,10], "x":10, "y":5.25, "w":1.25}, + {"label":"Fn", "matrix": [5,11], "x":11.25, "y":5.25, "w":1.25}, + {"label":"Left", "matrix": [5,12], "x":13, "y":5.25}, + {"label":"Down", "matrix": [5,13], "x":14, "y":5.25}, + {"label":"Right", "matrix": [5,14], "x":15, "y":5.25} + ] + } + } +} diff --git a/keyboards/herevoland/buff75/keymaps/default/keymap.c b/keyboards/herevoland/buff75/keymaps/default/keymap.c new file mode 100644 index 00000000000..28762b9a17c --- /dev/null +++ b/keyboards/herevoland/buff75/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2024 楽(HereVoLand @Vem) + * + * 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( + 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_HOME, + 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_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_DEL, + 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, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = 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_PSCR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/herevoland/buff75/matrix_diagram.md b/keyboards/herevoland/buff75/matrix_diagram.md new file mode 100644 index 00000000000..35cca7ec06f --- /dev/null +++ b/keyboards/herevoland/buff75/matrix_diagram.md @@ -0,0 +1,18 @@ +# Matrix Diagram for Buff75 + +``` + ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ + │00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │ + └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘ + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬──┼───┤ + │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D│2E │ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬─────┴──┼───┤ + │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │4E │ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴───┴┬─┬───┼───┼───┤ + │50 │51 │52 │56 │5A │ 5B │ │5C │5D |5E | + └────┴────┴────┴────────────────────────┴───┴─────┘ └───┴───┘───┘ +``` diff --git a/keyboards/herevoland/buff75/readme.md b/keyboards/herevoland/buff75/readme.md new file mode 100644 index 00000000000..b5ce6407d71 --- /dev/null +++ b/keyboards/herevoland/buff75/readme.md @@ -0,0 +1,25 @@ +# Buff75 + +![Buff75](https://imgur.com/pQfzIZr.jpg) +An 75%/TenKeyLess sized keyboard with 1 RGB. + +* Keyboard Maintainer: [HereVoLand](https://github.com/Vem-596) +* Hardware Supported: buff75 +* Hardware Availability: [BUFF Customer-Keyboard](https://shop107132374.taobao.com) + +Make example for this keyboard (after setting up your build environment): + + make herevoland/buff75:default + +Flashing example for this keyboard: + + make herevoland/buff75: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: + +- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard +- **Keycode in layout**: Press the key mapped to `QK_BOOT` From 580d18d2e9a9cb08f11439d5dd58d8e3adffd17f Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Fri, 8 Nov 2024 15:57:22 +1100 Subject: [PATCH 07/20] Speed improvements to `qmk find`. (#24385) --- lib/python/qmk/cli/find.py | 2 ++ lib/python/qmk/cli/mass_compile.py | 2 ++ lib/python/qmk/info.py | 22 +++++++++++++--------- lib/python/qmk/util.py | 21 +++++++++++++++++++++ 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/lib/python/qmk/cli/find.py b/lib/python/qmk/cli/find.py index bfed91e22cd..7d8b1b066c9 100644 --- a/lib/python/qmk/cli/find.py +++ b/lib/python/qmk/cli/find.py @@ -1,5 +1,6 @@ """Command to search through all keyboards and keymaps for a given search criteria. """ +import os from milc import cli from qmk.search import filter_help, search_keymap_targets from qmk.util import maybe_exit_config @@ -20,6 +21,7 @@ from qmk.util import maybe_exit_config def find(cli): """Search through all keyboards and keymaps for a given search criteria. """ + os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1') maybe_exit_config(should_exit=False, should_reraise=True) targets = search_keymap_targets([('all', cli.config.find.keymap)], cli.args.filter) diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index cf9be0fd1e2..4c4669d4517 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -20,6 +20,8 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool, if len(targets) == 0: return + os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1') + make_cmd = find_make() builddir = Path(QMK_FIRMWARE) / '.build' makefile = builddir / 'parallel_kb_builds.mk' diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 72b19a9fec6..82082f5cf0d 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -1,6 +1,7 @@ """Functions that help us generate and use info.json files. """ import re +import os from pathlib import Path import jsonschema from dotty_dict import dotty @@ -14,7 +15,7 @@ from qmk.keyboard import config_h, rules_mk from qmk.commands import parse_configurator_json from qmk.makefile import parse_rules_mk_file from qmk.math import compute -from qmk.util import maybe_exit +from qmk.util import maybe_exit, truthy true_values = ['1', 'on', 'yes'] false_values = ['0', 'off', 'no'] @@ -262,7 +263,9 @@ def info_json(keyboard, force_layout=None): info_data["community_layouts"] = [force_layout] # Validate - _validate(keyboard, info_data) + # Skip processing if necessary + if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False): + _validate(keyboard, info_data) # Check that the reported matrix size is consistent with the actual matrix size _check_matrix(info_data) @@ -944,13 +947,14 @@ def merge_info_jsons(keyboard, info_data): _log_error(info_data, "Invalid file %s, root object should be a dictionary." % (str(info_file),)) continue - try: - validate(new_info_data, 'qmk.keyboard.v1') - except jsonschema.ValidationError as e: - json_path = '.'.join([str(p) for p in e.absolute_path]) - cli.log.error('Not including data from file: %s', info_file) - cli.log.error('\t%s: %s', json_path, e.message) - continue + if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False): + try: + validate(new_info_data, 'qmk.keyboard.v1') + except jsonschema.ValidationError as e: + json_path = '.'.join([str(p) for p in e.absolute_path]) + cli.log.error('Not including data from file: %s', info_file) + cli.log.error('\t%s: %s', json_path, e.message) + continue # Merge layout data in if 'layout_aliases' in new_info_data: diff --git a/lib/python/qmk/util.py b/lib/python/qmk/util.py index b73fab89d12..8f99410e1de 100644 --- a/lib/python/qmk/util.py +++ b/lib/python/qmk/util.py @@ -27,6 +27,27 @@ def maybe_exit_config(should_exit: bool = True, should_reraise: bool = False): maybe_exit_reraise = should_reraise +def truthy(value, value_if_unknown=False): + """Returns True if the value is truthy, False otherwise. + + Deals with: + True: 1, true, t, yes, y, on + False: 0, false, f, no, n, off + """ + if value in {False, True}: + return bool(value) + + test_value = str(value).strip().lower() + + if test_value in {"1", "true", "t", "yes", "y", "on"}: + return True + + if test_value in {"0", "false", "f", "no", "n", "off"}: + return False + + return value_if_unknown + + @contextlib.contextmanager def parallelize(): """Returns a function that can be used in place of a map() call. From e31eeb85db481f977dbe7d6d2d9007a9faaeaf3e Mon Sep 17 00:00:00 2001 From: Akshay <32840608+axshae@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:39:35 +0530 Subject: [PATCH 08/20] added support for shorty KB (#24518) * added support for shorty KB Co-authored-by: Ryan Co-authored-by: Joel Challis Co-authored-by: Ryan --- keyboards/shorty/keyboard.json | 48 +++++++++++++++++++++++ keyboards/shorty/keymaps/default/keymap.c | 18 +++++++++ keyboards/shorty/readme.md | 27 +++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 keyboards/shorty/keyboard.json create mode 100644 keyboards/shorty/keymaps/default/keymap.c create mode 100644 keyboards/shorty/readme.md diff --git a/keyboards/shorty/keyboard.json b/keyboards/shorty/keyboard.json new file mode 100644 index 00000000000..158648badd4 --- /dev/null +++ b/keyboards/shorty/keyboard.json @@ -0,0 +1,48 @@ +{ + "manufacturer": "Hawtkeys", + "keyboard_name": "shorty", + "maintainer": "hawtkeys", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "GP28", "pin_b": "GP27"}, + {"pin_a": "GP3", "pin_b": "GP4"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP14", "GP13", "GP12"], + "rows": ["GP11", "GP10", "GP9", "GP29", "GP2"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x5400", + "vid": "0x5453" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [3, 0], "x": 0, "y": 0}, + {"matrix": [4, 0], "x": 2, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1}, + {"matrix": [0, 1], "x": 1, "y": 1}, + {"matrix": [0, 2], "x": 2, "y": 1}, + {"matrix": [1, 0], "x": 0, "y": 2}, + {"matrix": [1, 1], "x": 1, "y": 2}, + {"matrix": [1, 2], "x": 2, "y": 2}, + {"matrix": [2, 0], "x": 0, "y": 3}, + {"matrix": [2, 1], "x": 1, "y": 3}, + {"matrix": [2, 2], "x": 2, "y": 3} + ] + } + } +} diff --git a/keyboards/shorty/keymaps/default/keymap.c b/keyboards/shorty/keymaps/default/keymap.c new file mode 100644 index 00000000000..ef4bbba7ef0 --- /dev/null +++ b/keyboards/shorty/keymaps/default/keymap.c @@ -0,0 +1,18 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_A, KC_D, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3 + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(MS_WHLD, MS_WHLU) } +}; +#endif diff --git a/keyboards/shorty/readme.md b/keyboards/shorty/readme.md new file mode 100644 index 00000000000..23f023b92ce --- /dev/null +++ b/keyboards/shorty/readme.md @@ -0,0 +1,27 @@ +# Shorty Zero + +![Shorty Zero by hawtkeys.com](https://i.imgur.com/hoMHYLW.png) + +The Shorty Zero is a 3x3 customizable macropad designed for productivity, gaming, and creative workflows, featuring programmable keys and rotary knobs. + +* Keyboard Maintainer: [Hawtkeys](https://github.com/hawtkeys) +* Hardware Supported: Raspberry Pi Pico, Hawtkeys Shorty Zero PCB +* Hardware Availability: [Available @ hawtkeys.com](https://hawtkeys.com) + +Make example for this keyboard (after setting up your build environment): + + make shorty:default + +Flashing example for this keyboard: + + make shorty: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 \ No newline at end of file From fb3a414a4042006fd374602931c2b9c943059aa8 Mon Sep 17 00:00:00 2001 From: Danny Tan <23428162+zykrah@users.noreply.github.com> Date: Sat, 9 Nov 2024 15:21:52 +1100 Subject: [PATCH 09/20] Add Idyllic Pizza Pad (#24566) * Initial PizzaPad firmware * Updated files to conform to PR checklist * Fix default keymap location * Update keyboard.json * Apply suggestions from code review Co-authored-by: Joel Challis * Update keyboards/idyllic/pizzapad/keymaps/default/keymap.c Co-authored-by: jack --------- Co-authored-by: Joel Challis Co-authored-by: jack --- keyboards/idyllic/pizzapad/keyboard.json | 36 +++++++++++++++++++ .../idyllic/pizzapad/keymaps/default/keymap.c | 12 +++++++ keyboards/idyllic/pizzapad/readme.md | 27 ++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 keyboards/idyllic/pizzapad/keyboard.json create mode 100644 keyboards/idyllic/pizzapad/keymaps/default/keymap.c create mode 100644 keyboards/idyllic/pizzapad/readme.md diff --git a/keyboards/idyllic/pizzapad/keyboard.json b/keyboards/idyllic/pizzapad/keyboard.json new file mode 100644 index 00000000000..638db198227 --- /dev/null +++ b/keyboards/idyllic/pizzapad/keyboard.json @@ -0,0 +1,36 @@ +{ + "manufacturer": "Zykrah", + "keyboard_name": "Pizza Pad", + "maintainer": "zykrah", + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 6 + }, + "matrix_pins": { + "cols": ["GP1", "GP0", "GP7"], + "rows": ["GP6", "GP29", "GP28"] + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x5050", + "vid": "0x7A79" + }, + "community_layouts": ["ortho_3x3"], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/idyllic/pizzapad/keymaps/default/keymap.c b/keyboards/idyllic/pizzapad/keymaps/default/keymap.c new file mode 100644 index 00000000000..333b33bc0b4 --- /dev/null +++ b/keyboards/idyllic/pizzapad/keymaps/default/keymap.c @@ -0,0 +1,12 @@ +// Copyright 2024 Zykrah (@zykrah) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3 + ) +}; diff --git a/keyboards/idyllic/pizzapad/readme.md b/keyboards/idyllic/pizzapad/readme.md new file mode 100644 index 00000000000..04098cb522d --- /dev/null +++ b/keyboards/idyllic/pizzapad/readme.md @@ -0,0 +1,27 @@ +# Pizza Pad PCB + +![Pizza Pad PCB](https://i.imgur.com/eJLuaZY.jpg) + +A 3x3 PCB designed for the Idyllic Pretty Pad. + +* Keyboard Maintainer: Zykrah +* Hardware Supported: Pizza Pad PCB (using a SEEED XIAO RP2040) +* Hardware Availability: [Mechstock](https://mechstock.com.au/) + +Make example for this keyboard (after setting up your build environment): + + make idyllic/pizzapad:default + +Flashing example for this keyboard: + + make idyllic/pizzapad: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 both the `BOOT` and `RESET` buttons at the same time +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 10849dac689aafc3c75b9ee55dcb467c399b77d3 Mon Sep 17 00:00:00 2001 From: Danny Tan <23428162+zykrah@users.noreply.github.com> Date: Sat, 9 Nov 2024 15:23:31 +1100 Subject: [PATCH 10/20] Add Fuyu HS (#24567) * Add Fuyu HS * Fix keyboard.json linting * Fix rgbmatrix configuration * Apply suggestions from code review Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis --- keyboards/zykrah/fuyu_hs/config.h | 21 + keyboards/zykrah/fuyu_hs/keyboard.json | 404 ++++++++++++++++++ .../zykrah/fuyu_hs/keymaps/default/keymap.c | 39 ++ keyboards/zykrah/fuyu_hs/readme.md | 27 ++ 4 files changed, 491 insertions(+) create mode 100644 keyboards/zykrah/fuyu_hs/config.h create mode 100644 keyboards/zykrah/fuyu_hs/keyboard.json create mode 100644 keyboards/zykrah/fuyu_hs/keymaps/default/keymap.c create mode 100644 keyboards/zykrah/fuyu_hs/readme.md diff --git a/keyboards/zykrah/fuyu_hs/config.h b/keyboards/zykrah/fuyu_hs/config.h new file mode 100644 index 00000000000..767cc3f69ac --- /dev/null +++ b/keyboards/zykrah/fuyu_hs/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2024 Zykrah + +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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/zykrah/fuyu_hs/keyboard.json b/keyboards/zykrah/fuyu_hs/keyboard.json new file mode 100644 index 00000000000..de5530b8dec --- /dev/null +++ b/keyboards/zykrah/fuyu_hs/keyboard.json @@ -0,0 +1,404 @@ +{ + "keyboard_name": "Fuyu Hotswap", + "maintainer": "zykrah", + "manufacturer": "Zykrah", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "device_version": "0.0.1", + "pid": "0x4648", + "vid": "0x7A79" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 6 + }, + "matrix_pins": { + "rows": ["GP13", "GP12", "GP11", "GP10", "GP15", "GP14"], + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP2", "GP1", "GP0"] + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true + }, + "default": { + "val": 150 + }, + "driver": "ws2812", + "max_brightness": 200, + "layout": [ + {"x": 112, "y": 32, "flags": 8}, + {"x": 138, "y": 17, "flags": 8}, + {"x": 112, "y": 2, "flags": 8}, + {"x": 86, "y": 17, "flags": 8}, + {"x": 86, "y": 47, "flags": 8}, + {"x": 112, "y": 62, "flags": 8}, + {"x": 138, "y": 47, "flags": 8}, + {"x": 0, "y": 0, "flags": 2}, + {"x": 16, "y": 0, "flags": 2}, + {"x": 32, "y": 0, "flags": 2}, + {"x": 48, "y": 0, "flags": 2}, + {"x": 64, "y": 0, "flags": 2}, + {"x": 80, "y": 0, "flags": 2}, + {"x": 96, "y": 0, "flags": 2}, + {"x": 112, "y": 0, "flags": 2}, + {"x": 128, "y": 0, "flags": 2}, + {"x": 144, "y": 0, "flags": 2}, + {"x": 160, "y": 0, "flags": 2}, + {"x": 176, "y": 0, "flags": 2}, + {"x": 192, "y": 0, "flags": 2}, + {"x": 208, "y": 0, "flags": 2}, + {"x": 208, "y": 16, "flags": 2}, + {"x": 208, "y": 32, "flags": 2}, + {"x": 208, "y": 48, "flags": 2}, + {"x": 208, "y": 64, "flags": 2}, + {"x": 192, "y": 64, "flags": 2}, + {"x": 176, "y": 64, "flags": 2}, + {"x": 160, "y": 64, "flags": 2}, + {"x": 144, "y": 64, "flags": 2}, + {"x": 128, "y": 64, "flags": 2}, + {"x": 112, "y": 64, "flags": 2}, + {"x": 96, "y": 64, "flags": 2}, + {"x": 80, "y": 64, "flags": 2}, + {"x": 64, "y": 64, "flags": 2}, + {"x": 48, "y": 64, "flags": 2}, + {"x": 32, "y": 64, "flags": 2}, + {"x": 16, "y": 64, "flags": 2}, + {"x": 0, "y": 64, "flags": 2}, + {"x": 0, "y": 48, "flags": 2}, + {"x": 0, "y": 32, "flags": 2}, + {"x": 0, "y": 16, "flags": 2} + ] + }, + "url": "https://github.com/zykrah/fuyu", + "ws2812": { + "driver": "vendor", + "pin": "GP3" + }, + "layouts": { + "LAYOUT_all": { + "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": [3, 13], "x": 14, "y": 1.25}, + {"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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"matrix": [3, 15], "x": 16.25, "y": 3.25}, + {"matrix": [3, 16], "x": 17.25, "y": 3.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, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [4, 16], "x": 17.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_numpad": { + "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": [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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"matrix": [3, 15], "x": 16.25, "y": 3.25}, + {"matrix": [3, 16], "x": 17.25, "y": 3.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, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [4, 16], "x": 17.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_tsangan_numpad": { + "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": [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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"matrix": [3, 15], "x": 16.25, "y": 3.25}, + {"matrix": [3, 16], "x": 17.25, "y": 3.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, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [4, 16], "x": 17.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, 6], "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} + ] + } + } +} diff --git a/keyboards/zykrah/fuyu_hs/keymaps/default/keymap.c b/keyboards/zykrah/fuyu_hs/keymaps/default/keymap.c new file mode 100644 index 00000000000..e04c98a9fbb --- /dev/null +++ b/keyboards/zykrah/fuyu_hs/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2024 Zykrah + +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_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_TRNS, KC_TRNS, KC_TRNS, + 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_TRNS, KC_TRNS, KC_UP, KC_TRNS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/zykrah/fuyu_hs/readme.md b/keyboards/zykrah/fuyu_hs/readme.md new file mode 100644 index 00000000000..41c5cded51d --- /dev/null +++ b/keyboards/zykrah/fuyu_hs/readme.md @@ -0,0 +1,27 @@ +# FUYU HOTSWAP + +![FUYU HS 7U](https://i.imgur.com/8zjDNJT.jpg) + +An F12 TKL Hotswappable H87-Compat Type-C PCB for the Geon F1-8K + +* Keyboard Maintainer: [Zykrah](https://github.com/zykrah) +* Hardware Supported: Fuyu HS 7u rev1, Fuyu HS 6.25u rev1 +* Hardware Availability: [Github Repo](https://github.com/zykrah/fuyu), [GEON Store](https://geon.works/products/fuyu-pcb-for-f1-8k), [Cafege](https://cafege.com.au/products/fuyu-8k-pcb) + +Make example for this keyboard (after setting up your build environment): + + make zykrah/fuyu_hs:default + +Flashing example for this keyboard: + + make zykrah/fuyu_hs: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 short the `RST` 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 From f156e57f8ef6bb825695123ab7cf2eca8d75dace Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Sat, 9 Nov 2024 05:24:00 +0100 Subject: [PATCH 11/20] [Keyboard] Add tenstad (#24571) * [Keyboard] Add tenstad * fix: remove settings disabled by default Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * fix: add serial and transport to json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * fix: format json * docs: update img url * fix: delete now-redundant rules.mk * fix: format keymap.json (keeping 'layout' at the top) --------- Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/handwired/tenstad/keyboard.json | 85 +++++++++++++++++++ .../tenstad/keymaps/default/keymap.json | 55 ++++++++++++ keyboards/handwired/tenstad/readme.md | 19 +++++ 3 files changed, 159 insertions(+) create mode 100644 keyboards/handwired/tenstad/keyboard.json create mode 100644 keyboards/handwired/tenstad/keymaps/default/keymap.json create mode 100644 keyboards/handwired/tenstad/readme.md diff --git a/keyboards/handwired/tenstad/keyboard.json b/keyboards/handwired/tenstad/keyboard.json new file mode 100644 index 00000000000..1220d3b107f --- /dev/null +++ b/keyboards/handwired/tenstad/keyboard.json @@ -0,0 +1,85 @@ +{ + "manufacturer": "Amund Tenstad", + "keyboard_name": "tenstad", + "maintainer": "tenstad", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP15", "GP14"], + "rows": ["GP3", "GP4", "GP5", "GP6"] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "serial": { + "driver": "vendor" + }, + "transport": { + "protocol": "serial" + } + }, + "url": "https://github.com/tenstad/keyboard", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_split_3x6_5": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 1.35}, + {"matrix": [0, 1], "x": 1, "y": 0.95}, + {"matrix": [0, 2], "x": 2.35, "y": 0.35}, + {"matrix": [0, 3], "x": 3.35, "y": 0}, + {"matrix": [0, 4], "x": 4.65, "y": 0.4}, + {"matrix": [0, 5], "x": 5.65, "y": 0.4}, + {"matrix": [4, 5], "x": 12.25, "y": 0.4}, + {"matrix": [4, 4], "x": 13.25, "y": 0.4}, + {"matrix": [4, 3], "x": 14.55, "y": 0}, + {"matrix": [4, 2], "x": 15.55, "y": 0.35}, + {"matrix": [4, 1], "x": 16.9, "y": 0.95}, + {"matrix": [4, 0], "x": 17.9, "y": 1.35}, + {"matrix": [1, 0], "x": 0.1, "y": 2.35}, + {"matrix": [1, 1], "x": 1.1, "y": 1.95}, + {"matrix": [1, 2], "x": 2.4, "y": 1.35}, + {"matrix": [1, 3], "x": 3.4, "y": 1}, + {"matrix": [1, 4], "x": 4.65, "y": 1.4}, + {"matrix": [1, 5], "x": 5.65, "y": 1.4}, + {"matrix": [5, 5], "x": 12.25, "y": 1.4}, + {"matrix": [5, 4], "x": 13.25, "y": 1.4}, + {"matrix": [5, 3], "x": 14.5, "y": 1}, + {"matrix": [5, 2], "x": 15.5, "y": 1.35}, + {"matrix": [5, 1], "x": 16.8, "y": 1.95}, + {"matrix": [5, 0], "x": 17.8, "y": 2.35}, + {"matrix": [2, 0], "x": 0.2, "y": 3.35}, + {"matrix": [2, 1], "x": 1.2, "y": 2.95}, + {"matrix": [2, 2], "x": 2.45, "y": 2.35}, + {"matrix": [2, 3], "x": 3.45, "y": 2}, + {"matrix": [2, 4], "x": 4.65, "y": 2.4}, + {"matrix": [2, 5], "x": 5.65, "y": 2.4}, + {"matrix": [6, 5], "x": 12.25, "y": 2.4}, + {"matrix": [6, 4], "x": 13.25, "y": 2.4}, + {"matrix": [6, 3], "x": 14.45, "y": 2}, + {"matrix": [6, 2], "x": 15.45, "y": 2.35}, + {"matrix": [6, 1], "x": 16.7, "y": 2.95}, + {"matrix": [6, 0], "x": 17.7, "y": 3.35}, + {"matrix": [3, 5], "x": 6.85, "y": 3}, + {"matrix": [3, 3], "x": 7.95, "y": 3.35}, + {"matrix": [3, 4], "x": 5.6, "y": 3.95}, + {"matrix": [3, 1], "x": 6.7, "y": 4.1}, + {"matrix": [3, 2], "x": 7.8, "y": 4.45}, + {"matrix": [7, 3], "x": 9.95, "y": 3.35}, + {"matrix": [7, 5], "x": 11.05, "y": 3}, + {"matrix": [7, 2], "x": 10.1, "y": 4.45}, + {"matrix": [7, 1], "x": 11.2, "y": 4.1}, + {"matrix": [7, 4], "x": 12.3, "y": 3.95} + ] + } + } +} diff --git a/keyboards/handwired/tenstad/keymaps/default/keymap.json b/keyboards/handwired/tenstad/keymaps/default/keymap.json new file mode 100644 index 00000000000..4882e307321 --- /dev/null +++ b/keyboards/handwired/tenstad/keymaps/default/keymap.json @@ -0,0 +1,55 @@ +{ + "keyboard": "handwired/tenstad", + "keymap": "default", + "layout": "LAYOUT_split_3x6_5", + "layers": [ + [ + "KC_ESC", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_RBRC", + "KC_TAB", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_GRV", + "KC_QUOT", + "KC_LCTL", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_MINS", + "KC_RSFT", + "KC_NO", + "KC_NO", + "KC_TAB", + "KC_NO", + "KC_NO", + "KC_DEL", + "KC_NO", + "KC_BSPC", + "KC_SPC", + "KC_ENT" + ] + ] +} diff --git a/keyboards/handwired/tenstad/readme.md b/keyboards/handwired/tenstad/readme.md new file mode 100644 index 00000000000..8ed97513303 --- /dev/null +++ b/keyboards/handwired/tenstad/readme.md @@ -0,0 +1,19 @@ +# tenstad + +![tenstad](https://i.imgur.com/Lh4TAUF.png) + +[tenstad/keyboard](https://github.com/tenstad/keyboard) - hand-soldered ergonomic split 3x6 keyboard with 5 thumb keys + +* Keyboard Maintainer: [Amund Tenstad](https://github.com/tenstad) +* Hardware Supported: RP2040 Zero +* Hardware Availability: [List of Parts](https://github.com/tenstad/keyboard/blob/main/README.md#parts) from [AliExpress](https://aliexpress.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/tenstad:default + +Flashing example for this keyboard: + + make handwired/tenstad: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 b3f5408e7283c8a282fada75dd4e61a93df276e7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 10 Nov 2024 03:49:11 +1100 Subject: [PATCH 12/20] [docs] Fix dead link to keyboard list in newbs.md (#24579) --- docs/newbs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/newbs.md b/docs/newbs.md index 64593cbad12..95cde67f0cd 100644 --- a/docs/newbs.md +++ b/docs/newbs.md @@ -4,7 +4,7 @@ Your computer keyboard has a processor inside of it, similar to the one inside y QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules. -Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](https://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do. +Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](https://browse.qmk.fm/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do. ::: tip Is This Guide For Me? If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator) instead. From 3eb172d08ef0b5765cafcf067118563df917fe83 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 10 Nov 2024 06:04:14 +1100 Subject: [PATCH 13/20] [docs] Turn on icons for external links (#24580) --- builddefs/docsgen/.vitepress/config.mts | 2 ++ docs/reference_info_json.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/builddefs/docsgen/.vitepress/config.mts b/builddefs/docsgen/.vitepress/config.mts index 54ecae2e86b..5beca70634e 100644 --- a/builddefs/docsgen/.vitepress/config.mts +++ b/builddefs/docsgen/.vitepress/config.mts @@ -41,6 +41,8 @@ export default defineConfig(({ mode }) => { sidebar: sidebar, + externalLinkIcon: true, + socialLinks: [ { icon: { svg: '' }, link: "https://reddit.com/r/olkb" }, { icon: "discord", link: "https://discord.gg/qmk" }, diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index 82110537a9d..c1061cdf823 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -16,7 +16,7 @@ You can create `info.json` files at every level under `qmk_firmware/keyboards/String Required - * A URL to the keyboard's product page, [QMK.fm/keyboards](https://qmk.fm/keyboards) page, or other page describing information about the keyboard. + * A URL to the keyboard's product page, [QMK Keyboards](https://browse.qmk.fm/) page, or other page describing information about the keyboard. * Example: `"https://clueboard.co"` * `bootloader_instructions` String * Instructions for putting the keyboard into a mode that allows for firmware flashing. From 8cbd631fcbd74f3699c756abb3f27c9807825593 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Sun, 10 Nov 2024 19:11:48 +0000 Subject: [PATCH 14/20] remove "w": 1 from /keyboards/ (#24587) --- .../satisfaction75_hs/keyboard.json | 6 +++--- .../whitefacemountain/ampersand/keyboard.json | 20 +++++++++---------- keyboards/zeix/singa/kohaku/keyboard.json | 8 ++++---- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/keyboards/cannonkeys/satisfaction75_hs/keyboard.json b/keyboards/cannonkeys/satisfaction75_hs/keyboard.json index 6e8172ec028..48faa60362b 100644 --- a/keyboards/cannonkeys/satisfaction75_hs/keyboard.json +++ b/keyboards/cannonkeys/satisfaction75_hs/keyboard.json @@ -112,9 +112,9 @@ {"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}, - {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1}, - {"matrix": [5, 9], "x": 12, "y": 5.25, "w": 1}, + {"matrix": [5, 10], "x": 10, "y": 5.25}, + {"matrix": [5, 11], "x": 11, "y": 5.25}, + {"matrix": [5, 9], "x": 12, "y": 5.25}, {"matrix": [5, 12], "x": 13.25, "y": 5.5}, {"matrix": [5, 13], "x": 14.25, "y": 5.5}, {"matrix": [5, 14], "x": 15.25, "y": 5.5} diff --git a/keyboards/whitefacemountain/ampersand/keyboard.json b/keyboards/whitefacemountain/ampersand/keyboard.json index 04840d05bcd..b0929e2d3c9 100644 --- a/keyboards/whitefacemountain/ampersand/keyboard.json +++ b/keyboards/whitefacemountain/ampersand/keyboard.json @@ -64,13 +64,13 @@ {"label": ".", "matrix": [2, 9], "x": 9.75, "y": 2}, {"label": "/", "matrix": [2, 10], "x": 10.75, "y": 2}, {"label": "Shift", "matrix": [2, 11], "x": 11.75, "y": 2, "w": 1.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3, "w": 1}, - {"label": "LAlt", "matrix": [3, 1], "x": 1.75, "y": 3, "w": 1}, - {"label": "LGui", "matrix": [3, 2], "x": 2.75, "y": 3, "w": 1}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "LAlt", "matrix": [3, 1], "x": 1.75, "y": 3}, + {"label": "LGui", "matrix": [3, 2], "x": 2.75, "y": 3}, {"label": "Space", "matrix": [3, 5], "x": 3.75, "y": 3, "w": 6}, - {"label": "RGui", "matrix": [3, 8], "x": 9.75, "y": 3, "w": 1}, - {"label": "RAlt", "matrix": [3, 9], "x": 10.75, "y": 3, "w": 1}, - {"label": "RCtrl", "matrix": [3, 11], "x": 12.5, "y": 3, "w": 1} + {"label": "RGui", "matrix": [3, 8], "x": 9.75, "y": 3}, + {"label": "RAlt", "matrix": [3, 9], "x": 10.75, "y": 3}, + {"label": "RCtrl", "matrix": [3, 11], "x": 12.5, "y": 3} ] }, "LAYOUT_split_bars": { @@ -113,14 +113,14 @@ {"label": ".", "matrix": [2, 9], "x": 9.75, "y": 2}, {"label": "/", "matrix": [2, 10], "x": 10.75, "y": 2}, {"label": "Shift", "matrix": [2, 11], "x": 11.75, "y": 2, "w": 1.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3, "w": 1}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3}, {"label": "LAlt", "matrix": [3, 1], "x": 1.75, "y": 3, "w": 1.5}, - {"label": "LGui", "matrix": [3, 2], "x": 3.25, "y": 3, "w": 1}, + {"label": "LGui", "matrix": [3, 2], "x": 3.25, "y": 3}, {"label": "Space", "matrix": [3, 3], "x": 4.25, "y": 3, "w": 2.25}, {"label": "Space", "matrix": [3, 7], "x": 6.5, "y": 3, "w": 2.75}, - {"label": "RGui", "matrix": [3, 8], "x": 9.25, "y": 3, "w": 1}, + {"label": "RGui", "matrix": [3, 8], "x": 9.25, "y": 3}, {"label": "RAlt", "matrix": [3, 9], "x": 10.25, "y": 3, "w": 1.5}, - {"label": "RCtrl", "matrix": [3, 11], "x": 12.5, "y": 3, "w": 1} + {"label": "RCtrl", "matrix": [3, 11], "x": 12.5, "y": 3} ] } } diff --git a/keyboards/zeix/singa/kohaku/keyboard.json b/keyboards/zeix/singa/kohaku/keyboard.json index f1ce31fe64d..542bad9c6fc 100644 --- a/keyboards/zeix/singa/kohaku/keyboard.json +++ b/keyboards/zeix/singa/kohaku/keyboard.json @@ -326,7 +326,7 @@ {"matrix": [7, 6], "x": 14, "y": 3}, {"matrix": [7, 7], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, - {"matrix": [9, 0], "x": 1.5, "y": 4, "w": 1}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, @@ -397,7 +397,7 @@ {"matrix": [7, 6], "x": 14, "y": 3}, {"matrix": [7, 7], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, - {"matrix": [9, 0], "x": 1.5, "y": 4, "w": 1}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, @@ -613,7 +613,7 @@ {"matrix": [7, 6], "x": 14, "y": 3}, {"matrix": [7, 7], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, - {"matrix": [9, 0], "x": 1.5, "y": 4, "w": 1}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, @@ -685,7 +685,7 @@ {"matrix": [7, 6], "x": 14, "y": 3}, {"matrix": [7, 7], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, - {"matrix": [9, 0], "x": 1.5, "y": 4, "w": 1}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, From 9cd789676059f734a1538833cea6940d9c669b48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 02:18:51 +0000 Subject: [PATCH 15/20] Bump JamesIves/github-pages-deploy-action from 4.6.8 to 4.6.9 (#24592) Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.8 to 4.6.9. - [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases) - [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.8...v4.6.9) --- updated-dependencies: - dependency-name: JamesIves/github-pages-deploy-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 42d377fe4a9..e04bcd080b1 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -56,7 +56,7 @@ jobs: - name: Deploy if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }} - uses: JamesIves/github-pages-deploy-action@v4.6.8 + uses: JamesIves/github-pages-deploy-action@v4.6.9 with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages From 3d4da6de29c8635c9cd232ce456d8fec8d31921b Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 12 Nov 2024 13:20:56 +1100 Subject: [PATCH 16/20] [docs] Add "edit this page" link at the bottom (#24585) --- builddefs/docsgen/.vitepress/config.mts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builddefs/docsgen/.vitepress/config.mts b/builddefs/docsgen/.vitepress/config.mts index 5beca70634e..d2fe2886b21 100644 --- a/builddefs/docsgen/.vitepress/config.mts +++ b/builddefs/docsgen/.vitepress/config.mts @@ -39,6 +39,11 @@ export default defineConfig(({ mode }) => { provider: "local", }, + editLink: { + pattern: 'https://github.com/qmk/qmk_firmware/edit/master/docs/:path' + }, + lastUpdated: true, + sidebar: sidebar, externalLinkIcon: true, From 4757ef281f5cb52668134dfc0b1c8c03445ec2ae Mon Sep 17 00:00:00 2001 From: Druah <54309603+Druah@users.noreply.github.com> Date: Tue, 12 Nov 2024 23:29:12 -0500 Subject: [PATCH 17/20] [Keyboard] Add Majestouch Redux (#24586) * [Keyboard] Add Majestouch Redux * Apply suggestions from code review Co-authored-by: Duncan Sutherland --------- Co-authored-by: Duncan Sutherland --- .../druah/majestouch_redux/keyboard.json | 131 ++++++++++++++++++ .../majestouch_redux/keymaps/default/keymap.c | 32 +++++ keyboards/druah/majestouch_redux/readme.md | 27 ++++ 3 files changed, 190 insertions(+) create mode 100644 keyboards/druah/majestouch_redux/keyboard.json create mode 100644 keyboards/druah/majestouch_redux/keymaps/default/keymap.c create mode 100644 keyboards/druah/majestouch_redux/readme.md diff --git a/keyboards/druah/majestouch_redux/keyboard.json b/keyboards/druah/majestouch_redux/keyboard.json new file mode 100644 index 00000000000..b9ea139bd58 --- /dev/null +++ b/keyboards/druah/majestouch_redux/keyboard.json @@ -0,0 +1,131 @@ +{ + "manufacturer": "FILCO", + "keyboard_name": "Majestouch Redux", + "maintainer": "Druah", + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "C1", + "scroll_lock": "C0" + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "F6", "F7", "E6", "F0", "F1", "F2", "B3", "B2", "B1", "F3", "F4", "C5", "C6", "C3"], + "rows": ["C2", "B4", "B5", "F5", "C7", "C4"] + }, + "processor": "at90usb646", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "url": "https://druah.moe", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x444E" + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "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.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, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.5}, + {"matrix": [1, 15], "x": 16.25, "y": 1.5}, + {"matrix": [1, 16], "x": 17.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": 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": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.5}, + {"matrix": [2, 15], "x": 16.25, "y": 2.5}, + {"matrix": [2, 16], "x": 17.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": 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, 13], "x": 12.75, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"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, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 7], "x": 3.75, "y": 5.5, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.5}, + {"matrix": [5, 15], "x": 16.25, "y": 5.5}, + {"matrix": [5, 16], "x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/druah/majestouch_redux/keymaps/default/keymap.c b/keyboards/druah/majestouch_redux/keymaps/default/keymap.c new file mode 100644 index 00000000000..a3f8be1bbac --- /dev/null +++ b/keyboards/druah/majestouch_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││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_tkl_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_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/majestouch_redux/readme.md b/keyboards/druah/majestouch_redux/readme.md new file mode 100644 index 00000000000..19df7d46974 --- /dev/null +++ b/keyboards/druah/majestouch_redux/readme.md @@ -0,0 +1,27 @@ +# Majestouch Redux + +![PCB](https://i.imgur.com/LjoywMI.png) + +A replacement PCB for the FILCO Majestouch TKL line of keyboards (and other keyboards) compatible with [Phantom TKL](https://deskthority.net/wiki/Phantom) PCB spacing + +* Keyboard Maintainer: [Druah](https://github.com/Druah) +* Hardware Supported: Majestouch Redux +* Hardware Availability: Private buy + +Make example for this keyboard (after setting up your build environment): + + make druah/majestouch_redux:default + +Flashing example for this keyboard: + + make druah/majestouch_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 From a8a47c40114c72a042516c1f93384f228685eb3e Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Thu, 14 Nov 2024 20:43:23 +1100 Subject: [PATCH 18/20] Perform test compiles during `qmk doctor`. (#24282) Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- lib/python/qmk/cli/doctor/check.py | 62 +++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/lib/python/qmk/cli/doctor/check.py b/lib/python/qmk/cli/doctor/check.py index d563811aba9..2804a1d7df1 100644 --- a/lib/python/qmk/cli/doctor/check.py +++ b/lib/python/qmk/cli/doctor/check.py @@ -4,6 +4,8 @@ from enum import Enum import re import shutil from subprocess import DEVNULL, TimeoutExpired +from tempfile import TemporaryDirectory +from pathlib import Path from milc import cli from qmk import submodules @@ -44,7 +46,35 @@ def _check_arm_gcc_version(): version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip() cli.log.info('Found arm-none-eabi-gcc version %s', version_number) - return CheckStatus.OK # Right now all known arm versions are ok + # Right now all known ARM versions are ok, so check that it can produce binaries + return _check_arm_gcc_installation() + + +def _check_arm_gcc_installation(): + """Returns OK if the arm-none-eabi-gcc is fully installed and can produce binaries. + """ + with TemporaryDirectory() as temp_dir: + temp_file = Path(temp_dir) / 'test.elf' + + args = ['arm-none-eabi-gcc', '-mcpu=cortex-m0', '-mthumb', '-mno-thumb-interwork', '--specs=nosys.specs', '--specs=nano.specs', '-x', 'c', '-o', str(temp_file), '-'] + result = cli.run(args, stdin=None, stdout=None, stderr=None, input='#include \nint main() { return __NEWLIB__ * __NEWLIB_MINOR__ * __NEWLIB_PATCHLEVEL__; }') + if result.returncode == 0: + cli.log.info('Successfully compiled using arm-none-eabi-gcc') + else: + cli.log.error(f'Failed to compile a simple program with arm-none-eabi-gcc, return code {result.returncode}') + cli.log.error(f'Command: {" ".join(args)}') + return CheckStatus.ERROR + + args = ['arm-none-eabi-size', str(temp_file)] + result = cli.run(args, stdin=None, stdout=None, stderr=None) + if result.returncode == 0: + cli.log.info('Successfully tested arm-none-eabi-binutils using arm-none-eabi-size') + else: + cli.log.error(f'Failed to execute arm-none-eabi-size, perhaps corrupt arm-none-eabi-binutils, return code {result.returncode}') + cli.log.error(f'Command: {" ".join(args)}') + return CheckStatus.ERROR + + return CheckStatus.OK def _check_avr_gcc_version(): @@ -53,7 +83,35 @@ def _check_avr_gcc_version(): version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() cli.log.info('Found avr-gcc version %s', version_number) - return CheckStatus.OK + # Right now all known AVR versions are ok, so check that it can produce binaries + return _check_avr_gcc_installation() + + +def _check_avr_gcc_installation(): + """Returns OK if the avr-gcc is fully installed and can produce binaries. + """ + with TemporaryDirectory() as temp_dir: + temp_file = Path(temp_dir) / 'test.elf' + + args = ['avr-gcc', '-mmcu=atmega32u4', '-x', 'c', '-o', str(temp_file), '-'] + result = cli.run(args, stdin=None, stdout=None, stderr=None, input='int main() { return 0; }') + if result.returncode == 0: + cli.log.info('Successfully compiled using avr-gcc') + else: + cli.log.error(f'Failed to compile a simple program with avr-gcc, return code {result.returncode}') + cli.log.error(f'Command: {" ".join(args)}') + return CheckStatus.ERROR + + args = ['avr-size', str(temp_file)] + result = cli.run(args, stdin=None, stdout=None, stderr=None) + if result.returncode == 0: + cli.log.info('Successfully tested avr-binutils using avr-size') + else: + cli.log.error(f'Failed to execute avr-size, perhaps corrupt avr-binutils, return code {result.returncode}') + cli.log.error(f'Command: {" ".join(args)}') + return CheckStatus.ERROR + + return CheckStatus.OK def _check_avrdude_version(): From 46236ce3de8385f27e3f13a9921abee7e1e0fa57 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 15 Nov 2024 05:00:02 +1100 Subject: [PATCH 19/20] [docs] Improve halconf/mcuconf code examples (#24597) --- docs/drivers/audio.md | 88 ++++++++++++++++------------ docs/drivers/i2c.md | 21 ++++--- docs/drivers/serial.md | 114 +++++++++++++++++++++---------------- docs/drivers/spi.md | 25 +++++--- docs/drivers/uart.md | 8 ++- docs/drivers/ws2812.md | 44 +++++++++----- docs/features/backlight.md | 44 +++++++++----- docs/features/ps2_mouse.md | 14 +++-- 8 files changed, 222 insertions(+), 136 deletions(-) diff --git a/docs/drivers/audio.md b/docs/drivers/audio.md index c764c97369a..165e61f0655 100644 --- a/docs/drivers/audio.md +++ b/docs/drivers/audio.md @@ -57,27 +57,32 @@ This driver needs one Timer per enabled/used DAC channel, to trigger conversion; Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8: -```c -//halconf.h: -#define HAL_USE_DAC TRUE -#define HAL_USE_GPT TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_DAC TRUE // [!code focus] +#define HAL_USE_GPT TRUE // [!code focus] + #include_next ``` +```c [mcuconf.h] +#pragma once -```c -// mcuconf.h: #include_next -#undef STM32_DAC_USE_DAC1_CH1 -#define STM32_DAC_USE_DAC1_CH1 TRUE -#undef STM32_DAC_USE_DAC1_CH2 -#define STM32_DAC_USE_DAC1_CH2 TRUE -#undef STM32_GPT_USE_TIM6 -#define STM32_GPT_USE_TIM6 TRUE -#undef STM32_GPT_USE_TIM7 -#define STM32_GPT_USE_TIM7 TRUE -#undef STM32_GPT_USE_TIM8 -#define STM32_GPT_USE_TIM8 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 // [!code focus] +#define STM32_DAC_USE_DAC1_CH1 TRUE // [!code focus] +#undef STM32_DAC_USE_DAC1_CH2 // [!code focus] +#define STM32_DAC_USE_DAC1_CH2 TRUE // [!code focus] +#undef STM32_GPT_USE_TIM6 // [!code focus] +#define STM32_GPT_USE_TIM6 TRUE // [!code focus] +#undef STM32_GPT_USE_TIM7 // [!code focus] +#define STM32_GPT_USE_TIM7 TRUE // [!code focus] +#undef STM32_GPT_USE_TIM8 // [!code focus] +#define STM32_GPT_USE_TIM8 TRUE // [!code focus] ``` +::: ::: tip Note: DAC1 (A4) uses TIM6, DAC2 (A5) uses TIM7, and the audio state timer uses TIM8 (configurable). @@ -95,23 +100,28 @@ only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; t Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6: -```c -//halconf.h: -#define HAL_USE_DAC TRUE -#define HAL_USE_GPT TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_DAC TRUE // [!code focus] +#define HAL_USE_GPT TRUE // [!code focus] + #include_next ``` +```c [mcuconf.h] +#pragma once -```c -// mcuconf.h: #include_next -#undef STM32_DAC_USE_DAC1_CH1 -#define STM32_DAC_USE_DAC1_CH1 TRUE -#undef STM32_DAC_USE_DAC1_CH2 -#define STM32_DAC_USE_DAC1_CH2 TRUE -#undef STM32_GPT_USE_TIM6 -#define STM32_GPT_USE_TIM6 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 // [!code focus] +#define STM32_DAC_USE_DAC1_CH1 TRUE // [!code focus] +#undef STM32_DAC_USE_DAC1_CH2 // [!code focus] +#define STM32_DAC_USE_DAC1_CH2 TRUE // [!code focus] +#undef STM32_GPT_USE_TIM6 // [!code focus] +#define STM32_GPT_USE_TIM6 TRUE // [!code focus] ``` +::: ### DAC Config @@ -170,19 +180,25 @@ This driver uses the ChibiOS-PWM system to produce a square-wave on specific out The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function. A configuration example for the STM32F103C8 would be: -```c -//halconf.h: -#define HAL_USE_PWM TRUE -#define HAL_USE_PAL TRUE + +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_PWM TRUE // [!code focus] +#define HAL_USE_PAL TRUE // [!code focus] + #include_next ``` +```c [mcuconf.h] +#pragma once -```c -// mcuconf.h: #include_next -#undef STM32_PWM_USE_TIM1 -#define STM32_PWM_USE_TIM1 TRUE + +#undef STM32_PWM_USE_TIM1 // [!code focus] +#define STM32_PWM_USE_TIM1 TRUE // [!code focus] ``` +::: If we now target pin A8, looking through the data-sheet of the STM32F103C8, for the timers and alternate functions - TIM1_CH1 = PA8 <- alternate0 diff --git a/docs/drivers/i2c.md b/docs/drivers/i2c.md index 10949ed59e0..c806a090c56 100644 --- a/docs/drivers/i2c.md +++ b/docs/drivers/i2c.md @@ -54,18 +54,25 @@ The ATmega16/32U2 does not possess I2C functionality, and so cannot use this dri You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc. -To enable I2C, modify your board's `halconf.h` to enable I2C: +To enable I2C, modify your board's `halconf.h` to enable I2C, then modify your board's `mcuconf.h` to enable the peripheral you've chosen: -```c -#define HAL_USE_I2C TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_I2C TRUE // [!code focus] + +#include_next ``` +```c [mcuconf.h] +#pragma once -Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example: +#include_next -```c -#undef STM32_I2C_USE_I2C2 -#define STM32_I2C_USE_I2C2 TRUE +#undef STM32_I2C_USE_I2C2 // [!code focus] +#define STM32_I2C_USE_I2C2 TRUE // [!code focus] ``` +::: |`mcuconf.h` Setting |Description |Default| |----------------------------|----------------------------------------------------------------------------------|-------| diff --git a/docs/drivers/serial.md b/docs/drivers/serial.md index 75d11bc93bc..dda75f629a2 100644 --- a/docs/drivers/serial.md +++ b/docs/drivers/serial.md @@ -12,8 +12,6 @@ The Serial driver powers the [Split Keyboard](../features/split_keyboard) featur Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards. ::: -
- ## Bitbang This is the Default driver, absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use. @@ -53,11 +51,15 @@ SERIAL_DRIVER = bitbang #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 ``` -3. On ARM platforms you must turn on ChibiOS `PAL_USE_CALLBACKS` feature: +3. On ARM platforms you must turn on ChibiOS PAL callbacks: -* In `halconf.h` add the line `#define PAL_USE_CALLBACKS TRUE`. +```c +#pragma once -
+#define PAL_USE_CALLBACKS TRUE // [!code focus] + +#include_next +``` ## USART Half-duplex @@ -117,8 +119,6 @@ For STM32 MCUs several GPIO configuration options can be changed as well. See th 4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem). -
- ## USART Full-duplex Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage; therefore it is advised to choose this driver over all others where possible. Due to its internal design Full-duplex is slightly more efficient than the Half-duplex driver, but Full-duplex should be primarily chosen if Half-duplex operation is not supported by the controller's USART peripheral. @@ -179,38 +179,46 @@ For STM32 MCUs several GPIO configuration options, including the ability for `TX 4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem). -
- ## Choosing a driver subsystem ### The `SERIAL` driver The `SERIAL` Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it: -1. In your keyboards `halconf.h` add: +1. Enable the SERIAL subsystem in the ChibiOS HAL. -```c -#define HAL_USE_SERIAL TRUE -``` + Add the following to your keyboard's `halconf.h`, creating it if necessary: -2. In your keyboards `mcuconf.h`: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS. - -Just below `#include_next ` add: + ```c + #pragma once -```c -#include_next + #define HAL_USE_SERIAL TRUE // [!code focus] -#undef STM32_SERIAL_USE_USARTn -#define STM32_SERIAL_USE_USARTn TRUE -``` + #include_next + ``` -Where 'n' matches the peripheral number of your selected USART on the MCU. +2. Activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS. -3. In you keyboards `config.h`: override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`. + Add the following to your keyboard's `mcuconf.h`, creating it if necessary: -```c - #define SERIAL_USART_DRIVER SD3 - ``` + ```c + #pragma once + + #include_next + + #undef STM32_SERIAL_USE_USARTn // [!code focus] + #define STM32_SERIAL_USE_USARTn TRUE // [!code focus] + ``` + + Where *n* matches the peripheral number of your selected USART on the MCU. + +3. Override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`. + + Add the following to your keyboard's `config.h`: + + ```c + #define SERIAL_USART_DRIVER SD3 + ``` ### The `SIO` driver @@ -218,31 +226,41 @@ The `SIO` Subsystem was added to ChibiOS with the 21.11 release and is only supp Follow these steps in order to activate it: -1. In your keyboards `halconf.h` add: +1. Enable the SIO subsystem in the ChibiOS HAL. -```c -#define HAL_USE_SIO TRUE -``` + Add the following to your keyboard's `halconf.h`, creating it if necessary: -2. In your keyboards `mcuconf.h:` activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS. - -Just below `#include_next ` add: + ```c + #pragma once -```c -#include_next + #define HAL_USE_SIO TRUE // [!code focus] -#undef STM32_SIO_USE_USARTn -#define STM32_SIO_USE_USARTn TRUE -``` + #include_next + ``` -Where 'n' matches the peripheral number of your selected USART on the MCU. +2. Activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS. -3. In the keyboard's `config.h` file: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`. + Add the following to your keyboard's `mcuconf.h`, creating it if necessary: + + ```c + #pragma once + + #include_next + + #undef STM32_SIO_USE_USARTn // [!code focus] + #define STM32_SIO_USE_USARTn TRUE // [!code focus] + ``` + + Where *n* matches the peripheral number of your selected USART on the MCU. + +3. Override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`. + + Add the following to your keyboard's `config.h`: + + ```c + #define SERIAL_USART_DRIVER SIOD3 + ``` -```c - #define SERIAL_USART_DRIVER SIOD3 - ``` - ### The `PIO` driver The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor **is not required**. @@ -254,8 +272,6 @@ Optionally, the PIO peripheral utilized for split communication can be changed w The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on. -
- ## Advanced Configuration There are several advanced configuration options that can be defined in your keyboards `config.h` file: @@ -265,9 +281,11 @@ There are several advanced configuration options that can be defined in your key If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions. ```c -#define SELECT_SOFT_SERIAL_SPEED {#} +#define SELECT_SOFT_SERIAL_SPEED n ``` +Where *n* is one of: + | Speed | Bitbang | Half-duplex and Full-duplex | | ----- | -------------------------- | --------------------------- | | `0` | 189000 baud (experimental) | 460800 baud | @@ -287,8 +305,6 @@ This is the default time window in milliseconds in which a successful communicat #define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20 ``` -
- ## Troubleshooting If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file: diff --git a/docs/drivers/spi.md b/docs/drivers/spi.md index ddc35de8511..43d2a056d5d 100644 --- a/docs/drivers/spi.md +++ b/docs/drivers/spi.md @@ -32,20 +32,27 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc. -To enable SPI, modify your board's `halconf.h` to enable SPI: +To enable SPI, modify your board's `halconf.h` to enable SPI, then modify your board's `mcuconf.h` to enable the peripheral you've chosen: -```c -#define HAL_USE_SPI TRUE -#define SPI_USE_WAIT TRUE -#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_SPI TRUE // [!code focus] +#define SPI_USE_WAIT TRUE // [!code focus] +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD // [!code focus] + +#include_next ``` +```c [mcuconf.h] +#pragma once -Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example: +#include_next -```c -#undef STM32_SPI_USE_SPI2 -#define STM32_SPI_USE_SPI2 TRUE +#undef STM32_SPI_USE_SPI2 // [!code focus] +#define STM32_SPI_USE_SPI2 TRUE // [!code focus] ``` +::: Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. diff --git a/docs/drivers/uart.md b/docs/drivers/uart.md index 23f5b3d6e43..7cc68727eec 100644 --- a/docs/drivers/uart.md +++ b/docs/drivers/uart.md @@ -35,8 +35,12 @@ You'll need to determine which pins can be used for UART -- as an example, STM32 To enable UART, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example: ```c -#undef STM32_SERIAL_USE_USART2 -#define STM32_SERIAL_USE_USART2 TRUE +#pragma once + +#include_next + +#undef STM32_SERIAL_USE_USART2 // [!code focus] +#define STM32_SERIAL_USE_USART2 TRUE // [!code focus] ``` Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. diff --git a/docs/drivers/ws2812.md b/docs/drivers/ws2812.md index 61addf1917e..88c096794f2 100644 --- a/docs/drivers/ws2812.md +++ b/docs/drivers/ws2812.md @@ -160,15 +160,23 @@ To configure the DI pin for open drain configuration, add the following to your Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like: -`halconf.h`: -```c -#define HAL_USE_SPI TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_SPI TRUE // [!code focus] + +#include_next ``` -`mcuconf.h`: -```c -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE +```c [mcuconf.h] +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI1 // [!code focus] +#define STM32_SPI_USE_SPI1 TRUE // [!code focus] ``` +::: The following `define`s apply only to the `spi` driver: @@ -213,15 +221,23 @@ The following `#define`s apply only to the PIO driver: Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like: -`halconf.h`: -```c -#define HAL_USE_PWM TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_PWM TRUE // [!code focus] + +#include_next ``` -`mcuconf.h`: -```c -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE +```c [mcuconf.h] +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM2 // [!code focus] +#define STM32_PWM_USE_TIM2 TRUE // [!code focus] ``` +::: The following `#define`s apply only to the `pwm` driver: diff --git a/docs/features/backlight.md b/docs/features/backlight.md index 94726756fdb..20f84ac6b59 100644 --- a/docs/features/backlight.md +++ b/docs/features/backlight.md @@ -161,15 +161,23 @@ Note that the choice of timer may conflict with the [Audio](audio) feature. Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like: -`halconf.h`: -```c -#define HAL_USE_PWM TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_PWM TRUE // [!code focus] + +#include_next ``` -`mcuconf.h`: -```c -#undef STM32_PWM_USE_TIM4 -#define STM32_PWM_USE_TIM4 TRUE +```c [mcuconf.h] +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM4 // [!code focus] +#define STM32_PWM_USE_TIM4 TRUE // [!code focus] ``` +::: The following `#define`s apply only to the `pwm` driver: @@ -187,15 +195,23 @@ Refer to the ST datasheet for your particular MCU to determine these values. For Depending on the ChibiOS board configuration, you may need to enable general-purpose timers at the keyboard level. For STM32, this would look like: -`halconf.h`: -```c -#define HAL_USE_GPT TRUE +::: code-group +```c [halconf.h] +#pragma once + +#define HAL_USE_GPT TRUE // [!code focus] + +#include_next ``` -`mcuconf.h`: -```c -#undef STM32_GPT_USE_TIM15 -#define STM32_GPT_USE_TIM15 TRUE +```c [mcuconf.h] +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 // [!code focus] +#define STM32_GPT_USE_TIM15 TRUE // [!code focus] ``` +::: The following `#define`s apply only to the `timer` driver: diff --git a/docs/features/ps2_mouse.md b/docs/features/ps2_mouse.md index 90f4cca8275..52443c3ce29 100644 --- a/docs/features/ps2_mouse.md +++ b/docs/features/ps2_mouse.md @@ -90,18 +90,22 @@ PS2_ENABLE = yes PS2_DRIVER = interrupt ``` -In your keyboard config.h: +In your keyboard `config.h`: ```c #define PS2_CLOCK_PIN A8 #define PS2_DATA_PIN A9 ``` -And in the chibios specifig halconf.h: -```c -#define PAL_USE_CALLBACKS TRUE -``` +And in the ChibiOS specific `halconf.h`: +```c +#pragma once + +#define PAL_USE_CALLBACKS TRUE // [!code focus] + +#include_next +``` ### USART Version {#usart-version} From f4e58eeff4a19bf1e2c38ed860193e455fe8703f Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Fri, 15 Nov 2024 19:15:48 +0100 Subject: [PATCH 20/20] docs: move description of host_language from Macros to Language-specific Keycodes (#24584) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: フィルターペーパー <76888457+filterpaper@users.noreply.github.com> Co-authored-by: Joel Challis Co-authored-by: Ryan --- docs/feature_macros.md | 33 +-------------------------------- docs/reference_keymap_extras.md | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 34 deletions(-) diff --git a/docs/feature_macros.md b/docs/feature_macros.md index 055bb3ff8f7..b4e37a1ba96 100644 --- a/docs/feature_macros.md +++ b/docs/feature_macros.md @@ -42,38 +42,7 @@ You can define up to 32 macros in a `keymap.json` file, as used by [Configurator ### Selecting Your Host Keyboard Layout -If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your `keymap.json`, like so: - -```json -{ - "keyboard": "handwired/my_macropad", - "keymap": "my_keymap", - "host_language": "dvorak", - "macros": [ - ["Hello, World!"] - ], - "layout": "LAYOUT_all", - "layers": [ - ["QK_MACRO_0"] - ] -} -``` - -The current list of available languages is: - -| belgian | bepo | br_abnt2 | canadian_multilingual | -|:-------:|:----:|:--------:|:---------------------:| -| **colemak** | **croatian** | **czech** | **danish** | -| **dvorak_fr** | **dvorak** | **dvp** | **estonian** | -| **finnish** | **fr_ch** | **french_afnor** | **french** | -| **french_osx** | **german_ch** | **german** | **german_osx** | -| **hungarian** | **icelandic** | **italian** | **italian_osx_ansi** | -| **italian_osx_iso** | **jis** | **latvian** | **lithuanian_azerty** | -| **lithuanian_qwerty** | **norman** | **norwegian** | **portuguese** | -| **portuguese_osx_iso** | **romanian** | **serbian_latin** | **slovak** | -| **slovenian** | **spanish_dvorak** | **spanish_latin_america** | **spanish** | -| **swedish** | **turkish_f** | **turkish_q** | **uk** | -| **us_international** | **workman** | **workman_zxcvm** | +If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros — you may need to type different keys to get the same letters! To address this you can use [language-specific keycodes](reference_keymap_extras). ### Macro Basics diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md index d45183b6c6a..f6b4b8faf68 100644 --- a/docs/reference_keymap_extras.md +++ b/docs/reference_keymap_extras.md @@ -2,9 +2,31 @@ Keyboards are able to support a wide range of languages. However, this support is not actually achieved within the keyboard itself - instead, it sends numerical codes, which the operating system maps to the appropriate characters depending on the user's configured keyboard layout. By default (and per the HID spec), this is the US ANSI layout. For example, when a Swedish person presses the key with the `å` character printed on it, the keyboard is *actually* sending the keycode for `[`. -Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap. +Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These are used in place of the `KC_` prefixed ones. They won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap. The language-specific keycode aliases are defined in the files listed in the [Keycodes Header](#header-files) column below. -Simply `#include` one of the keycode headers below at the top of your `keymap.c`, and assign the keycodes defined in the header in place of the `KC_` prefixed ones. +## Selecting Your Host Keyboard Layout + +To select a host keyboard layout, simply `#include` one of the [keycode headers](#header-files) below at the top of your `keymap.c`. Example: + +```c +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" // [!code focus] +``` + +Alternatively, if using `keymap.json`, add the `host_language` key as shown in the following example. The available languages are those with a _Sendstring LUT Header_ entry in one of the [Header Files](#header-files) tables. + +```json +{ + "keyboard": "handwired/my_macropad", + "keymap": "my_keymap", + "host_language": "swedish", // [!code focus] + "layout": "LAYOUT_all", + "layers": [ + ["SE_ARNG"] + ] +} +``` ## Sendstring Support