diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml index 1d217e2d7195..ce2d0b509e7b 100644 --- a/.github/workflows/ci_builds.yml +++ b/.github/workflows/ci_builds.yml @@ -4,10 +4,9 @@ permissions: contents: read on: - push: - branches: - - master - - develop + workflow_dispatch: + schedule: + - cron: '0 0,12 * * *' jobs: ci_builds: @@ -18,7 +17,9 @@ jobs: if: github.repository == 'qmk/qmk_firmware' strategy: + fail-fast: false matrix: + branch: [master, develop] keymap: [default, via] container: qmkfm/qmk_cli @@ -30,19 +31,30 @@ jobs: - uses: actions/checkout@v3 with: submodules: recursive + ref: ${{ matrix.branch }} - name: Install dependencies run: pip3 install -r requirements.txt - name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }}) - run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }} - - - name: 'Upload binaries' + run: | + export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) + qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes || touch .failed + # Generate the step summary markdown + ./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true + # Truncate to a maximum of 1MB to deal with GitHub workflow limit + truncate --size='<960K' $GITHUB_STEP_SUMMARY || true + # Exit with failure if the compilation stage failed + [ ! -f .failed ] || exit 1 + + - name: 'Upload artifacts' uses: actions/upload-artifact@v3 + if: always() with: - name: binaries-${{ matrix.keymap }} + name: artifacts-${{ matrix.branch }}-${{ matrix.keymap }} if-no-files-found: ignore path: | *.bin *.hex *.uf2 + .build/failed.* diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 89c2bd5f6714..f011fb5460d2 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index 7a5412ccd2be..5fd61a96ce77 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -29,6 +29,11 @@ KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) +ifeq ($(strip $(DUMP_CI_METADATA)),yes) + $(info CI Metadata: KEYBOARD=$(KEYBOARD)) + $(info CI Metadata: KEYMAP=$(KEYMAP)) +endif + # Force expansion TARGET := $(TARGET) diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index ecb7ee42cbcd..0089dc702404 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -20,13 +20,13 @@ To use the ADNS 5050 sensor, add this to your `rules.mk` POINTING_DEVICE_DRIVER = adns5050 ``` -The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source. +The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source. -| Setting | Description | Default | -| ------------------- | ------------------------------------------------------------------ | -------------------------- | -| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` | -| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` | -| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` | +| Setting (`config.h`) | Description | Default | +| -------------------- | ------------------------------------------------------------------ | -------------------------- | +| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` | +| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` | +| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` | @@ -40,9 +40,9 @@ To use the ADNS 9800 sensor, add this to your `rules.mk` POINTING_DEVICE_DRIVER = adns9800 ``` -The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking. +The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking. -| Setting | Description | Default | +| Setting (`config.h`) | Description | Default | | ----------------------- | ---------------------------------------------------------------------- | ------------------------ | | `ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` | | `ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | @@ -63,7 +63,7 @@ POINTING_DEVICE_DRIVER = analog_joystick The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this. -| Setting | Description | Default | +| Setting (`config.h`) | Description | Default | | --------------------------------- | -------------------------------------------------------------------------- | ------------- | | `ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ | | `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ | @@ -153,7 +153,7 @@ Additionally, `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` is supported in thi #### Relative mode gestures -| Gesture Setting | Description | Default | +| Gesture Setting (`config.h`) | Description | Default | | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | | `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to "left click". Works on both sides of a split keyboard. | _not defined_ | | `CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE` | (Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". `CIRQUE_PINNACLE_TAP_ENABLE` must be enabled. | _not defined_ | @@ -172,10 +172,10 @@ POINTING_DEVICE_DRIVER = paw3204 The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source. -| Setting | Description | Default | -| ------------------ |--------------------------------------------------------------- | -------------------------- | -| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` | -| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` | +| Setting (`config.h`) | Description | Default | +| -------------------- |--------------------------------------------------------------- | -------------------------- | +| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` | +| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` | The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI. @@ -189,7 +189,7 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball. -| Setting | Description | Default | +| Setting (`config.h`) | Description | Default | | ------------------------------------ | ---------------------------------------------------------------------------------- | ------- | | `PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` | | `PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` | @@ -220,7 +220,7 @@ The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI. Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking. If you have different CS wiring on each half you can use `PMW33XX_CS_PIN_RIGHT` or `PMW33XX_CS_PINS_RIGHT` in combination with `PMW33XX_CS_PIN` or `PMW33XX_CS_PINS` to configure both sides independently. If `_RIGHT` values aren't provided, they default to be the same as the left ones. -| Setting | Description | Default | +| Setting (`config.h`) | Description | Default | | ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------ | | `PMW33XX_CS_PIN` | (Required) Sets the Chip Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` | | `PMW33XX_CS_PINS` | (Alternative) Sets the Chip Select pins connected to multiple sensors. | `{PMW33XX_CS_PIN}` | diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 91bfa083102a..b0d28d89d163 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -172,6 +172,8 @@ For example, to build a firmware for a Clueboard 66% you would use: qmk compile -kb clueboard/66/rev3 -km default +?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev3`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`. + When it is done you should have a lot of output that ends similar to this: ``` diff --git a/docs/other_vscode.md b/docs/other_vscode.md index b3fb9948aa46..a10002570bd4 100644 --- a/docs/other_vscode.md +++ b/docs/other_vscode.md @@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly. -### Configuring VS Code - -First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already. - -Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS. - -Once you have saved this file, you will need to reload VS Code, if it was already running. - -?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well. - +#### MSYS2 Setup Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window. @@ -110,8 +101,50 @@ This installs a bunch of Git related tools that may make using Git with QMK Firm Restart once you've installed any extensions # Configure VS Code for QMK + 1. Click File > Open Folder 2. Open the QMK Firmware folder that you cloned from GitHub. 3. Click File > Save Workspace As... +## Configuring VS Code + +Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get VS code C/C++ extension to use the exact same includes and defines used for your keyboard and keymap. + +1. Run `qmk generate-compilation-database -kb -km ` to generate the `compile_commands.json`. +1. Create `.vscode/c_cpp_properties.json` with the following content: +``` +{ + "configurations": [ + { + "name": "qmk", + "compilerArgs": ["-mmcu=atmega32u4"], + "compilerPath": "/usr/bin/avr-gcc", + "cStandard": "gnu11", + "cppStandard": "gnu++14", + "compileCommands": "${workspaceFolder}/compile_commands.json", + "intelliSenseMode": "linux-gcc-arm", + "browse": { + "path": [ + "${workspaceFolder}" + ], + "limitSymbolsToIncludedHeaders": true, + "databaseFilename": "" + } + } + ], + "version": 4 +} +``` + +Change values in `.vscode/c_cpp_properties.json` for your environment: + +1. Copy the `-mmcu` argument from `compile_commands.json` into your `compilerArgs`. This is to work around a [bug in vscode c/c++ extension](https://github.com/microsoft/vscode-cpptools/issues/6478). +1. Use the `compilerPath` from `compile_commands.json`. +1. Modify `cStandard`, `cppStandard` and `intelliSenseMode` values to the correct values for your platform. See [this section](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference#_configuration-properties) for reference. For WSL, it should still be gcc-x64. + And now you're ready to code QMK Firmware in VS Code + + +## Troubleshooting VSCode C/C++ extension + +If the defines are not matching what you expect, open the source code and run action `C/C++: Log Diagnostics`. This will list the exact list of defines and include paths defined in `compile_commands.json`, and if it's not part of your compilation database, it will tell you so. \ No newline at end of file diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index bacb9480dae3..6dc6c0000d9a 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -53,6 +53,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - keyboard moves within the repository *must* go through the `develop` branch instead of `master`, so as to ensure compatibility for users - `data/mappings/keyboard_aliases.hjson` must be updated to reflect the move, so users with pre-created configurator keymap.json files continue to detect the correct keyboard +- keyboard updates and refactors (eg. to data driven) *must* go through `develop` to reduce `master` -> `develop` merge conflicts - PR submissions from a `kbfirmware` export (or equivalent) will not be accepted unless converted to new QMK standards -- try `qmk import-kbfirmware` first - `info.json` - With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema). diff --git a/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c b/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c deleted file mode 100644 index 802a61b907f7..000000000000 --- a/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[0] = LAYOUT_all( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LGUI, 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, - SC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, SC_RSPC, MO(2), - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL), - -[1] = LAYOUT_all( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, - SC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, SC_RSPC, MO(2), - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL), - -[2] = LAYOUT_all( - KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, _______, - _______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, KC_PENT, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, - DF(1), DF(0), _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, QK_BOOT ) -}; - - diff --git a/keyboards/4pplet/steezy60/keymaps/canon/keymap.c b/keyboards/4pplet/steezy60/keymaps/canon/keymap.c new file mode 100644 index 000000000000..92cfe047e9aa --- /dev/null +++ b/keyboards/4pplet/steezy60/keymaps/canon/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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] = { +/* +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ +* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ | Ent│ +* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───| er │ +* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ │ +* ├────┬───|───┴┬──┴┬──┴───┴───┴───┴───┴┬──┴┬──┴┬──┴─┬───|────┤ +* │Ctrl│GUI│None│Alt│ Space │Alt│GUI│None│App│Ctrl│ +* └────┴───┴────┴───┴───────────────────┴───┴───┴────┴───┴────┘ +*/ +[0] = LAYOUT_canon( + 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_NO, KC_APP, KC_RCTL) +}; diff --git a/keyboards/4pplet/steezy60/keymaps/default/keymap.c b/keyboards/4pplet/steezy60/keymaps/default/keymap.c index 530728c2251c..b4a30ba749a2 100644 --- a/keyboards/4pplet/steezy60/keymaps/default/keymap.c +++ b/keyboards/4pplet/steezy60/keymaps/default/keymap.c @@ -1,18 +1,34 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, + KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)), [1] = LAYOUT_all( - QK_BOOT, 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_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ ) -}; \ No newline at end of file + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), +}; diff --git a/keyboards/4pplet/steezy60/keymaps/via/keymap.c b/keyboards/4pplet/steezy60/keymaps/via/keymap.c index 6a0e7605829f..d6a1151fcfda 100644 --- a/keyboards/4pplet/steezy60/keymaps/via/keymap.c +++ b/keyboards/4pplet/steezy60/keymaps/via/keymap.c @@ -1,32 +1,48 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, + KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)), [1] = LAYOUT_all( - QK_BOOT, 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_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ ), + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [3] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) -}; \ No newline at end of file +}; diff --git a/keyboards/4pplet/steezy60/readme.md b/keyboards/4pplet/steezy60/readme.md index 34245b84ef6b..82608d340787 100644 --- a/keyboards/4pplet/steezy60/readme.md +++ b/keyboards/4pplet/steezy60/readme.md @@ -5,10 +5,25 @@ A 60% PCB with a ton of layout options for SMK and Alps switches More info: https://geekhack.org/index.php?topic=103531.0 * Keyboard Maintainer: [4pplet](https://github.com/4pplet) -* Hardware Supported: Steezy60 Rev A +* Hardware Supported: Steezy60 Rev A and B +* Hardware Availability: https://4pplet.com/products/steezy60 Make example for this keyboard (after setting up your build environment): make 4pplet/steezy60/rev_a:default + make 4pplet/steezy60/rev_b:default -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file +Flashing example for this keyboard: + + make 4pplet/steezy60/rev_a:default:flash + make 4pplet/steezy60/rev_b: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 Escape and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB or short the reset header +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/4pplet/steezy60/rev_a/info.json b/keyboards/4pplet/steezy60/rev_a/info.json index b6e9c37ba25d..2125a491ca07 100644 --- a/keyboards/4pplet/steezy60/rev_a/info.json +++ b/keyboards/4pplet/steezy60/rev_a/info.json @@ -1,96 +1,724 @@ { "keyboard_name": "Steezy60 Rev A", "manufacturer": "4pplet", - "url": "", + "url": "https://github.com/4pplet/steezy60", "maintainer": "4pplet", "usb": { "vid": "0x4444", "pid": "0x0002", "device_version": "0.0.1" }, - "qmk_lufa_bootloader": { - "esc_input": "C2", - "esc_output": "C4" - }, "processor": "atmega32u2", "bootloader": "atmel-dfu", + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_tsangan_hhkb" + ], + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["C4","C6","B7","B6","B5","B4","B3","B2","B1","D6","D5","D4","D2","D1"], + "rows": ["C2","D0","B0","C7","C5"] + }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 12, + "pin": "D3", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, "layouts": { "LAYOUT_all": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.5, "y":1, "w":1.5}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - {"x":13.75, "y":2, "w":1.25}, - - {"x":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":3}, - {"x":4, "y":3}, - {"x":5, "y":3}, - {"x":6, "y":3}, - {"x":7, "y":3}, - {"x":8, "y":3}, - {"x":9, "y":3}, - {"x":10, "y":3}, - {"x":11, "y":3}, - {"x":12, "y":3}, - {"x":13, "y":3}, - {"x":14, "y":3}, - - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - {"x":3, "y":4}, - {"x":4, "y":4, "w":2.25}, - {"x":6.25, "y":4, "w":1.5}, - {"x":7.75, "y":4, "w":2.25}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "Up", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "None", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 }, + { "label": "LSpace", "matrix": [4, 4], "w": 2.5, "x": 4, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 1.25, "x": 6.5, "y": 4 }, + { "label": "RSpace", "matrix": [4, 6], "w": 2.25, "x": 7.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 }, + { "label": "None", "matrix": [4, 9], "x": 12, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "x": 13, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_canon": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "nuhs", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [4, 12], "w": 1.25, "h": 2, "x": 13.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.5, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "Win", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 }, + { "label": "Menu", "matrix": [4, 9], "x": 12, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 10], "x": 13, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 } ] } } diff --git a/keyboards/4pplet/steezy60/rev_a/rev_a.c b/keyboards/4pplet/steezy60/rev_a/rev_a.c deleted file mode 100644 index d3db08ad193b..000000000000 --- a/keyboards/4pplet/steezy60/rev_a/rev_a.c +++ /dev/null @@ -1 +0,0 @@ -#include "rev_a.h" diff --git a/keyboards/4pplet/steezy60/rev_a/rev_a.h b/keyboards/4pplet/steezy60/rev_a/rev_a.h deleted file mode 100644 index b8c3fa6b05a3..000000000000 --- a/keyboards/4pplet/steezy60/rev_a/rev_a.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "quantum.h" - -#define LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,k4c, \ - k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d} \ -} diff --git a/keyboards/4pplet/steezy60/rev_a/rules.mk b/keyboards/4pplet/steezy60/rev_a/rules.mk index 6fe874e748be..96c9ff2cbbe5 100644 --- a/keyboards/4pplet/steezy60/rev_a/rules.mk +++ b/keyboards/4pplet/steezy60/rev_a/rules.mk @@ -1,12 +1,4 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +KEY_LOCK_ENABLE = yes diff --git a/keyboards/4pplet/steezy60/rev_b/config.h b/keyboards/4pplet/steezy60/rev_b/config.h new file mode 100644 index 000000000000..eb7d87e083a0 --- /dev/null +++ b/keyboards/4pplet/steezy60/rev_b/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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 WS2812_EXTERNAL_PULLUP diff --git a/keyboards/4pplet/steezy60/rev_b/info.json b/keyboards/4pplet/steezy60/rev_b/info.json new file mode 100644 index 000000000000..6ffe02e506e3 --- /dev/null +++ b/keyboards/4pplet/steezy60/rev_b/info.json @@ -0,0 +1,725 @@ +{ + "keyboard_name": "Steezy60 Rev B", + "manufacturer": "4pplet", + "url": "https://github.com/4pplet/steezy60", + "maintainer": "4pplet", + "usb": { + "vid": "0x4444", + "pid": "0x0013", + "device_version": "0.0.2" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_tsangan_hhkb" + ], + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A7","A5","A4","A3","A1","F1","F0","C15","C14","B9","B6","B5","B4","B3"], + "rows": ["B8","A15","C13","A2","A6"] + }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 12, + "pin": "A8", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "Up", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "None", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 }, + { "label": "LSpace", "matrix": [4, 4], "w": 2.5, "x": 4, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 1.25, "x": 6.5, "y": 4 }, + { "label": "RSpace", "matrix": [4, 6], "w": 2.25, "x": 7.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 }, + { "label": "None", "matrix": [4, 9], "x": 12, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "x": 13, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_canon": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "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": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "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": "nuhs", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [4, 12], "w": 1.25, "h": 2, "x": 13.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.5, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "Win", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 }, + { "label": "Menu", "matrix": [4, 9], "x": 12, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 10], "x": 13, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 } + ] + } + } +} diff --git a/keyboards/4pplet/steezy60/rev_b/rules.mk b/keyboards/4pplet/steezy60/rev_b/rules.mk new file mode 100644 index 000000000000..68bddfc74854 --- /dev/null +++ b/keyboards/4pplet/steezy60/rev_b/rules.mk @@ -0,0 +1,10 @@ +# Build Options +# change yes to no to disable +# +KEY_LOCK_ENABLE = yes + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/4pplet/unextended_std/keymaps/default/keymap.c b/keyboards/4pplet/unextended_std/keymaps/default/keymap.c new file mode 100644 index 000000000000..bac0f0ef58ff --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, 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_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/4pplet/unextended_std/keymaps/m0116/keymap.c b/keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c new file mode 100644 index 000000000000..593e0de2b200 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +/* +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ +* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Delete│ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴ │ +* │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ +* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┤ +* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ +* ├────┬───│───┴┬──┴┬──┴───┴───┴───┴─┬─┴─┬─┴──┬┴───┴┬────┬───┤ +* │Caps│Alt│Gui │ ` │ Space │ \ │Left│Right│Down│ Up│ +* └────┴───┴────┴───┴────────────────┴───┴────┴─────┴────┴───┘ +*/ +[0] = LAYOUT_m0116( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_CAPS, KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c b/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c new file mode 100644 index 000000000000..1343ca2dc294 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +/* +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ +* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backsp│ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent│ +* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ +* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───│───┤ +* │Shft│ ` │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ Up│ +* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬┴────┬────┤ +* │Ctrl│Alt │GUI │ Space │GUI │Left│Right│Down│ +* └────┴────┴────┴──────────────────────┴────┴────┴─────┴────┘ +*/ +[0] = LAYOUT_m0118( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_LEFT, KC_RIGHT,KC_DOWN) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/via/keymap.c b/keyboards/4pplet/unextended_std/keymaps/via/keymap.c new file mode 100644 index 000000000000..a99489b426e1 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, 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_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +// extra layer for VIA +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +// extra layer for VIA +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/studiokestra/galatea/keymaps/via/rules.mk b/keyboards/4pplet/unextended_std/keymaps/via/rules.mk similarity index 100% rename from keyboards/studiokestra/galatea/keymaps/via/rules.mk rename to keyboards/4pplet/unextended_std/keymaps/via/rules.mk diff --git a/keyboards/4pplet/unextended_std/readme.md b/keyboards/4pplet/unextended_std/readme.md new file mode 100644 index 000000000000..2d276511edea --- /dev/null +++ b/keyboards/4pplet/unextended_std/readme.md @@ -0,0 +1,23 @@ +# Unextended Standard PCB + +PCB for the Unextended Standard Project. The PCB enables use of M0116, M0118, IIc and NeXT keycaps and is designed to fit in the open sourced Unextended case. + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: [Unextended Standard PCB](https://github.com/4pplet/Unextended-Standard-PCB) + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/unextended_std/rev_a:default + +Flashing example for this keyboard: + + make 4pplet/unextended_std/rev_a: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 Escape-key and plug in the keyboard +* **Physical reset header**: Briefly short the header labled "BL/reset" on the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/4pplet/unextended_std/rev_a/config.h b/keyboards/4pplet/unextended_std/rev_a/config.h new file mode 100644 index 000000000000..eb7d87e083a0 --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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 WS2812_EXTERNAL_PULLUP diff --git a/keyboards/4pplet/unextended_std/rev_a/info.json b/keyboards/4pplet/unextended_std/rev_a/info.json new file mode 100644 index 000000000000..458439e7b74f --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/info.json @@ -0,0 +1,262 @@ +{ + "keyboard_name": "Unextended Standard Rev A", + "manufacturer": "4pplet", + "url": "https://github.com/4pplet/Unextended", + "maintainer": "4pplet", + "usb": { + "vid": "0x4444", + "pid": "0x0012", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + + "matrix_pins": { + "rows": + ["B14","B15","B6","B5","B4"], + "cols": + ["B2","A4","A1","A2","F1","F0","C15","C14","C13","B9","B8","B7","B12","B3"] + }, + + "diode_direction": "COL2ROW", + + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "backlight": false, + "rgblight": true, + "audio": false + }, + + "rgblight": { + "pin": "A8", + "led_count": 16, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + + "indicators": { + "caps_lock": "A10", + "on_state": 0 + }, + + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"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": [1, 13], "x":13.5, "y":1}, + {"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75}, + {"label":"A", "matrix": [2, 1], "x":1.75, "y":2}, + {"label":"S", "matrix": [2, 2], "x":2.75, "y":2}, + {"label":"D", "matrix": [2, 3], "x":3.75, "y":2}, + {"label":"F", "matrix": [2, 4], "x":4.75, "y":2}, + {"label":"G", "matrix": [2, 5], "x":5.75, "y":2}, + {"label":"H", "matrix": [2, 6], "x":6.75, "y":2}, + {"label":"J", "matrix": [2, 7], "x":7.75, "y":2}, + {"label":"K", "matrix": [2, 8], "x":8.75, "y":2}, + {"label":"L", "matrix": [2, 9], "x":9.75, "y":2}, + {"label":":", "matrix": [2, 10], "x":10.75, "y":2}, + {"label":"\"", "matrix": [2, 11], "x":11.75, "y":2}, + {"label":"nubs", "matrix": [3, 13], "x":12.75, "y":2}, + {"label":"Enter", "matrix": [2, 13], "x":13.75, "y":2, "w":0.75}, + {"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25}, + {"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3}, + {"label":"Z", "matrix": [3, 2], "x":2.25, "y":3}, + {"label":"X", "matrix": [3, 3], "x":3.25, "y":3}, + {"label":"C", "matrix": [3, 4], "x":4.25, "y":3}, + {"label":"V", "matrix": [3, 5], "x":5.25, "y":3}, + {"label":"B", "matrix": [3, 6], "x":6.25, "y":3}, + {"label":"N", "matrix": [3, 7], "x":7.25, "y":3}, + {"label":"M", "matrix": [3, 8], "x":8.25, "y":3}, + {"label":"<", "matrix": [3, 9], "x":9.25, "y":3}, + {"label":">", "matrix": [3, 10], "x":10.25, "y":3}, + {"label":"?", "matrix": [3, 11], "x":11.25, "y":3}, + {"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25}, + {"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3}, + {"label":"Caps", "matrix": [4, 0], "x":0, "y":4}, + {"label":"opt", "matrix": [4, 1], "x":1, "y":4}, + {"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75}, + {"label":"`", "matrix": [4, 3], "x":3.75, "y":4}, + {"label":"Space", "matrix": [4, 6], "x":4.75, "y":4, "w":4.75}, + {"label":"\\", "matrix": [4, 8], "x":9.5, "y":4}, + {"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4}, + {"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4} + ] + }, + "LAYOUT_m0116": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"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":"Enter", "matrix": [2, 13], "x":13.5, "y":1, "h":2}, + {"label":"Control", "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":"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":2.25}, + {"label":"Caps", "matrix": [4, 0], "x":0, "y":4}, + {"label":"opt", "matrix": [4, 1], "x":1, "y":4}, + {"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75}, + {"label":"`", "matrix": [4, 3], "x":3.75, "y":4}, + {"label":"Space", "matrix": [4, 6],"x":4.75, "y":4, "w":4.75}, + {"label":"\\", "matrix": [4, 8], "x":9.5, "y":4}, + {"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4}, + {"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4} + ] + }, + "LAYOUT_m0118": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"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":"Enter", "matrix": [2, 13], "x":13.75, "y":1, "w":0.75, "h":2}, + {"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75}, + {"label":"A", "matrix": [2, 1], "x":1.75, "y":2}, + {"label":"S", "matrix": [2, 2], "x":2.75, "y":2}, + {"label":"D", "matrix": [2, 3], "x":3.75, "y":2}, + {"label":"F", "matrix": [2, 4], "x":4.75, "y":2}, + {"label":"G", "matrix": [2, 5], "x":5.75, "y":2}, + {"label":"H", "matrix": [2, 6], "x":6.75, "y":2}, + {"label":"J", "matrix": [2, 7], "x":7.75, "y":2}, + {"label":"K", "matrix": [2, 8], "x":8.75, "y":2}, + {"label":"L", "matrix": [2, 9], "x":9.75, "y":2}, + {"label":":", "matrix": [2, 10], "x":10.75, "y":2}, + {"label":"\"", "matrix": [2, 11], "x":11.75, "y":2}, + {"label":"nuhs", "matrix": [3, 13], "x":12.75, "y":2}, + {"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25}, + {"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3}, + {"label":"Z", "matrix": [3, 2], "x":2.25, "y":3}, + {"label":"X", "matrix": [3, 3], "x":3.25, "y":3}, + {"label":"C", "matrix": [3, 4], "x":4.25, "y":3}, + {"label":"V", "matrix": [3, 5], "x":5.25, "y":3}, + {"label":"B", "matrix": [3, 6], "x":6.25, "y":3}, + {"label":"N", "matrix": [3, 7], "x":7.25, "y":3}, + {"label":"M", "matrix": [3, 8], "x":8.25, "y":3}, + {"label":"<", "matrix": [3, 9], "x":9.25, "y":3}, + {"label":">", "matrix": [3, 10], "x":10.25, "y":3}, + {"label":"?", "matrix": [3, 11], "x":11.25, "y":3}, + {"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25}, + {"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3}, + {"label":"Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.25}, + {"label":"Opt", "matrix": [4, 2], "x":1.25, "y":4, "w":1.5}, + {"label":"Cmd", "matrix": [4, 3], "x":2.75, "y":4, "w":1.75}, + {"label":"Space", "matrix": [4, 6], "x":4.5, "y":4, "w":5.25}, + {"label":"Cmd", "matrix": [4, 9], "x":9.75, "y":4, "w":1.75}, + {"label":"\u2190", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2192", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2193", "matrix": [4, 12], "x":13.5, "y":4} + ] + } + } +} diff --git a/keyboards/4pplet/unextended_std/rev_a/rules.mk b/keyboards/4pplet/unextended_std/rev_a/rules.mk new file mode 100644 index 000000000000..68bddfc74854 --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/rules.mk @@ -0,0 +1,10 @@ +# Build Options +# change yes to no to disable +# +KEY_LOCK_ENABLE = yes + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/alhenkb/macropad5x4/info.json b/keyboards/alhenkb/macropad5x4/info.json new file mode 100644 index 000000000000..68f6cb030101 --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/info.json @@ -0,0 +1,73 @@ +{ + "manufacturer": "AlhenKB", + "keyboard_name": "Macropad 5x4", + "maintainer": "alhenx", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "rows": ["F5", "F7", "B3", "B6", "B5"], + "cols": ["F4", "F6", "B1", "B2"] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x6178" + }, + "community_layouts": ["ortho_5x4", "numpad_5x4"], + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + {"label": "K00 (F5,F4)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01 (F5,F6)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02 (F5,B1)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03 (F5,B2)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K10 (F7,F4)", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "K11 (F7,F6)", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "K12 (F7,B1)", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "K13 (F7,B2)", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "K20 (B3,F4)", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "K21 (B3,F6)", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "K22 (B3,B1)", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "K23 (B3,B2)", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "K30 (B6,F4)", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "K31 (B6,F6)", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "K32 (B6,B1)", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "K33 (B6,B2)", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "K40 (B5,F4)", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "K41 (B5,F6)", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "K43 (B5,B2)", "matrix": [4, 3], "x": 3, "y": 4} + ] + }, + "LAYOUT_numpad_5x4": { + "layout": [ + {"label": "K00 (F5,F4)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01 (F5,F6)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02 (F5,B1)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03 (F5,B2)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K10 (F7,F4)", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "K11 (F7,F6)", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "K12 (F7,B1)", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "K20 (B3,F4)", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "K21 (B3,F6)", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "K22 (B3,B1)", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "K23 (B3,B2)", "matrix": [2, 3], "x": 3, "y": 1, "h": 2}, + {"label": "K30 (B6,F4)", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "K31 (B6,F6)", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "K32 (B6,B1)", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "K40 (B5,F4)", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4} + {"label": "K43 (B5,B2)", "matrix": [4, 3], "x": 3, "y": 3, "h": 2}, + ] + } + } +} diff --git a/keyboards/alhenkb/macropad5x4/keymaps/default/keymap.c b/keyboards/alhenkb/macropad5x4/keymaps/default/keymap.c new file mode 100644 index 000000000000..12a878346e4d --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┐ + * │ 1 │ 2 │ 3 │ 4 │ + * ├───┼───┼───┼───┤ + * │ 5 │ 6 │ 7 │ 8 │ + * ├───┼───┼───┼───┤ + * │ Q │ W │ E │ R │ + * ├───┼───┼───┼───┤ + * │ A │ S │ D │ F │ + * ├───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ + * └───────┴───┴───┘ + */ + [0] = LAYOUT_ortho_5x4( + KC_P1, KC_P2, KC_P3, KC_P4, + KC_P5, KC_P6, KC_P7, KC_P8, + KC_Q, KC_W, KC_E, KC_R, + KC_A, KC_S, KC_D, KC_F, + KC_Z, KC_X, KC_C, KC_V + ), +}; diff --git a/keyboards/alhenkb/macropad5x4/keymaps/numpad/keymap.c b/keyboards/alhenkb/macropad5x4/keymaps/numpad/keymap.c new file mode 100644 index 000000000000..7a1e287e38fb --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/keymaps/numpad/keymap.c @@ -0,0 +1,48 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┐ + * │TG1│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┤ + │ + * │ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ │ + * ├───┴───┼───┤Ent│ + * │ 0 │ . │ │ + * └───────┴───┴───┘ + */ + [0] = LAYOUT_numpad_5x4( + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ), + + /* + * ┌───┬───┬───┬───┐ + * │TG1│ / │ * │ - │ + * ┌───┬───┬───┐───┤ + * │Hom│ ↑ │PgU│ │ + * ├───┼───┼───┤ + │ + * │ ← │ │ → │ │ + * ├───┼───┼───┤───┤ + * │End│ ↓ │PgD│ │ + * ├───┴───┼───┤Ent│ + * │Insert │Del│ │ + * └───────┴───┘───┘ + */ + [1] = LAYOUT_numpad_5x4( + _______, _______, _______, _______, + KC_HOME, KC_UP, KC_PGUP, + KC_LEFT, XXXXXXX, KC_RGHT, _______, + KC_END, KC_DOWN, KC_PGDN, + KC_INS, KC_DEL, _______ + ) +}; diff --git a/keyboards/alhenkb/macropad5x4/keymaps/via/keymap.c b/keyboards/alhenkb/macropad5x4/keymaps/via/keymap.c new file mode 100644 index 000000000000..12a878346e4d --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┐ + * │ 1 │ 2 │ 3 │ 4 │ + * ├───┼───┼───┼───┤ + * │ 5 │ 6 │ 7 │ 8 │ + * ├───┼───┼───┼───┤ + * │ Q │ W │ E │ R │ + * ├───┼───┼───┼───┤ + * │ A │ S │ D │ F │ + * ├───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ + * └───────┴───┴───┘ + */ + [0] = LAYOUT_ortho_5x4( + KC_P1, KC_P2, KC_P3, KC_P4, + KC_P5, KC_P6, KC_P7, KC_P8, + KC_Q, KC_W, KC_E, KC_R, + KC_A, KC_S, KC_D, KC_F, + KC_Z, KC_X, KC_C, KC_V + ), +}; diff --git a/keyboards/alhenkb/macropad5x4/keymaps/via/rules.mk b/keyboards/alhenkb/macropad5x4/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/alhenkb/macropad5x4/readme.md b/keyboards/alhenkb/macropad5x4/readme.md new file mode 100644 index 000000000000..f708550f8ad1 --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/readme.md @@ -0,0 +1,41 @@ +# AlhenKB - Macropad 5x4 and Numpad + +![Imgur Image](https://imgur.com/t7Zi2w3h.jpg) +![Imgur Image](https://i.imgur.com/5xlKJlBh.jpg) + + +A macropad 5x4 for MerryPCB. + +* Keyboard Maintainer: [Alhen](https://github.com/alhenx) +* Hardware Supported: MerryPCB + +Make example for this keyboard (after setting up your build environment): + +Macropad: + + make alhenkb/macropad5x4:default + +Numpad: + + make alhenkb/macropad5x4:numpad + +Flashing example for this keyboard: + +Macropad: + + make alhenkb/macropad5x4:default:flash + + +Numpad: + + make alhenkb/macropad5x4:numpad:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/alhenkb/macropad5x4/rules.mk b/keyboards/alhenkb/macropad5x4/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/alhenkb/macropad5x4/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.h b/keyboards/bastardkb/charybdis/3x5/3x5.h index 4ea3ef94bb19..3041397e15d4 100644 --- a/keyboards/bastardkb/charybdis/3x5/3x5.h +++ b/keyboards/bastardkb/charybdis/3x5/3x5.h @@ -37,31 +37,4 @@ { k60, k61, k62, k63, k64 }, \ { k70, KC_NO, k72, KC_NO, KC_NO }, \ } - -/** - * \brief Compatibility layout with the split_3x5_3 community layout. - * - * This effectively renders the Charbdis Nano compatible with existing layout - * implementations relying on the `split_3x5_3` layout, which includes, among - * others, Manna-Harbour's (@manna_harbour) Miryoku layout. - * - * The last key on the layout is ignored, to transform the input 36-keys layout - * into the Charybdis Nano's 35-keys layout. - */ -#define LAYOUT_split_3x5_3( \ - k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \ - k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \ - k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \ - k32, k33, k30, k70, k72, ___ \ -) \ -{ \ - { k00, k01, k02, k03, k04 }, \ - { k10, k11, k12, k13, k14 }, \ - { k20, k21, k22, k23, k24 }, \ - { k30, KC_NO, k32, k33, KC_NO }, \ - { k40, k41, k42, k43, k44 }, \ - { k50, k51, k52, k53, k54 }, \ - { k60, k61, k62, k63, k64 }, \ - { k70, KC_NO, k72, KC_NO, KC_NO }, \ -} // clang-format on diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json index a09ef236bae9..32437edeb0af 100644 --- a/keyboards/bastardkb/charybdis/3x5/info.json +++ b/keyboards/bastardkb/charybdis/3x5/info.json @@ -5,7 +5,6 @@ "pid": "0x1832", "vid": "0xA8F8" }, - "community_layouts": ["split_3x5_3"], "layout_aliases": { "LAYOUT_charybdis_3x5": "LAYOUT" }, @@ -48,46 +47,6 @@ { "label": "R30", "x": 9, "y": 3 }, { "label": "R31", "x": 10, "y": 3 } ] - }, - "LAYOUT_split_3x5_3": { - "layout": [ - { "label": "L00", "x": 0, "y": 0 }, - { "label": "L01", "x": 1, "y": 0 }, - { "label": "L02", "x": 2, "y": 0 }, - { "label": "L03", "x": 3, "y": 0 }, - { "label": "L04", "x": 4, "y": 0 }, - { "label": "R00", "x": 11, "y": 0 }, - { "label": "R01", "x": 12, "y": 0 }, - { "label": "R02", "x": 13, "y": 0 }, - { "label": "R03", "x": 14, "y": 0 }, - { "label": "R04", "x": 15, "y": 0 }, - { "label": "L10", "x": 0, "y": 1 }, - { "label": "L11", "x": 1, "y": 1 }, - { "label": "L12", "x": 2, "y": 1 }, - { "label": "L13", "x": 3, "y": 1 }, - { "label": "L14", "x": 4, "y": 1 }, - { "label": "R10", "x": 11, "y": 1 }, - { "label": "R11", "x": 12, "y": 1 }, - { "label": "R12", "x": 13, "y": 1 }, - { "label": "R13", "x": 14, "y": 1 }, - { "label": "R14", "x": 15, "y": 1 }, - { "label": "L20", "x": 0, "y": 2 }, - { "label": "L21", "x": 1, "y": 2 }, - { "label": "L22", "x": 2, "y": 2 }, - { "label": "L23", "x": 3, "y": 2 }, - { "label": "L24", "x": 4, "y": 2 }, - { "label": "R20", "x": 11, "y": 2 }, - { "label": "R21", "x": 12, "y": 2 }, - { "label": "R22", "x": 13, "y": 2 }, - { "label": "R23", "x": 14, "y": 2 }, - { "label": "R24", "x": 15, "y": 2 }, - { "label": "L30", "x": 4, "y": 3 }, - { "label": "L31", "x": 5, "y": 3 }, - { "label": "L32", "x": 6, "y": 3 }, - { "label": "R30", "x": 9, "y": 3 }, - { "label": "R31", "x": 10, "y": 3 }, - { "label": "R32", "x": 11, "y": 3 } - ] } } } diff --git a/keyboards/bastardkb/charybdis/3x6/3x6.h b/keyboards/bastardkb/charybdis/3x6/3x6.h index 71c22a561bd5..a93d183ae1b4 100644 --- a/keyboards/bastardkb/charybdis/3x6/3x6.h +++ b/keyboards/bastardkb/charybdis/3x6/3x6.h @@ -36,27 +36,4 @@ { k60, k61, k62, k63, k64, k65 }, \ { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \ } - -/** - * \brief Compatibility layout with the split_3x5_6 community layout. - * - * This effectively renders the Charbdis Nano compatible with existing layout - * implementations relying on the `split_3x6_3` layout. - */ -#define LAYOUT_split_3x6_3( \ - k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ - k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ - k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ - k33, k34, k31, k71, k73, ___ \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \ - { k40, k41, k42, k43, k44, k45 }, \ - { k50, k51, k52, k53, k54, k55 }, \ - { k60, k61, k62, k63, k64, k65 }, \ - { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \ -} // clang-format on diff --git a/keyboards/bastardkb/charybdis/3x6/info.json b/keyboards/bastardkb/charybdis/3x6/info.json index 1a4d15711f0f..41940b0b8bff 100644 --- a/keyboards/bastardkb/charybdis/3x6/info.json +++ b/keyboards/bastardkb/charybdis/3x6/info.json @@ -3,7 +3,6 @@ "usb": { "pid": "0x1834" }, - "community_layouts": ["split_3x6_3"], "layout_aliases": { "LAYOUT_charybdis_3x6": "LAYOUT" }, @@ -52,52 +51,6 @@ { "label": "R31", "x": 9, "y": 3 }, { "label": "R33", "x": 10, "y": 3 } ] - }, - "LAYOUT_split_3x6_3": { - "layout": [ - { "label": "L00", "x": 0, "y": 0 }, - { "label": "L01", "x": 1, "y": 0 }, - { "label": "L02", "x": 2, "y": 0 }, - { "label": "L03", "x": 3, "y": 0 }, - { "label": "L04", "x": 4, "y": 0 }, - { "label": "L05", "x": 5, "y": 0 }, - { "label": "R00", "x": 11, "y": 0 }, - { "label": "R01", "x": 12, "y": 0 }, - { "label": "R02", "x": 13, "y": 0 }, - { "label": "R03", "x": 14, "y": 0 }, - { "label": "R04", "x": 15, "y": 0 }, - { "label": "R05", "x": 16, "y": 0 }, - { "label": "L10", "x": 0, "y": 1 }, - { "label": "L11", "x": 1, "y": 1 }, - { "label": "L12", "x": 2, "y": 1 }, - { "label": "L13", "x": 3, "y": 1 }, - { "label": "L14", "x": 4, "y": 1 }, - { "label": "L15", "x": 5, "y": 1 }, - { "label": "R10", "x": 11, "y": 1 }, - { "label": "R11", "x": 12, "y": 1 }, - { "label": "R12", "x": 13, "y": 1 }, - { "label": "R13", "x": 14, "y": 1 }, - { "label": "R14", "x": 15, "y": 1 }, - { "label": "R15", "x": 16, "y": 1 }, - { "label": "L20", "x": 0, "y": 2 }, - { "label": "L21", "x": 1, "y": 2 }, - { "label": "L22", "x": 2, "y": 2 }, - { "label": "L23", "x": 3, "y": 2 }, - { "label": "L24", "x": 4, "y": 2 }, - { "label": "L25", "x": 5, "y": 2 }, - { "label": "R20", "x": 11, "y": 2 }, - { "label": "R21", "x": 12, "y": 2 }, - { "label": "R22", "x": 13, "y": 2 }, - { "label": "R23", "x": 14, "y": 2 }, - { "label": "R24", "x": 15, "y": 2 }, - { "label": "R25", "x": 16, "y": 2 }, - { "label": "L33", "x": 5, "y": 3 }, - { "label": "L34", "x": 6, "y": 3 }, - { "label": "L31", "x": 7, "y": 3 }, - { "label": "R33", "x": 9, "y": 3 }, - { "label": "R34", "x": 10, "y": 3 }, - { "label": "R31", "x": 11, "y": 3 } - ] } } } diff --git a/keyboards/blu/vimclutch/info.json b/keyboards/blu/vimclutch/info.json new file mode 100644 index 000000000000..33b126dc4e47 --- /dev/null +++ b/keyboards/blu/vimclutch/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "vimclutch", + "manufacturer": "blu", + "url": "https://github.com/blu006/vimclutch_hw", + "maintainer": "blu006", + "usb": { + "vid": "0xFEED", + "pid": "0x6060", + "device_version": "0.0.1" + }, + "development_board": "promicro", + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["B3", "B2", "B6"], + "rows": ["B5"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0, "matrix": [0, 0]}, + {"label": "k01", "x": 1, "y": 0, "matrix": [0, 1]}, + {"label": "k02", "x": 2, "y": 0, "matrix": [0, 2]} + ] + } + } +} diff --git a/keyboards/blu/vimclutch/keymaps/default/keymap.c b/keyboards/blu/vimclutch/keymaps/default/keymap.c new file mode 100644 index 000000000000..49eaa2b88161 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/default/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2023 Brandon Lu + * + * 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 + +enum layer_names { + _VC, + _VIM +}; + +enum my_keycodes { + USER_CLUTCH = QK_USER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_VC] = LAYOUT( + TO(_VC), TO(_VIM), KC_F13 + ), + + [_VIM] = LAYOUT( + TO(_VC), TO(_VIM), USER_CLUTCH + ) +}; + +/* Layer-specific lighting */ +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(F4, !layer_state_cmp(state, _VC)); + writePin(F5, !layer_state_cmp(state, _VIM)); + return state; +}; + +/* Define vim-clutching */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case USER_CLUTCH: + if (record->event.pressed) { + tap_code_delay(KC_ESC, 50); + tap_code_delay(KC_A, 50); + } else { + tap_code_delay(KC_ESC, 50); + } + break; + } + return true; +}; diff --git a/keyboards/blu/vimclutch/keymaps/default/readme.md b/keyboards/blu/vimclutch/keymaps/default/readme.md new file mode 100644 index 000000000000..dfe9741ad4e0 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/default/readme.md @@ -0,0 +1,7 @@ +# Default keymap for the vim clutch + +The two enclosure tactile switches change between modes "voice chat" (default) and "vim clutch." + +The voice chat mode uses `F13` to activate or deactivate push-to-talk. + +The vim clutch uses the `ESC` and `a` keys to clutch into and out of vim. diff --git a/keyboards/blu/vimclutch/keymaps/vc_i/keymap.c b/keyboards/blu/vimclutch/keymaps/vc_i/keymap.c new file mode 100644 index 000000000000..b42f2ca0f053 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/vc_i/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2023 Brandon Lu + * + * 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 + +enum layer_names { + _VC, + _VIM +}; + +enum my_keycodes { + USER_CLUTCH = QK_USER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_VC] = LAYOUT( + TO(_VC), TO(_VIM), KC_F13 + ), + + [_VIM] = LAYOUT( + TO(_VC), TO(_VIM), USER_CLUTCH + ) +}; + +/* Layer-specific lighting */ +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(F4, !layer_state_cmp(state, _VC)); + writePin(F5, !layer_state_cmp(state, _VIM)); + return state; +}; + +/* Define vim-clutching */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case USER_CLUTCH: + if (record->event.pressed) { + tap_code_delay(KC_ESC, 50); + tap_code_delay(KC_I, 50); + } else { + tap_code_delay(KC_ESC, 50); + } + break; + } + return true; +}; diff --git a/keyboards/blu/vimclutch/keymaps/vc_i/readme.md b/keyboards/blu/vimclutch/keymaps/vc_i/readme.md new file mode 100644 index 000000000000..1c2506a06007 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/vc_i/readme.md @@ -0,0 +1,7 @@ +# "Traditionalist" keymap for the vim clutch + +The two enclosure tactile switches change between modes "voice chat" (default) and "vim clutch." + +The voice chat mode uses `F13` to activate or deactivate push-to-talk. + +The vim clutch uses the `ESC` and `i` keys to clutch into and out of vim. diff --git a/keyboards/blu/vimclutch/keymaps/vim_ai/keymap.c b/keyboards/blu/vimclutch/keymaps/vim_ai/keymap.c new file mode 100644 index 000000000000..107ea4bfd1a6 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/vim_ai/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2021 John Mueller + * + * 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 + +enum layer_names { + _VIMA, + _VIMI +}; + +enum my_keycodes { + CLUTCH_A = QK_USER, + CLUTCH_I +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_VIMA] = LAYOUT( + TO(_VIMA), TO(_VIMI), CLUTCH_A + ), + + [_VIMI] = LAYOUT( + TO(_VIMA), TO(_VIMI), CLUTCH_I + ) +}; + +/* Layer-specific lighting */ +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(F4, !layer_state_cmp(state, _VIMA)); + writePin(F5, !layer_state_cmp(state, _VIMI)); + return state; +}; + +/* Define vim-clutching */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CLUTCH_A: + if (record->event.pressed) { + tap_code_delay(KC_ESC, 50); + tap_code_delay(KC_A, 50); + } else { + tap_code_delay(KC_ESC, 50); + } + break; + case CLUTCH_I: + if (record->event.pressed) { + tap_code_delay(KC_ESC, 50); + tap_code_delay(KC_I, 50); + } else { + tap_code_delay(KC_ESC, 50); + } + break; + } + return true; +}; diff --git a/keyboards/blu/vimclutch/keymaps/vim_ai/readme.md b/keyboards/blu/vimclutch/keymaps/vim_ai/readme.md new file mode 100644 index 000000000000..b1521819f9a6 --- /dev/null +++ b/keyboards/blu/vimclutch/keymaps/vim_ai/readme.md @@ -0,0 +1,9 @@ +# Hardcore AI keymap for the vim clutch + +The two enclosure tactile switches change between different ways of using the vim clutch. + +The first vim clutch mode uses the `ESC` and `a` keys to clutch into and out of vim. + +The second vim clutch mode uses the `ESC` and `i` keys to clutch into and out of vim. + +These different modes can be combined with shift when using vim to jump to the end or the beginning of a line. The first mode with `a` jumps to the end. The second mode with `i` jumps to the beginning. diff --git a/keyboards/blu/vimclutch/readme.md b/keyboards/blu/vimclutch/readme.md new file mode 100644 index 000000000000..bbc6b9826066 --- /dev/null +++ b/keyboards/blu/vimclutch/readme.md @@ -0,0 +1,36 @@ +# blu vimclutch + +[blu006](https://github.com/blu006)'s vimclutch implementation using QMK + +* Keyboard Maintainer: [blu006](https://github.com/blu006) +* Hardware Supported: [github link](https://github.com/blu006/vimclutch_hw) +* Hardware Vendors Listed on the Page + +This keyboard is designed to be placed from left-to-right with the USB-B micro port aligned to the left side and the widest side horizontally aligned. Some may call this the "transverse" orientation. The two tactile buttons are for layer switching and are numbered from left-to-right. The default state is for the leftmost layer to be active. With the default layout, this is the "voice chat" mode which uses `F13` as a push-to-talk button. + +On the default keymap, here's what happens with your clutch: +* On press, `ESC` and then `a` are pressed. +* On release, `ESC` is pressed + +You can also use the shift key on your keyboard to jump to the end of line. + +Here are some included keymaps and their modes to get you started: +* default: voice chat and vim clutch +* vc_i: the same as default but using `i` instead of `a` +* vim_ai: vim clutch only, selectable between `a` and `i` + +Also includes a mode for single-keypress in case of "push to talk clutch" + +Make example for this keyboard after setting up your development environment: + + make blu/vimclutch:default + +Flashing example for this keyboard: + + make blu/vimclutch:default + +## Bootloader + +Reset button on the reverse side of the enclosure for initializing flashing. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/blu/vimclutch/rules.mk b/keyboards/blu/vimclutch/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/blu/vimclutch/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/blu/vimclutch/vimclutch.c b/keyboards/blu/vimclutch/vimclutch.c new file mode 100644 index 000000000000..5add11ee4f41 --- /dev/null +++ b/keyboards/blu/vimclutch/vimclutch.c @@ -0,0 +1,25 @@ +/* +Copyright 2023 Brandon Lu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "quantum.h" + +void keyboard_pre_init_kb(void) +{ + setPinOutput(F4); + setPinOutput(F5); + + keyboard_pre_init_user(); +}; diff --git a/keyboards/butterkeebs/pocketpad/info.json b/keyboards/butterkeebs/pocketpad/info.json new file mode 100644 index 000000000000..96adda2cee01 --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/info.json @@ -0,0 +1,56 @@ +{ + "manufacturer": "ButterKeebs", + "keyboard_name": "PocketPad", + "maintainer": "qmk", + "diode_direction": "ROW2COL", + + "usb": { + "device_version": "1.0.0", + "pid": "0x1475", + "vid": "0xFEED" + }, + + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F1", "C7", "D5", "B7"], + "rows": ["F7", "F6", "F5", "F4", "B1"] + }, + + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0,0]}, + {"x": 1, "y": 0, "matrix": [0,1]}, + {"x": 2, "y": 0, "matrix": [0,2]}, + {"x": 3, "y": 0, "matrix": [0,3]}, + + {"x": 0, "y": 1, "matrix": [1,0]}, + {"x": 1, "y": 1, "matrix": [1,1]}, + {"x": 2, "y": 1, "matrix": [1,2]}, + {"x": 3, "y": 1, "matrix": [1,3]}, + + {"x": 0, "y": 2, "matrix": [2,0]}, + {"x": 1, "y": 2, "matrix": [2,1]}, + {"x": 2, "y": 2, "matrix": [2,2]}, + {"x": 3, "y": 2, "matrix": [2,3]}, + + {"x": 0, "y": 3, "matrix": [3,0]}, + {"x": 1, "y": 3, "matrix": [3,1]}, + {"x": 2, "y": 3, "matrix": [3,2]}, + {"x": 3, "y": 3, "matrix": [3,3]}, + + {"x": 0, "y": 4, "matrix": [4,0]}, + {"x": 1, "y": 4, "matrix": [4,1]} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c b/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..0591fde1406c --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c @@ -0,0 +1,14 @@ +// ButterKeebs +// SPDX-License-Identifier: GPL-2.0+ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_NUM_LOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ENTER, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT, + KC_F, KC_KP_0) +}; \ No newline at end of file diff --git a/keyboards/butterkeebs/pocketpad/readme.md b/keyboards/butterkeebs/pocketpad/readme.md new file mode 100644 index 000000000000..0af8b7a3c6d4 --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/readme.md @@ -0,0 +1,27 @@ +# PocketPad + +![PocketPad](https://tinyurl.com/2hffvnvb) + +*The PocketPad is a tiny 18 key macropad/numpad using 6mm tactile switches.* + +* Keyboard Maintainer: [ButterKeebs](https://github.com/butterkeebs) +* Hardware Supported: *Supports current V1.0.0 PocketPad PCB and Elite C / pin compatible MCU boards.* +* Hardware Availability: *Currently not for sale* + +Make example for this keyboard (after setting up your build environment): + + make butterkeebs/pocketpad:default + +Flashing example for this keyboard: + + make butterkeebs/pocketpad: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. (Not available on Revision 1.0.0 PCB) +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/butterkeebs/pocketpad/rules.mk b/keyboards/butterkeebs/pocketpad/rules.mk new file mode 100644 index 000000000000..f886ea2e8ecd --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally blank \ No newline at end of file diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/info.json b/keyboards/cannonkeys/bakeneko60_iso_hs/info.json new file mode 100644 index 000000000000..c5f957935617 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/info.json @@ -0,0 +1,95 @@ +{ + "manufacturer": "CannonKeys", + "keyboard_name": "Bakeneko60 ISO", + "maintainer": "awkannan", + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "usb": { + "vid": "0xCA04", + "pid": "0x001E", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["B1", "B0", "A7", "A5", "A4"], + "cols": ["B11", "B10", "B2", "A9", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "C13", "C15"] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "url": "https://cannonkeys.com", + "community_layouts": ["60_iso"], + "layouts": { + "LAYOUT_60_iso": { + "layout": [ + { "label": "\u00ac", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "!", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "\"", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "\u00a3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "$", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "%", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "^", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "&", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "*", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "(", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": ")", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "_", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "+", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "Backspace", "matrix": [0, 13], "w": 2, "x": 13.0, "y": 0.0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "@", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "~", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1.0 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "label": "|", "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3.0 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "label": "AltGr", "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 }, + { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..ecabe55c2280 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2012,2013 Jun Wako + +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 + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_iso( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL + ), + + [_FN1] = LAYOUT_60_iso( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, _______, _______, _______, _______, _______, _______, QK_BOOT + ) +}; diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..c3b045104271 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2012,2013 Jun Wako + +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 + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_iso( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL + ), + + [_FN1] = LAYOUT_60_iso( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, _______, _______, _______, _______, _______, _______, QK_BOOT + ), + + [_FN2] = LAYOUT_60_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN3] = LAYOUT_60_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/readme.md b/keyboards/cannonkeys/bakeneko60_iso_hs/readme.md new file mode 100644 index 000000000000..571ebea80b6a --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/readme.md @@ -0,0 +1,24 @@ +# CannonKeys Bakeneko60 ISO Hotswap + +Bakeneko60 ISO Hotswap PCB + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 (or equivalent) + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/bakeneko60_iso_hs:default + +Flashing example for this keyboard: + + make cannonkeys/bakeneko60_iso_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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/cannonkeys/bakeneko60_iso_hs/rules.mk b/keyboards/cannonkeys/bakeneko60_iso_hs/rules.mk new file mode 100644 index 000000000000..2a5031cd3205 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko60_iso_hs/rules.mk @@ -0,0 +1,5 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/config.h b/keyboards/cannonkeys/bakeneko65_iso_hs/config.h new file mode 100644 index 000000000000..6ab112ffef9c --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2015 Jun Wako + +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 BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 diff --git a/keyboards/studiokestra/galatea/galatea.h b/keyboards/cannonkeys/bakeneko65_iso_hs/halconf.h similarity index 73% rename from keyboards/studiokestra/galatea/galatea.h rename to keyboards/cannonkeys/bakeneko65_iso_hs/halconf.h index a1f2aa77b53a..edc7827d76b1 100644 --- a/keyboards/studiokestra/galatea/galatea.h +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2021 Studio Kestra +/* Copyright 2020 QMK * * 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 @@ -14,12 +14,14 @@ * along with this program. If not, see . */ +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/instant65/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + #pragma once -#include "quantum.h" +#define HAL_USE_PWM TRUE + +#include_next -#if defined(KEYBOARD_studiokestra_galatea_rev1) - #include "rev1.h" -#elif defined(KEYBOARD_studiokestra_galatea_rev2) - #include "rev2.h" -#endif diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/info.json b/keyboards/cannonkeys/bakeneko65_iso_hs/info.json new file mode 100644 index 000000000000..7ca311d45eff --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Bakeneko65 ISO HS", + "manufacturer": "CannonKeys", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "usb": { + "vid": "0xCA04", + "pid": "0x001F", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A8", "C13", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A7", "A5", "A4", "A3", "A2", "A1"], + "rows": ["A14", "A15", "A0", "B1", "B0"] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "backlight": true + }, + "backlight": { + "breathing": true, + "levels": 15, + "pin": "A6" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "community_layouts": ["65_iso_blocker"], + "layouts": { + "LAYOUT_65_iso_blocker": { + "layout": [ + { "label": "\u00ac", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "!", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "\"", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "\u00a3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "$", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "%", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "^", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "&", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "*", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "(", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": ")", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "_", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "+", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "Backspace", "matrix": [0, 13], "w": 2, "x": 13.0, "y": 0.0 }, + { "label": "Home", "matrix": [0, 14], "x": 15.0, "y": 0.0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "label": "PgUp", "matrix": [1, 14], "x": 15.0, "y": 1.0 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "@", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "~", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1.0 }, + { "label": "PgDn", "matrix": [2, 14], "x": 15.0, "y": 2.0 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "label": "|", "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "label": "End", "matrix": [3, 14], "x": 15.0, "y": 3.0 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "label": "AltGr", "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "matrix": [4, 12], "x": 13.0, "y": 4.0 }, + { "matrix": [4, 13], "x": 14.0, "y": 4.0 }, + { "matrix": [4, 14], "x": 15.0, "y": 4.0 } + ] + } + } +} diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..89db071144ac --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* +Copyright 2012,2013 Jun Wako + +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 + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_65_iso_blocker( + 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_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_65_iso_blocker( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..f0c05d01e55b --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/via/keymap.c @@ -0,0 +1,66 @@ +/* +Copyright 2012,2013 Jun Wako + +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 + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_65_iso_blocker( + 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_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_65_iso_blocker( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS + ), + + + [_FN2] = LAYOUT_65_iso_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + + [_FN3] = LAYOUT_65_iso_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/cannonkeys/bakeneko65_iso_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/mcuconf.h b/keyboards/cannonkeys/bakeneko65_iso_hs/mcuconf.h new file mode 100644 index 000000000000..49df7aa95cf3 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/instant65/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/readme.md b/keyboards/cannonkeys/bakeneko65_iso_hs/readme.md new file mode 100644 index 000000000000..4fd3cefe6c0d --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/readme.md @@ -0,0 +1,24 @@ +# Bakeneko65 ISO Hotswap + +Bakeneko65 ISO Hotswap Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/bakeneko65_iso_hs:default + +Flashing example for this keyboard: + + make cannonkeys/bakeneko65_iso_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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cannonkeys/bakeneko65_iso_hs/rules.mk b/keyboards/cannonkeys/bakeneko65_iso_hs/rules.mk new file mode 100644 index 000000000000..2a5031cd3205 --- /dev/null +++ b/keyboards/cannonkeys/bakeneko65_iso_hs/rules.mk @@ -0,0 +1,5 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cheshire/curiosity/info.json b/keyboards/cheshire/curiosity/info.json index 0e63e3b66008..74a37dc2d692 100644 --- a/keyboards/cheshire/curiosity/info.json +++ b/keyboards/cheshire/curiosity/info.json @@ -1,7 +1,7 @@ { "keyboard_name": "Curiosity", "manufacturer": "Nightingale Studios/Cheshire Designs", - "maintainer": "zvecr", + "maintainer": "sidcarter", "usb": { "vid": "0xCAFE", "pid": "0x0FAD", diff --git a/keyboards/cipulot/ec_23u/config.h b/keyboards/cipulot/ec_23u/config.h new file mode 100644 index 000000000000..8bb39367b94e --- /dev/null +++ b/keyboards/cipulot/ec_23u/config.h @@ -0,0 +1,47 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 MATRIX_ROWS 4 +#define MATRIX_COLS 6 + +/* Custom matrix pins and port select array */ +#define MATRIX_ROW_PINS \ + { B13, B12, A7, B0 } +#define MATRIX_COL_CHANNELS \ + { 4, 6, 3, 2, 0, 1 } +#define MUX_SEL_PINS \ + { C14, C13, B6 } + +/* Hardware peripherals pins */ +#define APLEX_EN_PIN C15 +#define DISCHARGE_PIN A3 +#define ANALOG_PORT A2 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +//#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define DEFAULT_ACTUATION_LEVEL 550 +#define DEFAULT_RELEASE_LEVEL 500 + +#define DISCHARGE_TIME 10 diff --git a/keyboards/cipulot/ec_23u/ec_switch_matrix.c b/keyboards/cipulot/ec_23u/ec_switch_matrix.c new file mode 100644 index 000000000000..4059a80e5dbd --- /dev/null +++ b/keyboards/cipulot/ec_23u/ec_switch_matrix.c @@ -0,0 +1,165 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "print.h" +#include "wait.h" + +/* Pin and port array */ +const uint32_t row_pins[] = MATRIX_ROW_PINS; +const uint8_t col_channels[] = MATRIX_COL_CHANNELS; +const uint32_t mux_sel_pins[] = MUX_SEL_PINS; + +static ecsm_config_t config; +static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +static inline void discharge_capacitor(void) { + writePinLow(DISCHARGE_PIN); +} +static inline void charge_capacitor(uint8_t row) { + writePinHigh(DISCHARGE_PIN); + writePinHigh(row_pins[row]); +} + +static inline void init_mux_sel(void) { + for (int idx = 0; idx < 3; idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +static inline void select_mux(uint8_t col) { + uint8_t ch = col_channels[col]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +static inline void init_row(void) { + for (int idx = 0; idx < MATRIX_ROWS; idx++) { + setPinOutput(row_pins[idx]); + writePinLow(row_pins[idx]); + } +} + +/* Initialize the peripherals pins */ +int ecsm_init(ecsm_config_t const* const ecsm_config) { + // Initialize config + config = *ecsm_config; + + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + //Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutputOpenDrain(DISCHARGE_PIN); + + // Initialize drive lines + init_row(); + + // Initialize multiplexer select pin + init_mux_sel(); + + // Enable AMUX + setPinOutput(APLEX_EN_PIN); + writePinLow(APLEX_EN_PIN); + + return 0; +} + +int ecsm_update(ecsm_config_t const* const ecsm_config) { + // Save config + config = *ecsm_config; + return 0; +} + +// Read the capacitive sensor value +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + writePinHigh(APLEX_EN_PIN); + select_mux(col); + writePinLow(APLEX_EN_PIN); + + // Set strobe pins to low state + writePinLow(row_pins[row]); + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Press to release + if (current_state && sw_value < config.ecsm_actuation_threshold) { + *current_row &= ~(1 << col); + return true; + } + + // Release to press + if ((!current_state) && sw_value > config.ecsm_release_threshold) { + *current_row |= (1 << col); + return true; + } + + return false; +} + +// Scan key values and update matrix state +bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (int col = 0; col < sizeof(col_channels); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]); + } + } + + return updated; +} + +// Debug print key values +void ecsm_print_matrix(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + uprintf("%4d", ecsm_sw_value[row][col]); + if (col < (MATRIX_COLS - 1)) { + print(","); + } + } + print("\n"); + } + print("\n"); +} diff --git a/keyboards/cipulot/ec_23u/ec_switch_matrix.h b/keyboards/cipulot/ec_23u/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_23u/ec_switch_matrix.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t ecsm_actuation_threshold; // threshold for key release + uint16_t ecsm_release_threshold; // threshold for key press +} ecsm_config_t; + +ecsm_config_t ecsm_config; + +int ecsm_init(ecsm_config_t const* const ecsm_config); +int ecsm_update(ecsm_config_t const* const ecsm_config); +bool ecsm_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ecsm_print_matrix(void); diff --git a/keyboards/converter/modelm_ssk/modelm_ssk.c b/keyboards/cipulot/ec_23u/halconf.h similarity index 87% rename from keyboards/converter/modelm_ssk/modelm_ssk.c rename to keyboards/cipulot/ec_23u/halconf.h index 1b01115e5db4..5b71acecbbc8 100644 --- a/keyboards/converter/modelm_ssk/modelm_ssk.c +++ b/keyboards/cipulot/ec_23u/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2019 iw0rm3r +/* Copyright 2023 Cipulot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "modelm_ssk.h" +#pragma once +#define HAL_USE_ADC TRUE +#include_next diff --git a/keyboards/cipulot/ec_23u/info.json b/keyboards/cipulot/ec_23u/info.json new file mode 100644 index 000000000000..e55d3b9e503d --- /dev/null +++ b/keyboards/cipulot/ec_23u/info.json @@ -0,0 +1,108 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 23U", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "mouse_key": { + "enabled": true + }, + "indicators": { + "num_lock": "B14" + }, + "processor": "STM32F401", + "rgblight": { + "led_count": 21, + "pin": "B5", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "url": "https://www.github.com/Cipulot/EC23U", + "usb": { + "device_version": "0.0.1", + "pid": "0x6B95", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "x": 0.0, "y": 1.5 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.0, "y": 1.5 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.0, "y": 1.5 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.0, "y": 1.5 }, + { "label": "2,0", "matrix": [2, 0], "x": 0.0, "y": 2.5 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.0, "y": 2.5 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.0, "y": 2.5 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.0, "y": 2.5 }, + { "label": "3,0", "matrix": [3, 0], "x": 0.0, "y": 3.5 }, + { "label": "3,1", "matrix": [3, 1], "x": 1.0, "y": 3.5 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.0, "y": 3.5 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.0, "y": 3.5 }, + { "label": "2,4", "matrix": [2, 4], "x": 0.0, "y": 4.5 }, + { "label": "0,4", "matrix": [0, 4], "x": 1.0, "y": 4.5 }, + { "label": "1,4", "matrix": [1, 4], "x": 2.0, "y": 4.5 }, + { "label": "3,4", "matrix": [3, 4], "x": 3.0, "y": 4.5 }, + { "label": "2,5", "matrix": [2, 5], "x": 0.0, "y": 5.5 }, + { "label": "0,5", "matrix": [0, 5], "x": 1.0, "y": 5.5 }, + { "label": "1,5", "matrix": [1, 5], "x": 2.0, "y": 5.5 }, + { "label": "3,5", "matrix": [3, 5], "x": 3.0, "y": 5.5 } + ] + }, + "LAYOUT_numpad_6x4": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "x": 0.0, "y": 1.5 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.0, "y": 1.5 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.0, "y": 1.5 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.0, "y": 1.5 }, + { "label": "2,0", "matrix": [2, 0], "x": 0.0, "y": 2.5 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.0, "y": 2.5 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.0, "y": 2.5 }, + { "h": 2, "label": "3,3", "matrix": [3, 3], "x": 3.0, "y": 2.5 }, + { "label": "3,0", "matrix": [3, 0], "x": 0.0, "y": 3.5 }, + { "label": "3,1", "matrix": [3, 1], "x": 1.0, "y": 3.5 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.0, "y": 3.5 }, + { "label": "2,4", "matrix": [2, 4], "x": 0.0, "y": 4.5 }, + { "label": "0,4", "matrix": [0, 4], "x": 1.0, "y": 4.5 }, + { "label": "1,4", "matrix": [1, 4], "x": 2.0, "y": 4.5 }, + { "h": 2, "label": "3,4", "matrix": [3, 4], "x": 3.0, "y": 4.5 }, + { "label": "2,5", "matrix": [2, 5], "w": 2, "x": 0.0, "y": 5.5 }, + { "label": "1,5", "matrix": [1, 5], "x": 2.0, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_23u/keymaps/default/keymap.c b/keyboards/cipulot/ec_23u/keymaps/default/keymap.c new file mode 100644 index 000000000000..93ceadb842ca --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_TAB, KC_BSPC, MO(1), + KC_NUM, KC_PSLS, KC_PAST, KC_PEQL, + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT), + + [1] = LAYOUT_all( + RGB_TOG, RGB_VAD, RGB_VAI, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, QK_BOOT, _______), + + + [2] = LAYOUT_all( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_23u/keymaps/numpad_6x4/keymap.c b/keyboards/cipulot/ec_23u/keymaps/numpad_6x4/keymap.c new file mode 100644 index 000000000000..9246aa0eb705 --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/numpad_6x4/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_numpad_6x4( + KC_ESC, KC_TAB, KC_BSPC, MO(1), + KC_NUM, KC_PSLS, KC_PAST, KC_PEQL, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT), + + [1] = LAYOUT_numpad_6x4( + RGB_TOG, RGB_VAD, RGB_VAI, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, QK_BOOT), + + + [2] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______), + + [3] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_23u/keymaps/via/config.h b/keyboards/cipulot/ec_23u/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_23u/keymaps/via/keymap.c b/keyboards/cipulot/ec_23u/keymaps/via/keymap.c new file mode 100644 index 000000000000..93ceadb842ca --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_TAB, KC_BSPC, MO(1), + KC_NUM, KC_PSLS, KC_PAST, KC_PEQL, + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT), + + [1] = LAYOUT_all( + RGB_TOG, RGB_VAD, RGB_VAI, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, QK_BOOT, _______), + + + [2] = LAYOUT_all( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_23u/keymaps/via/rules.mk b/keyboards/cipulot/ec_23u/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_23u/keymaps/via/via_apc.c b/keyboards/cipulot/ec_23u/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_23u/keymaps/via/via_apc.c @@ -0,0 +1,156 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "action.h" +#include "via.h" + +void apc_init_thresholds(void); +void apc_set_threshold(bool is_for_actuation); + +// Declaring an _apc_config_t struct that will store our data +typedef struct _apc_config_t { + uint16_t actuation_threshold; + uint16_t release_threshold; +} apc_config; + +// Check if the size of the reserved persistent memory is the same as the size of struct apc_config +_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +// Declaring a new variable apc of type apc_config +apc_config apc; + +// Declaring enums for VIA config menu +enum via_apc_enums { + // clang-format off + id_apc_actuation_threshold = 1, + id_apc_release_threshold = 2 + // clang-format on +}; + +// Initializing persistent memory configuration: default values are declared and stored in PMEM +void eeconfig_init_user(void) { + // Default values + apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; + apc.release_threshold = DEFAULT_RELEASE_LEVEL; + // Write default value to EEPROM now + eeconfig_update_user_datablock(&apc); +} + +// On Keyboard startup +void keyboard_post_init_user(void) { + // Read custom menu variables from memory + eeconfig_read_user_datablock(&apc); + apc_init_thresholds(); +} + +// Handle the data received by the keyboard from the VIA menus +void apc_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + apc.actuation_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(true); + break; + } + case id_apc_release_threshold: { + apc.release_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(false); + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void apc_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + value_data[0] = apc.actuation_threshold >> 8; + value_data[1] = apc.actuation_threshold & 0xFF; + break; + } + case id_apc_release_threshold: { + value_data[0] = apc.release_threshold >> 8; + value_data[1] = apc.release_threshold & 0xFF; + break; + } + } +} + +// Save the data to persistent memory after changes are made +void apc_config_save(void) { + eeconfig_update_user_datablock(&apc); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + apc_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + apc_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + apc_config_save(); + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Initialize the thresholds +void apc_init_thresholds(void) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + ecsm_config.ecsm_release_threshold = apc.release_threshold; + + // Update the ecsm_config + ecsm_update(&ecsm_config); +} + +// Set the thresholds +void apc_set_threshold(bool is_for_actuation) { + if (is_for_actuation) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + + } else { + ecsm_config.ecsm_release_threshold = apc.release_threshold; + } + // Update the ecsm_config + ecsm_update(&ecsm_config); +} diff --git a/keyboards/cipulot/ec_23u/matrix.c b/keyboards/cipulot/ec_23u/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_23u/matrix.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "matrix.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +void matrix_init_custom(void) { + // Default values, overwritten by VIA if enabled later + ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL; + ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL; + + ecsm_init(&ecsm_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ecsm_matrix_scan(current_matrix); + +// RAW matrix values on console +#ifdef CONSOLE_ENABLE + static int cnt = 0; + if (cnt++ == 350) { + cnt = 0; + ecsm_print_matrix(); + } +#endif + return updated; +} diff --git a/keyboards/cipulot/ec_23u/mcuconf.h b/keyboards/cipulot/ec_23u/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_23u/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_23u/readme.md b/keyboards/cipulot/ec_23u/readme.md new file mode 100644 index 000000000000..d4832edff5d1 --- /dev/null +++ b/keyboards/cipulot/ec_23u/readme.md @@ -0,0 +1,27 @@ +# EC 23U + +![EC 23U PCB](https://i.imgur.com/G6QK1kU.png) + +Open source numpad Electrostatic Capacitive PCB. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC23U +* Hardware Availability: [Github](https://github.com/Cipulot/EC23U) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_23u:default + +Flashing example for this keyboard: + + make cipulot/ec_23u: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 Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_23u/rules.mk b/keyboards/cipulot/ec_23u/rules.mk new file mode 100644 index 000000000000..ed348e861860 --- /dev/null +++ b/keyboards/cipulot/ec_23u/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c diff --git a/keyboards/cipulot/ec_60/config.h b/keyboards/cipulot/ec_60/config.h new file mode 100644 index 000000000000..083b71cc1363 --- /dev/null +++ b/keyboards/cipulot/ec_60/config.h @@ -0,0 +1,45 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Custom matrix pins and port select array */ +#define MATRIX_ROW_PINS \ + { B15, A8, B0, A7, B1 } +#define MATRIX_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6, 4 } +#define MUX_SEL_PINS \ + { B6, B5, B4 } + +/* Hardware peripherals pins */ +#define APLEX_EN_PIN_0 B7 +#define APLEX_EN_PIN_1 B3 +#define DISCHARGE_PIN A6 +#define ANALOG_PORT A3 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define DEFAULT_ACTUATION_LEVEL 550 +#define DEFAULT_RELEASE_LEVEL 500 + +#define DISCHARGE_TIME 10 diff --git a/keyboards/cipulot/ec_60/ec_switch_matrix.c b/keyboards/cipulot/ec_60/ec_switch_matrix.c new file mode 100644 index 000000000000..72220b873362 --- /dev/null +++ b/keyboards/cipulot/ec_60/ec_switch_matrix.c @@ -0,0 +1,183 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "print.h" +#include "wait.h" + +/* Pin and port array */ +const uint32_t row_pins[] = MATRIX_ROW_PINS; +const uint8_t col_channels[] = MATRIX_COL_CHANNELS; +const uint32_t mux_sel_pins[] = MUX_SEL_PINS; + +static ecsm_config_t config; +static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +static inline void discharge_capacitor(void) { + writePinLow(DISCHARGE_PIN); +} +static inline void charge_capacitor(uint8_t row) { + writePinHigh(DISCHARGE_PIN); + writePinHigh(row_pins[row]); +} + +static inline void init_mux_sel(void) { + for (int idx = 0; idx < 3; idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +static inline void select_mux(uint8_t col) { + uint8_t ch = col_channels[col]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +static inline void init_row(void) { + for (int idx = 0; idx < MATRIX_ROWS; idx++) { + setPinOutput(row_pins[idx]); + writePinLow(row_pins[idx]); + } +} + +/* Initialize the peripherals pins */ +int ecsm_init(ecsm_config_t const* const ecsm_config) { + // Initialize config + config = *ecsm_config; + + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + //Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutputOpenDrain(DISCHARGE_PIN); + + // Initialize drive lines + init_row(); + + // Initialize multiplexer select pin + init_mux_sel(); + + // Enable AMUX + setPinOutput(APLEX_EN_PIN_0); + writePinLow(APLEX_EN_PIN_0); + setPinOutput(APLEX_EN_PIN_1); + writePinLow(APLEX_EN_PIN_1); + + return 0; +} + +int ecsm_update(ecsm_config_t const* const ecsm_config) { + // Save config + config = *ecsm_config; + return 0; +} + +// Read the capacitive sensor value +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + if (channel == 0) { + writePinHigh(APLEX_EN_PIN_0); + select_mux(col); + writePinLow(APLEX_EN_PIN_0); + } else { + writePinHigh(APLEX_EN_PIN_1); + select_mux(col); + writePinLow(APLEX_EN_PIN_1); + } + + // Set strobe pins to low state + writePinLow(row_pins[row]); + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Press to release + if (current_state && sw_value < config.ecsm_actuation_threshold) { + *current_row &= ~(1 << col); + return true; + } + + // Release to press + if ((!current_state) && sw_value > config.ecsm_release_threshold) { + *current_row |= (1 << col); + return true; + } + + return false; +} + +// Scan key values and update matrix state +bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_1); + for (int col = 0; col < sizeof(col_channels); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]); + } + } + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_0); + for (int col = 0; col < (sizeof(col_channels) - 1); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]); + } + } + return updated; +} + +// Debug print key values +void ecsm_print_matrix(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + uprintf("%4d", ecsm_sw_value[row][col]); + if (col < (MATRIX_COLS - 1)) { + print(","); + } + } + print("\n"); + } + print("\n"); +} diff --git a/keyboards/cipulot/ec_60/ec_switch_matrix.h b/keyboards/cipulot/ec_60/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_60/ec_switch_matrix.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t ecsm_actuation_threshold; // threshold for key release + uint16_t ecsm_release_threshold; // threshold for key press +} ecsm_config_t; + +ecsm_config_t ecsm_config; + +int ecsm_init(ecsm_config_t const* const ecsm_config); +int ecsm_update(ecsm_config_t const* const ecsm_config); +bool ecsm_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ecsm_print_matrix(void); diff --git a/keyboards/studiokestra/galatea/rev1/rev1.c b/keyboards/cipulot/ec_60/halconf.h similarity index 87% rename from keyboards/studiokestra/galatea/rev1/rev1.c rename to keyboards/cipulot/ec_60/halconf.h index f34f9f92002c..5b71acecbbc8 100644 --- a/keyboards/studiokestra/galatea/rev1/rev1.c +++ b/keyboards/cipulot/ec_60/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2021 Studio Kestra +/* Copyright 2023 Cipulot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,4 +14,8 @@ * along with this program. If not, see . */ -#include "rev1.h" +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_60/info.json b/keyboards/cipulot/ec_60/info.json new file mode 100644 index 000000000000..0a9e83ec5b27 --- /dev/null +++ b/keyboards/cipulot/ec_60/info.json @@ -0,0 +1,309 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 60", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": false + }, + "mouse_key": { + "enabled": true + }, + "processor": "STM32F401", + "url": "https://www.github.com/Cipulot/EC60", + "usb": { + "device_version": "0.0.1", + "pid": "0x6B84", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "0,13", "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "label": "0,14", "matrix": [0, 14], "x": 14.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1.0 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "label": "2,13", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2.0 }, + { "label": "3,0", "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "3,12", "matrix": [3, 12], "w": 0.75, "x": 12.25, "y": 3.0 }, + { "label": "3,13", "matrix": [3, 13], "w": 0.5, "x": 13.0, "y": 3.0 }, + { "label": "3,14", "matrix": [3, 14], "w": 0.5, "x": 13.5, "y": 3.0 }, + { "label": "4,13", "matrix": [4, 13], "w": 0.5, "x": 14.0, "y": 3.0 }, + { "label": "4,14", "matrix": [4, 14], "w": 0.5, "x": 14.5, "y": 3.0 }, + { "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0.0, "y": 4.0 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4.0 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 }, + { "label": "4,4", "matrix": [4, 4], "w": 1.5, "x": 4.0, "y": 4.0 }, + { "label": "4,5", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.0 }, + { "label": "4,6", "matrix": [4, 6], "w": 1.25, "x": 6.75, "y": 4.0 }, + { "label": "4,7", "matrix": [4, 7], "w": 1.5, "x": 8.0, "y": 4.0 }, + { "label": "4,9", "matrix": [4, 9], "w": 1.5, "x": 9.5, "y": 4.0 }, + { "label": "4,10", "matrix": [4, 10], "w": 1.5, "x": 11.0, "y": 4.0 }, + { "label": "4,11", "matrix": [4, 11], "x": 12.5, "y": 4.0 }, + { "label": "4,12", "matrix": [4, 12], "w": 1.5, "x": 13.5, "y": 4.0 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "0,14", "matrix": [0, 14], "w": 2, "x": 13.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1.0 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "2,13", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2.0 }, + { "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0.0, "y": 3.0 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "4,13", "matrix": [4, 13], "w": 2.75, "x": 12.25, "y": 3.0 }, + { "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0.0, "y": 4.0 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4.0 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 }, + { "label": "4,6", "matrix": [4, 6], "w": 7, "x": 4.0, "y": 4.0 }, + { "label": "4,10", "matrix": [4, 10], "w": 1.5, "x": 11.0, "y": 4.0 }, + { "label": "4,11", "matrix": [4, 11], "x": 12.5, "y": 4.0 }, + { "label": "4,12", "matrix": [4, 12], "w": 1.5, "x": 13.5, "y": 4.0 } + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "0,14", "matrix": [0, 14], "w": 2, "x": 13.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "h": 2, "label": "1,13", "matrix": [1, 13], "w": 1.25, "x": 13.75, "y": 1.0 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "label": "3,0", "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "4,13", "matrix": [4, 13], "w": 2.75, "x": 12.25, "y": 3.0 }, + { "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0.0, "y": 4.0 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4.0 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 }, + { "label": "4,6", "matrix": [4, 6], "w": 7, "x": 4.0, "y": 4.0 }, + { "label": "4,10", "matrix": [4, 10], "w": 1.5, "x": 11.0, "y": 4.0 }, + { "label": "4,11", "matrix": [4, 11], "x": 12.5, "y": 4.0 }, + { "label": "4,12", "matrix": [4, 12], "w": 1.5, "x": 13.5, "y": 4.0 } + ] + }, + "LAYOUT_60_jis": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "0,13", "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "label": "0,14", "matrix": [0, 14], "x": 14.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "h": 2, "label": "1,13", "matrix": [1, 13], "w": 1.25, "x": 13.75, "y": 1.0 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0.0, "y": 3.0 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "label": "3,12", "matrix": [3, 12], "x": 12.25, "y": 3.0 }, + { "label": "4,14", "matrix": [4, 14], "w": 1.75, "x": 13.25, "y": 3.0 }, + { "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0.0, "y": 4.0 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4.0 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 }, + { "label": "4,4", "matrix": [4, 4], "w": 1.5, "x": 4.0, "y": 4.0 }, + { "label": "4,6", "matrix": [4, 6], "w": 2.5, "x": 5.5, "y": 4.0 }, + { "label": "4,7", "matrix": [4, 7], "w": 1.5, "x": 8.0, "y": 4.0 }, + { "label": "4,9", "matrix": [4, 9], "w": 1.5, "x": 9.5, "y": 4.0 }, + { "label": "4,10", "matrix": [4, 10], "w": 1.5, "x": 11.0, "y": 4.0 }, + { "label": "4,11", "matrix": [4, 11], "x": 12.5, "y": 4.0 }, + { "label": "4,12", "matrix": [4, 12], "w": 1.5, "x": 13.5, "y": 4.0 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_60/keymaps/60_ansi_tsangan/keymap.c b/keyboards/cipulot/ec_60/keymaps/60_ansi_tsangan/keymap.c new file mode 100644 index 000000000000..82c1e711c956 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/60_ansi_tsangan/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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_60_ansi_tsangan( + 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_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL), + + [1] = LAYOUT_60_ansi_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_60_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_60_ansi_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_60/keymaps/60_iso_tsangan/keymap.c b/keyboards/cipulot/ec_60/keymaps/60_iso_tsangan/keymap.c new file mode 100644 index 000000000000..530832885b97 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/60_iso_tsangan/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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_60_iso_tsangan( + 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_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL), + + [1] = LAYOUT_60_iso_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_60_iso_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_60_iso_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_60/keymaps/60_jis/keymap.c b/keyboards/cipulot/ec_60/keymaps/60_jis/keymap.c new file mode 100644 index 000000000000..76ecd0825944 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/60_jis/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_jis( + JP_ZKHK, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, + KC_TAB, JP_Q, JP_W, JP_E, JP_R, JP_T, JP_Y, JP_U, JP_I, JP_O, JP_P, JP_AT, JP_LBRC, KC_ENTER, + JP_EISU, JP_A, JP_S, JP_D, JP_F, JP_G, JP_H, JP_J, JP_K, JP_L, JP_SCLN, JP_COLN, JP_RBRC, + KC_LSFT, JP_Z, JP_X, JP_C, JP_V, JP_B, JP_N, JP_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_RCTL), + + [1] = LAYOUT_60_jis( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_60_jis( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_60_jis( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_60/keymaps/default/keymap.c b/keyboards/cipulot/ec_60/keymaps/default/keymap.c new file mode 100644 index 000000000000..d76f9166b456 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, + KC_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_ENTER, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), KC_RSFT, KC_RSFT, KC_RSFT, MO(1), + KC_CAPS, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_RCTL), + + [1] = 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_60/keymaps/via/config.h b/keyboards/cipulot/ec_60/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_60/keymaps/via/keymap.c b/keyboards/cipulot/ec_60/keymaps/via/keymap.c new file mode 100644 index 000000000000..d76f9166b456 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, + KC_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_ENTER, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), KC_RSFT, KC_RSFT, KC_RSFT, MO(1), + KC_CAPS, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_RCTL), + + [1] = 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_60/keymaps/via/rules.mk b/keyboards/cipulot/ec_60/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_60/keymaps/via/via_apc.c b/keyboards/cipulot/ec_60/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_60/keymaps/via/via_apc.c @@ -0,0 +1,156 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "action.h" +#include "via.h" + +void apc_init_thresholds(void); +void apc_set_threshold(bool is_for_actuation); + +// Declaring an _apc_config_t struct that will store our data +typedef struct _apc_config_t { + uint16_t actuation_threshold; + uint16_t release_threshold; +} apc_config; + +// Check if the size of the reserved persistent memory is the same as the size of struct apc_config +_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +// Declaring a new variable apc of type apc_config +apc_config apc; + +// Declaring enums for VIA config menu +enum via_apc_enums { + // clang-format off + id_apc_actuation_threshold = 1, + id_apc_release_threshold = 2 + // clang-format on +}; + +// Initializing persistent memory configuration: default values are declared and stored in PMEM +void eeconfig_init_user(void) { + // Default values + apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; + apc.release_threshold = DEFAULT_RELEASE_LEVEL; + // Write default value to EEPROM now + eeconfig_update_user_datablock(&apc); +} + +// On Keyboard startup +void keyboard_post_init_user(void) { + // Read custom menu variables from memory + eeconfig_read_user_datablock(&apc); + apc_init_thresholds(); +} + +// Handle the data received by the keyboard from the VIA menus +void apc_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + apc.actuation_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(true); + break; + } + case id_apc_release_threshold: { + apc.release_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(false); + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void apc_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + value_data[0] = apc.actuation_threshold >> 8; + value_data[1] = apc.actuation_threshold & 0xFF; + break; + } + case id_apc_release_threshold: { + value_data[0] = apc.release_threshold >> 8; + value_data[1] = apc.release_threshold & 0xFF; + break; + } + } +} + +// Save the data to persistent memory after changes are made +void apc_config_save(void) { + eeconfig_update_user_datablock(&apc); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + apc_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + apc_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + apc_config_save(); + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Initialize the thresholds +void apc_init_thresholds(void) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + ecsm_config.ecsm_release_threshold = apc.release_threshold; + + // Update the ecsm_config + ecsm_update(&ecsm_config); +} + +// Set the thresholds +void apc_set_threshold(bool is_for_actuation) { + if (is_for_actuation) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + + } else { + ecsm_config.ecsm_release_threshold = apc.release_threshold; + } + // Update the ecsm_config + ecsm_update(&ecsm_config); +} diff --git a/keyboards/cipulot/ec_60/matrix.c b/keyboards/cipulot/ec_60/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_60/matrix.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "matrix.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +void matrix_init_custom(void) { + // Default values, overwritten by VIA if enabled later + ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL; + ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL; + + ecsm_init(&ecsm_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ecsm_matrix_scan(current_matrix); + +// RAW matrix values on console +#ifdef CONSOLE_ENABLE + static int cnt = 0; + if (cnt++ == 350) { + cnt = 0; + ecsm_print_matrix(); + } +#endif + return updated; +} diff --git a/keyboards/cipulot/ec_60/mcuconf.h b/keyboards/cipulot/ec_60/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_60/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_60/readme.md b/keyboards/cipulot/ec_60/readme.md new file mode 100644 index 000000000000..a171bdfd4e62 --- /dev/null +++ b/keyboards/cipulot/ec_60/readme.md @@ -0,0 +1,27 @@ +# EC 60 + +![EC 60 PCB](https://i.imgur.com/XNwsVOnh.png) + +60% Electrostatic Capacitive PCB, GH60 mounting compatible, with multi-layout support + +* Keyboard Maintainer: [cipulot](https://github.com/Cipulot) +* Hardware Supported: EC 60 +* Hardware Availability: [Github](https://github.com/Cipulot/EC60) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_60:default + +Flashing example for this keyboard: + + make cipulot/ec_60: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 Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_60/rules.mk b/keyboards/cipulot/ec_60/rules.mk new file mode 100644 index 000000000000..ed348e861860 --- /dev/null +++ b/keyboards/cipulot/ec_60/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c diff --git a/keyboards/cipulot/ec_prox/ansi_iso/config.h b/keyboards/cipulot/ec_prox/ansi_iso/config.h new file mode 100644 index 000000000000..b659097656bb --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/config.h @@ -0,0 +1,45 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Custom matrix pins and port select array */ +#define MATRIX_ROW_PINS \ + { A7, B0, A4, A5, A6 } +#define MATRIX_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6, 4 } +#define MUX_SEL_PINS \ + { B4, B5, B6 } + +/* Hardware peripherals pins */ +#define APLEX_EN_PIN_0 B7 +#define APLEX_EN_PIN_1 B3 +#define DISCHARGE_PIN A2 +#define ANALOG_PORT A1 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define DEFAULT_ACTUATION_LEVEL 550 +#define DEFAULT_RELEASE_LEVEL 500 + +#define DISCHARGE_TIME 10 diff --git a/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.c b/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.c new file mode 100644 index 000000000000..d45e8c328120 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.c @@ -0,0 +1,183 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "print.h" +#include "wait.h" + +/* Pin and port array */ +const uint32_t row_pins[] = MATRIX_ROW_PINS; +const uint8_t col_channels[] = MATRIX_COL_CHANNELS; +const uint32_t mux_sel_pins[] = MUX_SEL_PINS; + +static ecsm_config_t config; +static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +static inline void discharge_capacitor(void) { + writePinLow(DISCHARGE_PIN); +} +static inline void charge_capacitor(uint8_t row) { + writePinHigh(DISCHARGE_PIN); + writePinHigh(row_pins[row]); +} + +static inline void init_mux_sel(void) { + for (int idx = 0; idx < 3; idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +static inline void select_mux(uint8_t col) { + uint8_t ch = col_channels[col]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +static inline void init_row(void) { + for (int idx = 0; idx < MATRIX_ROWS; idx++) { + setPinOutput(row_pins[idx]); + writePinLow(row_pins[idx]); + } +} + +/* Initialize the peripherals pins */ +int ecsm_init(ecsm_config_t const* const ecsm_config) { + // Initialize config + config = *ecsm_config; + + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + // Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutputOpenDrain(DISCHARGE_PIN); + + // Initialize drive lines + init_row(); + + // Initialize multiplexer select pin + init_mux_sel(); + + // Enable AMUX + setPinOutput(APLEX_EN_PIN_0); + writePinLow(APLEX_EN_PIN_0); + setPinOutput(APLEX_EN_PIN_1); + writePinLow(APLEX_EN_PIN_1); + + return 0; +} + +int ecsm_update(ecsm_config_t const* const ecsm_config) { + // Save config + config = *ecsm_config; + return 0; +} + +// Read the capacitive sensor value +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + if (channel == 0) { + writePinHigh(APLEX_EN_PIN_0); + select_mux(col); + writePinLow(APLEX_EN_PIN_0); + } else { + writePinHigh(APLEX_EN_PIN_1); + select_mux(col); + writePinLow(APLEX_EN_PIN_1); + } + + // Set strobe pins to low state + writePinLow(row_pins[row]); + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Press to release + if (current_state && sw_value < config.ecsm_actuation_threshold) { + *current_row &= ~(1 << col); + return true; + } + + // Release to press + if ((!current_state) && sw_value > config.ecsm_release_threshold) { + *current_row |= (1 << col); + return true; + } + + return false; +} + +// Scan key values and update matrix state +bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_1); + for (int col = 0; col < sizeof(col_channels); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]); + } + } + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_0); + for (int col = 0; col < (sizeof(col_channels) - 1); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]); + } + } + return updated; +} + +// Debug print key values +void ecsm_print_matrix(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + uprintf("%4d", ecsm_sw_value[row][col]); + if (col < (MATRIX_COLS - 1)) { + print(","); + } + } + print("\n"); + } + print("\n"); +} diff --git a/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.h b/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/ec_switch_matrix.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t ecsm_actuation_threshold; // threshold for key release + uint16_t ecsm_release_threshold; // threshold for key press +} ecsm_config_t; + +ecsm_config_t ecsm_config; + +int ecsm_init(ecsm_config_t const* const ecsm_config); +int ecsm_update(ecsm_config_t const* const ecsm_config); +bool ecsm_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ecsm_print_matrix(void); diff --git a/keyboards/studiokestra/galatea/galatea.c b/keyboards/cipulot/ec_prox/ansi_iso/halconf.h similarity index 87% rename from keyboards/studiokestra/galatea/galatea.c rename to keyboards/cipulot/ec_prox/ansi_iso/halconf.h index 30e7939159fc..5b71acecbbc8 100644 --- a/keyboards/studiokestra/galatea/galatea.c +++ b/keyboards/cipulot/ec_prox/ansi_iso/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2021 Studio Kestra +/* Copyright 2023 Cipulot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,4 +14,8 @@ * along with this program. If not, see . */ -#include "galatea.h" +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_prox/ansi_iso/info.json b/keyboards/cipulot/ec_prox/ansi_iso/info.json new file mode 100644 index 000000000000..df1ad3ba6bb4 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/info.json @@ -0,0 +1,182 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Pro X ANSI/ISO", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "mouse_key": { + "enabled": true + }, + "processor": "STM32F401", + "rgblight": { + "led_count": 22, + "pin": "B12", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "url": "https://www.github.com/Cipulot/EC-Pro-X", + "usb": { + "device_version": "0.0.1", + "pid": "0x6B98", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "0,13", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "0,14", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "label": "2,13", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 }, + { "label": "3,0", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "3,13", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "3,14", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "4,6", "matrix": [4, 6], "w": 6, "x": 4, "y": 4 }, + { "label": "4,9", "matrix": [4, 9], "w": 1.5, "x": 10, "y": 4 }, + { "label": "4,10", "matrix": [4, 10], "x": 11.5, "y": 4 } + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "0,13", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "0,14", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "2,13", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "3,13", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "3,14", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "4,6", "matrix": [4, 6], "w": 6, "x": 4, "y": 4 }, + { "label": "4,9", "matrix": [4, 9], "w": 1.5, "x": 10, "y": 4 }, + { "label": "4,10", "matrix": [4, 10], "x": 11.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/60_hhkb/keymap.c b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/60_hhkb/keymap.c new file mode 100644 index 000000000000..10c7ffb65fdc --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/60_hhkb/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI), + + [1] = LAYOUT_60_hhkb( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______), + [3] = LAYOUT_60_hhkb( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/default/keymap.c b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/default/keymap.c new file mode 100644 index 000000000000..430ed0bafa2e --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/config.h b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/keymap.c b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/keymap.c new file mode 100644 index 000000000000..430ed0bafa2e --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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] = { + // clang-format off + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/rules.mk b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/via_apc.c b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/keymaps/via/via_apc.c @@ -0,0 +1,156 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "action.h" +#include "via.h" + +void apc_init_thresholds(void); +void apc_set_threshold(bool is_for_actuation); + +// Declaring an _apc_config_t struct that will store our data +typedef struct _apc_config_t { + uint16_t actuation_threshold; + uint16_t release_threshold; +} apc_config; + +// Check if the size of the reserved persistent memory is the same as the size of struct apc_config +_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +// Declaring a new variable apc of type apc_config +apc_config apc; + +// Declaring enums for VIA config menu +enum via_apc_enums { + // clang-format off + id_apc_actuation_threshold = 1, + id_apc_release_threshold = 2 + // clang-format on +}; + +// Initializing persistent memory configuration: default values are declared and stored in PMEM +void eeconfig_init_user(void) { + // Default values + apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; + apc.release_threshold = DEFAULT_RELEASE_LEVEL; + // Write default value to EEPROM now + eeconfig_update_user_datablock(&apc); +} + +// On Keyboard startup +void keyboard_post_init_user(void) { + // Read custom menu variables from memory + eeconfig_read_user_datablock(&apc); + apc_init_thresholds(); +} + +// Handle the data received by the keyboard from the VIA menus +void apc_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + apc.actuation_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(true); + break; + } + case id_apc_release_threshold: { + apc.release_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(false); + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void apc_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + value_data[0] = apc.actuation_threshold >> 8; + value_data[1] = apc.actuation_threshold & 0xFF; + break; + } + case id_apc_release_threshold: { + value_data[0] = apc.release_threshold >> 8; + value_data[1] = apc.release_threshold & 0xFF; + break; + } + } +} + +// Save the data to persistent memory after changes are made +void apc_config_save(void) { + eeconfig_update_user_datablock(&apc); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + apc_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + apc_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + apc_config_save(); + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Initialize the thresholds +void apc_init_thresholds(void) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + ecsm_config.ecsm_release_threshold = apc.release_threshold; + + // Update the ecsm_config + ecsm_update(&ecsm_config); +} + +// Set the thresholds +void apc_set_threshold(bool is_for_actuation) { + if (is_for_actuation) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + + } else { + ecsm_config.ecsm_release_threshold = apc.release_threshold; + } + // Update the ecsm_config + ecsm_update(&ecsm_config); +} diff --git a/keyboards/cipulot/ec_prox/ansi_iso/matrix.c b/keyboards/cipulot/ec_prox/ansi_iso/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/matrix.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "matrix.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +void matrix_init_custom(void) { + // Default values, overwritten by VIA if enabled later + ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL; + ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL; + + ecsm_init(&ecsm_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ecsm_matrix_scan(current_matrix); + +// RAW matrix values on console +#ifdef CONSOLE_ENABLE + static int cnt = 0; + if (cnt++ == 350) { + cnt = 0; + ecsm_print_matrix(); + } +#endif + return updated; +} diff --git a/keyboards/cipulot/ec_prox/ansi_iso/mcuconf.h b/keyboards/cipulot/ec_prox/ansi_iso/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_prox/ansi_iso/readme.md b/keyboards/cipulot/ec_prox/ansi_iso/readme.md new file mode 100644 index 000000000000..2afa33514ac6 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/readme.md @@ -0,0 +1,27 @@ +# EC Pro X ANSI/ISO + +![EC Pro X ANSI/ISO PCB](https://i.imgur.com/TYhUrV0h.png) + +Open source replacement PCB kit for the HHKB Pro 2 and Pro 3 keyboards using the ANSI case. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Pro X ANSI_ISO PCB +* Hardware Availability: [EC Pro X](https://github.com/cipulot/EC-Pro-X) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_prox/ansi_iso:default + +Flashing example for this keyboard: + + make cipulot/ec_prox/ansi_iso: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 Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk new file mode 100644 index 000000000000..ed348e861860 --- /dev/null +++ b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c diff --git a/keyboards/cipulot/ec_prox/jis/config.h b/keyboards/cipulot/ec_prox/jis/config.h new file mode 100644 index 000000000000..1c6a836867dd --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/config.h @@ -0,0 +1,45 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Custom matrix pins and port select array */ +#define MATRIX_ROW_PINS \ + { A7, B0, A4, A5, A6 } +#define MATRIX_COL_CHANNELS \ + { 2, 1, 0, 3, 5, 7, 4, 6 } +#define MUX_SEL_PINS \ + { B4, B5, B6 } + +/* Hardware peripherals pins */ +#define APLEX_EN_PIN_0 B7 +#define APLEX_EN_PIN_1 B3 +#define DISCHARGE_PIN A2 +#define ANALOG_PORT A1 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define DEFAULT_ACTUATION_LEVEL 550 +#define DEFAULT_RELEASE_LEVEL 500 + +#define DISCHARGE_TIME 10 diff --git a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c new file mode 100644 index 000000000000..81003dd36a41 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.c @@ -0,0 +1,183 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "print.h" +#include "wait.h" + +/* Pin and port array */ +const uint32_t row_pins[] = MATRIX_ROW_PINS; +const uint8_t col_channels[] = MATRIX_COL_CHANNELS; +const uint32_t mux_sel_pins[] = MUX_SEL_PINS; + +static ecsm_config_t config; +static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +static inline void discharge_capacitor(void) { + writePinLow(DISCHARGE_PIN); +} +static inline void charge_capacitor(uint8_t row) { + writePinHigh(DISCHARGE_PIN); + writePinHigh(row_pins[row]); +} + +static inline void init_mux_sel(void) { + for (int idx = 0; idx < 3; idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +static inline void select_mux(uint8_t col) { + uint8_t ch = col_channels[col]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +static inline void init_row(void) { + for (int idx = 0; idx < MATRIX_ROWS; idx++) { + setPinOutput(row_pins[idx]); + writePinLow(row_pins[idx]); + } +} + +/* Initialize the peripherals pins */ +int ecsm_init(ecsm_config_t const* const ecsm_config) { + // Initialize config + config = *ecsm_config; + + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + //Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutputOpenDrain(DISCHARGE_PIN); + + // Initialize drive lines + init_row(); + + // Initialize multiplexer select pin + init_mux_sel(); + + // Enable AMUX + setPinOutput(APLEX_EN_PIN_0); + writePinLow(APLEX_EN_PIN_0); + setPinOutput(APLEX_EN_PIN_1); + writePinLow(APLEX_EN_PIN_1); + + return 0; +} + +int ecsm_update(ecsm_config_t const* const ecsm_config) { + // Save config + config = *ecsm_config; + return 0; +} + +// Read the capacitive sensor value +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + if (channel == 0) { + writePinHigh(APLEX_EN_PIN_0); + select_mux(col); + writePinLow(APLEX_EN_PIN_0); + } else { + writePinHigh(APLEX_EN_PIN_1); + select_mux(col); + writePinLow(APLEX_EN_PIN_1); + } + + // Set strobe pins to low state + writePinLow(row_pins[row]); + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Press to release + if (current_state && sw_value < config.ecsm_actuation_threshold) { + *current_row &= ~(1 << col); + return true; + } + + // Release to press + if ((!current_state) && sw_value > config.ecsm_release_threshold) { + *current_row |= (1 << col); + return true; + } + + return false; +} + +// Scan key values and update matrix state +bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_1); + for (int col = 0; col < sizeof(col_channels); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]); + } + } + + // Disable AMUX of channel 1 + writePinHigh(APLEX_EN_PIN_0); + for (int col = 0; col < (sizeof(col_channels) - 2); col++) { + for (int row = 0; row < MATRIX_ROWS; row++) { + ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col); + updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]); + } + } + return updated; +} + +// Debug print key values +void ecsm_print_matrix(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + uprintf("%4d", ecsm_sw_value[row][col]); + if (col < (MATRIX_COLS - 1)) { + print(","); + } + } + print("\n"); + } + print("\n"); +} diff --git a/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/ec_switch_matrix.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t ecsm_actuation_threshold; // threshold for key release + uint16_t ecsm_release_threshold; // threshold for key press +} ecsm_config_t; + +ecsm_config_t ecsm_config; + +int ecsm_init(ecsm_config_t const* const ecsm_config); +int ecsm_update(ecsm_config_t const* const ecsm_config); +bool ecsm_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ecsm_print_matrix(void); diff --git a/keyboards/irene/irene.c b/keyboards/cipulot/ec_prox/jis/halconf.h similarity index 87% rename from keyboards/irene/irene.c rename to keyboards/cipulot/ec_prox/jis/halconf.h index f0f4751c52b3..5b71acecbbc8 100644 --- a/keyboards/irene/irene.c +++ b/keyboards/cipulot/ec_prox/jis/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2021 Ramon Imbao +/* Copyright 2023 Cipulot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,4 +14,8 @@ * along with this program. If not, see . */ -#include "irene.h" +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_prox/jis/info.json b/keyboards/cipulot/ec_prox/jis/info.json new file mode 100644 index 000000000000..bcb5a11a1236 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/info.json @@ -0,0 +1,125 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Pro X JIS", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "mouse_key": { + "enabled": true + }, + "processor": "STM32F401", + "rgblight": { + "led_count": 22, + "pin": "B12", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "url": "https://www.github.com/Cipulot/EC-Pro-X", + "usb": { + "device_version": "0.0.1", + "pid": "0x6B99", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_jp": { + "layout": [ + { "label": "0,0", "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "label": "0,1", "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "label": "0,2", "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "label": "0,3", "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "label": "0,4", "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "label": "0,5", "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "label": "0,6", "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "label": "0,7", "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "label": "0,8", "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "label": "0,9", "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "label": "0,10", "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "label": "0,11", "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "label": "0,12", "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "label": "0,13", "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "label": "1,13", "matrix": [1, 13], "x": 14.0, "y": 0.0 }, + { "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "h": 2, "label": "2,13", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1.0 }, + { "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "label": "3,0", "matrix": [3, 0], "w": 2, "x": 0.0, "y": 3.0 }, + { "label": "3,1", "matrix": [3, 1], "x": 2.0, "y": 3.0 }, + { "label": "3,2", "matrix": [3, 2], "x": 3.0, "y": 3.0 }, + { "label": "3,3", "matrix": [3, 3], "x": 4.0, "y": 3.0 }, + { "label": "3,4", "matrix": [3, 4], "x": 5.0, "y": 3.0 }, + { "label": "3,5", "matrix": [3, 5], "x": 6.0, "y": 3.0 }, + { "label": "3,6", "matrix": [3, 6], "x": 7.0, "y": 3.0 }, + { "label": "3,7", "matrix": [3, 7], "x": 8.0, "y": 3.0 }, + { "label": "3,8", "matrix": [3, 8], "x": 9.0, "y": 3.0 }, + { "label": "3,9", "matrix": [3, 9], "x": 10.0, "y": 3.0 }, + { "label": "3,10", "matrix": [3, 10], "x": 11.0, "y": 3.0 }, + { "label": "3,11", "matrix": [3, 11], "x": 12.0, "y": 3.0 }, + { "label": "3,12", "matrix": [3, 12], "x": 13.0, "y": 3.0 }, + { "label": "3,13", "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "label": "4,0", "matrix": [4, 0], "x": 0.0, "y": 4.0 }, + { "label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.0 }, + { "label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.0 }, + { "label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.0 }, + { "label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.0 }, + { "label": "4,5", "matrix": [4, 5], "w": 2.5, "x": 5.25, "y": 4.0 }, + { "label": "4,7", "matrix": [4, 7], "x": 7.75, "y": 4.0 }, + { "label": "4,8", "matrix": [4, 8], "x": 8.75, "y": 4.0 }, + { "label": "4,9", "matrix": [4, 9], "x": 9.75, "y": 4.0 }, + { "label": "4,10", "matrix": [4, 10], "x": 10.75, "y": 4.0 }, + { "label": "4,11", "matrix": [4, 11], "x": 12.0, "y": 4.0 }, + { "label": "4,12", "matrix": [4, 12], "x": 13.0, "y": 4.0 }, + { "label": "4,13", "matrix": [4, 13], "x": 14.0, "y": 4.0 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c b/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c new file mode 100644 index 000000000000..979319a62209 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_jp( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, + MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_jp( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______), + + [2] = LAYOUT_jp( + RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_jp( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h b/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c b/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c new file mode 100644 index 000000000000..cc9382531d20 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_jp( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, 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_ENT, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_UP, KC_RSFT, + MO(1), JP_ZKHK, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_jp( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_PENT, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______), + + [2] = LAYOUT_jp( + RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_jp( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk b/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c b/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/keymaps/via/via_apc.c @@ -0,0 +1,156 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "action.h" +#include "via.h" + +void apc_init_thresholds(void); +void apc_set_threshold(bool is_for_actuation); + +// Declaring an _apc_config_t struct that will store our data +typedef struct _apc_config_t { + uint16_t actuation_threshold; + uint16_t release_threshold; +} apc_config; + +// Check if the size of the reserved persistent memory is the same as the size of struct apc_config +_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +// Declaring a new variable apc of type apc_config +apc_config apc; + +// Declaring enums for VIA config menu +enum via_apc_enums { + // clang-format off + id_apc_actuation_threshold = 1, + id_apc_release_threshold = 2 + // clang-format on +}; + +// Initializing persistent memory configuration: default values are declared and stored in PMEM +void eeconfig_init_user(void) { + // Default values + apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; + apc.release_threshold = DEFAULT_RELEASE_LEVEL; + // Write default value to EEPROM now + eeconfig_update_user_datablock(&apc); +} + +// On Keyboard startup +void keyboard_post_init_user(void) { + // Read custom menu variables from memory + eeconfig_read_user_datablock(&apc); + apc_init_thresholds(); +} + +// Handle the data received by the keyboard from the VIA menus +void apc_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + apc.actuation_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(true); + break; + } + case id_apc_release_threshold: { + apc.release_threshold = value_data[1] | (value_data[0] << 8); + apc_set_threshold(false); + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void apc_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_apc_actuation_threshold: { + value_data[0] = apc.actuation_threshold >> 8; + value_data[1] = apc.actuation_threshold & 0xFF; + break; + } + case id_apc_release_threshold: { + value_data[0] = apc.release_threshold >> 8; + value_data[1] = apc.release_threshold & 0xFF; + break; + } + } +} + +// Save the data to persistent memory after changes are made +void apc_config_save(void) { + eeconfig_update_user_datablock(&apc); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + apc_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + apc_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + apc_config_save(); + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Initialize the thresholds +void apc_init_thresholds(void) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + ecsm_config.ecsm_release_threshold = apc.release_threshold; + + // Update the ecsm_config + ecsm_update(&ecsm_config); +} + +// Set the thresholds +void apc_set_threshold(bool is_for_actuation) { + if (is_for_actuation) { + ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; + + } else { + ecsm_config.ecsm_release_threshold = apc.release_threshold; + } + // Update the ecsm_config + ecsm_update(&ecsm_config); +} diff --git a/keyboards/cipulot/ec_prox/jis/matrix.c b/keyboards/cipulot/ec_prox/jis/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/matrix.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "ec_switch_matrix.h" +#include "matrix.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +void matrix_init_custom(void) { + // Default values, overwritten by VIA if enabled later + ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL; + ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL; + + ecsm_init(&ecsm_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ecsm_matrix_scan(current_matrix); + +// RAW matrix values on console +#ifdef CONSOLE_ENABLE + static int cnt = 0; + if (cnt++ == 350) { + cnt = 0; + ecsm_print_matrix(); + } +#endif + return updated; +} diff --git a/keyboards/cipulot/ec_prox/jis/mcuconf.h b/keyboards/cipulot/ec_prox/jis/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_prox/jis/readme.md b/keyboards/cipulot/ec_prox/jis/readme.md new file mode 100644 index 000000000000..f1fa471cc99c --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/readme.md @@ -0,0 +1,27 @@ +# EC Pro X JIS + +![EC Pro X JIS PCB](https://i.imgur.com/yJdPOcbh.png) + +Open source replacement PCB kit for the HHKB Pro 2 and Pro 3 keyboards using the JIS case. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Pro X JP PCB +* Hardware Availability: [EC Pro X](https://github.com/cipulot/EC-Pro-X) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_prox/jis:default + +Flashing example for this keyboard: + + make cipulot/ec_prox/jis: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 Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_prox/jis/rules.mk b/keyboards/cipulot/ec_prox/jis/rules.mk new file mode 100644 index 000000000000..ed348e861860 --- /dev/null +++ b/keyboards/cipulot/ec_prox/jis/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c diff --git a/keyboards/citrus/erdnuss65/config.h b/keyboards/citrus/erdnuss65/config.h new file mode 100644 index 000000000000..5e4a88b9e23f --- /dev/null +++ b/keyboards/citrus/erdnuss65/config.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Citrus Lab + * + * 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 + +// The pin connected to the data pin of the LEDs +#define RGBLIGHT_LAYERS//允许您定义可打开或关闭的照明层。非常适合显示当前键盘层或大写锁定状态。 +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF//如果已定义,则即使 RGB 光源处于关闭状态,也会显示照明图层。 + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE//尝试使开关状态与键盘指示灯状态保持一致 \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c b/keyboards/citrus/erdnuss65/erdnuss65.c similarity index 65% rename from keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c rename to keyboards/citrus/erdnuss65/erdnuss65.c index 2c518a543102..d10f476c66d1 100644 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c +++ b/keyboards/citrus/erdnuss65/erdnuss65.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 Citrus Lab * * 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 @@ -13,10 +13,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +#include "quantum.h" -static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) { - hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time; - return hsv; -} - -bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); } \ No newline at end of file +//Indicator light function +bool led_update_kb(led_t led_state) { + if (led_update_user(led_state)) { + if (led_state.caps_lock) { + rgblight_setrgb_at(255, 255, 255, 0); //white + } else { + rgblight_setrgb_at(0, 0, 0, 0); + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/info.json b/keyboards/citrus/erdnuss65/info.json new file mode 100644 index 000000000000..a33d44561dc9 --- /dev/null +++ b/keyboards/citrus/erdnuss65/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "Erdnuss65", + "manufacturer": "Citrus Lab", + "processor": "STM32F103", + "bootloader": "stm32duino", + "maintainer": "ctt", + "usb": { + "vid": "0x636C", + "pid": "0x6374", + "device_version": "0.0.1" + }, + + "matrix_pins": { + "rows": + ["B10","B1", "B0","A7","A6"], + "cols": + ["B12","B14","B15","A8","B13","B3","B4","B5","A1","A2","A0","A3","A4","A5","B11"] + }, + + "diode_direction": "COL2ROW", + + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "backlight": false, + "rgblight": true, + "audio": false + }, + "rgblight": { + "pin": "A15", + "led_count": 1 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ESC K00 (B10,B12)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1 K01 (B10,B14)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2 K02 (B10,B15)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3 K03 (B10,A8)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4 K04 (B10,B13)", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5 K05 (B10,B3)", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6 K06 (B10,B4)", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7 K07 (B10,B5)", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8 K08 (B10,A1)", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9 K09 (B10,A2)", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0 K0A (B10,A0)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "- K0B (B10,A3)", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "= K0C (B10,A4)", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BACKSPACE K0D (B10,A5)", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "INS (B10,B11)", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "TAB (B1,B12)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q (B1,B14)", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W (B1,B15)", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E (B1,A8)", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R (B1,B13)", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T (B1,B3)", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y (B1,B4)", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U (B1,B5)", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I (B1,A1)", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O (B1,A2)", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P (B1,A0)", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[ (B1,A3)", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "] (B1,A4)", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\" (B1,A5)", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "DEL (B1,B11)", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "CAPSLOCK (B0,B12)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"label": "A (B0,B14)", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S (B0,B15)", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D (B0,A8)", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F (B0,B13)", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G (B0,B3)", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H (B0,B4)", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J (B0,B5)", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K (B0,A1)", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L (B0,A2)", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "; (B0,A0)", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "' (B0,A3)", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ENTER (B0,A5)", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PGUP (B0,B11)", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "LSHIFT (A7,B12)", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z (A7,B14)", "matrix": [3, 1], "x": 2.25, "y": 3}, + {"label": "X (A7,B15)", "matrix": [3, 2], "x": 3.25, "y": 3}, + {"label": "C (A7,A8)", "matrix": [3, 3], "x": 4.25, "y": 3}, + {"label": "V (A7,B13)", "matrix": [3, 4], "x": 5.25, "y": 3}, + {"label": "B (A7,B3)", "matrix": [3, 5], "x": 6.25, "y": 3}, + {"label": "N (A7,B4)", "matrix": [3, 6], "x": 7.25, "y": 3}, + {"label": "M (A7,B5)", "matrix": [3, 7], "x": 8.25, "y": 3}, + {"label": ", (A7,A1)", "matrix": [3, 8], "x": 9.25, "y": 3}, + {"label": ". (A7,A2)", "matrix": [3, 9], "x": 10.25, "y": 3}, + {"label": "/ (A7,A0)", "matrix": [3, 10], "x": 11.25, "y": 3}, + {"label": "RSHIFT (A7,A4)", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "UP (A7,A5)", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "PGDN (A7,B11)", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "LCTRL (A6,B12)", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "WIN (A6,B14)", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "ALT (A6,B15)", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "SPACE (A6,A8)", "matrix": [4, 3], "x": 4, "y": 4, "w": 7}, + {"label": "FN (A6,A0)", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "LEFT (A6,A4)", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "DOWN (A6,A5)", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "RIGHT (A6,B11)", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/citrus/erdnuss65/keymaps/default/keymap.c b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c new file mode 100644 index 000000000000..0daef5af6461 --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2023 Citrus Lab +// SPDX-License-Identifier: GPL-2.0 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + ) +}; + diff --git a/keyboards/citrus/erdnuss65/keymaps/via/keymap.c b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c new file mode 100644 index 000000000000..0f1bf9525e66 --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +// Copyright 2023 Citrus Lab +// SPDX-License-Identifier: GPL-2.0 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/citrus/erdnuss65/keymaps/via/rules.mk b/keyboards/citrus/erdnuss65/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/readme.md b/keyboards/citrus/erdnuss65/readme.md new file mode 100644 index 000000000000..0bb952c1115f --- /dev/null +++ b/keyboards/citrus/erdnuss65/readme.md @@ -0,0 +1,22 @@ +# Erdnuss65 + +* Keyboard Maintainer: [Citrus Lab](https://github.com/ctt-t) +* Hardware Supported: STM32F103C8T6 + +Make example for this keyboard (after setting up your build environment): + + make citrus/erdnuss65:default + +Flashing example for this keyboard: + + make citrus/erdnuss65: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 diff --git a/keyboards/citrus/erdnuss65/rules.mk b/keyboards/citrus/erdnuss65/rules.mk new file mode 100644 index 000000000000..80b5a0b8f5a5 --- /dev/null +++ b/keyboards/citrus/erdnuss65/rules.mk @@ -0,0 +1,2 @@ +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file diff --git a/keyboards/citrus/readme.md b/keyboards/citrus/readme.md new file mode 100644 index 000000000000..bde8a9620f88 --- /dev/null +++ b/keyboards/citrus/readme.md @@ -0,0 +1,2 @@ +# Citrus Lab +QMK folders for PCB commissions. \ No newline at end of file diff --git a/keyboards/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json index 3f947eac2abb..348e6e6dca33 100644 --- a/keyboards/converter/modelm_ssk/info.json +++ b/keyboards/converter/modelm_ssk/info.json @@ -15,453 +15,108 @@ }, "processor": "at90usb1286", "bootloader": "halfkay", - "layouts": - { - "LAYOUT": - { - "layout": - [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "F1", - "x": 2, - "y": 0 - }, - { - "label": "F2", - "x": 3, - "y": 0 - }, - { - "label": "F3", - "x": 4, - "y": 0 - }, - { - "label": "F4", - "x": 5, - "y": 0 - }, - { - "label": "F5", - "x": 6.5, - "y": 0 - }, - { - "label": "F6", - "x": 7.5, - "y": 0 - }, - { - "label": "F7", - "x": 8.5, - "y": 0 - }, - { - "label": "F8", - "x": 9.5, - "y": 0 - }, - { - "label": "F9", - "x": 11, - "y": 0 - }, - { - "label": "F10", - "x": 12, - "y": 0 - }, - { - "label": "F11", - "x": 13, - "y": 0 - }, - { - "label": "F12", - "x": 14, - "y": 0 - }, - { - "label": "PrtSc", - "x": 15.25, - "y": 0 - }, - { - "label": "Scroll Lock", - "x": 16.25, - "y": 0 - }, - { - "label": "Pause", - "x": 17.25, - "y": 0 - }, - { - "label": "~", - "x": 0, - "y": 1.5 - }, - { - "label": "!", - "x": 1, - "y": 1.5 - }, - { - "label": "@", - "x": 2, - "y": 1.5 - }, - { - "label": "#", - "x": 3, - "y": 1.5 - }, - { - "label": "$", - "x": 4, - "y": 1.5 - }, - { - "label": "%", - "x": 5, - "y": 1.5 - }, - { - "label": "^", - "x": 6, - "y": 1.5 - }, - { - "label": "&", - "x": 7, - "y": 1.5 - }, - { - "label": "*", - "x": 8, - "y": 1.5 - }, - { - "label": "(", - "x": 9, - "y": 1.5 - }, - { - "label": ")", - "x": 10, - "y": 1.5 - }, - { - "label": "_", - "x": 11, - "y": 1.5 - }, - { - "label": "+", - "x": 12, - "y": 1.5 - }, - { - "label": "Backspace", - "x": 13, - "y": 1.5, - "w": 2 - }, - { - "label": "Insert", - "x": 15.25, - "y": 1.5 - }, - { - "label": "Home", - "x": 16.25, - "y": 1.5 - }, - { - "label": "PgUp", - "x": 17.25, - "y": 1.5 - }, - { - "label": "Tab", - "x": 0, - "y": 2.5, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 2.5 - }, - { - "label": "W", - "x": 2.5, - "y": 2.5 - }, - { - "label": "E", - "x": 3.5, - "y": 2.5 - }, - { - "label": "R", - "x": 4.5, - "y": 2.5 - }, - { - "label": "T", - "x": 5.5, - "y": 2.5 - }, - { - "label": "Y", - "x": 6.5, - "y": 2.5 - }, - { - "label": "U", - "x": 7.5, - "y": 2.5 - }, - { - "label": "I", - "x": 8.5, - "y": 2.5 - }, - { - "label": "O", - "x": 9.5, - "y": 2.5 - }, - { - "label": "P", - "x": 10.5, - "y": 2.5 - }, - { - "label": "{", - "x": 11.5, - "y": 2.5 - }, - { - "label": "}", - "x": 12.5, - "y": 2.5 - }, - { - "label": "|", - "x": 13.5, - "y": 2.5, - "w": 1.5 - }, - { - "label": "Delete", - "x": 15.25, - "y": 2.5 - }, - { - "label": "End", - "x": 16.25, - "y": 2.5 - }, - { - "label": "PgDn", - "x": 17.25, - "y": 2.5 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 3.5, - "w": 1.5 - }, - { - "label": "A", - "x": 1.75, - "y": 3.5 - }, - { - "label": "S", - "x": 2.75, - "y": 3.5 - }, - { - "label": "D", - "x": 3.75, - "y": 3.5 - }, - { - "label": "F", - "x": 4.75, - "y": 3.5 - }, - { - "label": "G", - "x": 5.75, - "y": 3.5 - }, - { - "label": "H", - "x": 6.75, - "y": 3.5 - }, - { - "label": "J", - "x": 7.75, - "y": 3.5 - }, - { - "label": "K", - "x": 8.75, - "y": 3.5 - }, - { - "label": "L", - "x": 9.75, - "y": 3.5 - }, - { - "label": ":", - "x": 10.75, - "y": 3.5 - }, - { - "label": "\"", - "x": 11.75, - "y": 3.5 - }, - { - "label": "~", - "x": 12.75, - "y": 3.5 - }, - { - "label": "Enter", - "x": 13.75, - "y": 3.5, - "w": 1.25 - }, - { - "label": "Shift", - "x": 0, - "y": 4.5, - "w": 1.25 - }, - { - "label": "|", - "x": 1.25, - "y": 4.5 - }, - { - "label": "Z", - "x": 2.25, - "y": 4.5 - }, - { - "label": "X", - "x": 3.25, - "y": 4.5 - }, - { - "label": "C", - "x": 4.25, - "y": 4.5 - }, - { - "label": "V", - "x": 5.25, - "y": 4.5 - }, - { - "label": "B", - "x": 6.25, - "y": 4.5 - }, - { - "label": "N", - "x": 7.25, - "y": 4.5 - }, - { - "label": "M", - "x": 8.25, - "y": 4.5 - }, - { - "label": "<", - "x": 9.25, - "y": 4.5 - }, - { - "label": ">", - "x": 10.25, - "y": 4.5 - }, - { - "label": "?", - "x": 11.25, - "y": 4.5 - }, - { - "label": "Shift", - "x": 12.25, - "y": 4.5, - "w": 2.75 - }, - { - "label": "↑", - "x": 16.25, - "y": 4.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 5.5, - "w": 1.5 - }, - { - "label": "Alt", - "x": 2.5, - "y": 5.5, - "w": 1.5 - }, - { - "x": 4, - "y": 5.5, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 5.5, - "w": 1.5 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 5.5, - "w": 1.5 - }, - { - "label": "←", - "x": 15.25, - "y": 5.5 - }, - { - "label": "↓", - "x": 16.25, - "y": 5.5 - }, - { - "label": "→", - "x": 17.25, - "y": 5.5 - } + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [7, 2], "x": 0, "y": 0}, + + {"matrix": [5, 3], "x": 2, "y": 0}, + {"matrix": [5, 4], "x": 3, "y": 0}, + {"matrix": [6, 4], "x": 4, "y": 0}, + {"matrix": [7, 4], "x": 5, "y": 0}, + + {"matrix": [7, 6], "x": 6.5, "y": 0}, + {"matrix": [7, 8], "x": 7.5, "y": 0}, + {"matrix": [6, 9], "x": 8.5, "y": 0}, + {"matrix": [5, 9], "x": 9.5, "y": 0}, + + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [4, 6], "x": 12, "y": 0}, + {"matrix": [4, 11], "x": 13, "y": 0}, + {"matrix": [4, 12], "x": 14, "y": 0}, + + {"matrix": [4, 15], "x": 15.25, "y": 0}, + {"matrix": [3, 15], "x": 16.25, "y": 0}, + {"matrix": [1, 14], "x": 17.25, "y": 0}, + + {"matrix": [5, 2], "x": 0, "y": 1.5}, + {"matrix": [4, 2], "x": 1, "y": 1.5}, + {"matrix": [4, 3], "x": 2, "y": 1.5}, + {"matrix": [4, 4], "x": 3, "y": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 1.5}, + {"matrix": [5, 5], "x": 5, "y": 1.5}, + {"matrix": [5, 7], "x": 6, "y": 1.5}, + {"matrix": [4, 7], "x": 7, "y": 1.5}, + {"matrix": [4, 8], "x": 8, "y": 1.5}, + {"matrix": [4, 9], "x": 9, "y": 1.5}, + {"matrix": [4, 10], "x": 10, "y": 1.5}, + {"matrix": [5, 10], "x": 11, "y": 1.5}, + {"matrix": [5, 8], "x": 12, "y": 1.5}, + {"matrix": [6, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [5, 12], "x": 15.25, "y": 1.5}, + {"matrix": [5, 14], "x": 16.25, "y": 1.5}, + {"matrix": [5, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [3, 2], "x": 1.5, "y": 2.5}, + {"matrix": [3, 3], "x": 2.5, "y": 2.5}, + {"matrix": [3, 4], "x": 3.5, "y": 2.5}, + {"matrix": [3, 5], "x": 4.5, "y": 2.5}, + {"matrix": [6, 5], "x": 5.5, "y": 2.5}, + {"matrix": [6, 7], "x": 6.5, "y": 2.5}, + {"matrix": [3, 7], "x": 7.5, "y": 2.5}, + {"matrix": [3, 8], "x": 8.5, "y": 2.5}, + {"matrix": [3, 9], "x": 9.5, "y": 2.5}, + {"matrix": [3, 10], "x": 10.5, "y": 2.5}, + {"matrix": [6, 10], "x": 11.5, "y": 2.5}, + {"matrix": [6, 8], "x": 12.5, "y": 2.5}, + {"matrix": [2, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [5, 11], "x": 15.25, "y": 2.5}, + {"matrix": [4, 14], "x": 16.25, "y": 2.5}, + {"matrix": [4, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [6, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [2, 2], "x": 1.75, "y": 3.5}, + {"matrix": [2, 3], "x": 2.75, "y": 3.5}, + {"matrix": [2, 4], "x": 3.75, "y": 3.5}, + {"matrix": [2, 5], "x": 4.75, "y": 3.5}, + {"matrix": [7, 5], "x": 5.75, "y": 3.5}, + {"matrix": [7, 7], "x": 6.75, "y": 3.5}, + {"matrix": [2, 7], "x": 7.75, "y": 3.5}, + {"matrix": [2, 8], "x": 8.75, "y": 3.5}, + {"matrix": [2, 9], "x": 9.75, "y": 3.5}, + {"matrix": [2, 10], "x": 10.75, "y": 3.5}, + {"matrix": [7, 10], "x": 11.75, "y": 3.5}, + {"matrix": [1, 10], "x": 12.75, "y": 3.5}, + {"matrix": [1, 6], "x": 13.75, "y": 3.5, "w": 1.25}, + + {"matrix": [6, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [7, 3], "x": 1.25, "y": 4.5}, + {"matrix": [1, 2], "x": 2.25, "y": 4.5}, + {"matrix": [1, 3], "x": 3.25, "y": 4.5}, + {"matrix": [1, 4], "x": 4.25, "y": 4.5}, + {"matrix": [1, 5], "x": 5.25, "y": 4.5}, + {"matrix": [0, 5], "x": 6.25, "y": 4.5}, + {"matrix": [0, 7], "x": 7.25, "y": 4.5}, + {"matrix": [1, 7], "x": 8.25, "y": 4.5}, + {"matrix": [1, 8], "x": 9.25, "y": 4.5}, + {"matrix": [1, 9], "x": 10.25, "y": 4.5}, + {"matrix": [0, 10], "x": 11.25, "y": 4.5}, + {"matrix": [1, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [7, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [7, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [0, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [0, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [1, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [0, 14], "x": 15.25, "y": 5.5}, + {"matrix": [0, 11], "x": 16.25, "y": 5.5}, + {"matrix": [0, 12], "x": 17.25, "y": 5.5} ] } } diff --git a/keyboards/converter/modelm_ssk/modelm_ssk.h b/keyboards/converter/modelm_ssk/modelm_ssk.h deleted file mode 100644 index 5c4b9b80eac0..000000000000 --- a/keyboards/converter/modelm_ssk/modelm_ssk.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2019-2021 iw0rm3r, tiltowait - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "quantum.h" - -/* This a shortcut to help you visually see your layout. - * The first section contains "names" for physical keys of the keyboard - * and defines their position on the board. - * The second section defines position of the keys on the switch matrix - * (where COLUMNS and ROWS crosses). */ - -#define LAYOUT( \ - K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5P, \ - \ - K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, K4P, K4Q, \ - K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, \ - K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, \ - K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, \ - K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H \ -) \ -{ \ -/* 00 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1G, K0C, K1H, KC_NO, KC_NO, K1L, K0G, K0H, KC_NO, K0F, K0D }, \ -/* 01 */ { K0E, K1M, K1C, K1D, K1E, K1F, K2N, K1I, K1J, K1K, KC_NO, KC_NO, KC_NO, KC_NO, K5P, KC_NO }, \ -/* 02 */ { KC_NO, KC_NO, K2B, K2C, K2D, K2E, K3N, K2H, K2I, K2J, K2K, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* 03 */ { KC_NO, KC_NO, K3B, K3C, K3D, K3E, KC_NO, K3H, K3I, K3J, K3K, KC_NO, KC_NO, KC_NO, KC_NO, K5O }, \ -/* 04 */ { KC_NO, KC_NO, K4B, K4C, K4D, K4E, K5K, K4H, K4I, K4J, K4K, K5L, K5M, K3Q, K3P, K5N }, \ -/* 05 */ { K0A, KC_NO, K4A, K5B, K5C, K4F, K5J, K4G, K4M, K5I, K4L, K3O, K4O, K4Q, K4P, KC_NO }, \ -/* 06 */ { KC_NO, K1A, K3A, K2A, K5D, K3F, K4N, K3G, K3M, K5H, K3L, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* 07 */ { KC_NO, KC_NO, K5A, KC_NO, K5E, K2F, K5F, K2G, K5G, KC_NO, K2L, KC_NO, KC_NO, KC_NO, K1N, K0B }, \ -} -/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ diff --git a/keyboards/crkbd/keymaps/md40/config.h b/keyboards/crkbd/keymaps/md40/config.h new file mode 100644 index 000000000000..c1ef28df50ec --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/config.h @@ -0,0 +1,41 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +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 TAPPING_FORCE_HOLD +#define TAPPING_TERM 300 + +#undef RGBLED_NUM +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 diff --git a/keyboards/crkbd/keymaps/md40/keymap.c b/keyboards/crkbd/keymaps/md40/keymap.c new file mode 100644 index 000000000000..39ae0bb4e0ba --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2021 Shane Dowling (@shano) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#define KC_ESCC MT(MOD_LCTL, KC_ESC) +#define KC_ENTS MT(MOD_LSFT, KC_ENT) +#define KC_FN MO(_FN) + +enum layers { + _QWERTY, + _FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSPC, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + //|----+----+----+----+----+----+ |----+----+----+----+----+----| + KC_ESCC, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ESC , + //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' + KC_LALT,KC_LGUI,KC_SPC , KC_ENTS,KC_FN,KC_FN + // `----+----+----' `+---+----+----'c + ), + [_FN] = LAYOUT( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + _______,KC_1, KC_2 ,KC_3, KC_4,KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_BSPC, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + _______,KC_EXCLAIM,KC_AT,KC_HASH,KC_DOLLAR,KC_PERCENT, KC_LEFT,KC_DOWN, KC_UP ,KC_RIGHT,KC_LBRC,KC_RBRC, + //|----+----+----+----+----+----+ |----+----+----+----+----+----| + _______, KC_CIRCUMFLEX , KC_AMPR , KC_ASTERISK , KC_LEFT_PAREN , KC_RIGHT_PAREN , KC_MINUS,KC_PLUS,KC_EQL,KC_PIPE,KC_GRAVE,KC_BACKSLASH, + //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' + _______,_______,_______ , _______,_______,_______ + // `----+----+----' `----+----+----' + ) +}; + diff --git a/keyboards/crkbd/keymaps/md40/readme.md b/keyboards/crkbd/keymaps/md40/readme.md new file mode 100644 index 000000000000..ee1e14a0165a --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/readme.md @@ -0,0 +1,19 @@ +# MD40: Minimally Disruptive 40% Keymap + +This keymap is an attempt to go from a standard keyboard layout to a 40% keyboard with minimal disruption. + +Some aims: +- Two layers only +- Existing keyboard positions where possible +- Exceptions where it's not possible +- Exceptions where it makes sense + +Supports crkbd only. + +## Base Layer + +![Base Layer](https://i.imgur.com/hXLP6ush.png) + +## Fn Layer + +![Base Layer](https://i.imgur.com/Sozd1p8h.png) diff --git a/keyboards/crkbd/keymaps/md40/rules.mk b/keyboards/crkbd/keymaps/md40/rules.mk new file mode 100644 index 000000000000..86f4f1e11c01 --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/rules.mk @@ -0,0 +1,8 @@ + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +NKRO_ENABLE = no # Enable N-Key Rollover diff --git a/keyboards/crkbd/keymaps/sharkby7e/config.h b/keyboards/crkbd/keymaps/sharkby7e/config.h index 0ff3549ba90a..60503a51a5a1 100644 --- a/keyboards/crkbd/keymaps/sharkby7e/config.h +++ b/keyboards/crkbd/keymaps/sharkby7e/config.h @@ -29,6 +29,7 @@ along with this program. If not, see . //#define QUICK_TAP_TERM 0 #define TAPPING_TERM 200 + #define IGNORE_MOD_TAP_INTERRUPT #ifdef RGBLIGHT_ENABLE diff --git a/keyboards/crkbd/keymaps/sharkby7e/keymap.c b/keyboards/crkbd/keymaps/sharkby7e/keymap.c index f6d740d6d4d4..a3d88e2c0185 100644 --- a/keyboards/crkbd/keymaps/sharkby7e/keymap.c +++ b/keyboards/crkbd/keymaps/sharkby7e/keymap.c @@ -20,54 +20,55 @@ along with this program. If not, see . #include const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x6_3( - // \--------------------------------------------------------------------| |---------------------------------------------------------------------/ - XXXXXXX, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, XXXXXXX, - // \----------+-------+-------+---------------+---------------+---------| |--------+---------------+---------------+--------+---------+---------/ - XXXXXXX, KC_A, KC_R, LCTL_T(KC_S), LGUI_T(KC_T), KC_G, KC_M, RGUI_T(KC_N), RCTL_T(KC_E), KC_I, KC_O, XXXXXXX, - // \----------+-------+-------+---------------+---------------+---------| |--------+---------------+---------------+--------+---------+---------/ - XXXXXXX, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, - // \----------+-------+-------+---------------+---------------+---------| |--------+---------------+---------------+--------+---------+---------/ - KC_ESC, MO(1), SC_LSPO, KC_SPC, MO(2), KC_TAB -// \---------------+---------------+---------| |--------+---------------+---------------/ + + [0] = LAYOUT_split_3x5_3( + // \-----------------------------------------------------------------| |--------------------------------------------------------------/ + KC_Q, KC_W, LCTL_T(KC_F), KC_P, KC_B, KC_J, KC_L, RCTL_T(KC_U), KC_Y, KC_BSPC, + // \--------------+-------+----------------+--------------+----------| | ---------+---------------+---------------+--------+----------/ + LALT_T(KC_A), KC_R, KC_S, LGUI_T(KC_T), KC_G, KC_M, RGUI_T(KC_N), KC_E, KC_I, KC_O, + // \--------------+-------+----------------+--------------+----------| | ---------+---------------+---------------+--------+----------/ + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + // \--------------+-------+----------------+--------------+----------| | ---------+---------------+---------------+--------+----------/ + RCTL_T(KC_ESC), MO(1), SC_LSPO, KC_SPC, MO(2), MEH_T(KC_TAB) +// \---------------+--------------+----------| |----------+---------------+--------------/ ), - [1] = LAYOUT_split_3x6_3( - //,------------------------------------------------------. ,-----------------------------------------------------. - KC_NO, KC_GRV, KC_TILD, KC_PEQL, KC_UNDS, KC_PIPE, KC_PPLS, KC_7, KC_8, KC_9, KC_BSPC, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO , KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_RPRN, KC_PMNS, RGUI_T(KC_4), RCTL_T(KC_5), KC_6, KC_QUOT, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_SCLN, KC_1, KC_2, KC_3, KC_DQUO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, _______, KC_TRNS, KC_RSFT, MO(3), KC_0 - //`--------------------------' `--------------------------' + [1] = LAYOUT_split_3x5_3( + // \--------------------------------------------------| |----------------------------------------------------------/ + KC_GRV, KC_TILD, KC_PEQL, KC_UNDS, KC_PIPE, KC_PPLS, KC_7, KC_8, KC_9, KC_BSPC, + // \---------+---------+---------+---------+----------| |---------+--------------+--------------+--------+---------/ + KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_RPRN, KC_PMNS, RGUI_T(KC_4), RCTL_T(KC_5), KC_6, KC_QUOT, + // \---------+---------+---------+---------+----------| |---------+--------------+--------------+--------+---------/ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_SCLN, KC_1, KC_2, KC_3, KC_0, + // \---------+---------+---------+---------+----------| |---------+--------------+--------------+--------+---------/ + RCTL_T(KC_ESC), _______, KC_TRNS, KC_RSFT, MO(3), KC_NO + // \----------------+---------+-----------| |---------+--------------+-------------/ ), - [2] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_NO, KC_DEL, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LGUI, MO(3), KC_LSFT, KC_TRNS, _______, KC_RALT - //`--------------------------' `--------------------------' + [2] = LAYOUT_split_3x5_3( + // \----------------------------------------------| |-----------------------------------------------/ + KC_ESC, KC_NO, KC_COMM, KC_DOT, KC_NO, KC_NO, KC_NO, KC_ENT, KC_NO, KC_DEL, + // \--------+--------+---------+--------+---------| |---------+---------+--------+---------+--------/ + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, + // \--------+--------+---------+--------+---------| |---------+---------+--------+---------+--------/ + XXXXXXX, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + // \--------+--------+---------+--------+---------| |---------+---------+--------+---------+--------/ + KC_LGUI, MO(3), KC_LSFT, KC_TRNS, KC_TRNS, KC_RALT + // \--------+--------+---------| |---------+---------+-------/ ), - [3] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT - //`--------------------------' `--------------------------' - ) + [3] = LAYOUT_split_3x5_3( + // \--------------------------------------------. ,---------------------------------------------| + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // \--------+--------+--------+--------+--------| |--------+--------+--------+--------+---------| + RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // \--------+--------+--------+--------+--------| |--------+--------+--------+--------+---------| + RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // \--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+---------| + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT + // \---------------' `--------------------------' + ), }; #ifdef OLED_ENABLE diff --git a/keyboards/ferris/keymaps/via/config.h b/keyboards/ferris/keymaps/via/config.h index 5539c55f1d3a..0d822891d139 100644 --- a/keyboards/ferris/keymaps/via/config.h +++ b/keyboards/ferris/keymaps/via/config.h @@ -7,3 +7,7 @@ #define TAPPING_TERM 230 #define IGNORE_MOD_TAP_INTERRUPT +// Handle master/slave detection on low cost Promicro +#ifdef __AVR__ +# define SPLIT_USB_DETECT +#endif diff --git a/keyboards/geistmaschine/geist/geist.c b/keyboards/geistmaschine/geist/geist.c new file mode 100644 index 000000000000..2f6825e2ee13 --- /dev/null +++ b/keyboards/geistmaschine/geist/geist.c @@ -0,0 +1,21 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// This will be overridden by encoder map in all default keymaps, but serves as a catch-all for user keymaps that may omit the map. +#if defined (ENCODER_ENABLE) && !defined (ENCODER_MAP_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; /* Don't process further events if user function exists and returns false */ + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/info.json b/keyboards/geistmaschine/geist/info.json new file mode 100644 index 000000000000..b2ae30a4a458 --- /dev/null +++ b/keyboards/geistmaschine/geist/info.json @@ -0,0 +1,274 @@ +{ + "manufacturer": "Geistmaschine", + "keyboard_name": "Geist", + "maintainer": "ebastler", + "bootloader": "atmel-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "encoder": true + }, + "matrix_pins": { + "cols": [ "D2", "D5", "D4", "D7", "B6", "C7", "F7", "F6" ], + "rows": [ "D6", "B4", "B5", "C6", "F0", "D3", "F5", "F4", "F1", "E6" ] + }, + "processor": "atmega32u4", + "url": "https://geistmaschine.io/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x676D" + }, + "encoder": { + "rotary": [ + { + "pin_a": "B0", + "pin_b": "B7", + "resolution": 2 + } + ] + }, + "community_layouts": ["65_ansi", "65_iso"], + "layouts": { + "LAYOUT_65_all": { + "layout": [ + {"x":0, "y":0, "matrix":[9,1] }, + {"x":1.25, "y":0, "matrix":[0,0] }, + {"x":2.25, "y":0, "matrix":[1,0] }, + {"x":3.25, "y":0, "matrix":[0,1] }, + {"x":4.25, "y":0, "matrix":[1,1] }, + {"x":5.25, "y":0, "matrix":[0,2] }, + {"x":6.25, "y":0, "matrix":[1,2] }, + {"x":7.25, "y":0, "matrix":[0,3] }, + {"x":8.25, "y":0, "matrix":[1,3] }, + {"x":9.25, "y":0, "matrix":[0,4] }, + {"x":10.25, "y":0, "matrix":[1,4] }, + {"x":11.25, "y":0, "matrix":[0,5] }, + {"x":12.25, "y":0, "matrix":[1,5] }, + {"x":13.25, "y":0, "matrix":[0,6] }, + {"x":14.25, "y":0, "matrix":[1,6] }, + {"x":15.25, "y":0, "matrix":[0,7] }, + {"x":16.25, "y":0, "matrix":[1,7] }, + + {"x":1.25, "y":1, "w":1.5, "matrix":[2,0] }, + {"x":2.75, "y":1, "matrix":[3,0] }, + {"x":3.75, "y":1, "matrix":[2,1] }, + {"x":4.75, "y":1, "matrix":[3,1] }, + {"x":5.75, "y":1, "matrix":[2,2] }, + {"x":6.75, "y":1, "matrix":[3,2] }, + {"x":7.75, "y":1, "matrix":[2,3] }, + {"x":8.75, "y":1, "matrix":[3,3] }, + {"x":9.75, "y":1, "matrix":[2,4] }, + {"x":10.75, "y":1, "matrix":[3,4] }, + {"x":11.75, "y":1, "matrix":[2,5] }, + {"x":12.75, "y":1, "matrix":[3,5] }, + {"x":13.75, "y":1, "matrix":[2,6] }, + {"x":14.75, "y":1, "w":1.5, "matrix":[3,6] }, + {"x":16.25, "y":1, "matrix":[3,7] }, + + {"x":1.25, "y":2, "w":1.75, "matrix":[4,0] }, + {"x":3, "y":2, "matrix":[5,0] }, + {"x":4, "y":2, "matrix":[4,1] }, + {"x":5, "y":2, "matrix":[5,1] }, + {"x":6, "y":2, "matrix":[4,2] }, + {"x":7, "y":2, "matrix":[5,2] }, + {"x":8, "y":2, "matrix":[4,3] }, + {"x":9, "y":2, "matrix":[5,3] }, + {"x":10, "y":2, "matrix":[4,4] }, + {"x":11, "y":2, "matrix":[5,4] }, + {"x":12, "y":2, "matrix":[4,5] }, + {"x":13, "y":2, "matrix":[5,5] }, + {"x":14, "y":2, "matrix":[4,6] }, + {"x":14, "y":2, "w":2.25, "matrix":[5,6] }, + {"x":15, "y":1, "w":1.25, "h":2, "matrix":[4,7] }, + {"x":16.25, "y":2, "matrix":[5,7] }, + + {"x":1.25, "y":3, "w":1.25, "matrix":[6,0] }, + {"x":2.5, "y":3, "matrix":[7,0] }, + {"x":3.5, "y":3, "matrix":[6,1] }, + {"x":4.5, "y":3, "matrix":[7,1] }, + {"x":5.5, "y":3, "matrix":[6,2] }, + {"x":6.5, "y":3, "matrix":[7,2] }, + {"x":7.5, "y":3, "matrix":[6,3] }, + {"x":8.5, "y":3, "matrix":[7,3] }, + {"x":9.5, "y":3, "matrix":[6,4] }, + {"x":10.5, "y":3, "matrix":[7,4] }, + {"x":11.5, "y":3, "matrix":[6,5] }, + {"x":12.5, "y":3, "matrix":[7,5] }, + {"x":13.5, "y":3, "w":1.75, "matrix":[6,6] }, + {"x":15.25, "y":3, "matrix":[6,7] }, + {"x":16.25, "y":3, "matrix":[7,7] }, + + {"x":1.25, "y":4, "w":1.25, "matrix":[8,0] }, + {"x":2.5, "y":4, "w":1.25, "matrix":[9,0] }, + {"x":3.75, "y":4, "w":1.25, "matrix":[8,1] }, + {"x":5, "y":4, "w":2.25, "matrix":[8,2] }, + {"x":7.25, "y":4, "w":1.25, "matrix":[8,3] }, + {"x":8.5, "y":4, "w":2.75, "matrix":[8,4] }, + {"x":11.25, "y":4, "w":1.25, "matrix":[8,5] }, + {"x":12.5, "y":4, "w":1.25, "matrix":[9,5] }, + {"x":14.25, "y":4, "matrix":[9,6] }, + {"x":15.25, "y":4, "matrix":[8,7] }, + {"x":16.25, "y":4, "matrix":[9,7] } + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0, "matrix":[9,1] }, + {"x":1.25, "y":0, "matrix":[0,0] }, + {"x":2.25, "y":0, "matrix":[1,0] }, + {"x":3.25, "y":0, "matrix":[0,1] }, + {"x":4.25, "y":0, "matrix":[1,1] }, + {"x":5.25, "y":0, "matrix":[0,2] }, + {"x":6.25, "y":0, "matrix":[1,2] }, + {"x":7.25, "y":0, "matrix":[0,3] }, + {"x":8.25, "y":0, "matrix":[1,3] }, + {"x":9.25, "y":0, "matrix":[0,4] }, + {"x":10.25, "y":0, "matrix":[1,4] }, + {"x":11.25, "y":0, "matrix":[0,5] }, + {"x":12.25, "y":0, "matrix":[1,5] }, + {"x":13.25, "y":0, "matrix":[0,6] }, + {"x":14.25, "y":0, "w":2, "matrix":[0,7] }, + {"x":16.25, "y":0, "matrix":[1,7] }, + + {"x":1.25, "y":1, "w":1.5, "matrix":[2,0] }, + {"x":2.75, "y":1, "matrix":[3,0] }, + {"x":3.75, "y":1, "matrix":[2,1] }, + {"x":4.75, "y":1, "matrix":[3,1] }, + {"x":5.75, "y":1, "matrix":[2,2] }, + {"x":6.75, "y":1, "matrix":[3,2] }, + {"x":7.75, "y":1, "matrix":[2,3] }, + {"x":8.75, "y":1, "matrix":[3,3] }, + {"x":9.75, "y":1, "matrix":[2,4] }, + {"x":10.75, "y":1, "matrix":[3,4] }, + {"x":11.75, "y":1, "matrix":[2,5] }, + {"x":12.75, "y":1, "matrix":[3,5] }, + {"x":13.75, "y":1, "matrix":[2,6] }, + {"x":14.75, "y":1, "w":1.5, "matrix":[3,6] }, + {"x":16.25, "y":1, "matrix":[3,7] }, + + {"x":1.25, "y":2, "w":1.75, "matrix":[4,0] }, + {"x":3, "y":2, "matrix":[5,0] }, + {"x":4, "y":2, "matrix":[4,1] }, + {"x":5, "y":2, "matrix":[5,1] }, + {"x":6, "y":2, "matrix":[4,2] }, + {"x":7, "y":2, "matrix":[5,2] }, + {"x":8, "y":2, "matrix":[4,3] }, + {"x":9, "y":2, "matrix":[5,3] }, + {"x":10, "y":2, "matrix":[4,4] }, + {"x":11, "y":2, "matrix":[5,4] }, + {"x":12, "y":2, "matrix":[4,5] }, + {"x":13, "y":2, "matrix":[5,5] }, + {"x":14, "y":2, "w":2.25, "matrix":[5,6] }, + {"x":16.25, "y":2, "matrix":[5,7] }, + + {"x":1.25, "y":3, "w":2.25, "matrix":[6,0] }, + {"x":3.5, "y":3, "matrix":[6,1] }, + {"x":4.5, "y":3, "matrix":[7,1] }, + {"x":5.5, "y":3, "matrix":[6,2] }, + {"x":6.5, "y":3, "matrix":[7,2] }, + {"x":7.5, "y":3, "matrix":[6,3] }, + {"x":8.5, "y":3, "matrix":[7,3] }, + {"x":9.5, "y":3, "matrix":[6,4] }, + {"x":10.5, "y":3, "matrix":[7,4] }, + {"x":11.5, "y":3, "matrix":[6,5] }, + {"x":12.5, "y":3, "matrix":[7,5] }, + {"x":13.5, "y":3, "w":1.75, "matrix":[6,6] }, + {"x":15.25, "y":3, "matrix":[6,7] }, + {"x":16.25, "y":3, "matrix":[7,7] }, + + {"x":1.25, "y":4, "w":1.25, "matrix":[8,0] }, + {"x":2.5, "y":4, "w":1.25, "matrix":[9,0] }, + {"x":3.75, "y":4, "w":1.25, "matrix":[8,1] }, + {"x":5, "y":4, "w":6.25, "matrix":[8,3] }, + {"x":11.25, "y":4, "w":1.25, "matrix":[8,5] }, + {"x":12.5, "y":4, "w":1.25, "matrix":[9,5] }, + {"x":14.25, "y":4, "matrix":[9,6] }, + {"x":15.25, "y":4, "matrix":[8,7] }, + {"x":16.25, "y":4, "matrix":[9,7] } + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"x":0, "y":0, "matrix":[9,1] }, + {"x":1.25, "y":0, "matrix":[0,0] }, + {"x":2.25, "y":0, "matrix":[1,0] }, + {"x":3.25, "y":0, "matrix":[0,1] }, + {"x":4.25, "y":0, "matrix":[1,1] }, + {"x":5.25, "y":0, "matrix":[0,2] }, + {"x":6.25, "y":0, "matrix":[1,2] }, + {"x":7.25, "y":0, "matrix":[0,3] }, + {"x":8.25, "y":0, "matrix":[1,3] }, + {"x":9.25, "y":0, "matrix":[0,4] }, + {"x":10.25, "y":0, "matrix":[1,4] }, + {"x":11.25, "y":0, "matrix":[0,5] }, + {"x":12.25, "y":0, "matrix":[1,5] }, + {"x":13.25, "y":0, "matrix":[0,6] }, + {"x":14.25, "y":0, "w":2, "matrix":[0,7] }, + {"x":16.25, "y":0, "matrix":[1,7] }, + + {"x":1.25, "y":1, "w":1.5, "matrix":[2,0] }, + {"x":2.75, "y":1, "matrix":[3,0] }, + {"x":3.75, "y":1, "matrix":[2,1] }, + {"x":4.75, "y":1, "matrix":[3,1] }, + {"x":5.75, "y":1, "matrix":[2,2] }, + {"x":6.75, "y":1, "matrix":[3,2] }, + {"x":7.75, "y":1, "matrix":[2,3] }, + {"x":8.75, "y":1, "matrix":[3,3] }, + {"x":9.75, "y":1, "matrix":[2,4] }, + {"x":10.75, "y":1, "matrix":[3,4] }, + {"x":11.75, "y":1, "matrix":[2,5] }, + {"x":12.75, "y":1, "matrix":[3,5] }, + {"x":13.75, "y":1, "matrix":[2,6] }, + {"x":16.25, "y":1, "matrix":[3,7] }, + + {"x":1.25, "y":2, "w":1.75, "matrix":[4,0] }, + {"x":3, "y":2, "matrix":[5,0] }, + {"x":4, "y":2, "matrix":[4,1] }, + {"x":5, "y":2, "matrix":[5,1] }, + {"x":6, "y":2, "matrix":[4,2] }, + {"x":7, "y":2, "matrix":[5,2] }, + {"x":8, "y":2, "matrix":[4,3] }, + {"x":9, "y":2, "matrix":[5,3] }, + {"x":10, "y":2, "matrix":[4,4] }, + {"x":11, "y":2, "matrix":[5,4] }, + {"x":12, "y":2, "matrix":[4,5] }, + {"x":13, "y":2, "matrix":[5,5] }, + {"x":14, "y":2, "matrix":[4,6] }, + {"x":15, "y":1, "w":1.25, "h":2, "matrix":[4,7] }, + {"x":16.25, "y":2, "matrix":[5,7] }, + + {"x":1.25, "y":3, "w":1.25, "matrix":[6,0] }, + {"x":2.5, "y":3, "matrix":[7,0] }, + {"x":3.5, "y":3, "matrix":[6,1] }, + {"x":4.5, "y":3, "matrix":[7,1] }, + {"x":5.5, "y":3, "matrix":[6,2] }, + {"x":6.5, "y":3, "matrix":[7,2] }, + {"x":7.5, "y":3, "matrix":[6,3] }, + {"x":8.5, "y":3, "matrix":[7,3] }, + {"x":9.5, "y":3, "matrix":[6,4] }, + {"x":10.5, "y":3, "matrix":[7,4] }, + {"x":11.5, "y":3, "matrix":[6,5] }, + {"x":12.5, "y":3, "matrix":[7,5] }, + {"x":13.5, "y":3, "w":1.75, "matrix":[6,6] }, + {"x":15.25, "y":3, "matrix":[6,7] }, + {"x":16.25, "y":3, "matrix":[7,7] }, + + {"x":1.25, "y":4, "w":1.25, "matrix":[8,0] }, + {"x":2.5, "y":4, "w":1.25, "matrix":[9,0] }, + {"x":3.75, "y":4, "w":1.25, "matrix":[8,1] }, + {"x":5, "y":4, "w":6.25, "matrix":[8,3] }, + {"x":11.25, "y":4, "w":1.25, "matrix":[8,5] }, + {"x":12.5, "y":4, "w":1.25, "matrix":[9,5] }, + {"x":14.25, "y":4, "matrix":[9,6] }, + {"x":15.25, "y":4, "matrix":[8,7] }, + {"x":16.25, "y":4, "matrix":[9,7] } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/keymaps/ansi/keymap.c b/keyboards/geistmaschine/geist/keymaps/ansi/keymap.c new file mode 100644 index 000000000000..0fe02a4d3b30 --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/ansi/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2023 Moritz Plattner + * + * 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] = { + /* ┌───┐ + * │ENC│ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * └───┘ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt │GUI │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_ansi( + LT(2, KC_MUTE), 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + 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_PGUP, + 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_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LT(1, KC_RGUI), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_MPLY, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_TRNS, KC_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_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_ON, NK_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) } +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/keymaps/ansi/rules.mk b/keyboards/geistmaschine/geist/keymaps/ansi/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/ansi/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/geistmaschine/geist/keymaps/default/keymap.c b/keyboards/geistmaschine/geist/keymaps/default/keymap.c new file mode 100644 index 000000000000..1d44469c4e1c --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_65_all( + LT(2, KC_MUTE), 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_TRNS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + 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_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, LT(1, KC_RGUI), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_all( + KC_MPLY, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_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_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_ON, NK_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_65_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) } +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/keymaps/default/rules.mk b/keyboards/geistmaschine/geist/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/geistmaschine/geist/keymaps/iso/keymap.c b/keyboards/geistmaschine/geist/keymaps/iso/keymap.c new file mode 100644 index 000000000000..6d08161d3ba4 --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/iso/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2023 Moritz Plattner + * + * 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] = { + /* ┌───┐ + * │ENC│ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * └───┘ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Enter│PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PgD│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │Shft│|\ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt │GUI │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_iso( + LT(2, KC_MUTE), 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + 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_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LT(1, KC_RGUI), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso( + KC_MPLY, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_TRNS, KC_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_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_ON, NK_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_65_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) } +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/keymaps/iso/rules.mk b/keyboards/geistmaschine/geist/keymaps/iso/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/iso/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/geistmaschine/geist/keymaps/via/keymap.c b/keyboards/geistmaschine/geist/keymaps/via/keymap.c new file mode 100644 index 000000000000..94d2624392c0 --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_65_all( + LT(2, KC_MUTE), 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_TRNS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + 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_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, LT(1, KC_RGUI), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_all( + KC_MPLY, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_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_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_ON, NK_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_65_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/keymaps/via/rules.mk b/keyboards/geistmaschine/geist/keymaps/via/rules.mk new file mode 100644 index 000000000000..6ccd6d91943d --- /dev/null +++ b/keyboards/geistmaschine/geist/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/geistmaschine/geist/readme.md b/keyboards/geistmaschine/geist/readme.md new file mode 100644 index 000000000000..a3bb537e998e --- /dev/null +++ b/keyboards/geistmaschine/geist/readme.md @@ -0,0 +1,25 @@ +# Geistmaschine Geist + +![Geist](https://i.imgur.com/qpb6Rh9.png) + +Geist is a high-end 65% keyboard, featuring a rotary encoder with a large knob. +* Keyboard Maintainer: [ebastler](https://github.com/ebastler) +* Hardware Supported: Geist Multi-Layout and Hot-Swap Rev1 (to access all multi-layout PCB options, use `default` keymap. Hotswap can work with either `default` or `ansi`) +* Hardware Availability: [geistmaschine.io](https://geistmaschine.io/) + +Make example for this keyboard (after setting up your build environment): + + qmk compile geistmaschine/geist -km default + +Flashing example for this keyboard: + + qmk flash geistmaschine/geist -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB diff --git a/keyboards/geistmaschine/geist/rules.mk b/keyboards/geistmaschine/geist/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/geistmaschine/geist/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c b/keyboards/geistmaschine/macropod/config.h similarity index 78% rename from keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c rename to keyboards/geistmaschine/macropod/config.h index cb5ec3dc124e..f6dad6ebe034 100644 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c +++ b/keyboards/geistmaschine/macropod/config.h @@ -1,5 +1,4 @@ -/* Copyright 2020 Purdea Andrei - * +/* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or @@ -14,11 +13,9 @@ * along with this program. If not, see . */ -#include "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} +#pragma once +/* key matrix size, only 1x4 are used in current state. + IO expander setup would allow up to 1x16 + 1 from the MCU */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 17 diff --git a/keyboards/geistmaschine/macropod/info.json b/keyboards/geistmaschine/macropod/info.json new file mode 100644 index 000000000000..c2a77905b192 --- /dev/null +++ b/keyboards/geistmaschine/macropod/info.json @@ -0,0 +1,41 @@ +{ + "manufacturer": "Geistmaschine", + "keyboard_name": "Macropod", + "maintainer": "ebastler", + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "url": "https://geistmaschine.io/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0004", + "vid": "0x676D" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": false, + "encoder": true + }, + "encoder": { + "rotary": [ + { + "pin_a": "D3", + "pin_b": "D5", + "resolution": 2 + } + ] + }, + "layouts": { + "LAYOUT_fourkey": { + "layout": [ + {"x":0, "y":0, "matrix":[0,0] }, + {"x":0, "y":1.25, "matrix":[0,1] }, + {"x":0, "y":2.25, "matrix":[0,2] }, + {"x":0, "y":3.25, "matrix":[0,3] } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/default/keymap.c b/keyboards/geistmaschine/macropod/keymaps/default/keymap.c new file mode 100644 index 000000000000..fb2d971202c2 --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_fourkey ( + LT(1, KC_MUTE), KC_MPRV, KC_MPLY, KC_MNXT + ), + + [1] = LAYOUT_fourkey ( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MRWD, KC_MFFD) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/default/rules.mk b/keyboards/geistmaschine/macropod/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/geistmaschine/macropod/keymaps/via/keymap.c b/keyboards/geistmaschine/macropod/keymaps/via/keymap.c new file mode 100644 index 000000000000..fb2d971202c2 --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_fourkey ( + LT(1, KC_MUTE), KC_MPRV, KC_MPLY, KC_MNXT + ), + + [1] = LAYOUT_fourkey ( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MRWD, KC_MFFD) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/via/rules.mk b/keyboards/geistmaschine/macropod/keymaps/via/rules.mk new file mode 100644 index 000000000000..6ccd6d91943d --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/macropod.c b/keyboards/geistmaschine/macropod/macropod.c new file mode 100644 index 000000000000..2f6825e2ee13 --- /dev/null +++ b/keyboards/geistmaschine/macropod/macropod.c @@ -0,0 +1,21 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// This will be overridden by encoder map in all default keymaps, but serves as a catch-all for user keymaps that may omit the map. +#if defined (ENCODER_ENABLE) && !defined (ENCODER_MAP_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; /* Don't process further events if user function exists and returns false */ + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/matrix.c b/keyboards/geistmaschine/macropod/matrix.c new file mode 100644 index 000000000000..60b1dafe6371 --- /dev/null +++ b/keyboards/geistmaschine/macropod/matrix.c @@ -0,0 +1,87 @@ +/* Copyright 2023 ebastler and elpekenin + * + * 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 "pca9555.h" +#include "quantum.h" + +// PCA9555 i2c address, 0x20: A0 = 0, A1 = 0, A2 = 0 +#define IC1 0x20 + +// Define how long to wait to reach the IO expander after connection loss again +// Since this board is modular, it should not spam unnecessary i2c requests if used without a module +#define RETRY_TIMESPAN 2000 + +typedef enum { + PLUGGED, + DOUBTFUL, + UNPLUGGED +} expander_status_t; + +void pca9555_setup(void) { + // Initialize the expander, no need to set ports to inputs as that is the default behavior + pca9555_init(IC1); +} + +void matrix_init_custom(void) { + // Encoder pushbutton on the MCU is connected to PD2 + setPinInputHigh(D2); + pca9555_setup(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + static expander_status_t status = DOUBTFUL; + static uint32_t retry_timer = 0; + + // initialize one byte filled with 1 + uint8_t pin_states = 0xFF; + + + if (status != UNPLUGGED || timer_elapsed32(retry_timer) > RETRY_TIMESPAN) { + // If the chip was unplugged before, it needs to be re-initialized + if(status==UNPLUGGED) { + pca9555_setup(); + } + // Read the entire port into this byte, 1 = not pressed, 0 = pressed + bool ret = pca9555_readPins(IC1, PCA9555_PORT0, &pin_states); + + // Update state + if (ret) { + status = PLUGGED; + } else { + switch (status) { + case PLUGGED: + status = DOUBTFUL; + break; + + case DOUBTFUL: + status = UNPLUGGED; + break; + + // If we've diagnosed as unplugged, update timer to not read I2C + case UNPLUGGED: + retry_timer = timer_read32(); + } + } + } + + // Shift pin states by 1 to make room for the switch connected to the MCU, then OR them together and invert (as QMK uses inverted logic compared to the electrical levels) + matrix_row_t data = ~(pin_states << 1 | readPin(D2)); + + bool changed = current_matrix[0] != data; + current_matrix[0] = data; + + return changed; +} \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/readme.md b/keyboards/geistmaschine/macropod/readme.md new file mode 100644 index 000000000000..5d074437cbad --- /dev/null +++ b/keyboards/geistmaschine/macropod/readme.md @@ -0,0 +1,25 @@ +# Geistmaschine Macropod + +![macropod](https://i.imgur.com/lAsCslA.png) + +Macropod is a modular macropad, designed around a central big encoder with a magnetic connector for modularity. The default module uses three MX style keys. +* Keyboard Maintainer: [ebastler](https://github.com/ebastler) +* Hardware Supported: Macropod rev1 +* Hardware Availability: [geistmaschine.io](https://geistmaschine.io/) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb geistmaschine/macropod -km default + +Flashing example for this keyboard: + + qmk flash -kb geistmaschine/macropod -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the knob on the main module) and plug in the keyboard +* **Physical reset button**: Briefly tap the button marked "RST" on the back of the main module PCB diff --git a/keyboards/geistmaschine/macropod/rules.mk b/keyboards/geistmaschine/macropod/rules.mk new file mode 100644 index 000000000000..cf2b38601e67 --- /dev/null +++ b/keyboards/geistmaschine/macropod/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite + +VPATH += drivers/gpio +SRC += pca9555.c matrix.c +QUANTUM_LIB_SRC += i2c_master.c \ No newline at end of file diff --git a/keyboards/giabalanai/config.h b/keyboards/giabalanai/config.h index 01e84b4cdd82..2a977decedd8 100644 --- a/keyboards/giabalanai/config.h +++ b/keyboards/giabalanai/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 3araht +Copyright 2023 3araht 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 @@ -36,16 +36,6 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -#define SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps - // Right side has to be the master since 1, LED data is output from right side, and 2, Audio pin is prepared on right side as a reserve. #define MASTER_RIGHT @@ -227,3 +217,9 @@ along with this program. If not, see . // #define NO_ACTION_TAPPING // NO_ACTION_ONESHOT -388 bytes #define NO_ACTION_ONESHOT +/* + * Encoder options + */ +#ifdef ENCODER_ENABLE +# define ENCODER_RESOLUTIONS_RIGHT { 4 } +#endif // ENCODER_ENABLE diff --git a/keyboards/giabalanai/info.json b/keyboards/giabalanai/info.json index 30bd26159f96..6b474f7398d9 100644 --- a/keyboards/giabalanai/info.json +++ b/keyboards/giabalanai/info.json @@ -8,10 +8,22 @@ "pid": "0xF4B0", "device_version": "0.0.1" }, + "features": { + "midi": true, + "extrakey": true, + "encoder": true, + "bootmagic": false, + "console": false, + "mousekey": false, + "nkro": false, + "rgblight": false, + "audio": false + }, "encoder": { "rotary": [] }, "split": { + "enabled": true, "soft_serial_pin": "D2", "encoder": { "right": { diff --git a/keyboards/giabalanai/keymaps/2firmware/config.h b/keyboards/giabalanai/keymaps/2firmware/config.h index a9c772adefe8..e5ec1d73e28a 100644 --- a/keyboards/giabalanai/keymaps/2firmware/config.h +++ b/keyboards/giabalanai/keymaps/2firmware/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 USE_MATRIX_I2C diff --git a/keyboards/giabalanai/keymaps/3araht/keymap.c b/keyboards/giabalanai/keymaps/3araht/keymap.c index b766d370589e..ca7be05088b5 100644 --- a/keyboards/giabalanai/keymaps/3araht/keymap.c +++ b/keyboards/giabalanai/keymaps/3araht/keymap.c @@ -58,17 +58,18 @@ user_config_t user_config; // Defines names for use in layer keycodes and the keymap enum layer_names { - _C_SYSTEM_BASE, // MIDI C-system - _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. - _C_SYSTEM_BASS2ROW, // counter bass system - _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. - _C_SYSTEM_FREEBASS, // C-system Free Bass + _C_SYSTEM_BASE, // MIDI C-system + _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. + _C_SYSTEM_BASS2ROW, // counter bass system + _FAKE_B_SYSTEM_BASS2ROW, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. Counter bass version. + _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. + _C_SYSTEM_FREEBASS, // C-system Free Bass _CHROMATONE, - _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard + _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard _QWERTY, _COLEMAK, - _ADJUST, // for Fn keys, etc. - _FN // for changing layers, octaves, etc. + _ADJUST, // for Fn keys, etc. + _FN // for changing layers, octaves, etc. }; // Defines the keycodes used by our macros in process_record_user @@ -181,6 +182,7 @@ enum custom_keycodes { CSYSTEM, // C-SYSTEM layout BSYSTEM, // B-SYSTEM layout CNTBASC, // CouNTer BASs C-system layout + CNTBASB, // CouNTer BASs B-system layout CSYSALL, // C-SYStem ALL layout CSYSFBS, // C-SYStem Free BaSs CHRTONE, // CHRomaTONE layout @@ -240,6 +242,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_A2, MI_C3, MI_Eb3, MI_Fs3, MI_A3, MI_C4, MI_Eb4, MI_Fs4, MI_A4, MI_C5, MI_Eb5, MI_Fs5 ), + /* fake B-system */ + [_FAKE_B_SYSTEM_BASS2ROW] = LAYOUT( + MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr, + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + + MI_Ab2, + MI_A2, MI_C3, MI_Eb3, MI_Gb3, MI_A3, MI_C4, MI_Eb4, MI_Gb4, MI_A4, MI_C5, MI_Eb5, MI_Gb5, _______, + MI_G2, MI_Bb2, MI_Db3, MI_E3, MI_G3, MI_Bb3, MI_Db4, MI_E4, MI_G4, MI_Bb4, MI_Db5, MI_E5, MI_G5, + MI_Ab2, MI_B2, MI_D3, MI_F3, MI_Ab3, MI_B3, MI_D4, MI_F4, MI_Ab4, MI_B4, MI_D5, MI_F5 + ), + /* C-system entirely */ [_C_SYSTEM_ENTIRELY] = LAYOUT( MI_BNDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db1, MI_E1, MI_G1, MI_Bb1, MI_Db2, @@ -340,7 +356,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Fn */ [_FN] = LAYOUT( - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -348,24 +364,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, MI_OCN2, MI_OCN1, MI_OC0, MI_OC1, MI_OC2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______, - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG, XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH ) }; #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, - [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, - [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, - [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, - [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, - [_FN] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_FAKE_B_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, + [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, + [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, + [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, + [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, + [_FN] = { ENCODER_CCW_CW(_______, _______) }, }; #endif @@ -383,7 +400,7 @@ const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, // Light up fn layer keys const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard - {0, 7, HSV_ORANGE}, // MIDI layouts + {0, 8, HSV_ORANGE}, // MIDI layouts {11, 1, HSV_RED}, // RGB_TOG {12, 1, HSV_WHITE}, // DF_QWER {13, 1, HSV_CORAL}, // TGLBASS @@ -410,15 +427,16 @@ const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {53, 1, HSV_PINK}, #endif // right keyboard - {60, 7, HSV_ORANGE}, // MIDI layouts + {60, 8, HSV_ORANGE}, // MIDI layouts {74, 1, HSV_CORAL}, // TGLBASS {85, 1, HSV_BLUE}, // MIDI Oct {86, 1, HSV_CYAN}, // MIDI Oct {87, 1, HSV_SPRINGGREEN}, // MIDI Oct {88, 1, HSV_GREEN}, // MIDI Oct {89, 1, HSV_CHARTREUSE}, // MIDI Oct + {95, 1, HSV_GOLD}, // VERSION {96, 1, HSV_PINK}, // EE_CLR - {98, 7, HSV_ORANGE}, // MIDI layouts + {98, 8, HSV_ORANGE}, // MIDI layouts {107, 1, HSV_YELLOW}, // MI_VELD {108, 1, HSV_GREEN}, // MI_VELU {110, 1, HSV_RED}, // RGB_TOG @@ -530,6 +548,7 @@ void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){ keylight_manager(record, HSV_ORANGE, keylocation); break; case _C_SYSTEM_BASS2ROW: + case _FAKE_B_SYSTEM_BASS2ROW: keylight_manager(record, HSV_YELLOW, keylocation); break; case _CFLIP_BASS2ROW: @@ -546,6 +565,7 @@ void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){ keylight_manager(record, HSV_YELLOW, keylocation); break; case _C_SYSTEM_BASS2ROW: + case _FAKE_B_SYSTEM_BASS2ROW: keylight_manager(record, HSV_GOLDENROD, keylocation); break; case _CFLIP_BASS2ROW: @@ -596,6 +616,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; + case CNTBASB: + if (record->event.pressed) { + set_single_persistent_default_layer(_FAKE_B_SYSTEM_BASS2ROW); + } + break; + case CSYSALL: if (record->event.pressed) { set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY); diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h index 684287ba98bf..dd10d213a0b6 100644 --- a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h +++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 GIABARINAIX2 diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h index 684287ba98bf..dd10d213a0b6 100644 --- a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 GIABARINAIX2 diff --git a/keyboards/giabalanai/keymaps/party/keymap.c b/keyboards/giabalanai/keymaps/party/keymap.c index 913bf056d28d..fdd9c2d52723 100644 --- a/keyboards/giabalanai/keymaps/party/keymap.c +++ b/keyboards/giabalanai/keymaps/party/keymap.c @@ -58,17 +58,18 @@ user_config_t user_config; // Defines names for use in layer keycodes and the keymap enum layer_names { - _C_SYSTEM_BASE, // MIDI C-system - _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. - _C_SYSTEM_BASS2ROW, // counter bass system - _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. - _C_SYSTEM_FREEBASS, // C-system Free Bass + _C_SYSTEM_BASE, // MIDI C-system + _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. + _C_SYSTEM_BASS2ROW, // counter bass system + _FAKE_B_SYSTEM_BASS2ROW, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. Counter bass version. + _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. + _C_SYSTEM_FREEBASS, // C-system Free Bass _CHROMATONE, - _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard + _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard _QWERTY, _COLEMAK, - _ADJUST, // for Fn keys, etc. - _FN // for changing layers, octaves, etc. + _ADJUST, // for Fn keys, etc. + _FN // for changing layers, octaves, etc. }; // Defines the keycodes used by our macros in process_record_user @@ -181,6 +182,7 @@ enum custom_keycodes { CSYSTEM, // C-SYSTEM layout BSYSTEM, // B-SYSTEM layout CNTBASC, // CouNTer BASs C-system layout + CNTBASB, // CouNTer BASs B-system layout CSYSALL, // C-SYStem ALL layout CSYSFBS, // C-SYStem Free BaSs CHRTONE, // CHRomaTONE layout @@ -240,6 +242,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_A2, MI_C3, MI_Eb3, MI_Fs3, MI_A3, MI_C4, MI_Eb4, MI_Fs4, MI_A4, MI_C5, MI_Eb5, MI_Fs5 ), + /* fake B-system */ + [_FAKE_B_SYSTEM_BASS2ROW] = LAYOUT( + MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr, + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + + MI_Ab2, + MI_A2, MI_C3, MI_Eb3, MI_Gb3, MI_A3, MI_C4, MI_Eb4, MI_Gb4, MI_A4, MI_C5, MI_Eb5, MI_Gb5, _______, + MI_G2, MI_Bb2, MI_Db3, MI_E3, MI_G3, MI_Bb3, MI_Db4, MI_E4, MI_G4, MI_Bb4, MI_Db5, MI_E5, MI_G5, + MI_Ab2, MI_B2, MI_D3, MI_F3, MI_Ab3, MI_B3, MI_D4, MI_F4, MI_Ab4, MI_B4, MI_D5, MI_F5 + ), + /* C-system entirely */ [_C_SYSTEM_ENTIRELY] = LAYOUT( MI_BNDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db1, MI_E1, MI_G1, MI_Bb1, MI_Db2, @@ -340,7 +356,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Fn */ [_FN] = LAYOUT( - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -348,24 +364,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, MI_OCN2, MI_OCN1, MI_OC0, MI_OC1, MI_OC2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______, - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG, XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH ) }; #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, - [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, - [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, - [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, - [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, - [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_FAKE_B_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, + [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, + [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, + [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, + [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, }; #endif @@ -383,7 +400,7 @@ const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, // Light up fn layer keys const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard - {0, 7, HSV_ORANGE}, // MIDI layouts + {0, 8, HSV_ORANGE}, // MIDI layouts {11, 1, HSV_RED}, // RGB_TOG {12, 1, HSV_WHITE}, // DF_QWER {13, 1, HSV_CORAL}, // TGLBASS @@ -410,15 +427,16 @@ const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {53, 1, HSV_PINK}, #endif // right keyboard - {60, 7, HSV_ORANGE}, // MIDI layouts + {60, 8, HSV_ORANGE}, // MIDI layouts {74, 1, HSV_CORAL}, // TGLBASS {85, 1, HSV_BLUE}, // MIDI Oct {86, 1, HSV_CYAN}, // MIDI Oct {87, 1, HSV_SPRINGGREEN}, // MIDI Oct {88, 1, HSV_GREEN}, // MIDI Oct {89, 1, HSV_CHARTREUSE}, // MIDI Oct + {95, 1, HSV_GOLD}, // VERSION {96, 1, HSV_PINK}, // EE_CLR - {98, 7, HSV_ORANGE}, // MIDI layouts + {98, 8, HSV_ORANGE}, // MIDI layouts {107, 1, HSV_YELLOW}, // MI_VELD {108, 1, HSV_GREEN}, // MI_VELU {110, 1, HSV_RED}, // RGB_TOG @@ -490,7 +508,7 @@ bool rgb_matrix_indicators_user(void) { // rgb_matrix_set_color(72, RGB_DARKORANGE); break; case _FN: - for (i = 0;i < 7;i++) { + for (i = 0;i < 8;i++) { rgb_matrix_set_color(74 - i, RGB_DARKORANGE); // MIDI layouts // right keyboard rgb_matrix_set_color(i, RGB_DARKORANGE); // MIDI layouts @@ -512,6 +530,7 @@ bool rgb_matrix_indicators_user(void) { rgb_matrix_set_color(28, RGB_DARKSPRINGGREEN); // MIDI Oct rgb_matrix_set_color(29, RGB_DARKGREEN); // MIDI Oct rgb_matrix_set_color(30, RGB_DARKCHARTREUSE); // MIDI Oct + rgb_matrix_set_color(36, RGB_DARKGOLD); // VERSION rgb_matrix_set_color(37, RGB_DARKPINK); // EE_CLR rgb_matrix_set_color(41, RGB_DARKYELLOW); // MI_VELD rgb_matrix_set_color(40, RGB_DARKGREEN); // MI_VELU @@ -645,6 +664,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; + case CNTBASB: + if (record->event.pressed) { + set_single_persistent_default_layer(_FAKE_B_SYSTEM_BASS2ROW); + } + break; + case CSYSALL: if (record->event.pressed) { set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY); diff --git a/keyboards/giabalanai/keymaps/via/config.h b/keyboards/giabalanai/keymaps/via/config.h index a3b77a5b4d0b..f225b6534047 100644 --- a/keyboards/giabalanai/keymaps/via/config.h +++ b/keyboards/giabalanai/keymaps/via/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/giabalanai/rules.mk b/keyboards/giabalanai/rules.mk index b676b1da4624..d0e8dc4f2429 100644 --- a/keyboards/giabalanai/rules.mk +++ b/keyboards/giabalanai/rules.mk @@ -1,18 +1,8 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -MIDI_ENABLE = yes # MIDI support -ENCODER_ENABLE = yes # encoder on mute button -SPLIT_KEYBOARD = yes # Enables split keyboard support # RGB_MATRIX_ENABLE is not suitable for giabalanai keyboard on the right side (there are dulpicate keys). RGB_MATRIX_ENABLE = no # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.) RGB_MATRIX_DRIVER = WS2812 # 2021/01/23 added. diff --git a/keyboards/gmmk/numpad/config.h b/keyboards/gmmk/numpad/config.h new file mode 100644 index 000000000000..6aa0a6c0160f --- /dev/null +++ b/keyboards/gmmk/numpad/config.h @@ -0,0 +1,84 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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 SLIDER_PIN B0 +#define MIDI_ADVANCED + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 + +#define DRIVER_1_CS B12 +#define DRIVER_1_EN A15 +#define DRIVER_1_PW_EN B13 + +#define DRIVER_COUNT 1 + +#define RGB_MATRIX_LED_COUNT 31 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B6 +#define WEAR_LEVELING_BACKING_SIZE 2048 + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH \ No newline at end of file diff --git a/keyboards/gmmk/numpad/halconf.h b/keyboards/gmmk/numpad/halconf.h new file mode 100644 index 000000000000..b6b68a4e6336 --- /dev/null +++ b/keyboards/gmmk/numpad/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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 HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#define HAL_USE_ADC TRUE + + +#include_next \ No newline at end of file diff --git a/keyboards/gmmk/numpad/info.json b/keyboards/gmmk/numpad/info.json new file mode 100644 index 000000000000..d5ea534b67e1 --- /dev/null +++ b/keyboards/gmmk/numpad/info.json @@ -0,0 +1,51 @@ +{ + "keyboard_name": "GMMK Numpad", + "manufacturer": "Glorious", + "url": "https://www.gloriousgaming.com/products/gmmk-numpad", + "maintainer": "GloriousThrall", + "usb": { + "vid": "0x320F", + "pid": "0x5088", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "A2", "pin_b": "A1"} + ] + }, + "processor": "WB32F3G71", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + "rows": ["A3", "A4", "A5", "A6", "A7"], + "cols": ["B7", "B1", "B10", "B11"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "NUM", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "/", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "*", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "-", "matrix": [0, 3], "x": 3, "y": 0}, + + {"label": "7", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "8", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "9", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "+", "matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + + {"label": "4", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "5", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "6", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "CALC", "matrix": [2, 3], "x": 3, "y": 2}, + + {"label": "1", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "2", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "3", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "RET", "matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + + {"label": "0", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"label": ".", "matrix": [4, 3], "x": 3, "y": 4} + ] + } + } +} diff --git a/keyboards/gmmk/numpad/keymaps/default/keymap.c b/keyboards/gmmk/numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..aa1829cdd419 --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + +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 +#include "analog.h" +#include "qmk_midi.h" + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// NUM / * - +// 7 8 9 + +// 4 5 6 ENCODER +// 1 2 3 RET +// 0 . + + [0] = LAYOUT( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CALC, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT + ), + [1] = LAYOUT( + _______, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, RGB_VAI, KC_P9, KC_PPLS, + RGB_RMOD, KC_P5, RGB_MOD, KC_CALC, + KC_P1, RGB_VAD, KC_P3, KC_PENT, + RGB_TOG, QK_BOOT + ) +}; + +// Potentiometer Slider, MIDI Control + +uint8_t divisor = 0; + +void slider(void) { + if (divisor++) { /* only run the slider function 1/256 times it's called */ + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F + (analogReadPin(SLIDER_PIN) >> 3)); +} + +void housekeeping_task_user(void) { + slider(); +} \ No newline at end of file diff --git a/keyboards/gmmk/numpad/keymaps/via/keymap.c b/keyboards/gmmk/numpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..aa7730acdd14 --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 Glorious, LLC +Modified 2022 by rustedaperture for qmk_firmware +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 +#include "analog.h" +#include "qmk_midi.h" + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// NUM / * - +// 7 8 9 + +// 4 5 6 ENCODER +// 1 2 3 RET +// 0 . + + [0] = LAYOUT( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CALC, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT + ), + [1] = LAYOUT( + _______, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, RGB_VAI, KC_P9, KC_PPLS, + RGB_RMOD, KC_P5, RGB_MOD, KC_CALC, + KC_P1, RGB_VAD, KC_P3, KC_PENT, + RGB_TOG, QK_BOOT + ), + [2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______ + ), +}; +// clang-format on + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; + +// Potentiometer Slider, MIDI Control + +uint8_t divisor = 0; + +void slider(void) { + if (divisor++) { /* only run the slider function 1/256 times it's called */ + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F + (analogReadPin(SLIDER_PIN) >> 3)); +} + +void housekeeping_task_user(void) { + slider(); +} \ No newline at end of file diff --git a/keyboards/gmmk/numpad/keymaps/via/rules.mk b/keyboards/gmmk/numpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..49d34e41fd4b --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE=yes +ENCODER_MAP_ENABLE=yes diff --git a/keyboards/gmmk/numpad/matrix.c b/keyboards/gmmk/numpad/matrix.c new file mode 100644 index 000000000000..99adb38f1843 --- /dev/null +++ b/keyboards/gmmk/numpad/matrix.c @@ -0,0 +1,133 @@ +// Copyright 2023 Cameron Varley (@RustedAperture) +// SPDX-License-Identifier: GPL-2.0-or-later + +/* + * scan matrix + */ +#include +#include +#include "wait.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +#define MATRIX_ROW_SHIFTER ((matrix_row_t)1) + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinOutput_writeHigh(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinHigh(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinInputHigh(pin); + } +} + +static inline uint8_t readMatrixPin(pin_t pin) { + if (pin != NO_PIN) { + return readPin(pin); + } else { + return 1; + } +} + +static bool select_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; + } + return false; +} + +static void unselect_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { +# ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +# else + setPinInputHigh_atomic(pin); +# endif + } +} + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + unselect_col(x); + } +} + + +__attribute__((weak)) void matrix_init_custom(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInputHigh_atomic(row_pins[x]); + } + } + setPinInputHigh_atomic(B8); +} + +__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) { // Start with a clear matrix row + bool key_pressed = false; + + // Select col + if (!select_col(current_col)) { // select col + return; // skip NO_PIN col + } + matrix_output_select_delay(); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Check row pin state + if (current_col == 3 && row_index == 2 && readMatrixPin(B8) == 1) { + current_matrix[row_index] |= row_shifter; + key_pressed = !readMatrixPin(B8); + } else if (readMatrixPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_matrix[row_index] |= row_shifter; + key_pressed = true; + } else { + // Pin HI, clear col bit + current_matrix[row_index] &= ~row_shifter; + } + } + + // Unselect col + unselect_col(current_col); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + static matrix_row_t temp_matrix[MATRIX_ROWS] = {0}; + + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + matrix_read_rows_on_col(temp_matrix, current_col, row_shifter); + } + + bool changed = memcmp(current_matrix, temp_matrix, sizeof(temp_matrix)) != 0; + if (changed) { + memcpy(current_matrix, temp_matrix, sizeof(temp_matrix)); + } + return changed; +} diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/config.h b/keyboards/gmmk/numpad/mcuconf.h similarity index 72% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/config.h rename to keyboards/gmmk/numpad/mcuconf.h index 04ddd591a588..a07efdbffb8c 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/config.h +++ b/keyboards/gmmk/numpad/mcuconf.h @@ -1,4 +1,5 @@ -/* Copyright 2022 HorrorTroll +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,11 +17,10 @@ #pragma once -/* Forcing to use NKRO instead 6KRO */ -#define FORCE_NKRO +#include_next -#define DYNAMIC_KEYMAP_LAYER_COUNT 2 +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE -#endif +// #undef WB32_ADC_USE_ADC1 +#define WB32_ADC_USE_ADC1 TRUE \ No newline at end of file diff --git a/keyboards/gmmk/numpad/numpad.c b/keyboards/gmmk/numpad/numpad.c new file mode 100644 index 000000000000..ed4fed266782 --- /dev/null +++ b/keyboards/gmmk/numpad/numpad.c @@ -0,0 +1,136 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +/* Each AW20216 channel is controlled by a register at some offset between 0x00 + * and 0xD7 inclusive. + * See drivers/awinic/aw20216.h for the mapping between register offsets and + * driver pin locations. + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, CS4_SW1, CS5_SW1, CS6_SW1 }, // 0 NUM + {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 / + {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 2 * + {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 3 - + {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 4 7 + {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 5 8 + {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 6 9 + {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 7 + + {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 8 4 + {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 9 5 + {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 10 6 + {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 11 1 + {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 12 2 + {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 13 3 + {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 14 ENTER + {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 15 0 + {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 16 . + {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 17 LED18 + {0, CS1_SW2, CS2_SW2, CS3_SW2 }, // 18 LED19 + {0, CS1_SW3, CS2_SW3, CS3_SW3 }, // 19 LED20 + {0, CS1_SW4, CS2_SW4, CS3_SW4 }, // 20 LED21 + {0, CS1_SW5, CS2_SW5, CS3_SW5 }, // 21 LED22 + {0, CS1_SW6, CS2_SW6, CS3_SW6 }, // 22 LED23 + {0, CS1_SW7, CS2_SW7, CS3_SW7 }, // 23 LED24 + {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 24 LED27 + {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 25 LED28 + {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 26 LED29 + {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 27 LED30 + {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 28 LED31 + {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 29 LED32 + {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 30 LED33 +}; + +led_config_t g_led_config = {{ + { 0, 1, 2, 3 }, + { 4, 5, 6, 7 }, + { 8, 9, 10, NO_LED}, + { 11, 12, 13, 14 }, + { 15, NO_LED, NO_LED, 16 } +}, { + {45, 0 }, // 0 NUM + {90, 0 }, // 1 / + {134, 0 }, // 2 * + {179, 0 }, // 3 - + {45, 16 }, // 4 7 + {90, 16 }, // 5 8 + {134, 16 }, // 6 9 + {179, 24 }, // 7 + + {45, 32 }, // 8 4 + {90, 32 }, // 9 5 + {134, 32 }, // 10 6 + {45, 48 }, // 11 1 + {90, 48 }, // 12 2 + {134, 48 }, // 13 3 + {179, 56 }, // 14 ENTER + {67, 64 }, // 15 0 + {134, 64 }, // 16 . + {0, 0 }, // 17 LED18 + {0, 11 }, // 18 LED19 + {0, 21 }, // 19 LED20 + {0, 32 }, // 20 LED21 + {0, 43 }, // 21 LED22 + {0, 53 }, // 22 LED23 + {0, 64 }, // 23 LED24 + {224, 0 }, // 24 LED27 + {224, 11 }, // 25 LED28 + {224, 21 }, // 26 LED29 + {224, 32 }, // 27 LED30 + {224, 43 }, // 28 LED31 + {224, 53 }, // 29 LED32 + {224, 64 } // 30 LED33 +}, { + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 4, + 4, 4, 4, 4, + 4, 4, + 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2 +} }; + +# ifdef DRIVER_1_PW_EN + +void keyboard_pre_init_user(void) { + wait_ms(2000); + setPinOutput(DRIVER_1_PW_EN); + writePinHigh(DRIVER_1_PW_EN); +} +# endif + +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + return true; +} +#endif diff --git a/keyboards/gmmk/numpad/post_config.h b/keyboards/gmmk/numpad/post_config.h new file mode 100644 index 000000000000..6ee57f4439ef --- /dev/null +++ b/keyboards/gmmk/numpad/post_config.h @@ -0,0 +1,21 @@ +/* Copyright 2022 by rustedaperture + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifndef TAP_CODE_DELAY +# define TAP_CODE_DELAY 10 +#endif \ No newline at end of file diff --git a/keyboards/gmmk/numpad/readme.md b/keyboards/gmmk/numpad/readme.md new file mode 100644 index 000000000000..d40b2b8c5871 --- /dev/null +++ b/keyboards/gmmk/numpad/readme.md @@ -0,0 +1,40 @@ +# GMMK NUMPAD + +![GMMK NUMPAD](https://i.imgur.com/JV4C5os.png) + +A 17 Key macropad made and sold by Glorious LLC, equipped with a WB32 microcontroller, with support for a rotary encoder. + +* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) +* Hardware Supported: GMMK Numpad +* Hardware Availability: [GloriousPCGaming.com](https://www.gloriousgaming.com/products/gmmk-numpad) + +Make example for this keyboard (after setting up your build environment): + + make gmmk/numpad:default + +Flashing example for this keyboard: + + make gmmk/numpad: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 Num key and plug in the keyboard +* **Keycode in layout**: Press the Num+Del key which is mapped to `QK_BOOT` +* **Physical switch**: Pinhole located ubnde the zero key press while inserting the USB +* **From Glorious Core Firmware**: Press Enter+Plus at the same time while plugging in the USB + +## Slider + +The slider is currently compatible with [Midi2Vol](https://github.com/jesusvallejo/Midi2Vol), [Midi Mixer (Windows)](https://github.com/jpwilliams/midi-mixer-releases/releases), [Midi2Lightroom (Mac)](https://rsjaffe.github.io/MIDI2LR/), and [ControllerMate (Mac)](https://www.orderedbytes.com/controllermate/) + +## Encoder Button + +The Button is set to KC_CALC by default and is located at 2,3 on the matrix + +## Broken + +* Bluetooth functionality \ No newline at end of file diff --git a/keyboards/gmmk/numpad/rules.mk b/keyboards/gmmk/numpad/rules.mk new file mode 100644 index 000000000000..4d23ffbfaf30 --- /dev/null +++ b/keyboards/gmmk/numpad/rules.mk @@ -0,0 +1,26 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +KEYBOARD_SHARED_EP = yes +MIDI_ENABLE = yes + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = AW20216 + +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash + +LTO_ENABLE = yes + +SRC += analog.c \ + matrix.c \ No newline at end of file diff --git a/keyboards/gopolar/gg86/gg86.c b/keyboards/gopolar/gg86/gg86.c index 3e790cd61e65..814ee5ec3e46 100644 --- a/keyboards/gopolar/gg86/gg86.c +++ b/keyboards/gopolar/gg86/gg86.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -20,6 +20,11 @@ #include "lib/logo.h" #ifdef RGB_MATRIX_ENABLE + +#include +#include +#include + led_config_t g_led_config = { { { 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, NO_LED, 74, 73, 72 }, { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 }, @@ -50,6 +55,62 @@ led_config_t g_led_config = { { // Underglow (88 -> 99) 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 } }; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_UNDERGLOW): { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + } + return process_record_user(keycode, record); +} + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + HSV hsv = rgb_matrix_config.hsv; + uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); + hsv.h = time; + RGB rgb = hsv_to_rgb(hsv); + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(25, 0, 0, 0); + } + + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(73, 0, 0, 0); + } + return true; +} #endif #ifdef OLED_ENABLE diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c index 454d346f1810..e0c17f868a71 100644 --- a/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "oled/bongocat.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -34,22 +29,6 @@ enum layer_names { _FN, }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -121,94 +100,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE bool oled_task_user(void) { led_t led_usb_state = host_keyboard_led_state(); diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/readme.md b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md index 632f9c67e292..9e02220c4ce7 100644 --- a/keyboards/gopolar/gg86/keymaps/bongocat/readme.md +++ b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md @@ -1,3 +1 @@ # Keymap with VIA and Bongo Cat on OLED - -Keymap is default 87 qwerty, with TKL 7u-spacebar layout diff --git a/keyboards/gopolar/gg86/keymaps/default/keymap.c b/keyboards/gopolar/gg86/keymaps/default/keymap.c index 1d043a95d852..e192d46a802e 100644 --- a/keyboards/gopolar/gg86/keymaps/default/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "lib/wave.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,22 +26,6 @@ // enum layer_names { }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -170,94 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE static void render_layer_info(void) { switch (get_highest_layer(layer_state)) { diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/config.h b/keyboards/gopolar/gg86/keymaps/horrortroll/config.h deleted file mode 100644 index 246f36bb94f4..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 DYNAMIC_KEYMAP_LAYER_COUNT 2 -#define NO_ACTION_ONESHOT - -#ifdef RGB_MATRIX_ENABLE - /* RGB Matrix effect */ - #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT - #undef ENABLE_RGB_MATRIX_BAND_SAT - #undef ENABLE_RGB_MATRIX_BAND_VAL - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL - #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN - #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #undef ENABLE_RGB_MATRIX_DUAL_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #undef ENABLE_RGB_MATRIX_RAINDROPS - #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - #undef ENABLE_RGB_MATRIX_HUE_WAVE - #undef ENABLE_RGB_MATRIX_PIXEL_RAIN - - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #undef ENABLE_RGB_MATRIX_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c index 65d473639d08..fc725ad3f0a2 100644 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 HorrorTroll * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,7 +16,8 @@ #include QMK_KEYBOARD_H -#include "keymap_stuff.h" +#include "horrortroll.h" +#include "oled/oled_stuff.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h deleted file mode 100644 index 9003cd5e6b0c..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h +++ /dev/null @@ -1,305 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 "oled/oled_stuff.h" -#include -#include - -#include - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layer_names { - _BASE, - _FN, -}; - -// For CUSTOM_GRADIENT -HSV gradient_0 = {205, 250, 255}; -HSV gradient_100 = {140, 215, 125}; -bool reflected_gradient = false; -uint8_t gp_i = 0; - -typedef struct { - HSV gradient_0; - HSV gradient_1; - bool reflected; -} CUSTOM_PRESETS; - -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - -enum layer_keycodes { - //Custom Gradient control keycode - G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase - G1_HUD, //Custom gradient color 1 hue decrease - G1_SAI, //Custom gradient color 1 saturation increase - G1_SAD, //Custom gradient color 1 saturation decrease - G1_VAI, //Custom gradient color 1 value increase - G1_VAD, //Custom gradient color 1 value decrease - G2_HUI, //Custom gradient color 2 hue increase - G2_HUD, //Custom gradient color 2 hue decrease - G2_SAI, //Custom gradient color 2 saturation increase - G2_SAD, //Custom gradient color 2 saturation decrease - G2_VAI, //Custom gradient color 2 value increase - G2_VAD, //Custom gradient color 2 value decrease - G_PRE, //Gradient presets - REF_G, //Toggle between linear and reflected gradient - G_FLIP, //Flip the gradient colors - - //Custom led effect keycode - RGB_C_E, //Cycle user effect -}; - -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - process_record_user_oled(keycode, record); - - uint8_t color_adj_step = 5; - - CUSTOM_PRESETS gradient_presets[] = { - {{41 , 255, 255}, {233, 245, 255}, false }, - {{45 , 245, 155}, {160, 255, 80}, false }, - {{173, 245, 40}, {41 , 255, 205}, true }, - {{32 , 255, 165}, {217, 185, 70}, false }, - {{240, 255, 145}, {115, 255, 245}, true }, - {{118, 255, 255}, {242, 255, 255}, false }, - {{212, 0 , 0}, {223, 235, 165}, true }, - {{205, 250, 255}, {140, 215, 125}, false }, - }; - - uint8_t gp_length = ARRAY_SIZE(gradient_presets); - - switch (keycode) { - case G1_HUI: - if (record->event.pressed) { - gradient_0.h += color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_HUD: - if (record->event.pressed) { - gradient_0.h -= color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAI: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAD: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAI: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAD: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G2_HUI: - if (record->event.pressed) { - gradient_100.h += color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_HUD: - if (record->event.pressed) { - gradient_100.h -= color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAI: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAD: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAI: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAD: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G_PRE: - if (record->event.pressed) { - gp_i = (gp_i + gp_length ) % gp_length; - - gradient_0 = gradient_presets[gp_i].gradient_0; - gradient_100 = gradient_presets[gp_i].gradient_1; - reflected_gradient = gradient_presets[gp_i].reflected; - - gp_i += 1; - } - return false; - case REF_G: - if (record->event.pressed) { - reflected_gradient = !reflected_gradient; - } - return false; - case G_FLIP: - if (record->event.pressed) { - HSV temp_color = gradient_0; - gradient_0 = gradient_100; - gradient_100 = temp_color; - } - return false; - case RGB_C_E: - if (record->event.pressed) { - switch (rgb_matrix_get_mode()) { - case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL); - return false; - case RGB_MATRIX_CUSTOM_COOL_DIAGONAL: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING); - return false; - case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE); - return false; - case RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT); - return false; - case RGB_MATRIX_CUSTOM_KITT: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW); - return false; - default: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT); - return false; - } - } - return false; - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c deleted file mode 100644 index 951884b45698..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -extern HSV gradient_0; -extern HSV gradient_100; -extern bool reflected_gradient; - -static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) { - uint8_t cw, ccw; - HSV color; - - cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255. - ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h; - - if( cw < ccw ) { // going clockwise - color.h = gradient_0.h + (uint8_t)(step * cw); - } else { // Going counter clockwise - color.h = gradient_0.h - (uint8_t)(step * ccw); - } - - color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s); - - // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0 - color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255)); - - return color; -} - -static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) { - float step = (float)led_x / (max_x - min_x); - float mid_gradient_pos = 0.5; - - if( reflected_gradient ) { - if( step <= mid_gradient_pos ) { - return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100); - } else { - return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0); - } - - } else { - return INTERPOLATE_HSV(step, gradient_0, gradient_100); - } -} - -static bool CUSTOM_GRADIENT(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t min_x = 0; // X coordinate of the left-most LED - uint8_t max_x = 224; // X coordinate of the right-most LED - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - - HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x); - RGB rgb = hsv_to_rgb(hsv_orig); - - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h deleted file mode 100644 index 941dab975a61..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time); - -bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1)); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - if (g_led_config.point[i].y > k_rgb_matrix_center.y) { - RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r); - } else { - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - return rgb_matrix_check_finished_leds(led_max); -} diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c deleted file mode 100644 index bfc32ce04075..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -// variable for startup animation -bool BASE_EFFECT_NOT_STARTED_YET = true; -uint8_t base_effect_startup_counter = 255; - -uint8_t led_count = 11; -uint8_t led_first = 41; - -static uint8_t time_to_led(uint8_t time, uint8_t led_behind) { - uint16_t led_time = led_count * time; - uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count); - uint8_t led; - - if (step < led_count) { - led = step; - } else { - led = led_count - 1 - (step - led_count); - } - - return led; -} - -static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) { - - // reset base effect startup - if (i == 0) { - BASE_EFFECT_NOT_STARTED_YET = true; - } - - hsv.h = 0; - hsv.s = 255; - - if (i >= led_first && i < led_first + led_count) { - uint8_t j = i - led_first; - if (j == time_to_led(time, 0)) { - hsv.v = hsv.v; - } else if (j == time_to_led(time, 1)) { - hsv.v = hsv.v/2; - } else if (j == time_to_led(time, 2)) { - hsv.v = hsv.v/4; - } else if (j == time_to_led(time, 3)) { - hsv.v = hsv.v/8; - } else { - hsv.v = 0; - } - } else { - hsv.v = 0; - } - - return hsv; -} - -bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); } \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h deleted file mode 100644 index 9fff344664e5..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 - -typedef HSV (*rainbow_reactive_f)(HSV hsv, uint8_t i, uint8_t time, uint16_t offset); - -bool effect_rainbow_reactive(effect_params_t* params, rainbow_reactive_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); - uint16_t max_tick = 65535 / rgb_matrix_config.speed; - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - uint16_t tick = max_tick; - - // Reverse search to find most recent key hit - for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { - if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { - tick = g_last_hit_tracker.tick[j]; - break; - } - } - - uint16_t offset = scale16by8(tick, rgb_matrix_config.speed); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time, offset)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c deleted file mode 100644 index b5ffef665f87..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -static uint8_t offset[RGB_MATRIX_LED_COUNT]; - -static void doRandom_breath_rainbow(int i, effect_params_t* params) { - if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6); - - if (rand() * 50 == 1) { - if (rand() * 2 == 1) { - offset[i]++; - } - else { - offset[i]--; - } - } - - //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05; - HSV hsv = {0, 255, 255}; - hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); -} - -bool RANDOM_BREATH_RAINBOW(effect_params_t* params) { - - if (!params->init) { - // Change one LED every tick, make sure speed is not 0 - doRandom_breath_rainbow(rand() % RGB_MATRIX_LED_COUNT, params); - return false; - } - - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - for (uint8_t i = led_min; i < led_max; i++) { - doRandom_breath_rainbow(i, params); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md b/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md deleted file mode 100644 index 363330e98f19..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# My personal keymap with VIA and custom LED / OLED - -Keymap is default 87 qwerty, with TKL 7u-spacebar layout - -It have new LED effect: - -- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt]) -- Cool diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware]) -- Flower Blooming -- Rainbow reactive simple -- Knight Rider (ported from jumper149 code [https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/]) -- Random breath rainbow (based from daed code [https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed] and modify by me) diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc b/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc deleted file mode 100644 index 7a319910275f..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc +++ /dev/null @@ -1,17 +0,0 @@ -RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) -RGB_MATRIX_EFFECT(COOL_DIAGONAL) -RGB_MATRIX_EFFECT(FLOWER_BLOOMING) -RGB_MATRIX_EFFECT(RAINBOW_REACTIVE_SIMPLE) -RGB_MATRIX_EFFECT(KITT) -RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) - -#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -#include "led/custom_gradient.c" -#include "led/cool_diagonal.c" -#include "led/flower_blooming/flower_blooming.c" -#include "led/rainbow_reactive_simple/rainbow_reactive_simple.c" -#include "led/kitt.c" -#include "led/random_breath_rainbow.c" - -#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk b/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk deleted file mode 100644 index d475530c871c..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -VIA_ENABLE = yes - -RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/gopolar/gg86/keymaps/via/keymap.c b/keyboards/gopolar/gg86/keymaps/via/keymap.c index 1d043a95d852..e192d46a802e 100644 --- a/keyboards/gopolar/gg86/keymaps/via/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "lib/wave.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,22 +26,6 @@ // enum layer_names { }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -170,94 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE static void render_layer_info(void) { switch (get_highest_layer(layer_state)) { diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h new file mode 100644 index 000000000000..7c0768a5ea64 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2022 Yoga Benggolo + +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 + +#undef SOFT_SERIAL_PIN +#define SOFT_SERIAL_PIN D2 // Pin D2 is labeled with RX on the PCB + +// Refers to AVR Pins, not Arduino Pins +#undef MATRIX_COL_PINS +#undef MATRIX_ROW_PINS +#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4, B5 } +#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 } + diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c new file mode 100644 index 000000000000..0e8436788e6f --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2022 Yoga Benggolo +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum custom_layer { + _QWERTZ, + _RAISE, +}; + +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTZ] = LAYOUT_6x7( + 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_END , + XXXXXXX, 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, + RAISE , 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_LCTL, 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_MPLY, + KC_LEFT, KC_RGHT, KC_UP , KC_DOWN, + KC_SPC , KC_LSFT, KC_RALT, KC_ENT , + + KC_LGUI, KC_LALT, KC_BSPC, KC_DEL , + KC_PGDN, KC_PGUP, KC_TAB , KC_INS + ), + + [_RAISE] = LAYOUT_6x7( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MPRV, KC_MNXT, KC_VOLU, KC_VOLD, + _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md new file mode 100644 index 000000000000..735c3d8f3ac9 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md @@ -0,0 +1,19 @@ +# 6x7 Dactyl Manuform ISO-DE + +Hardware build log: [andi4000/dactyl-keyboard](https://github.com/andi4000/dactyl-keyboard) + +Please note the wiring differences with the default keymap in `config.h`. + + +## Layout + +![Dactyl Manuform 6x7 ISO-DE](https://i.imgur.com/LUlCGVd.png) + + +## Flashing + +To build firmware and flash afterwards: + + qmk flash -kb handwired/dactyl_manuform/6x7 -km iso-de + +Reset the keyboard when prompted to enter bootloader. diff --git a/keyboards/handwired/jotanck/config.h b/keyboards/handwired/jotanck/config.h index f3e53c98ced2..dc185270c121 100644 --- a/keyboards/handwired/jotanck/config.h +++ b/keyboards/handwired/jotanck/config.h @@ -1,6 +1,21 @@ +/* Copyright 2023 jotix + * + * 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 - /* pro_micro pin-out */ #define MATRIX_ROW_PINS { D7, E6, B6, B2 } #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D3, D2, D1, D0, D4, C6 } diff --git a/keyboards/handwired/jotanck/info.json b/keyboards/handwired/jotanck/info.json index 57e41a0f8bee..f81c2d18f737 100644 --- a/keyboards/handwired/jotanck/info.json +++ b/keyboards/handwired/jotanck/info.json @@ -4,8 +4,8 @@ "url": "", "maintainer": "jotix", "usb": { - "vid": "0xFEED", - "pid": "0x6060", + "vid": "0x4A4F", + "pid": "0x5458", "device_version": "0.0.1" }, "processor": "atmega32u4", diff --git a/keyboards/handwired/jotanck/jotanck.c b/keyboards/handwired/jotanck/jotanck.c index 23e2b9634c7a..b20d3e12895d 100644 --- a/keyboards/handwired/jotanck/jotanck.c +++ b/keyboards/handwired/jotanck/jotanck.c @@ -1,3 +1,19 @@ +/* Copyright 2023 jotix + * + * 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 "jotanck.h" void keyboard_pre_init_kb(void) { diff --git a/keyboards/handwired/jotanck/jotanck.h b/keyboards/handwired/jotanck/jotanck.h index e253940ddc93..4fa7cd499318 100644 --- a/keyboards/handwired/jotanck/jotanck.h +++ b/keyboards/handwired/jotanck/jotanck.h @@ -1,8 +1,23 @@ +/* Copyright 2023 jotix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include "quantum.h" - #define LAYOUT_ortho_4x12( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ diff --git a/keyboards/handwired/jotanck/keymaps/via/keymap.c b/keyboards/handwired/jotanck/keymaps/via/keymap.c new file mode 100644 index 000000000000..3b7739ed6239 --- /dev/null +++ b/keyboards/handwired/jotanck/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2023 jotix + * + * 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_ortho_4x12 ( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_RALT, TL_LOWR, KC_SPC, KC_SPC, TL_UPPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +[_LOWER] = LAYOUT_ortho_4x12 ( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, + _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_RAISE] = LAYOUT_ortho_4x12 ( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, _______, _______, _______, ADJUST, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +), + +[_ADJUST] = LAYOUT_ortho_4x12 ( + _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +}; diff --git a/keyboards/handwired/jotanck/keymaps/via/rules.mk b/keyboards/handwired/jotanck/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/jotanck/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/maverick0197/keydeck8/info.json b/keyboards/handwired/maverick0197/keydeck8/info.json new file mode 100644 index 000000000000..d70b262c04eb --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/info.json @@ -0,0 +1,38 @@ +{ + "keyboard_name": "keydeck8", + "manufacturer": "Maverick0197", + "maintainer": "Maverick0197", + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "encoder": true + }, + "encoder": { + "rotary": [ + { "pin_a": "D3", "pin_b": "D2", "resolution": 4 } + ] + }, + "matrix_pins": { + "direct": [ + ["D0", "D1", "D4"], + ["C6", "D7", "E6"], + ["B4", "B5", "B6"] + ] + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x3031", + "vid": "0x4D76" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"D0", "matrix": [0, 0], "x":0, "y":0}, {"label":"D1", "matrix": [0, 1], "x":1, "y":0}, {"label":"D4", "matrix": [0, 2], "x":2, "y":0}, + {"label":"C6", "matrix": [1, 0], "x":0, "y":1}, {"label":"D7", "matrix": [1, 1], "x":1, "y":1}, {"label":"E6", "matrix": [1, 2], "x":2, "y":1}, + {"label":"B4", "matrix": [2, 0], "x":0, "y":2}, {"label":"B5", "matrix": [2, 1], "x":1, "y":2}, {"label":"B6", "matrix": [2, 2], "x":2, "y":2} + ] + } + } +} diff --git a/keyboards/handwired/maverick0197/keydeck8/keydeck8.c b/keyboards/handwired/maverick0197/keydeck8/keydeck8.c new file mode 100644 index 000000000000..663306a9bb2a --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/keydeck8.c @@ -0,0 +1,33 @@ +/* Copyright 2023 Maverick0197 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + //if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + //} + return false; +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c b/keyboards/handwired/maverick0197/keydeck8/keymaps/default/keymap.c similarity index 58% rename from keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c rename to keyboards/handwired/maverick0197/keydeck8/keymaps/default/keymap.c index ce3fff8ec51e..2d4b4eb8c545 100644 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c +++ b/keyboards/handwired/maverick0197/keydeck8/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 Maverick0197 * * 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 @@ -14,12 +14,20 @@ * along with this program. If not, see . */ -#include "led/rainbow_reactive_simple/rainbow_reactive_simple.h" +#include QMK_KEYBOARD_H -static HSV RAINBOW_REACTIVE_SIMPLE_math(HSV hsv, uint8_t i, uint8_t time, uint16_t offset) { - hsv.h = g_led_config.point[i].x - time; - hsv.v = scale8(255 - offset, hsv.v); - return hsv; -} +// clang-format off -bool RAINBOW_REACTIVE_SIMPLE(effect_params_t* params) { return effect_rainbow_reactive(params, &RAINBOW_REACTIVE_SIMPLE_math); } \ No newline at end of file +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif // ENCODER_MAP_ENABLE + +// clang-format on diff --git a/keyboards/handwired/maverick0197/keydeck8/keymaps/default/rules.mk b/keyboards/handwired/maverick0197/keydeck8/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/handwired/maverick0197/keydeck8/keymaps/via/keymap.c b/keyboards/handwired/maverick0197/keydeck8/keymaps/via/keymap.c new file mode 100644 index 000000000000..d9e409a1a923 --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2023 Maverick0197 + * + * 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( + KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif // ENCODER_MAP_ENABLE + +// clang-format on diff --git a/keyboards/handwired/maverick0197/keydeck8/keymaps/via/rules.mk b/keyboards/handwired/maverick0197/keydeck8/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/handwired/maverick0197/keydeck8/readme.md b/keyboards/handwired/maverick0197/keydeck8/readme.md new file mode 100644 index 000000000000..d72caa9cc985 --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/readme.md @@ -0,0 +1,40 @@ +# KeyDeck8 + +Firmware for obscuresausage's Multimedia Key Deck. + +8 keys and and encoder powered by a Pro Micro. + +[Multimedia Key Deck model Files](https://www.printables.com/model/389352-multimedia-key-deck) + + +![KeyDeck8](https://i.imgur.com/6G2LPLzl.jpg) + +--- +Wiring Diagram: + +![KeyDeck8 Wiring Diagram](https://i.imgur.com/1sOvYRUl.jpg) + + +Pinouts for Pro Micro: + +![Promicro Pinout Guide](https://i.imgur.com/LZ194Hfl.jpg) + +--- +* Keyboard Maintainer: [Maverick0197](https://github.com/Maverick0197) +* Hardware Supported: Pro Micro +* Printed enclosure +* Handwired +* Requires a Pro Micro, 8 key switches and 1 KY040 encoder +* Hardware Availability: [Make it yourself](https://github.com/Maverick0197/KeyDeck8) + +--- +Make example for this keyboard (after setting up your build environment): + + make handwired/maverick0197/keydeck8: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). + +--- +Revision 0.0.1: +- +Initial release. diff --git a/keyboards/handwired/maverick0197/keydeck8/rules.mk b/keyboards/handwired/maverick0197/keydeck8/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/maverick0197/keydeck8/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/onekey/keymaps/adc/keymap.c b/keyboards/handwired/onekey/keymaps/adc/keymap.c index f9302a42b247..57125e01ed97 100644 --- a/keyboards/handwired/onekey/keymaps/adc/keymap.c +++ b/keyboards/handwired/onekey/keymaps/adc/keymap.c @@ -19,7 +19,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { char buffer[50]; sprintf(buffer, "ADC:%u\n", val); #ifdef CONSOLE_ENABLE - printf(buffer); + uprintf("%s", buffer); #else send_string(buffer); #endif diff --git a/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c b/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c index bcec8b3ca1b9..018b9215f87a 100644 --- a/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c +++ b/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c @@ -17,7 +17,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { char buffer[100]; sprintf(buffer, "ID:%lu:%lu:%lu:%lu\n", id.data[0], id.data[1], id.data[2], id.data[3]); #ifdef CONSOLE_ENABLE - printf(buffer); + uprintf("%s", buffer); #else send_string(buffer); #endif diff --git a/keyboards/hazel/bad_wings/config.h b/keyboards/hazel/bad_wings/config.h new file mode 100644 index 000000000000..47301728357b --- /dev/null +++ b/keyboards/hazel/bad_wings/config.h @@ -0,0 +1,19 @@ +// Copyright 2023 Jason Hazel (@jasonhazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define SPI_SCK_PIN GP2 +#define SPI_MOSI_PIN GP3 +#define SPI_MISO_PIN GP4 + +#define SHIFTREG_MATRIX_COL_CS GP0 +#define SHIFTREG_DIVISOR 8 +#define SHIFTREG_ROWS 5 +#define SHIFTREG_COLS 8 + +#define MATRIX_ROW_PINS_SR { GP26, GP27, GP28, GP29, GP6 } + +#define POINTING_DEVICE_CS_PIN GP1 +#define CIRQUE_PINNACLE_DIAMETER_MM 35 +#define POINTING_DEVICE_ROTATION_90 \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/halconf.h b/keyboards/hazel/bad_wings/halconf.h new file mode 100644 index 000000000000..ed9500fe759c --- /dev/null +++ b/keyboards/hazel/bad_wings/halconf.h @@ -0,0 +1,12 @@ +// Copyright 2023 Jason Hazel (@jasonhazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/info.json b/keyboards/hazel/bad_wings/info.json new file mode 100644 index 000000000000..f57889bc2d44 --- /dev/null +++ b/keyboards/hazel/bad_wings/info.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "Bad Wings", + "manufacturer": "Hazel", + "maintainer": "jasonhazel", + "url": "https://shop.hazel.cc/products/bad-wings", + "usb": { + "vid": "0x4A48", + "pid": "0x4257", + "device_version": "1.0.0" + }, + "processor": "RP2040", + "bootloader": "rp2040", + "matrix_size": { + "cols": 8, + "rows": 5 + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "deferred_exec": true, + "nkro": false + }, + "community_layouts": [ "split_3x5_3" ], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0.75 }, + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 1, "y": 0.5 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 2, "y": 0 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 3, "y": 0.25 }, + { "label": "K40", "matrix": [4, 0], "w": 1, "x": 4, "y": 0.36 }, + { "label": "K44", "matrix": [4, 4], "w": 1, "x": 8, "y": 0.36 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 9, "y": 0.25 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 10, "y": 0 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 11, "y": 0.5 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 12, "y": 0.75 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 0, "y": 1.75 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 2, "y": 1 }, + { "label": "K31", "matrix": [3, 1], "w": 1, "x": 3, "y": 1.25 }, + { "label": "K41", "matrix": [4, 1], "w": 1, "x": 4, "y": 1.36 }, + { "label": "K45", "matrix": [4, 5], "w": 1, "x": 8, "y": 1.36 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 9, "y": 1.25 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 10, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 11, "y": 1.5 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 12, "y": 1.75 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 0, "y": 2.75 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 1, "y": 2.5 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3, "y": 2.25 }, + { "label": "K42", "matrix": [4, 2], "w": 1, "x": 4, "y": 2.36 }, + { "label": "K46", "matrix": [4, 6], "w": 1, "x": 8, "y": 2.36 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 9, "y": 2.25 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 11, "y": 2.5 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 12, "y": 2.75 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3, "y": 3.25 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4, "y": 3.36 }, + { "label": "K43", "matrix": [4, 3], "w": 1, "x": 5, "y": 3.47 }, + { "label": "K47", "matrix": [4, 7], "w": 1, "x": 7, "y": 3.47 }, + { "label": "K37", "matrix": [3, 7], "w": 1, "x": 8, "y": 3.36 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 9, "y": 3.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/keymaps/default/config.h b/keyboards/hazel/bad_wings/keymaps/default/config.h new file mode 100644 index 000000000000..bd395ec9e5d2 --- /dev/null +++ b/keyboards/hazel/bad_wings/keymaps/default/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Jason Hazel (@jasonhazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM_PER_KEY +#define ONESHOT_TAP_TOGGLE 10 +#define ONESHOT_TIMEOUT 500 +#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD +#define CIRQUE_PINNACLE_TAP_ENABLE +#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE +#define CIRQUE_DEVICE_GESTURES_SCROLL_ENABLE \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/keymaps/default/keymap.c b/keyboards/hazel/bad_wings/keymaps/default/keymap.c new file mode 100644 index 000000000000..e9adc7cc2e9f --- /dev/null +++ b/keyboards/hazel/bad_wings/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2023 Jason Hazel (@jasonhazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#include QMK_KEYBOARD_H + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, 1, 2, 3); +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ + KC_Z, LGUI_T(KC_X), LALT_T(KC_C), KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ + KC_LCTL, OSL(1), OSM(MOD_LSFT), KC_SPC, LT(2, KC_BSPC), KC_ENT + ), + [1] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RBRC, KC_RCBR, KC_RPRN, KC_RABK, KC_NO, \ + KC_GRV, KC_TILD, KC_UNDS, KC_EQL, KC_NO, KC_LBRC, KC_LCBR, KC_LPRN, KC_LABK, KC_BACKSLASH, \ + KC_NO, KC_NO, KC_PLUS, KC_MINS, KC_NO, KC_NO, KC_NO, KC_COLN, KC_DOT, KC_SCLN, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PIPE, KC_NO, \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOT, KC_NO, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x5_3( + KC_ESC, KC_F1, KC_F4, KC_F7, KC_F10, KC_NO, KC_HOME, KC_UP, KC_END, KC_BSPC, \ + KC_TAB, KC_F2, KC_F5, KC_F8, KC_F11, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT, \ + KC_NO, KC_F3, KC_F6, KC_F9, KC_F12, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/keymaps/default/rules.mk b/keyboards/hazel/bad_wings/keymaps/default/rules.mk new file mode 100644 index 000000000000..cb8ebf227ec3 --- /dev/null +++ b/keyboards/hazel/bad_wings/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/matrix.c b/keyboards/hazel/bad_wings/matrix.c new file mode 100644 index 000000000000..496bebd58f9c --- /dev/null +++ b/keyboards/hazel/bad_wings/matrix.c @@ -0,0 +1,137 @@ +// Copyright 2022 @sadekbaroudi (Sadek Baroudi) +// Copyright 2023 @jasonhazel (Jason Hazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "quantum.h" +#include "spi_master.h" +#include /* memset */ +#include /* close */ +#include "quantum.h" +#include "matrix.h" + +#if (!defined(SHIFTREG_MATRIX_COL_CS)) +# error Missing shift register I/O pin definitions +#endif + +int matrixArraySize = SHIFTREG_ROWS * sizeof(matrix_row_t); +matrix_row_t oldMatrix[SHIFTREG_ROWS]; + +#define SHIFTREG_OUTPUT_BITS 8 +pin_t rowPinsSR[SHIFTREG_ROWS] = MATRIX_ROW_PINS_SR; + +// semaphore to make sure SPI doesn't get called multiple times +static bool shiftRegisterSPILocked = false; + +void semaphore_lock(bool value) { + shiftRegisterSPILocked = value; +} + +bool semaphore_is_locked(void) { + return shiftRegisterSPILocked; +} + +void sr_74hc595_spi_stop(void) { + spi_stop(); + semaphore_lock(false); +} + +bool sr_74hc595_spi_start(void) { + if (!spi_start(SHIFTREG_MATRIX_COL_CS, false, 0, SHIFTREG_DIVISOR)) { + dprintf("74hc595 matrix: failed to start spi\n"); + sr_74hc595_spi_stop(); + return false; + } + + semaphore_lock(true); + wait_us(1); // not sure if I need this + return true; +} + +bool sr_74hc595_spi_send_byte(uint8_t data) { + sr_74hc595_spi_start(); + writePinLow(SHIFTREG_MATRIX_COL_CS); + matrix_io_delay(); + spi_write(data); + matrix_io_delay(); + writePinHigh(SHIFTREG_MATRIX_COL_CS); + sr_74hc595_spi_stop(); + return true; +} + +/** + * Set the entire shift register to be full of inactive bits + */ +void clearColumns(void) { + uint8_t value = 0b00000000; + sr_74hc595_spi_send_byte(value); +} + +void setColumn(int columnShift, bool test_run) { + uint8_t columnShiftByte = ((uint8_t)1 << columnShift); + if(test_run) { + dprintf("byte sent: %d\n", columnShiftByte); + } + sr_74hc595_spi_send_byte(columnShiftByte); +} + +/* + * override of the qmk intialization function + */ +void matrix_init_custom(void) { + wait_ms(300); + spi_init(); + // Set up the initial states for all the row pins + for (int r = 0; r < SHIFTREG_ROWS; r++) { + // Note: This needs to use the internal pull down resistors, and atmegas do *not* support that + setPinInputLow(rowPinsSR[r]); + } + + // Set the CS to low by default, and specify as an output pin + writePinHigh(SHIFTREG_MATRIX_COL_CS); // should be high when using SPI? + setPinOutput(SHIFTREG_MATRIX_COL_CS); + + // Since it's the init, deactivate all the columns. We'll activate once we get to the matrix scan + clearColumns(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + // respect the semaphore + if (semaphore_is_locked()) { + return false; + } + + // Keep track of if something was modified + bool matrix_has_changed = false; + + // reset the current matrix, as we'll be updating and comparing to the old matrix + memset(current_matrix, 0, matrixArraySize); + + + bool debug_output = false; + // Loop through the columns, activating one at a time, and read the rows, and place in the new current_matrix + for (int c = 0; c < SHIFTREG_COLS; c++) { + if (debug_output) { + dprintf("column iteration: %d\n", c); + } + setColumn(c, debug_output); + matrix_io_delay(); + + for (int r = 0; r < SHIFTREG_ROWS; r++) { + current_matrix[r] |= ((readPin(rowPinsSR[r]) ? 1 : 0) << c); + } + } + + matrix_has_changed = memcmp(current_matrix, oldMatrix, matrixArraySize) != 0; + memcpy(oldMatrix, current_matrix, matrixArraySize); + + if (matrix_has_changed) { + matrix_print(); + } + + + // Deactivate all the columns for the next run. + clearColumns(); + matrix_io_delay(); + + return matrix_has_changed; +} diff --git a/keyboards/hazel/bad_wings/mcuconf.c b/keyboards/hazel/bad_wings/mcuconf.c new file mode 100644 index 000000000000..9ed5ae7efbd1 --- /dev/null +++ b/keyboards/hazel/bad_wings/mcuconf.c @@ -0,0 +1,11 @@ +// Copyright 2023 Jason Hazel (@jasonhazel) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include_next "mcuconf.h" + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/readme.md b/keyboards/hazel/bad_wings/readme.md new file mode 100644 index 000000000000..0b0f643745f5 --- /dev/null +++ b/keyboards/hazel/bad_wings/readme.md @@ -0,0 +1,27 @@ +# Bad Wings + +![Bad Wings](https://i.imgur.com/QpfcEj8h.png) + +36 key unibody split + +* Keyboard Maintainer: [Jason Hazel](https://github.com/jasonhazel) +* Hardware Supported: Bad Wings v1 +* Hardware Availability: [Hazel's Garage](https://shop.hazel.cc/products/bad-wings) + +Make example for this keyboard (after setting up your build environment): + + make hazel/bad_wings:default + +Flashing example for this keyboard: + + make hazel/bad_wings:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top-left key and plug in the keyboard +* **Physical reset button**: Hold Xiao B button, press Xiao R button, release B +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/rules.mk b/keyboards/hazel/bad_wings/rules.mk new file mode 100644 index 000000000000..1001af0186bb --- /dev/null +++ b/keyboards/hazel/bad_wings/rules.mk @@ -0,0 +1,10 @@ +TRI_LAYER_ENABLE = yes +CAPS_WORD_ENABLE = yes + +SRC += matrix.c + +QUANTUM_LIB_SRC += spi_master.c +CUSTOM_MATRIX = lite + +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi +POINTING_DEVICE_ENABLE = yes diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/config.h b/keyboards/hotdox76v2/keymaps/dancxjo/config.h new file mode 100644 index 000000000000..fac328091d30 --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 Travis Reed (@dancxjo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 +#define EE_HANDS diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c b/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c new file mode 100644 index 000000000000..1f55685de060 --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c @@ -0,0 +1,177 @@ +// Copyright 2023 Travis Reed (@dancxjo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer { + _ENGRAM = 0, + _QWERTY, + _ENGRAM_SHIFT, + _FUNCTION, + _MEDIA +}; + +/* Combines the compose key (right super) and the AltGr */ +#define KC_COMP MT(MOD_RALT, KC_RGUI) +#define KC_SCMP MT(MOD_RSFT | MOD_RALT, KC_RGUI) + +#define KC_STAB MT(MOD_LSFT, KC_TAB) + +/* Use a fake shift layer since Engram switches level 2 assignments */ +#define KC_PSFT MO(_ENGRAM_SHIFT) + +#define KC_FUNC TT(_FUNCTION) +#define KC_MEDI TT(_MEDIA) + +/* Easily switch between MacOS & other OSes*/ +#define KC_HLM1 LM(1, MOD_LCTL) +#define KC_HLM2 LM(1, MOD_LGUI) +#define KC_SHM1 LM(1, MOD_LCTL | MOD_LSFT) +#define KC_SHM2 LM(1, MOD_LGUI | MOD_LSFT) +#define KC_STRN RSFT(KC_TRNS) + +#define KC_FORW LGUI(KC_TAB) +#define KC_BACK LGUI(LSFT(KC_TAB)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Differs slightly from official Engram in that {} are the level 1 and [] are the level 2 */ + [_ENGRAM] = LAYOUT_ergodox_pretty( + KC_LCBR, KC_1, KC_2, KC_3, KC_4, KC_5, CG_NORM, KC_PAUSE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RCBR, + KC_TAB, KC_B, KC_Y, KC_O, KC_U, KC_QUOT, KC_AT, KC_HASH, KC_DQUO, KC_L, KC_D, KC_W, KC_V, KC_Z, + KC_CAPS, KC_C, KC_I, KC_E, KC_A, KC_COMM, KC_DOT, KC_H, KC_T, KC_S, KC_N, KC_Q, + KC_PSFT, KC_G, KC_X, KC_J, KC_K, KC_MINS, KC_SLSH, KC_PSCR, KC_QUES, KC_R, KC_M, KC_F, KC_P, KC_PSFT, + KC_HLM1, KC_FUNC, KC_MEDI, KC_LALT, KC_HLM2, KC_RGUI, KC_RALT, KC_MEDI, KC_FUNC,KC_HLM1, + KC_INS, KC_HOME, KC_END, KC_DEL, + KC_PGUP, KC_PGDN, + KC_ENT, KC_ESC, KC_LSFT, KC_RSFT, KC_BSPC, KC_SPC + ), + [_ENGRAM_SHIFT] = LAYOUT_ergodox_pretty( + KC_LBRC, KC_PIPE, KC_EQL, KC_TILD, KC_PLUS, KC_LT, CG_SWAP, KC_STRN, KC_GT, KC_CIRC, KC_AMPR, KC_PERC, KC_ASTR, KC_RBRC, + KC_STRN, RSFT(KC_B), RSFT(KC_Y), RSFT(KC_O), RSFT(KC_U), KC_LPRN, KC_GRV, KC_DLR, KC_RPRN, RSFT(KC_L), RSFT(KC_D), RSFT(KC_W), RSFT(KC_V), RSFT(KC_Z), + KC_STRN, RSFT(KC_C), RSFT(KC_I), RSFT(KC_E), RSFT(KC_A), KC_SCLN, KC_COLN, RSFT(KC_H), RSFT(KC_T), RSFT(KC_S), RSFT(KC_N), RSFT(KC_Q), + KC_TRNS, RSFT(KC_G), RSFT(KC_X), RSFT(KC_J), RSFT(KC_K), KC_UNDS, KC_BSLS, KC_STRN, KC_EXLM, RSFT(KC_R), RSFT(KC_M), RSFT(KC_F), RSFT(KC_P), KC_TRNS, + KC_SHM1, KC_STRN, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN, KC_STRN, KC_STRN, KC_SHM1, + KC_STRN, KC_STRN, KC_HYPR, KC_STRN, + KC_STRN, KC_STRN, + KC_SHM1, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN + ), + [_QWERTY] = LAYOUT_ergodox_pretty( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, KC_TRNS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FUNCTION] = LAYOUT_ergodox_pretty( + KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_BRID, KC_BRIU, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PWR, + KC_APP, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, TG(1), TG(1), KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_SLEP, + KC_SCRL, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WAKE, + KC_PAUS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, CG_SWAP, CG_NORM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_SAD, RGB_HUD, RGB_HUI, RGB_SAI, + RGB_RMOD, RGB_MOD, + RGB_SPD, RGB_VAD, KC_TRNS, KC_TRNS, RGB_VAI, RGB_SPI + ), + [_MEDIA] = LAYOUT_ergodox_pretty( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_MSEL, KC_NO, + KC_NO, KC_NO, KC_WSTP, KC_MYCM, KC_WSCH, KC_FIND, KC_WHOM, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_CALC, KC_NO, KC_WFAV, KC_NO, KC_NO, KC_NO, KC_HOME, KC_MAIL, KC_END, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MUTE, KC_EJCT, KC_MSTP, KC_MPLY, + KC_MPRV, KC_MNXT, + KC_MRWD, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_MFFD + ) +}; + +char* get_layer_name(uint8_t layer, bool capitalized) { + char *layer_name = "Unknown "; + + switch (layer) { + case _ENGRAM: + case _ENGRAM_SHIFT: + if (capitalized) { + layer_name = "ENGRAM "; + } else { + layer_name = "engram "; + } + break; + case _QWERTY: + if (capitalized) { + layer_name = "QWERTY "; + } else { + layer_name = "qwerty "; + } + break; + case _MEDIA: + layer_name = "Media+ "; + break; + case _FUNCTION: + layer_name = "Function"; + break; + } + return layer_name; +} + +void render_locks(led_t led_state) { + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +void render_mods(uint8_t modifiers, uint8_t layer) { + oled_write_P(modifiers & MOD_MASK_GUI ? PSTR("Super") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + oled_write_P(modifiers & MOD_MASK_ALT ? PSTR("Alt") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + oled_write_P(modifiers & MOD_MASK_CTRL ? PSTR("Ctl") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + + if (layer == _ENGRAM_SHIFT) { + oled_write_P(PSTR("Pseudo"), false); + } else { + oled_write_P(modifiers & MOD_MASK_SHIFT ? PSTR("Shift ") : PSTR(" "), false); + } +} + +char* get_helm_key(void) { + if (keymap_config.swap_lctl_lgui) { + return "Super"; + } else { + return "Control"; + } +} + +bool oled_task_user(void) { + uint8_t layer = get_highest_layer(layer_state); + uint8_t modifiers = get_mods()|get_oneshot_mods(); + led_t led_state = host_keyboard_led_state(); + + bool real_shifted = modifiers & MOD_MASK_SHIFT; + bool pseudo_shifted = layer == _ENGRAM_SHIFT; + bool shifted = real_shifted || pseudo_shifted; + bool caps = led_state.caps_lock; + bool capitalized = (caps && !shifted) || (!caps && shifted); + + oled_write_P(PSTR("Layer: "), false); + oled_write(get_layer_name(layer, capitalized), false); + oled_write_P(PSTR("\n"), false); + + // Only the master knows if we've swapped the gui and ctl key + if (is_keyboard_master()) { + oled_write_P(PSTR(" Helm: "), false); + oled_write(get_helm_key(), false); + } + + oled_write_P(PSTR("\n"), false); + + render_mods(modifiers, layer); + oled_write_P(PSTR("\n"), false); + + render_locks(led_state); + + return false; +} diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk b/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk new file mode 100644 index 000000000000..bc20eb20b7ce --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk @@ -0,0 +1,4 @@ +COMMAND_ENABLE = yes +VIA_ENABLE = yes +EXTRAKEY_ENABLE = no +MOUSEKEY_ENABLE = no diff --git a/keyboards/ibm/model_m_4th_gen/info.json b/keyboards/ibm/model_m_4th_gen/info.json new file mode 100644 index 000000000000..5c8c658607a9 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/info.json @@ -0,0 +1,2561 @@ +{ + "matrix_pins": { + "ghost": true + }, + "usb": { + "vid": "0x16C0", + "pid": "0x27DB", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 5.5, + "w": 6 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.5, + "y": 5.5 + } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + } + ] + }, + "LAYOUT_iso": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + } + ] + } + } +} diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h index 37e578dfea7c..71e60e9cfe65 100644 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h @@ -15,42 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, A10 can be ignored. -// On this keyboard the pins are ordered in the following way: (top/bottom meaning where the trace is routed on the membranes) -// top, top, top, top, top, top, top, top, bottom, top, bottom, top, bottom, top, bottom, top, bottom, bottom, top, top, top, top, bottom, bottom - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, C4, B0, B10, B13, C6, C7, C8, C9 } -#define MATRIX_ROW_PINS { A7, C5, B1, B12, B14, B15, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json index 2aebd925ee50..e87eb4f3c313 100644 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json @@ -1,13 +1,8 @@ { - "keyboard_name": "IBM Model M (4th generation)", + "keyboard_name": "IBM Model M (4th generation)", "manufacturer": "IBM/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", - "usb": { - "vid": "0x16C0", - "pid": "0x27DB", - "device_version": "0.0.1" - }, + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", "indicators": { "caps_lock": "C11", "num_lock": "C12", @@ -15,15 +10,12 @@ }, "processor": "STM32F446", // RET6 "bootloader": "stm32-dfu", - "layouts": { - "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":6}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] - }, - "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] - }, - "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] - } + "diode_direction": "ROW2COL", + "matrix_pins": { + // All pins in order from left-to-right, as seen on the keyboard: + // C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, + // On this keyboard columns and rows are staggered: + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "C4", "B0", "B10", "B13", "C6", "C7", "C8", "C9"], + "rows": ["A7", "C5", "B1", "B12", "B14", "B15", "A8", "A9"] } } diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index 4e210c53ac7c..000000000000 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - - -#define LAYOUT_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_code, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, kp_0_hidden, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, kp_plus_hidden, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, k_bsp_hidden, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, kp_enter_hidden, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, k_rshift_hidden, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, k_code } \ -} - -// the following three key mappings are informed guesses, based on similarity of the gen4 membrane to previous-gen membranes: kp_plus, k_ins, kp_0_hidden - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, KC_NO }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, KC_NO, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, KC_NO, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ -} diff --git a/keyboards/irene/info.json b/keyboards/irene/info.json index a9e943db5c10..792106563f5c 100644 --- a/keyboards/irene/info.json +++ b/keyboards/irene/info.json @@ -13,70 +13,76 @@ "layouts": { "LAYOUT_all": { "layout": [ - {"x":0.5, "y":0}, - {"x":1.75, "y":0}, - {"x":2.75, "y":0}, - {"x":3.75, "y":0}, - {"x":4.75, "y":0}, - {"x":5.75, "y":0}, - {"x":6.75, "y":0}, - {"x":7.75, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - {"x":15, "y":0}, - {"x":16, "y":0}, - {"x":17, "y":0}, + {"matrix": [0, 0], "x": 0.5, "y": 0}, + {"matrix": [0, 1], "x": 1.75, "y": 0}, + {"matrix": [0, 2], "x": 2.75, "y": 0}, + {"matrix": [0, 3], "x": 3.75, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 5], "x": 5.75, "y": 0}, + {"matrix": [0, 6], "x": 6.75, "y": 0}, + {"matrix": [4, 7], "x": 7.75, "y": 0}, + {"matrix": [0, 7], "x": 10, "y": 0}, + {"matrix": [0, 8], "x": 11, "y": 0}, + {"matrix": [0, 9], "x": 12, "y": 0}, + {"matrix": [0, 10], "x": 13, "y": 0}, + {"matrix": [0, 11], "x": 14, "y": 0}, + {"matrix": [0, 12], "x": 15, "y": 0}, + {"matrix": [0, 13], "x": 16, "y": 0}, + {"matrix": [0, 14], "x": 17, "y": 0}, - {"x":0.25, "y":1}, - {"x":1.5, "y":1, "w":1.5}, - {"x":3, "y":1}, {"x":4, "y":1}, - {"x":5, "y":1}, {"x":6, "y":1}, - {"x":7, "y":1}, {"x":9.5, "y":1}, - {"x":10.5, "y":1}, {"x":11.5, "y":1}, - {"x":12.5, "y":1}, {"x":13.5, "y":1}, - {"x":14.5, "y":1}, {"x":15.5, "y":1}, - {"x":16.5, "y":1, "w":1.5}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 9.5, "y": 1}, + {"matrix": [1, 8], "x": 10.5, "y": 1}, + {"matrix": [1, 9], "x": 11.5, "y": 1}, + {"matrix": [1, 10], "x": 12.5, "y": 1}, + {"matrix": [1, 11], "x": 13.5, "y": 1}, + {"matrix": [1, 12], "x": 14.5, "y": 1}, + {"matrix": [1, 13], "x": 15.5, "y": 1}, + {"matrix": [1, 14], "x": 16.5, "y": 1, "w": 1.5}, - {"x":0, "y":2}, - {"x":1.5, "y":2, "w":1.75}, - {"x":3.25, "y":2}, - {"x":4.25, "y":2}, - {"x":5.25, "y":2}, - {"x":6.25, "y":2}, - {"x":7.25, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - {"x":13.75, "y":2}, - {"x":14.75, "y":2}, - {"x":15.75, "y":2, "w":2.25}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [2, 7], "x": 9.75, "y": 2}, + {"matrix": [2, 8], "x": 10.75, "y": 2}, + {"matrix": [2, 9], "x": 11.75, "y": 2}, + {"matrix": [2, 10], "x": 12.75, "y": 2}, + {"matrix": [2, 11], "x": 13.75, "y": 2}, + {"matrix": [2, 12], "x": 14.75, "y": 2}, + {"matrix": [2, 14], "x": 15.75, "y": 2, "w": 2.25}, - {"x":1.5, "y":3, "w":2.25}, - {"x":3.75, "y":3}, - {"x":4.75, "y":3}, - {"x":5.75, "y":3}, - {"x":6.75, "y":3}, - {"x":7.75, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3}, - {"x":13.25, "y":3}, - {"x":14.25, "y":3}, - {"x":15.25, "y":3, "w":1.75}, - {"x":17, "y":3}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [3, 7], "x": 9.25, "y": 3}, + {"matrix": [3, 8], "x": 10.25, "y": 3}, + {"matrix": [3, 9], "x": 11.25, "y": 3}, + {"matrix": [3, 10], "x": 12.25, "y": 3}, + {"matrix": [3, 11], "x": 13.25, "y": 3}, + {"matrix": [3, 12], "x": 14.25, "y": 3}, + {"matrix": [3, 13], "x": 15.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 17, "y": 3}, - {"x":1.5, "y":4, "w":1.5}, - {"x":4, "y":4, "w":1.5}, - {"x":5.5, "y":4, "w":2}, - {"x":7.5, "y":4, "w":1.25}, - {"x":9.25, "y":4, "w":2.75}, - {"x":12, "y":4, "w":1.5}, - {"x":16.5, "y":4, "w":1.5} + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 4, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 5.5, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.5, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.25, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.5, "y": 4, "w": 1.5} ] } } diff --git a/keyboards/irene/irene.h b/keyboards/irene/irene.h deleted file mode 100644 index 435e84957dbc..000000000000 --- a/keyboards/irene/irene.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2021 Ramon Imbao - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define ___ KC_NO - -#define LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k57, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ - k41, k43, k44, k46, k48, k4a, k4e \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, ___, k2e }, \ - { ___, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ - { ___, k41, ___, k43, k44, ___, k46, ___, k48, ___, k4a, ___, ___, ___, k4e }, \ -} diff --git a/keyboards/jacky_studio/piggy60/readme.md b/keyboards/jacky_studio/piggy60/readme.md index d546c63bf880..bae776deba42 100644 --- a/keyboards/jacky_studio/piggy60/readme.md +++ b/keyboards/jacky_studio/piggy60/readme.md @@ -5,7 +5,8 @@ A gasket-mounted 60% in the style of the S7 Elephant. * Keyboard Maintainer: [The QMK Community](https://github.com/qmk) -* Hardware Supported: Piggy60 +* Hardware Supported: Piggy60 PCB "rev1" (atmega32u4) + * **Make sure your PCB uses an `atmega32u4` before flashing!** A PCB that uses an `APM32F103CBT6` with `uf2boot` has been shipped with some extras purchases and to replace some defective units. Flashing that PCB with "rev1" firmware may result in a non-functional PCB which can only be recovered using a hardware programmer (e.g. an ST-Link V2) * Hardware Availability: Group Buy took place between 2021-05-22 1600 UTC and 2021-05-25 1600 UTC on [https://jackylab.com/](https://jackylab.com/). Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/keebio/kbo5000/keymaps/via/keymap.c b/keyboards/keebio/kbo5000/keymaps/via/keymap.c index 2a0bbe6cd313..0050229b225d 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/keymap.c +++ b/keyboards/keebio/kbo5000/keymaps/via/keymap.c @@ -34,3 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, + [2] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) } +}; +#endif diff --git a/keyboards/keebio/kbo5000/keymaps/via/rules.mk b/keyboards/keebio/kbo5000/keymaps/via/rules.mk index 36b7ba9cbc98..aaf0497be139 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/rules.mk +++ b/keyboards/keebio/kbo5000/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/quefrency/quefrency.h b/keyboards/keebio/quefrency/quefrency.h index d9a14c439c8d..434f674bcec7 100644 --- a/keyboards/keebio/quefrency/quefrency.h +++ b/keyboards/keebio/quefrency/quefrency.h @@ -2,9 +2,6 @@ #include "quantum.h" -#ifdef KEYBOARD_keebio_quefrency_rev1 - #include "rev1.h" -#endif #ifdef KEYBOARD_keebio_quefrency_rev2 #include "rev2.h" #endif diff --git a/keyboards/keebio/quefrency/rev1/info.json b/keyboards/keebio/quefrency/rev1/info.json index 648104baa272..6c40e387acf9 100644 --- a/keyboards/keebio/quefrency/rev1/info.json +++ b/keyboards/keebio/quefrency/rev1/info.json @@ -16,465 +16,462 @@ "layouts": { "LAYOUT": { "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "1", "x": 1, "y": 0 }, - { "label": "2", "x": 2, "y": 0 }, - { "label": "3", "x": 3, "y": 0 }, - { "label": "4", "x": 4, "y": 0 }, - { "label": "5", "x": 5, "y": 0 }, - { "label": "6", "x": 6, "y": 0 }, - - { "label": "7", "x": 8, "y": 0 }, - { "label": "8", "x": 9, "y": 0 }, - { "label": "9", "x": 10, "y": 0 }, - { "label": "0", "x": 11, "y": 0 }, - { "label": "-", "x": 12, "y": 0 }, - { "label": "=", "x": 13, "y": 0 }, - { "label": "Del", "x": 14, "y": 0 }, - { "label": "Bksp", "x": 15, "y": 0 }, - - { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 1 }, - { "label": "W", "x": 2.5, "y": 1 }, - { "label": "E", "x": 3.5, "y": 1 }, - { "label": "R", "x": 4.5, "y": 1 }, - { "label": "T", "x": 5.5, "y": 1 }, - - { "label": "Y", "x": 7.5, "y": 1 }, - { "label": "U", "x": 8.5, "y": 1 }, - { "label": "I", "x": 9.5, "y": 1 }, - { "label": "O", "x": 10.5, "y": 1 }, - { "label": "P", "x": 11.5, "y": 1 }, - { "label": "[", "x": 12.5, "y": 1 }, - { "label": "]", "x": 13.5, "y": 1 }, - { "label": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, - - { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 2 }, - { "label": "S", "x": 2.75, "y": 2 }, - { "label": "D", "x": 3.75, "y": 2 }, - { "label": "F", "x": 4.75, "y": 2 }, - { "label": "G", "x": 5.75, "y": 2 }, - - { "label": "H", "x": 7.75, "y": 2 }, - { "label": "J", "x": 8.75, "y": 2 }, - { "label": "K", "x": 9.75, "y": 2 }, - { "label": "L", "x": 10.75, "y": 2 }, - { "label": ";", "x": 11.75, "y": 2 }, - { "label": "'", "x": 12.75, "y": 2 }, - { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, - - { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, - { "label": "Z", "x": 2.25, "y": 3 }, - { "label": "X", "x": 3.25, "y": 3 }, - { "label": "C", "x": 4.25, "y": 3 }, - { "label": "V", "x": 5.25, "y": 3 }, - { "label": "B", "x": 6.25, "y": 3 }, - - { "label": "N", "x": 8.25, "y": 3 }, - { "label": "M", "x": 9.25, "y": 3 }, - { "label": ",", "x": 10.25, "y": 3 }, - { "label": ".", "x": 11.25, "y": 3 }, - { "label": "/", "x": 12.25, "y": 3 }, - { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, - { "label": "Up", "x": 15, "y": 3 }, - - { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, - { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, - - { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, - { "label": "Alt", "x": 11, "y": 4 }, - { "label": "Ctrl", "x": 12, "y": 4 }, - { "label": "Left", "x": 13, "y": 4 }, - { "label": "Down", "x": 14, "y": 4 }, - { "label": "Right", "x": 15, "y": 4 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + + {"matrix": [6, 0], "x": 8, "y": 0}, + {"matrix": [6, 1], "x": 9, "y": 0}, + {"matrix": [6, 2], "x": 10, "y": 0}, + {"matrix": [6, 3], "x": 11, "y": 0}, + {"matrix": [6, 4], "x": 12, "y": 0}, + {"matrix": [6, 5], "x": 13, "y": 0}, + {"matrix": [6, 6], "x": 14, "y": 0}, + {"matrix": [6, 7], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + + {"matrix": [7, 0], "x": 7.5, "y": 1}, + {"matrix": [7, 1], "x": 8.5, "y": 1}, + {"matrix": [7, 2], "x": 9.5, "y": 1}, + {"matrix": [7, 3], "x": 10.5, "y": 1}, + {"matrix": [7, 4], "x": 11.5, "y": 1}, + {"matrix": [7, 5], "x": 12.5, "y": 1}, + {"matrix": [7, 6], "x": 13.5, "y": 1}, + {"matrix": [7, 7], "x": 14.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + + {"matrix": [8, 0], "x": 7.75, "y": 2}, + {"matrix": [8, 1], "x": 8.75, "y": 2}, + {"matrix": [8, 2], "x": 9.75, "y": 2}, + {"matrix": [8, 3], "x": 10.75, "y": 2}, + {"matrix": [8, 4], "x": 11.75, "y": 2}, + {"matrix": [8, 5], "x": 12.75, "y": 2}, + {"matrix": [8, 7], "x": 13.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + + {"matrix": [9, 0], "x": 8.25, "y": 3}, + {"matrix": [9, 1], "x": 9.25, "y": 3}, + {"matrix": [9, 2], "x": 10.25, "y": 3}, + {"matrix": [9, 3], "x": 11.25, "y": 3}, + {"matrix": [9, 5], "x": 12.25, "y": 3}, + {"matrix": [9, 6], "x": 13.25, "y": 3, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 2.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 4, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 4, "w": 1.5}, + {"matrix": [10, 3], "x": 11, "y": 4}, + {"matrix": [10, 4], "x": 12, "y": 4}, + {"matrix": [10, 5], "x": 13, "y": 4}, + {"matrix": [10, 6], "x": 14, "y": 4}, + {"matrix": [10, 7], "x": 15, "y": 4} ] }, "LAYOUT_65": { "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "1", "x": 1, "y": 0 }, - { "label": "2", "x": 2, "y": 0 }, - { "label": "3", "x": 3, "y": 0 }, - { "label": "4", "x": 4, "y": 0 }, - { "label": "5", "x": 5, "y": 0 }, - { "label": "6", "x": 6, "y": 0 }, - - { "label": "7", "x": 8, "y": 0 }, - { "label": "8", "x": 9, "y": 0 }, - { "label": "9", "x": 10, "y": 0 }, - { "label": "0", "x": 11, "y": 0 }, - { "label": "-", "x": 12, "y": 0 }, - { "label": "=", "x": 13, "y": 0 }, - { "label": "Del", "x": 14, "y": 0 }, - { "label": "Bksp", "x": 15, "y": 0 }, - { "label": "Home", "x": 16, "y": 0 }, - - { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 1 }, - { "label": "W", "x": 2.5, "y": 1 }, - { "label": "E", "x": 3.5, "y": 1 }, - { "label": "R", "x": 4.5, "y": 1 }, - { "label": "T", "x": 5.5, "y": 1 }, - - { "label": "Y", "x": 7.5, "y": 1 }, - { "label": "U", "x": 8.5, "y": 1 }, - { "label": "I", "x": 9.5, "y": 1 }, - { "label": "O", "x": 10.5, "y": 1 }, - { "label": "P", "x": 11.5, "y": 1 }, - { "label": "[", "x": 12.5, "y": 1 }, - { "label": "]", "x": 13.5, "y": 1 }, - { "label": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, - { "label": "End", "x": 16, "y": 1 }, - - { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 2 }, - { "label": "S", "x": 2.75, "y": 2 }, - { "label": "D", "x": 3.75, "y": 2 }, - { "label": "F", "x": 4.75, "y": 2 }, - { "label": "G", "x": 5.75, "y": 2 }, - - { "label": "H", "x": 7.75, "y": 2 }, - { "label": "J", "x": 8.75, "y": 2 }, - { "label": "K", "x": 9.75, "y": 2 }, - { "label": "L", "x": 10.75, "y": 2 }, - { "label": ";", "x": 11.75, "y": 2 }, - { "label": "'", "x": 12.75, "y": 2 }, - { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, - { "label": "Page Up", "x": 16, "y": 2 }, - - { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, - { "label": "Z", "x": 2.25, "y": 3 }, - { "label": "X", "x": 3.25, "y": 3 }, - { "label": "C", "x": 4.25, "y": 3 }, - { "label": "V", "x": 5.25, "y": 3 }, - { "label": "B", "x": 6.25, "y": 3 }, - - { "label": "N", "x": 8.25, "y": 3 }, - { "label": "M", "x": 9.25, "y": 3 }, - { "label": ",", "x": 10.25, "y": 3 }, - { "label": ".", "x": 11.25, "y": 3 }, - { "label": "/", "x": 12.25, "y": 3 }, - { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, - { "label": "Up", "x": 15, "y": 3 }, - { "label": "Page Down", "x": 16, "y": 3 }, - - { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, - { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, - - { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, - { "label": "Alt", "x": 11, "y": 4 }, - { "label": "Ctrl", "x": 12, "y": 4 }, - { "label": "Win", "x": 13, "y": 4 }, - { "label": "Left", "x": 14, "y": 4 }, - { "label": "Down", "x": 15, "y": 4 }, - { "label": "Right", "x": 16, "y": 4 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + + {"matrix": [6, 0], "x": 8, "y": 0}, + {"matrix": [6, 1], "x": 9, "y": 0}, + {"matrix": [6, 2], "x": 10, "y": 0}, + {"matrix": [6, 3], "x": 11, "y": 0}, + {"matrix": [6, 4], "x": 12, "y": 0}, + {"matrix": [6, 5], "x": 13, "y": 0}, + {"matrix": [6, 6], "x": 14, "y": 0}, + {"matrix": [6, 7], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + + {"matrix": [7, 0], "x": 7.5, "y": 1}, + {"matrix": [7, 1], "x": 8.5, "y": 1}, + {"matrix": [7, 2], "x": 9.5, "y": 1}, + {"matrix": [7, 3], "x": 10.5, "y": 1}, + {"matrix": [7, 4], "x": 11.5, "y": 1}, + {"matrix": [7, 5], "x": 12.5, "y": 1}, + {"matrix": [7, 6], "x": 13.5, "y": 1}, + {"matrix": [7, 7], "x": 14.5, "y": 1, "w": 1.5}, + {"matrix": [11, 7], "x": 16, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + + {"matrix": [8, 0], "x": 7.75, "y": 2}, + {"matrix": [8, 1], "x": 8.75, "y": 2}, + {"matrix": [8, 2], "x": 9.75, "y": 2}, + {"matrix": [8, 3], "x": 10.75, "y": 2}, + {"matrix": [8, 4], "x": 11.75, "y": 2}, + {"matrix": [8, 5], "x": 12.75, "y": 2}, + {"matrix": [8, 7], "x": 13.75, "y": 2, "w": 2.25}, + {"matrix": [8, 6], "x": 16, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + + {"matrix": [9, 0], "x": 8.25, "y": 3}, + {"matrix": [9, 1], "x": 9.25, "y": 3}, + {"matrix": [9, 2], "x": 10.25, "y": 3}, + {"matrix": [9, 3], "x": 11.25, "y": 3}, + {"matrix": [9, 5], "x": 12.25, "y": 3}, + {"matrix": [9, 6], "x": 13.25, "y": 3, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 3}, + {"matrix": [9, 4], "x": 16, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 4, "w": 2.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 4, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 4, "w": 1.5}, + {"matrix": [10, 3], "x": 11, "y": 4}, + {"matrix": [10, 4], "x": 12, "y": 4}, + {"matrix": [10, 5], "x": 13, "y": 4}, + {"matrix": [10, 6], "x": 14, "y": 4}, + {"matrix": [10, 7], "x": 15, "y": 4}, + {"matrix": [10, 2], "x": 16, "y": 4} ] }, "LAYOUT_60_with_macro": { "layout": [ - { "label": "F1", "x": 0, "y": 0 }, - { "label": "F6", "x": 1, "y": 0 }, - - { "label": "Esc", "x": 2.25, "y": 0 }, - { "label": "1", "x": 3.25, "y": 0 }, - { "label": "2", "x": 4.25, "y": 0 }, - { "label": "3", "x": 5.25, "y": 0 }, - { "label": "4", "x": 6.25, "y": 0 }, - { "label": "5", "x": 7.25, "y": 0 }, - { "label": "6", "x": 8.25, "y": 0 }, - - { "label": "7", "x": 10.25, "y": 0 }, - { "label": "8", "x": 11.25, "y": 0 }, - { "label": "9", "x": 12.25, "y": 0 }, - { "label": "0", "x": 13.25, "y": 0 }, - { "label": "-", "x": 14.25, "y": 0 }, - { "label": "=", "x": 15.25, "y": 0 }, - { "label": "Del", "x": 16.25, "y": 0 }, - { "label": "Bksp", "x": 17.25, "y": 0 }, - - { "label": "F2", "x": 0, "y": 1 }, - { "label": "F7", "x": 1, "y": 1 }, - - { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 3.75, "y": 1 }, - { "label": "W", "x": 4.75, "y": 1 }, - { "label": "E", "x": 5.75, "y": 1 }, - { "label": "R", "x": 6.75, "y": 1 }, - { "label": "T", "x": 7.75, "y": 1 }, - - { "label": "Y", "x": 9.75, "y": 1 }, - { "label": "U", "x": 10.75, "y": 1 }, - { "label": "I", "x": 11.75, "y": 1 }, - { "label": "O", "x": 12.75, "y": 1 }, - { "label": "P", "x": 13.75, "y": 1 }, - { "label": "[", "x": 14.75, "y": 1 }, - { "label": "]", "x": 15.75, "y": 1 }, - { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, - - { "label": "F3", "x": 0, "y": 2 }, - { "label": "F8", "x": 1, "y": 2 }, - - { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, - { "label": "A", "x": 4, "y": 2 }, - { "label": "S", "x": 5, "y": 2 }, - { "label": "D", "x": 6, "y": 2 }, - { "label": "F", "x": 7, "y": 2 }, - { "label": "G", "x": 8, "y": 2 }, - - { "label": "H", "x": 10, "y": 2 }, - { "label": "J", "x": 11, "y": 2 }, - { "label": "K", "x": 12, "y": 2 }, - { "label": "L", "x": 13, "y": 2 }, - { "label": ";", "x": 14, "y": 2 }, - { "label": "'", "x": 15, "y": 2 }, - { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, - - { "label": "F4", "x": 0, "y": 3 }, - { "label": "F9", "x": 1, "y": 3 }, - - { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, - { "label": "Z", "x": 4.5, "y": 3 }, - { "label": "X", "x": 5.5, "y": 3 }, - { "label": "C", "x": 6.5, "y": 3 }, - { "label": "V", "x": 7.5, "y": 3 }, - { "label": "B", "x": 8.5, "y": 3 }, - - { "label": "N", "x": 10.5, "y": 3 }, - { "label": "M", "x": 11.5, "y": 3 }, - { "label": ",", "x": 12.5, "y": 3 }, - { "label": ".", "x": 13.5, "y": 3 }, - { "label": "/", "x": 14.5, "y": 3 }, - { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, - { "label": "Up", "x": 17.25, "y": 3 }, - - { "label": "F5", "x": 0, "y": 4 }, - { "label": "F10", "x": 1, "y": 4 }, - - { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, - { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, - - { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, - { "label": "Alt", "x": 13.25, "y": 4 }, - { "label": "Ctrl", "x": 14.25, "y": 4 }, - { "label": "Left", "x": 15.25, "y": 4 }, - { "label": "Down", "x": 16.25, "y": 4 }, - { "label": "Right", "x": 17.25, "y": 4 } + {"matrix": [4, 3], "x": 0, "y": 0}, + {"matrix": [0, 7], "x": 1, "y": 0}, + + {"matrix": [0, 0], "x": 2.25, "y": 0}, + {"matrix": [0, 1], "x": 3.25, "y": 0}, + {"matrix": [0, 2], "x": 4.25, "y": 0}, + {"matrix": [0, 3], "x": 5.25, "y": 0}, + {"matrix": [0, 4], "x": 6.25, "y": 0}, + {"matrix": [0, 5], "x": 7.25, "y": 0}, + {"matrix": [0, 6], "x": 8.25, "y": 0}, + + {"matrix": [6, 0], "x": 10.25, "y": 0}, + {"matrix": [6, 1], "x": 11.25, "y": 0}, + {"matrix": [6, 2], "x": 12.25, "y": 0}, + {"matrix": [6, 3], "x": 13.25, "y": 0}, + {"matrix": [6, 4], "x": 14.25, "y": 0}, + {"matrix": [6, 5], "x": 15.25, "y": 0}, + {"matrix": [6, 6], "x": 16.25, "y": 0}, + {"matrix": [6, 7], "x": 17.25, "y": 0}, + + {"matrix": [1, 6], "x": 0, "y": 1}, + {"matrix": [1, 7], "x": 1, "y": 1}, + + {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 3.75, "y": 1}, + {"matrix": [1, 2], "x": 4.75, "y": 1}, + {"matrix": [1, 3], "x": 5.75, "y": 1}, + {"matrix": [1, 4], "x": 6.75, "y": 1}, + {"matrix": [1, 5], "x": 7.75, "y": 1}, + + {"matrix": [7, 0], "x": 9.75, "y": 1}, + {"matrix": [7, 1], "x": 10.75, "y": 1}, + {"matrix": [7, 2], "x": 11.75, "y": 1}, + {"matrix": [7, 3], "x": 12.75, "y": 1}, + {"matrix": [7, 4], "x": 13.75, "y": 1}, + {"matrix": [7, 5], "x": 14.75, "y": 1}, + {"matrix": [7, 6], "x": 15.75, "y": 1}, + {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5}, + + {"matrix": [2, 6], "x": 0, "y": 2}, + {"matrix": [2, 7], "x": 1, "y": 2}, + + {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 4, "y": 2}, + {"matrix": [2, 2], "x": 5, "y": 2}, + {"matrix": [2, 3], "x": 6, "y": 2}, + {"matrix": [2, 4], "x": 7, "y": 2}, + {"matrix": [2, 5], "x": 8, "y": 2}, + + {"matrix": [8, 0], "x": 10, "y": 2}, + {"matrix": [8, 1], "x": 11, "y": 2}, + {"matrix": [8, 2], "x": 12, "y": 2}, + {"matrix": [8, 3], "x": 13, "y": 2}, + {"matrix": [8, 4], "x": 14, "y": 2}, + {"matrix": [8, 5], "x": 15, "y": 2}, + {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25}, + + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 7], "x": 1, "y": 3}, + + {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 4.5, "y": 3}, + {"matrix": [3, 3], "x": 5.5, "y": 3}, + {"matrix": [3, 4], "x": 6.5, "y": 3}, + {"matrix": [3, 5], "x": 7.5, "y": 3}, + {"matrix": [3, 6], "x": 8.5, "y": 3}, + + {"matrix": [9, 0], "x": 10.5, "y": 3}, + {"matrix": [9, 1], "x": 11.5, "y": 3}, + {"matrix": [9, 2], "x": 12.5, "y": 3}, + {"matrix": [9, 3], "x": 13.5, "y": 3}, + {"matrix": [9, 5], "x": 14.5, "y": 3}, + {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 3}, + + {"matrix": [4, 5], "x": 0, "y": 4}, + {"matrix": [4, 7], "x": 1, "y": 4}, + + {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5}, + {"matrix": [10, 3], "x": 13.25, "y": 4}, + {"matrix": [10, 4], "x": 14.25, "y": 4}, + {"matrix": [10, 5], "x": 15.25, "y": 4}, + {"matrix": [10, 6], "x": 16.25, "y": 4}, + {"matrix": [10, 7], "x": 17.25, "y": 4} ] }, "LAYOUT_65_with_macro": { "layout": [ - { "label": "F1", "x": 0, "y": 0 }, - { "label": "F6", "x": 1, "y": 0 }, - - { "label": "Esc", "x": 2.25, "y": 0 }, - { "label": "1", "x": 3.25, "y": 0 }, - { "label": "2", "x": 4.25, "y": 0 }, - { "label": "3", "x": 5.25, "y": 0 }, - { "label": "4", "x": 6.25, "y": 0 }, - { "label": "5", "x": 7.25, "y": 0 }, - { "label": "6", "x": 8.25, "y": 0 }, - - { "label": "7", "x": 10.25, "y": 0 }, - { "label": "8", "x": 11.25, "y": 0 }, - { "label": "9", "x": 12.25, "y": 0 }, - { "label": "0", "x": 13.25, "y": 0 }, - { "label": "-", "x": 14.25, "y": 0 }, - { "label": "=", "x": 15.25, "y": 0 }, - { "label": "Del", "x": 16.25, "y": 0 }, - { "label": "Bksp", "x": 17.25, "y": 0 }, - { "label": "Home", "x": 18.25, "y": 0 }, - - { "label": "F2", "x": 0, "y": 1 }, - { "label": "F7", "x": 1, "y": 1 }, - - { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 3.75, "y": 1 }, - { "label": "W", "x": 4.75, "y": 1 }, - { "label": "E", "x": 5.75, "y": 1 }, - { "label": "R", "x": 6.75, "y": 1 }, - { "label": "T", "x": 7.75, "y": 1 }, - - { "label": "Y", "x": 9.75, "y": 1 }, - { "label": "U", "x": 10.75, "y": 1 }, - { "label": "I", "x": 11.75, "y": 1 }, - { "label": "O", "x": 12.75, "y": 1 }, - { "label": "P", "x": 13.75, "y": 1 }, - { "label": "[", "x": 14.75, "y": 1 }, - { "label": "]", "x": 15.75, "y": 1 }, - { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, - { "label": "PgUp", "x": 18.25, "y": 1 }, - - { "label": "F3", "x": 0, "y": 2 }, - { "label": "F8", "x": 1, "y": 2 }, - - { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, - { "label": "A", "x": 4, "y": 2 }, - { "label": "S", "x": 5, "y": 2 }, - { "label": "D", "x": 6, "y": 2 }, - { "label": "F", "x": 7, "y": 2 }, - { "label": "G", "x": 8, "y": 2 }, - - { "label": "H", "x": 10, "y": 2 }, - { "label": "J", "x": 11, "y": 2 }, - { "label": "K", "x": 12, "y": 2 }, - { "label": "L", "x": 13, "y": 2 }, - { "label": ";", "x": 14, "y": 2 }, - { "label": "'", "x": 15, "y": 2 }, - { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, - { "label": "PgDn", "x": 18.25, "y": 2 }, - - { "label": "F4", "x": 0, "y": 3 }, - { "label": "F9", "x": 1, "y": 3 }, - - { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, - { "label": "Z", "x": 4.5, "y": 3 }, - { "label": "X", "x": 5.5, "y": 3 }, - { "label": "C", "x": 6.5, "y": 3 }, - { "label": "V", "x": 7.5, "y": 3 }, - { "label": "B", "x": 8.5, "y": 3 }, - - { "label": "N", "x": 10.5, "y": 3 }, - { "label": "M", "x": 11.5, "y": 3 }, - { "label": ",", "x": 12.5, "y": 3 }, - { "label": ".", "x": 13.5, "y": 3 }, - { "label": "/", "x": 14.5, "y": 3 }, - { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, - { "label": "Up", "x": 17.25, "y": 3 }, - { "label": "End", "x": 18.25, "y": 3 }, - - { "label": "F5", "x": 0, "y": 4 }, - { "label": "F10", "x": 1, "y": 4 }, - - { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, - { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, - - { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, - { "label": "Alt", "x": 13.25, "y": 4 }, - { "label": "Ctrl", "x": 14.25, "y": 4 }, - { "label": "Win", "x": 15.25, "y": 4 }, - { "label": "Left", "x": 16.25, "y": 4 }, - { "label": "Down", "x": 17.25, "y": 4 }, - { "label": "Right", "x": 18.25, "y": 4 } + {"matrix": [4, 3], "x": 0, "y": 0}, + {"matrix": [0, 7], "x": 1, "y": 0}, + + {"matrix": [0, 0], "x": 2.25, "y": 0}, + {"matrix": [0, 1], "x": 3.25, "y": 0}, + {"matrix": [0, 2], "x": 4.25, "y": 0}, + {"matrix": [0, 3], "x": 5.25, "y": 0}, + {"matrix": [0, 4], "x": 6.25, "y": 0}, + {"matrix": [0, 5], "x": 7.25, "y": 0}, + {"matrix": [0, 6], "x": 8.25, "y": 0}, + + {"matrix": [6, 0], "x": 10.25, "y": 0}, + {"matrix": [6, 1], "x": 11.25, "y": 0}, + {"matrix": [6, 2], "x": 12.25, "y": 0}, + {"matrix": [6, 3], "x": 13.25, "y": 0}, + {"matrix": [6, 4], "x": 14.25, "y": 0}, + {"matrix": [6, 5], "x": 15.25, "y": 0}, + {"matrix": [6, 6], "x": 16.25, "y": 0}, + {"matrix": [6, 7], "x": 17.25, "y": 0}, + {"matrix": [11, 6], "x": 18.25, "y": 0}, + + {"matrix": [1, 6], "x": 0, "y": 1}, + {"matrix": [1, 7], "x": 1, "y": 1}, + + {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 3.75, "y": 1}, + {"matrix": [1, 2], "x": 4.75, "y": 1}, + {"matrix": [1, 3], "x": 5.75, "y": 1}, + {"matrix": [1, 4], "x": 6.75, "y": 1}, + {"matrix": [1, 5], "x": 7.75, "y": 1}, + + {"matrix": [7, 0], "x": 9.75, "y": 1}, + {"matrix": [7, 1], "x": 10.75, "y": 1}, + {"matrix": [7, 2], "x": 11.75, "y": 1}, + {"matrix": [7, 3], "x": 12.75, "y": 1}, + {"matrix": [7, 4], "x": 13.75, "y": 1}, + {"matrix": [7, 5], "x": 14.75, "y": 1}, + {"matrix": [7, 6], "x": 15.75, "y": 1}, + {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [11, 7], "x": 18.25, "y": 1}, + + {"matrix": [2, 6], "x": 0, "y": 2}, + {"matrix": [2, 7], "x": 1, "y": 2}, + + {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 4, "y": 2}, + {"matrix": [2, 2], "x": 5, "y": 2}, + {"matrix": [2, 3], "x": 6, "y": 2}, + {"matrix": [2, 4], "x": 7, "y": 2}, + {"matrix": [2, 5], "x": 8, "y": 2}, + + {"matrix": [8, 0], "x": 10, "y": 2}, + {"matrix": [8, 1], "x": 11, "y": 2}, + {"matrix": [8, 2], "x": 12, "y": 2}, + {"matrix": [8, 3], "x": 13, "y": 2}, + {"matrix": [8, 4], "x": 14, "y": 2}, + {"matrix": [8, 5], "x": 15, "y": 2}, + {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [8, 6], "x": 18.25, "y": 2}, + + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 7], "x": 1, "y": 3}, + + {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 4.5, "y": 3}, + {"matrix": [3, 3], "x": 5.5, "y": 3}, + {"matrix": [3, 4], "x": 6.5, "y": 3}, + {"matrix": [3, 5], "x": 7.5, "y": 3}, + {"matrix": [3, 6], "x": 8.5, "y": 3}, + + {"matrix": [9, 0], "x": 10.5, "y": 3}, + {"matrix": [9, 1], "x": 11.5, "y": 3}, + {"matrix": [9, 2], "x": 12.5, "y": 3}, + {"matrix": [9, 3], "x": 13.5, "y": 3}, + {"matrix": [9, 5], "x": 14.5, "y": 3}, + {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 3}, + {"matrix": [9, 4], "x": 18.25, "y": 3}, + + {"matrix": [4, 5], "x": 0, "y": 4}, + {"matrix": [4, 7], "x": 1, "y": 4}, + + {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5}, + {"matrix": [10, 3], "x": 13.25, "y": 4}, + {"matrix": [10, 4], "x": 14.25, "y": 4}, + {"matrix": [10, 5], "x": 15.25, "y": 4}, + {"matrix": [10, 6], "x": 16.25, "y": 4}, + {"matrix": [10, 7], "x": 17.25, "y": 4}, + {"matrix": [10, 2], "x": 18.25, "y": 4} ] }, "LAYOUT_all": { "layout": [ - { "label": "F1", "x": 0, "y": 0 }, - { "label": "F6", "x": 1, "y": 0 }, - - { "label": "Esc", "x": 2.25, "y": 0 }, - { "label": "1", "x": 3.25, "y": 0 }, - { "label": "2", "x": 4.25, "y": 0 }, - { "label": "3", "x": 5.25, "y": 0 }, - { "label": "4", "x": 6.25, "y": 0 }, - { "label": "5", "x": 7.25, "y": 0 }, - { "label": "6", "x": 8.25, "y": 0 }, - - { "label": "7", "x": 10.25, "y": 0 }, - { "label": "8", "x": 11.25, "y": 0 }, - { "label": "9", "x": 12.25, "y": 0 }, - { "label": "0", "x": 13.25, "y": 0 }, - { "label": "-", "x": 14.25, "y": 0 }, - { "label": "=", "x": 15.25, "y": 0 }, - { "label": "Del", "x": 16.25, "y": 0 }, - { "label": "Bksp", "x": 17.25, "y": 0 }, - { "label": "Home", "x": 18.25, "y": 0 }, - - { "label": "F2", "x": 0, "y": 1 }, - { "label": "F7", "x": 1, "y": 1 }, - - { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 3.75, "y": 1 }, - { "label": "W", "x": 4.75, "y": 1 }, - { "label": "E", "x": 5.75, "y": 1 }, - { "label": "R", "x": 6.75, "y": 1 }, - { "label": "T", "x": 7.75, "y": 1 }, - - { "label": "Y", "x": 9.75, "y": 1 }, - { "label": "U", "x": 10.75, "y": 1 }, - { "label": "I", "x": 11.75, "y": 1 }, - { "label": "O", "x": 12.75, "y": 1 }, - { "label": "P", "x": 13.75, "y": 1 }, - { "label": "[", "x": 14.75, "y": 1 }, - { "label": "]", "x": 15.75, "y": 1 }, - { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, - { "label": "PgUp", "x": 18.25, "y": 1 }, - - { "label": "F3", "x": 0, "y": 2 }, - { "label": "F8", "x": 1, "y": 2 }, - - { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, - { "label": "A", "x": 4, "y": 2 }, - { "label": "S", "x": 5, "y": 2 }, - { "label": "D", "x": 6, "y": 2 }, - { "label": "F", "x": 7, "y": 2 }, - { "label": "G", "x": 8, "y": 2 }, - - { "label": "H", "x": 10, "y": 2 }, - { "label": "J", "x": 11, "y": 2 }, - { "label": "K", "x": 12, "y": 2 }, - { "label": "L", "x": 13, "y": 2 }, - { "label": ";", "x": 14, "y": 2 }, - { "label": "'", "x": 15, "y": 2 }, - { "label": "NUHS", "x": 16, "y": 2 }, - { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, - { "label": "PgDn", "x": 18.25, "y": 2 }, - - { "label": "F4", "x": 0, "y": 3 }, - { "label": "F9", "x": 1, "y": 3 }, - - { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, - { "label": "NUBS", "x": 3.5, "y": 3 }, - { "label": "Z", "x": 4.5, "y": 3 }, - { "label": "X", "x": 5.5, "y": 3 }, - { "label": "C", "x": 6.5, "y": 3 }, - { "label": "V", "x": 7.5, "y": 3 }, - { "label": "B", "x": 8.5, "y": 3 }, - - { "label": "N", "x": 10.5, "y": 3 }, - { "label": "M", "x": 11.5, "y": 3 }, - { "label": ",", "x": 12.5, "y": 3 }, - { "label": ".", "x": 13.5, "y": 3 }, - { "label": "/", "x": 14.5, "y": 3 }, - { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, - { "label": "Up", "x": 17.25, "y": 3 }, - { "label": "End", "x": 18.25, "y": 3 }, - - { "label": "F5", "x": 0, "y": 4 }, - { "label": "F10", "x": 1, "y": 4 }, - - { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, - { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 7.25, "y": 4 }, - { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, - - { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, - { "label": "Alt", "x": 13.25, "y": 4 }, - { "label": "Ctrl", "x": 14.25, "y": 4 }, - { "label": "Win", "x": 15.25, "y": 4 }, - { "label": "Left", "x": 16.25, "y": 4 }, - { "label": "Down", "x": 17.25, "y": 4 }, - { "label": "Right", "x": 18.25, "y": 4 } + {"matrix": [4, 3], "x": 0, "y": 0}, + {"matrix": [0, 7], "x": 1, "y": 0}, + + {"matrix": [0, 0], "x": 2.25, "y": 0}, + {"matrix": [0, 1], "x": 3.25, "y": 0}, + {"matrix": [0, 2], "x": 4.25, "y": 0}, + {"matrix": [0, 3], "x": 5.25, "y": 0}, + {"matrix": [0, 4], "x": 6.25, "y": 0}, + {"matrix": [0, 5], "x": 7.25, "y": 0}, + {"matrix": [0, 6], "x": 8.25, "y": 0}, + + {"matrix": [6, 0], "x": 10.25, "y": 0}, + {"matrix": [6, 1], "x": 11.25, "y": 0}, + {"matrix": [6, 2], "x": 12.25, "y": 0}, + {"matrix": [6, 3], "x": 13.25, "y": 0}, + {"matrix": [6, 4], "x": 14.25, "y": 0}, + {"matrix": [6, 5], "x": 15.25, "y": 0}, + {"matrix": [6, 6], "x": 16.25, "y": 0}, + {"matrix": [6, 7], "x": 17.25, "y": 0}, + {"matrix": [11, 6], "x": 18.25, "y": 0}, + + {"matrix": [1, 6], "x": 0, "y": 1}, + {"matrix": [1, 7], "x": 1, "y": 1}, + + {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 3.75, "y": 1}, + {"matrix": [1, 2], "x": 4.75, "y": 1}, + {"matrix": [1, 3], "x": 5.75, "y": 1}, + {"matrix": [1, 4], "x": 6.75, "y": 1}, + {"matrix": [1, 5], "x": 7.75, "y": 1}, + + {"matrix": [7, 0], "x": 9.75, "y": 1}, + {"matrix": [7, 1], "x": 10.75, "y": 1}, + {"matrix": [7, 2], "x": 11.75, "y": 1}, + {"matrix": [7, 3], "x": 12.75, "y": 1}, + {"matrix": [7, 4], "x": 13.75, "y": 1}, + {"matrix": [7, 5], "x": 14.75, "y": 1}, + {"matrix": [7, 6], "x": 15.75, "y": 1}, + {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [11, 7], "x": 18.25, "y": 1}, + + {"matrix": [2, 6], "x": 0, "y": 2}, + {"matrix": [2, 7], "x": 1, "y": 2}, + + {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 4, "y": 2}, + {"matrix": [2, 2], "x": 5, "y": 2}, + {"matrix": [2, 3], "x": 6, "y": 2}, + {"matrix": [2, 4], "x": 7, "y": 2}, + {"matrix": [2, 5], "x": 8, "y": 2}, + + {"matrix": [8, 0], "x": 10, "y": 2}, + {"matrix": [8, 1], "x": 11, "y": 2}, + {"matrix": [8, 2], "x": 12, "y": 2}, + {"matrix": [8, 3], "x": 13, "y": 2}, + {"matrix": [8, 4], "x": 14, "y": 2}, + {"matrix": [8, 5], "x": 15, "y": 2}, + {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [8, 6], "x": 18.25, "y": 2}, + + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 7], "x": 1, "y": 3}, + + {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 4.5, "y": 3}, + {"matrix": [3, 3], "x": 5.5, "y": 3}, + {"matrix": [3, 4], "x": 6.5, "y": 3}, + {"matrix": [3, 5], "x": 7.5, "y": 3}, + {"matrix": [3, 6], "x": 8.5, "y": 3}, + + {"matrix": [9, 0], "x": 10.5, "y": 3}, + {"matrix": [9, 1], "x": 11.5, "y": 3}, + {"matrix": [9, 2], "x": 12.5, "y": 3}, + {"matrix": [9, 3], "x": 13.5, "y": 3}, + {"matrix": [9, 5], "x": 14.5, "y": 3}, + {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 3}, + {"matrix": [9, 4], "x": 18.25, "y": 3}, + + {"matrix": [4, 5], "x": 0, "y": 4}, + {"matrix": [4, 7], "x": 1, "y": 4}, + + {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5}, + {"matrix": [10, 3], "x": 13.25, "y": 4}, + {"matrix": [10, 4], "x": 14.25, "y": 4}, + {"matrix": [10, 5], "x": 15.25, "y": 4}, + {"matrix": [10, 6], "x": 16.25, "y": 4}, + {"matrix": [10, 7], "x": 17.25, "y": 4}, + {"matrix": [10, 2], "x": 18.25, "y": 4} ] } } diff --git a/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c b/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..04349ea990aa --- /dev/null +++ b/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_F1, KC_F2, 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_DEL, KC_BSPC, KC_HOME, + KC_F3, KC_F4, 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_END, + KC_F5, KC_F6, 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_PGUP, + KC_F7, KC_F8, 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_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, QK_GESC, 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_BSPC, _______, + _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [2] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) }, + [3] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, +}; +#endif diff --git a/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk b/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1189f4ad1927 --- /dev/null +++ b/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keebio/quefrency/rev1/rev1.c b/keyboards/keebio/quefrency/rev1/rev1.c index 6704b062f5f3..51adb74d31f0 100644 --- a/keyboards/keebio/quefrency/rev1/rev1.c +++ b/keyboards/keebio/quefrency/rev1/rev1.c @@ -1,4 +1,4 @@ -#include "quefrency.h" +#include "quantum.h" void eeconfig_init_kb(void) { #ifdef RGBLIGHT_ENABLE diff --git a/keyboards/keebio/quefrency/rev1/rev1.h b/keyboards/keebio/quefrency/rev1/rev1.h deleted file mode 100644 index da62f904cc30..000000000000 --- a/keyboards/keebio/quefrency/rev1/rev1.h +++ /dev/null @@ -1,124 +0,0 @@ -#pragma once - -#include "quefrency.h" - -#include "quantum.h" - - -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif - -#define LAYOUT( \ - LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ - LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \ - LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \ - LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, \ - LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \ - ) \ - { \ - { LA1, LA2, LA3, LA4, LA5, LA6, LA7, KC_NO }, \ - { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO, KC_NO }, \ - { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO, KC_NO }, \ - { LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, KC_NO }, \ - { LE1, LE2, LE3, KC_NO, LE5, KC_NO, LE7, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ - { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ - { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \ - { RD1, RD2, RD3, RD4, KC_NO, RD6, RD7, RD8 }, \ - { RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ - } - -#define LAYOUT_65( \ - LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ - LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ - LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \ - LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \ - LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \ - ) \ - { \ - { LA1, LA2, LA3, LA4, LA5, LA6, LA7, KC_NO }, \ - { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO, KC_NO }, \ - { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO, KC_NO }, \ - { LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, KC_NO }, \ - { LE1, LE2, LE3, KC_NO, LE5, KC_NO, LE7, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ - { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ - { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \ - { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \ - { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \ - } - -#define LAYOUT_60_with_macro( \ - LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ - LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \ - LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \ - LD9, LD8, LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, \ - LE9, LE8, LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \ - ) \ - { \ - { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \ - { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \ - { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \ - { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \ - { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ - { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ - { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \ - { RD1, RD2, RD3, RD4, KC_NO, RD6, RD7, RD8 }, \ - { RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ - } - -#define LAYOUT_65_with_macro( \ - LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ - LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ - LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \ - LD9, LD8, LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \ - LE9, LE8, LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \ - ) \ - { \ - { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \ - { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \ - { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \ - { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \ - { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ - { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ - { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \ - { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \ - { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \ - } - -#define LAYOUT_all( \ - LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ - LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ - LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC7x,RC8, RC9, \ - LD9, LD8, LD1, LD2x,LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \ - LE9, LE8, LE1, LE2, LE3, LE5, LE6x,LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \ - ) \ - { \ - { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \ - { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \ - { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \ - { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \ - { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \ - { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \ - { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \ - { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \ - { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \ - } diff --git a/keyboards/keyboardio/model01/model01.h b/keyboards/keyboardio/model01/model01.h index 870cb441f319..8e494cca30d0 100644 --- a/keyboards/keyboardio/model01/model01.h +++ b/keyboards/keyboardio/model01/model01.h @@ -38,6 +38,24 @@ {R30, R31, R32, R33, R34, R35, R36, R37} \ } +#define LAYOUT_thumb_row( \ + L07, L06, L05, L04, L03, L02, R05, R04, R03, R02, R01, R00, \ + L17, L16, L15, L14, L13, L12, L01, R06, R15, R14, R13, R12, R11, R10, \ + L27, L26, L25, L24, L23, L22, L11, R16, R25, R24, R23, R22, R21, R20, \ + L37, L36, L35, L34, L33, L32, L21, R26, R35, R34, R33, R32, R31, R30, \ + L00, L10, L20, L30, R37, R27, R17, R07, \ + L31, R36 \ + ) { \ + {L00, L01, L02, L03, L04, L05, L06, L07}, \ + {L10, L11, L12, L13, L14, L15, L16, L17}, \ + {L20, L21, L22, L23, L24, L25, L26, L27}, \ + {L30, L31, L32, L33, L34, L35, L36, L37}, \ + {R00, R01, R02, R03, R04, R05, R06, R07}, \ + {R10, R11, R12, R13, R14, R15, R16, R17}, \ + {R20, R21, R22, R23, R24, R25, R26, R27}, \ + {R30, R31, R32, R33, R34, R35, R36, R37} \ + } + #include "wire-protocol-constants.h" #define I2C_ADDR_LEFT (0x58 << 1) #define I2C_ADDR_RIGHT (I2C_ADDR_LEFT + 6) diff --git a/keyboards/kinesis/kint41/rules.mk b/keyboards/kinesis/kint41/rules.mk index 99c7c0f7d602..e273e8f282e9 100644 --- a/keyboards/kinesis/kint41/rules.mk +++ b/keyboards/kinesis/kint41/rules.mk @@ -13,3 +13,5 @@ BOOTLOADER = halfkay # this because the Cherry MX keyswitches on the Kinesis only produce noise while # pressed. DEBOUNCE_TYPE = sym_eager_pk + +FIRMWARE_FORMAT = hex diff --git a/keyboards/kuro/kuro65/config.h b/keyboards/kuro/kuro65/config.h new file mode 100644 index 000000000000..115201c7538d --- /dev/null +++ b/keyboards/kuro/kuro65/config.h @@ -0,0 +1,82 @@ +/* Copyright 2023 Tobias Minn (0x544D) + * + * 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 + + +/* RGB Matrix defines*/ +#ifdef RGB_MATRIX_ENABLE +// The pin connected to the data pin of the LEDs +# define RGB_DI_PIN E6 +// The number of LEDs connected +# define RGB_MATRIX_LED_COUNT 69 + +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define USB_SUSPEND_WAKEUP_DELAY 5000 +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL +#endif diff --git a/keyboards/kuro/kuro65/info.json b/keyboards/kuro/kuro65/info.json new file mode 100644 index 000000000000..648e1f9abb6d --- /dev/null +++ b/keyboards/kuro/kuro65/info.json @@ -0,0 +1,188 @@ +{ + "keyboard_name": "Kuro65", + "manufacturer": "Kuro", + "maintainer" : "0x544D", + "url": "", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["F6", "F5", "F4", "F1", "F0"], + "cols": ["B0", "B7", "D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7"] + }, + "usb": { + "vid": "0x544D", + "pid": "0xC000", + "device_version": "1.0.0" + }, + "build": { + "lto": true + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "backlight": false, + "rgblight": false, + "audio": false, + "key_lock": false, + "rgb_matrix": true + }, + "community_layouts": [ "65_iso" ], + "layouts": { + "LAYOUT_65_iso": { + "layout": [ + { "matrix": [0, 0], "label":"Esc", "x": 0, "y": 0}, + { "matrix": [0, 1], "label":"1", "x": 1, "y": 0}, + { "matrix": [0, 2], "label":"2", "x": 2, "y": 0}, + { "matrix": [0, 3], "label":"3", "x": 3, "y": 0}, + { "matrix": [0, 4], "label":"4", "x": 4, "y": 0}, + { "matrix": [0, 5], "label":"5", "x": 5, "y": 0}, + { "matrix": [0, 6], "label":"6", "x": 6, "y": 0}, + { "matrix": [0, 7], "label":"7", "x": 7, "y": 0}, + { "matrix": [0, 8], "label":"8", "x": 8, "y": 0}, + { "matrix": [0, 9], "label":"9", "x": 9, "y": 0}, + { "matrix": [0, 10], "label":"0", "x": 10, "y": 0}, + { "matrix": [0, 11], "label":"?", "x": 11, "y": 0}, + { "matrix": [0, 12], "label":"`", "x": 12, "y": 0}, + { "matrix": [0, 14], "label":"Backspace", "x": 13, "y": 0, "w":2}, + { "matrix": [0, 15], "label":"Del", "x": 15, "y": 0}, + + { "matrix": [1, 0], "label":"Tab", "x": 0, "y": 1, "w":1.5}, + { "matrix": [1, 1], "label":"Q", "x": 1.5, "y": 1}, + { "matrix": [1, 2], "label":"W", "x": 2.5, "y": 1}, + { "matrix": [1, 3], "label":"E", "x": 3.5, "y": 1}, + { "matrix": [1, 4], "label":"R", "x": 4.5, "y": 1}, + { "matrix": [1, 5], "label":"T", "x": 5.5, "y": 1}, + { "matrix": [1, 6], "label":"Z", "x": 6.5, "y": 1}, + { "matrix": [1, 7], "label":"U", "x": 7.5, "y": 1}, + { "matrix": [1, 8], "label":"I", "x": 8.5, "y": 1}, + { "matrix": [1, 9], "label":"O", "x": 9.5, "y": 1}, + { "matrix": [1, 10], "label":"P", "x": 10.5, "y": 1}, + { "matrix": [1, 11], "label":"Ü", "x": 11.5, "y": 1}, + { "matrix": [1, 12], "label":"*", "x": 12.5, "y": 1}, + { "matrix": [1, 15], "label":"Page Up", "x": 15, "y": 1}, + + { "matrix": [2, 0], "label":"Caps Lock", "x": 0, "y": 2, "w":1.75}, + { "matrix": [2, 1], "label":"A", "x": 1.75, "y": 2}, + { "matrix": [2, 2], "label":"S", "x": 2.75, "y": 2}, + { "matrix": [2, 3], "label":"D", "x": 3.75, "y": 2}, + { "matrix": [2, 4], "label":"F", "x": 4.75, "y": 2}, + { "matrix": [2, 5], "label":"G", "x": 5.75, "y": 2}, + { "matrix": [2, 6], "label":"H", "x": 6.75, "y": 2}, + { "matrix": [2, 7], "label":"J", "x": 7.75, "y": 2}, + { "matrix": [2, 8], "label":"K", "x": 8.75, "y": 2}, + { "matrix": [2, 9], "label":"L", "x": 9.75, "y": 2}, + { "matrix": [2, 10], "label":"Ö", "x": 10.75, "y": 2}, + { "matrix": [2, 11], "label":"Ä", "x": 11.75, "y": 2}, + { "matrix": [2, 12], "label":"'", "x": 12.75, "y": 2}, + { "matrix": [2, 14], "label":"Enter", "x": 13.75, "y": 1, "w":1.25, "h":2}, + { "matrix": [2, 15], "label":"Page Down", "x": 15, "y": 2}, + + { "matrix": [3, 0], "label":"LShift", "x": 0, "y": 3, "w":1.25}, + { "matrix": [3, 1], "label":"<", "x": 1.25, "y": 3}, + { "matrix": [3, 2], "label":"Y", "x": 2.25, "y": 3}, + { "matrix": [3, 3], "label":"X", "x": 3.25, "y": 3}, + { "matrix": [3, 4], "label":"C", "x": 4.25, "y": 3}, + { "matrix": [3, 5], "label":"V", "x": 5.25, "y": 3}, + { "matrix": [3, 6], "label":"B", "x": 6.25, "y": 3}, + { "matrix": [3, 7], "label":"N", "x": 7.25, "y": 3}, + { "matrix": [3, 8], "label":"M", "x": 8.25, "y": 3}, + { "matrix": [3, 9], "label":",", "x": 9.25, "y": 3}, + { "matrix": [3, 10], "label":".", "x": 10.25, "y": 3}, + { "matrix": [3, 11], "label":"-", "x": 11.25, "y": 3}, + { "matrix": [3, 12], "label":"RShift", "x": 12.25, "y": 3, "w":1.75}, + { "matrix": [3, 14], "label":"\u2191", "x": 14, "y": 3}, + { "matrix": [3, 15], "label":"Fn2", "x": 15, "y": 3}, + + { "matrix": [4, 0], "label":"LCtrl", "x": 0, "y": 4, "w":1.25}, + { "matrix": [4, 1], "label":"Win", "x": 1.25, "y": 4, "w":1.25}, + { "matrix": [4, 2], "label":"LAlt", "x": 2.5, "y": 4, "w":1.25}, + { "matrix": [4, 6], "label":"Space", "x": 3.75, "y": 4, "w":6.25}, + { "matrix": [4, 10], "label":"RAlt", "x": 10, "y": 4}, + { "matrix": [4, 11], "label":"Fn1", "x": 11, "y": 4}, + { "matrix": [4, 12], "label":"RCtrl", "x": 12, "y": 4}, + { "matrix": [4, 13], "label":"\u2190", "x": 13, "y": 4}, + { "matrix": [4, 14], "label":"\u2193", "x": 14, "y": 4}, + { "matrix": [4, 15], "label":"\u2192", "x": 15, "y": 4} + ] + } + }, + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + { "flags": 4, "matrix": [4, 6], "x": 96, "y": 64}, + { "flags": 1, "matrix": [4, 10], "x":150, "y": 64}, + { "flags": 1, "matrix": [4, 11], "x":165, "y": 64}, + { "flags": 1, "matrix": [4, 12], "x":180, "y": 64}, + { "flags": 4, "matrix": [4, 13], "x":195, "y": 64}, + { "flags": 4, "matrix": [4, 14], "x":210, "y": 64}, + { "flags": 4, "matrix": [4, 15], "x":224, "y": 64}, + { "flags": 4, "matrix": [3, 15], "x":224, "y": 48}, + { "flags": 4, "matrix": [3, 14], "x":210, "y": 48}, + { "flags": 1, "matrix": [3, 12], "x":189, "y": 48}, + { "flags": 4, "matrix": [3, 11], "x":169, "y": 48}, + { "flags": 4, "matrix": [3, 10], "x":154, "y": 48}, + { "flags": 4, "matrix": [3, 9], "x":139, "y": 48}, + { "flags": 4, "matrix": [3, 8], "x":124, "y": 48}, + { "flags": 4, "matrix": [3, 7], "x":109, "y": 48}, + { "flags": 4, "matrix": [3, 6], "x": 94, "y": 48}, + { "flags": 4, "matrix": [3, 5], "x": 79, "y": 48}, + { "flags": 4, "matrix": [3, 4], "x": 64, "y": 48}, + { "flags": 4, "matrix": [3, 3], "x": 49, "y": 48}, + { "flags": 4, "matrix": [3, 2], "x": 34, "y": 48}, + { "flags": 4, "matrix": [3, 1], "x": 19, "y": 48}, + { "flags": 1, "matrix": [4, 2], "x": 39, "y": 64}, + { "flags": 1, "matrix": [4, 1], "x": 21, "y": 64}, + { "flags": 1, "matrix": [4, 0], "x": 2, "y": 64}, + { "flags": 1, "matrix": [3, 0], "x": 2, "y": 48}, + { "flags": 1, "matrix": [2, 0], "x": 6, "y": 32}, + { "flags": 4, "matrix": [2, 1], "x": 26, "y": 32}, + { "flags": 4, "matrix": [2, 2], "x": 41, "y": 32}, + { "flags": 4, "matrix": [2, 3], "x": 56, "y": 32}, + { "flags": 4, "matrix": [2, 4], "x": 71, "y": 32}, + { "flags": 4, "matrix": [2, 5], "x": 86, "y": 32}, + { "flags": 4, "matrix": [2, 6], "x":101, "y": 32}, + { "flags": 4, "matrix": [2, 7], "x":116, "y": 32}, + { "flags": 4, "matrix": [2, 8], "x":131, "y": 32}, + { "flags": 4, "matrix": [2, 9], "x":146, "y": 32}, + { "flags": 4, "matrix": [2, 10], "x":161, "y": 32}, + { "flags": 4, "matrix": [2, 11], "x":176, "y": 32}, + { "flags": 4, "matrix": [2, 12], "x":191, "y": 32}, + { "flags": 4, "matrix": [2, 14], "x":208, "y": 24}, + { "flags": 4, "matrix": [2, 15], "x":224, "y": 32}, + { "flags": 4, "matrix": [1, 15], "x":224, "y": 16}, + { "flags": 4, "matrix": [1, 12], "x":188, "y": 16}, + { "flags": 4, "matrix": [1, 11], "x":173, "y": 16}, + { "flags": 4, "matrix": [1, 10], "x":158, "y": 16}, + { "flags": 4, "matrix": [1, 9], "x":143, "y": 16}, + { "flags": 4, "matrix": [1, 8], "x":128, "y": 16}, + { "flags": 4, "matrix": [1, 7], "x":113, "y": 16}, + { "flags": 4, "matrix": [1, 6], "x": 98, "y": 16}, + { "flags": 4, "matrix": [1, 5], "x": 83, "y": 16}, + { "flags": 4, "matrix": [1, 4], "x": 68, "y": 16}, + { "flags": 4, "matrix": [1, 3], "x": 53, "y": 16}, + { "flags": 4, "matrix": [1, 2], "x": 38, "y": 16}, + { "flags": 4, "matrix": [1, 1], "x": 23, "y": 16}, + { "flags": 1, "matrix": [1, 0], "x": 4, "y": 16}, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0}, + { "flags": 4, "matrix": [0, 1], "x": 15, "y": 0}, + { "flags": 4, "matrix": [0, 2], "x": 30, "y": 0}, + { "flags": 4, "matrix": [0, 3], "x": 45, "y": 0}, + { "flags": 4, "matrix": [0, 4], "x": 60, "y": 0}, + { "flags": 4, "matrix": [0, 5], "x": 75, "y": 0}, + { "flags": 4, "matrix": [0, 6], "x": 90, "y": 0}, + { "flags": 4, "matrix": [0, 7], "x":105, "y": 0}, + { "flags": 4, "matrix": [0, 8], "x":120, "y": 0}, + { "flags": 4, "matrix": [0, 9], "x":135, "y": 0}, + { "flags": 4, "matrix": [0, 10], "x":150, "y": 0}, + { "flags": 4, "matrix": [0, 11], "x":165, "y": 0}, + { "flags": 4, "matrix": [0, 12], "x":180, "y": 0}, + { "flags": 4, "matrix": [0, 14], "x":203, "y": 0}, + { "flags": 4, "matrix": [0, 15], "x":224, "y": 0} + ] + } +} diff --git a/keyboards/kuro/kuro65/keymaps/0x544d/keymap.c b/keyboards/kuro/kuro65/keymaps/0x544d/keymap.c new file mode 100644 index 000000000000..bc7986f5578e --- /dev/null +++ b/keyboards/kuro/kuro65/keymaps/0x544d/keymap.c @@ -0,0 +1,102 @@ +/* Copyright 2023 Tobias Minn (0x544D) + * + * 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 + +enum layers { + BL_WIN, + BL_MAC, + FN1, + FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* ISO 65 layout by 0x544D (ISO German keyboard layout shown) + * + * ,-----------------------------------------------------------------------------------------------. + * | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Backspace | Del | + * |-----------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + * | Enter | PgU | + * |---------------------------------------------------------------------------------- |-----| + * | MO(2) | A | S | D | F | G | H | J | K | L | Ö | Ä | # ' | | PgD | + * |-----------------------------------------------------------------------------------------------| + * | Shift | < > | Y | X | C | V | B | N | M | , ; | . : | - _ | Shift | Up | Del | + * |-----------------------------------------------------------------------------------------------| + * | LCtl | LGUI | LAlt | Space |RAlt |MO(1)|RCtl | Lft | Dwn | Rgh | + * `-----------------------------------------------------------------------------------------------' + */ + [BL_WIN] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_PGUP, + MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [BL_MAC] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_PGUP, + MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_GRV, 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_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Funtion Layer 1: Media Controls with arrow keys / RShift (Play Pause), F keys, + * RGB matrix control + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | |RGB_T|RGB+ |RGB- |HUE+ |HUE- |SAT+ |SAT- |BGH+ |BGH- | | | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | | | | | | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | MPlay |Vol_U| End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | |Trans| | MPrv|Vol_D| MNxt| + * `-----------------------------------------------------------------------------------------------' + */ + [FN1] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_HOME, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_VOLU, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_MPRV, KC_VOLD, KC_MNXT + ), + + + /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/RESET + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | | |Vol_D|Vol_U| | | | | | |RESET| | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | Trans |MPrv |MPlay| MNxt| | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | |TG(1)| | | | |PGUP | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | Home|PGDN | End | + * `-----------------------------------------------------------------------------------------------' + */ + [FN2] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_HOME, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END + ) + +}; \ No newline at end of file diff --git a/keyboards/kuro/kuro65/keymaps/0x544d/rules.mk b/keyboards/kuro/kuro65/keymaps/0x544d/rules.mk new file mode 100644 index 000000000000..1821917788e3 --- /dev/null +++ b/keyboards/kuro/kuro65/keymaps/0x544d/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes # enable VIA support \ No newline at end of file diff --git a/keyboards/kuro/kuro65/keymaps/default/keymap.c b/keyboards/kuro/kuro65/keymaps/default/keymap.c new file mode 100644 index 000000000000..cb8d125a8f79 --- /dev/null +++ b/keyboards/kuro/kuro65/keymaps/default/keymap.c @@ -0,0 +1,93 @@ +/* Copyright 2023 Tobias Minn (0x544D) + * + * 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 + +enum layers { + BASE, + FN1, + FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* ISO 65 layout by 0x544D (ISO German keyboard layout shown) + * + * ,-----------------------------------------------------------------------------------------------. + * | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Backspace | Del | + * |-----------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + * | Enter | PgU | + * |---------------------------------------------------------------------------------- |-----| + * | MO(2) | A | S | D | F | G | H | J | K | L | Ö | Ä | # ' | | PgD | + * |-----------------------------------------------------------------------------------------------| + * | Shift | < > | Y | X | C | V | B | N | M | , ; | . : | - _ | Shift | Up | Del | + * |-----------------------------------------------------------------------------------------------| + * | LCtl | LGUI | LAlt | Space |RAlt |MO(1)|RCtl | Lft | Dwn | Rgh | + * `-----------------------------------------------------------------------------------------------' + */ + [BASE] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_PGUP, + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Funtion Layer 1: Media Controls with arrow keys / RShift (Play Pause), F keys, + * RGB matrix control + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | |RGB_T|RGB+ |RGB- |HUE+ |HUE- |SAT+ |SAT- |BGH+ |BGH- | | | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | | | | | | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | MPlay |Vol_U| End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | |Trans| | MPrv|Vol_D| MNxt| + * `-----------------------------------------------------------------------------------------------' + */ + [FN1] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_HOME, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_VOLU, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_MPRV, KC_VOLD, KC_MNXT + ), + + + /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/RESET + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | | |Vol_D|Vol_U| | | | | | |RESET| | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | Trans |MPrv |MPlay| MNxt| | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | |PGUP | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | Home|PGDN | End | + * `-----------------------------------------------------------------------------------------------' + */ + [FN2] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_HOME, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END + ) + +}; \ No newline at end of file diff --git a/keyboards/kuro/kuro65/keymaps/via/keymap.c b/keyboards/kuro/kuro65/keymaps/via/keymap.c new file mode 100644 index 000000000000..cb8d125a8f79 --- /dev/null +++ b/keyboards/kuro/kuro65/keymaps/via/keymap.c @@ -0,0 +1,93 @@ +/* Copyright 2023 Tobias Minn (0x544D) + * + * 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 + +enum layers { + BASE, + FN1, + FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* ISO 65 layout by 0x544D (ISO German keyboard layout shown) + * + * ,-----------------------------------------------------------------------------------------------. + * | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Backspace | Del | + * |-----------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + * | Enter | PgU | + * |---------------------------------------------------------------------------------- |-----| + * | MO(2) | A | S | D | F | G | H | J | K | L | Ö | Ä | # ' | | PgD | + * |-----------------------------------------------------------------------------------------------| + * | Shift | < > | Y | X | C | V | B | N | M | , ; | . : | - _ | Shift | Up | Del | + * |-----------------------------------------------------------------------------------------------| + * | LCtl | LGUI | LAlt | Space |RAlt |MO(1)|RCtl | Lft | Dwn | Rgh | + * `-----------------------------------------------------------------------------------------------' + */ + [BASE] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_PGUP, + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Funtion Layer 1: Media Controls with arrow keys / RShift (Play Pause), F keys, + * RGB matrix control + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | |RGB_T|RGB+ |RGB- |HUE+ |HUE- |SAT+ |SAT- |BGH+ |BGH- | | | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | | | | | | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | MPlay |Vol_U| End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | |Trans| | MPrv|Vol_D| MNxt| + * `-----------------------------------------------------------------------------------------------' + */ + [FN1] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_HOME, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_VOLU, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_MPRV, KC_VOLD, KC_MNXT + ), + + + /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/RESET + * ,-----------------------------------------------------------------------------------------------. + * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |Home | + * |-----------------------------------------------------------------------------------------------| + * | | |Vol_D|Vol_U| | | | | | |RESET| | | |Home | + * |---------------------------------------------------------------------------------- |-----| + * | Trans |MPrv |MPlay| MNxt| | | | | | | | | | | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | |PGUP | End | + * |-----------------------------------------------------------------------------------------------| + * | | | | | | | | Home|PGDN | End | + * `-----------------------------------------------------------------------------------------------' + */ + [FN2] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_HOME, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END + ) + +}; \ No newline at end of file diff --git a/keyboards/kuro/kuro65/keymaps/via/rules.mk b/keyboards/kuro/kuro65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1821917788e3 --- /dev/null +++ b/keyboards/kuro/kuro65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes # enable VIA support \ No newline at end of file diff --git a/keyboards/kuro/kuro65/readme.md b/keyboards/kuro/kuro65/readme.md new file mode 100644 index 000000000000..6c57c45a4285 --- /dev/null +++ b/keyboards/kuro/kuro65/readme.md @@ -0,0 +1,41 @@ +# Kuro 65 +A 65% keyboard with an ISO layout, which fits the TOFU65 case (and similar) by KBDFans. + +Keyboard maintainer: [0x544D](https://github.com/0x544D) + +Hardware availability: [0x544D/kuro65](https://github.com/0x544D/kuro65) + +## Features + +- Hot-swappable ISO layout +- Per key RGB LED (south facing) +- VIA compatible +- USB-C connector +- Reset button on the back of the PCB +- Compatible with TOFU65 and similar cases + +## Pictures + +![kuro65_pcb](https://i.imgur.com/m5KoeQwh.jpg) + +![kuro65_case](https://i.imgur.com/jmoACMSh.jpg) + +## Building the firmware + +Make example for this keyboard (after setting up your build environment): + + make kuro/kuro65:default + +Flashing example for this keyboard: + + make kuro/kuro65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top-left key (ESC) and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. In the pre-supplied keymaps it is on the Function 2 (FN2) layer, replacing the P key. diff --git a/keyboards/kuro/kuro65/rules.mk b/keyboards/kuro/kuro65/rules.mk new file mode 100644 index 000000000000..d6b023bddce8 --- /dev/null +++ b/keyboards/kuro/kuro65/rules.mk @@ -0,0 +1 @@ +# This file is left blank intentionally. See info.json for config. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev1/info.json b/keyboards/mechlovin/mechlovin9/rev1/info.json index 66b4a3c2ed3e..aa8e9e94e376 100644 --- a/keyboards/mechlovin/mechlovin9/rev1/info.json +++ b/keyboards/mechlovin/mechlovin9/rev1/info.json @@ -4,6 +4,9 @@ "pid": "0x6509", "device_version": "0.0.1" }, + "features": { + "backlight": true + }, "backlight": { "pin": "B8", "breathing": true diff --git a/keyboards/mechlovin/mechlovin9/rev2/info.json b/keyboards/mechlovin/mechlovin9/rev2/info.json index c0e94e763807..85a20210b2df 100644 --- a/keyboards/mechlovin/mechlovin9/rev2/info.json +++ b/keyboards/mechlovin/mechlovin9/rev2/info.json @@ -4,6 +4,9 @@ "pid": "0x6509", "device_version": "0.0.2" }, + "features": { + "backlight": true + }, "backlight": { "pin": "D4", "breathing": true diff --git a/keyboards/mechlovin/mechlovin9/rev3/info.json b/keyboards/mechlovin/mechlovin9/rev3/info.json new file mode 100644 index 000000000000..d5da28d3eddf --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev3/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "Mechlovin9 Rev3", + "processor": "STM32F103", + "bootloader": "stm32duino", + "usb": { + "pid": "0x6509", + "device_version": "0.0.3" + }, + "features": { + "backlight": false + }, + "bootmagic": { + "matrix": [0, 13] + }, + "matrix_pins": { + "rows": ["B12", "B13", "B14", "B15", "A1"], + "cols": ["B11", "B10", "B2", "B1", "B0", "A6", "A5", "A4", "A3", "C13", "B7", "B6", "B5", "B4", "B3"] + }, + "indicators": { + "caps_lock": "B9" + } +} diff --git a/keyboards/mechlovin/mechlovin9/rev3/readme.md b/keyboards/mechlovin/mechlovin9/rev3/readme.md new file mode 100644 index 000000000000..3b98b5383d9f --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev3/readme.md @@ -0,0 +1,23 @@ +# mechlovin9 + +![mechlovin9](https://i.imgur.com/T5Lm6OYlh.png) + +A 65% PCB, compatible with Kyuu. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Kyuu Keyboard. +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/mechlovin9/rev3:default + +Flashing example for this keyboard: + + make mechlovin/mechlovin9/rev3: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 + +**Reset Key:** To put the mechlovin9 PCB into bootloader, hold ESC and plug cable. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev3/rules.mk b/keyboards/mechlovin/mechlovin9/rev3/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/mechlovin9/rules.mk b/keyboards/mechlovin/mechlovin9/rules.mk index c32039871cff..3c4e38888c44 100644 --- a/keyboards/mechlovin/mechlovin9/rules.mk +++ b/keyboards/mechlovin/mechlovin9/rules.mk @@ -7,7 +7,6 @@ EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/olly/orion/orion.c b/keyboards/mechlovin/olly/orion/orion.c index 9f02f1a5fae5..270683fa4c2a 100644 --- a/keyboards/mechlovin/olly/orion/orion.c +++ b/keyboards/mechlovin/olly/orion/orion.c @@ -16,13 +16,18 @@ #include "orion.h" -void led_init_ports(void) { +void board_init(void) { + //JTAG-DP Disabled and SW-DP Enabled + AFIO->MAPR = (AFIO->MAPR & ~AFIO_MAPR_SWJ_CFG_Msk) | AFIO_MAPR_SWJ_CFG_DISABLE; +} + +void keyboard_pre_init_kb(void) { setPinOutput(B5); setPinOutput(B6); setPinOutput(B7); setPinOutput(B8); setPinOutput(B9); - + keyboard_pre_init_user(); } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/ning/tiny_board/tb16_rgb/config.h b/keyboards/ning/tiny_board/tb16_rgb/config.h new file mode 100644 index 000000000000..d6e6c6a1542d --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/config.h @@ -0,0 +1,28 @@ +/* Copyright 2023 Ning (@ningjx) + * + * 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 RGB_DI_PIN B5 +#define RGB_MATRIX_LED_COUNT 16 + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP + +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP +#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS + + diff --git a/keyboards/ning/tiny_board/tb16_rgb/info.json b/keyboards/ning/tiny_board/tb16_rgb/info.json new file mode 100644 index 000000000000..5c19f2fe6bb0 --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/info.json @@ -0,0 +1,48 @@ +{ + "manufacturer": "Ning", + "keyboard_name": "TB16 RGB", + "maintainer": "ningjx", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B6", "B1", "B3", "B2"], + "rows": ["F7", "F6", "F5", "F4"] + }, + "development_board": "promicro", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_ortho_4x4": { + "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": [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 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 } + ] + } + } +} diff --git a/keyboards/ning/tiny_board/tb16_rgb/keymaps/default/keymap.c b/keyboards/ning/tiny_board/tb16_rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..e9529fe91e15 --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Ning (@ningjx) + * + * 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] = { + /* + * ┌───┬───┬───┬───┐ + * │ 7 │ 8 │ 9 │RGB│ + * ├───┼───┼───┼───┤ + * │ 4 │ 5 │ 6 │MOD│ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ - │ + * ├───┼───┼───┼───┤ + * │ 0 │ . │Ent│ + │ + * └───┴───┴───┴───┘ + */ + [0] = LAYOUT_ortho_4x4( + KC_P7, KC_P8, KC_P9, RGB_TOG, + KC_P4, KC_P5, KC_P6, RGB_MODE_FORWARD, + KC_P1, KC_P2, KC_P3, KC_PMNS, + KC_P0, KC_PDOT, KC_PENT, KC_PPLS + ) +}; diff --git a/keyboards/ning/tiny_board/tb16_rgb/keymaps/ningjx/keymap.c b/keyboards/ning/tiny_board/tb16_rgb/keymaps/ningjx/keymap.c new file mode 100644 index 000000000000..e9529fe91e15 --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/keymaps/ningjx/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Ning (@ningjx) + * + * 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] = { + /* + * ┌───┬───┬───┬───┐ + * │ 7 │ 8 │ 9 │RGB│ + * ├───┼───┼───┼───┤ + * │ 4 │ 5 │ 6 │MOD│ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ - │ + * ├───┼───┼───┼───┤ + * │ 0 │ . │Ent│ + │ + * └───┴───┴───┴───┘ + */ + [0] = LAYOUT_ortho_4x4( + KC_P7, KC_P8, KC_P9, RGB_TOG, + KC_P4, KC_P5, KC_P6, RGB_MODE_FORWARD, + KC_P1, KC_P2, KC_P3, KC_PMNS, + KC_P0, KC_PDOT, KC_PENT, KC_PPLS + ) +}; diff --git a/keyboards/ning/tiny_board/tb16_rgb/readme.md b/keyboards/ning/tiny_board/tb16_rgb/readme.md new file mode 100644 index 000000000000..e755555e7b7a --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/readme.md @@ -0,0 +1,26 @@ +# ning/tiny_board/tb16_rgb + + +A 4*4 tiny keyboard whith rgb lights. + +* Keyboard Maintainer: [Ning](https://github.com/ningjx) +* Hardware Supported: The PCB is designed by [Ning](https://github.com/ningjx),with ATMega32U4. +* Hardware Availability: https://oshwhub.com/iqirtryi/atmega32a-kb40 + +Make example for this keyboard (after setting up your build environment): + + make ning/tiny_board/tb16_rgb:default + +Flashing example for this keyboard: + + make ning/tiny_board/tb16_rgb: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: + +* **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 + diff --git a/keyboards/ning/tiny_board/tb16_rgb/rules.mk b/keyboards/ning/tiny_board/tb16_rgb/rules.mk new file mode 100644 index 000000000000..32afd2163565 --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/ning/tiny_board/tb16_rgb/tb16_rgb.c b/keyboards/ning/tiny_board/tb16_rgb/tb16_rgb.c new file mode 100644 index 000000000000..e7807be5e886 --- /dev/null +++ b/keyboards/ning/tiny_board/tb16_rgb/tb16_rgb.c @@ -0,0 +1,31 @@ +/* Copyright 2023 Ning (@ningjx) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +led_config_t g_led_config = { { + { 0, 1, 2, 3 }, + { 4, 5, 6, 7 }, + { 8, 9, 10, 11 }, + { 12, 13, 14, 15 } +}, { + {0,0},{75,0},{150,0},{224,0}, + {0,21},{75,21},{150,21},{224,21}, + {0,42},{75,42},{150,42},{224,42}, + {0,64},{75,64},{150,64},{224,64} +}, { + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 +} }; diff --git a/keyboards/nullbitsco/snap/config.h b/keyboards/nullbitsco/snap/config.h new file mode 100644 index 000000000000..ae0a5018becd --- /dev/null +++ b/keyboards/nullbitsco/snap/config.h @@ -0,0 +1,87 @@ +/* Copyright 2021 Jay Greco + * + * 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 . + */ +// clang-format off +#pragma once + +/* Used to set host for remote KB if VUSB detect doesn't work. */ +// #define KEYBOARD_HOST // Force host mode +// #define KEYBOARD_REMOTE // Force remote mode + +// Workarounds for sleep/wake issues +#define USB_SUSPEND_WAKEUP_DELAY 250 + +// NOTE: There is a bug in AVR deep sleep, which +// causes the MCU to stop responding in some cases. +// Disabling the watchdog prevents the MCU from entering +// power down, while still turning off LEDs, audio, etc. +// See qmk_firmware/issues/20087 for background +#undef WDT_vect + +/* split config */ +// #define SPLIT_USB_DETECT // Enable if you have issues with USB +#define SOFT_SERIAL_PIN E6 +#define SPLIT_HAND_PIN B6 +#define DISABLE_SYNC_TIMER +#define SPLIT_HAND_PIN_LOW_IS_LEFT + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 +#define MATRIX_MUX_COLS 3 + +/* + * Keyboard Matrix Assignments + * The snap uses a demultiplexer for the cols. + * to free up more IOs for awesomeness! + * See matrix.c for more details. +*/ +// Left side +#define MATRIX_ROW_PINS { D4, C6, D7, F4, B4, B5 } +#define MATRIX_COL_MUX_PINS { F7, F6, F5 } + +//Right side +#define MATRIX_ROW_PINS_RIGHT { F4, F5, F6, F7, B1, B3 } +#define MATRIX_COL_MUX_PINS_RIGHT { D7, C6, D4 } +#define MATRIX_EXT_PIN_RIGHT B6 + +/* Optional SMT LED pins */ +#define RGB_DI_PIN B2 +#define RGBLED_NUM 10 +#define RGBLED_SPLIT { 5, 5 } +#define RGBLIGHT_LED_MAP { 8, 9, 0, 1, 2, 6, 7, 3, 4, 5 } +#define RGBLIGHT_SLEEP +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE + +/* Optional encoder pins */ +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B1 } +#define ENCODERS_PAD_A_RIGHT { B4 } +#define ENCODERS_PAD_B_RIGHT { B5 } + +/* Optional speaker pin */ +#define AUDIO_PIN B6 + +/* Optional split transactions */ +#define SPLIT_OLED_ENABLE diff --git a/keyboards/nullbitsco/snap/info.json b/keyboards/nullbitsco/snap/info.json new file mode 100644 index 000000000000..6567ccde85a3 --- /dev/null +++ b/keyboards/nullbitsco/snap/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "SNAP", + "manufacturer": "nullbits", + "url": "https://nullbits.co/snap/", + "usb": { + "vid": "0x6E61", + "pid": "0x6063", + "device_version": "0.0.1" + }, + "debounce": 10, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp1", "x":14, "y":1}, {"label":"Bksp2", "x":15, "y":1}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"|", "x":14.5, "y":2, "w":1.5}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":1.25}, {"label":"#", "x":2.25, "y":4}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + }, + "LAYOUT_ansi": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp", "x":14, "y":1, "w":2}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"|", "x":14.5, "y":2, "w":1.5}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":2.25}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + }, + "LAYOUT_iso": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp", "x":14, "y":1, "w":2}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Enter", "x":14.75, "y":2, "w":1.25, "h":2}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"\"", "x":13.75, "y":3}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":1.25}, {"label":"#", "x":2.25, "y":4}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h new file mode 100644 index 000000000000..0cf1de3045bc --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Chris Tanaka + * + * 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 "bongo_graphics.h" +#include QMK_KEYBOARD_H + +#define _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 // Number of bytes in array (max is 1024) +#define _IDLE_FRAME_DURATION 175 +#define _TAP_FRAME_DURATION 75 +#define _PREP_TIMEOUT 750 + +enum anim_states +{ + Idle, + Prep, + Tap +}; + +static uint8_t anim_state = Idle; +static uint8_t anim_duration = _IDLE_FRAME_DURATION; +static uint32_t anim_timer = 0; + +static uint8_t idle_frame = 0; +static uint8_t tap_frame = 0; + +static uint32_t prep_timer = 0; + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +static void animate(uint8_t x, uint8_t y) { + oled_set_cursor(x, y); + + // Update frame + switch (anim_state) { + case Idle: + idle_frame = (idle_frame + 1) % _IDLE_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(idle_block_map[abs(1 - idle_frame)], idle[abs(1 - idle_frame)]); + #else + oled_write_raw_P(idle[abs(1 - idle_frame)], sizeof(idle[abs(1 - idle_frame)])); + #endif + break; + case Prep: + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(prep_block_map[0], prep[0]); + #else + oled_write_raw_P(prep[0], sizeof(prep[0])); + #endif + break; + case Tap: + tap_frame = (tap_frame + 1) % _TAP_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(tap_block_map[abs(1 - tap_frame)], tap[abs(1 - tap_frame)]); + #else + oled_write_raw_P(tap[abs(1 - tap_frame)], sizeof(tap[abs(1 - tap_frame)])); + #endif + break; + default: + break; + } +} + +void bongo_render(uint8_t x, uint8_t y) { + if (timer_elapsed32(anim_timer) > anim_duration) { + anim_timer = timer_read32(); + animate(x, y); + } + + if (anim_state == Prep && timer_elapsed32(prep_timer) > _PREP_TIMEOUT) { + anim_state = Idle; + anim_duration = _IDLE_FRAME_DURATION; + } +} + +void bongo_process_record(keyrecord_t *record) { + if (record->event.pressed) { + anim_state = Tap; + anim_duration = _TAP_FRAME_DURATION; + } else { + if (anim_state == Tap) { + anim_state = Prep; + prep_timer = timer_read32(); + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h new file mode 100644 index 000000000000..0b7915ea720a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h @@ -0,0 +1,262 @@ +/* Copyright 2022 Jay Greco + * + * 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 _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 + +#define NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM idle_block_map[_IDLE_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x79, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM idle[_IDLE_FRAMES][164] = +{ + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x01, 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, + 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, + 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, + 0x18, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM prep_block_map[_PREP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][158] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, + 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM tap_block_map[_TAP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][179] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, + 0x9c, 0x1c, 0x1e, 0x0e, 0x06 + }, + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, 0x08, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, + 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, + 0xf8, 0xf0, 0x70 + } +}; + +#else +static const char PROGMEM idle[_IDLE_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h new file mode 100644 index 000000000000..49590197aed3 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 + +// Selectively undefine to save space +// VIA support won't fit otherwise +#ifdef RGBLIGHT_ENABLE +#undef RGBLIGHT_EFFECT_TWINKLE +#endif //RGB LIGHT_ENABLE + +// Split Options +#define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c new file mode 100644 index 000000000000..4ffa21f9ee17 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c @@ -0,0 +1,133 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include "bongo.h" + +// NOTE: +// In order to get the slave oled to receive keypresses: +// See: https://zenn.dev/teppeis/articles/2021-05-qmk-fire-process-record-in-slave + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = 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_PAUS, + KC_F13, 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_DEL, KC_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(""), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + bongo_render(0, 0); + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bongo_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk new file mode 100644 index 000000000000..7e580bfd7490 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h new file mode 100644 index 000000000000..0cf1de3045bc --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Chris Tanaka + * + * 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 "bongo_graphics.h" +#include QMK_KEYBOARD_H + +#define _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 // Number of bytes in array (max is 1024) +#define _IDLE_FRAME_DURATION 175 +#define _TAP_FRAME_DURATION 75 +#define _PREP_TIMEOUT 750 + +enum anim_states +{ + Idle, + Prep, + Tap +}; + +static uint8_t anim_state = Idle; +static uint8_t anim_duration = _IDLE_FRAME_DURATION; +static uint32_t anim_timer = 0; + +static uint8_t idle_frame = 0; +static uint8_t tap_frame = 0; + +static uint32_t prep_timer = 0; + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +static void animate(uint8_t x, uint8_t y) { + oled_set_cursor(x, y); + + // Update frame + switch (anim_state) { + case Idle: + idle_frame = (idle_frame + 1) % _IDLE_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(idle_block_map[abs(1 - idle_frame)], idle[abs(1 - idle_frame)]); + #else + oled_write_raw_P(idle[abs(1 - idle_frame)], sizeof(idle[abs(1 - idle_frame)])); + #endif + break; + case Prep: + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(prep_block_map[0], prep[0]); + #else + oled_write_raw_P(prep[0], sizeof(prep[0])); + #endif + break; + case Tap: + tap_frame = (tap_frame + 1) % _TAP_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(tap_block_map[abs(1 - tap_frame)], tap[abs(1 - tap_frame)]); + #else + oled_write_raw_P(tap[abs(1 - tap_frame)], sizeof(tap[abs(1 - tap_frame)])); + #endif + break; + default: + break; + } +} + +void bongo_render(uint8_t x, uint8_t y) { + if (timer_elapsed32(anim_timer) > anim_duration) { + anim_timer = timer_read32(); + animate(x, y); + } + + if (anim_state == Prep && timer_elapsed32(prep_timer) > _PREP_TIMEOUT) { + anim_state = Idle; + anim_duration = _IDLE_FRAME_DURATION; + } +} + +void bongo_process_record(keyrecord_t *record) { + if (record->event.pressed) { + anim_state = Tap; + anim_duration = _TAP_FRAME_DURATION; + } else { + if (anim_state == Tap) { + anim_state = Prep; + prep_timer = timer_read32(); + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h new file mode 100644 index 000000000000..0b7915ea720a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h @@ -0,0 +1,262 @@ +/* Copyright 2022 Jay Greco + * + * 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 _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 + +#define NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM idle_block_map[_IDLE_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x79, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM idle[_IDLE_FRAMES][164] = +{ + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x01, 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, + 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, + 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, + 0x18, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM prep_block_map[_PREP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][158] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, + 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM tap_block_map[_TAP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][179] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, + 0x9c, 0x1c, 0x1e, 0x0e, 0x06 + }, + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, 0x08, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, + 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, + 0xf8, 0xf0, 0x70 + } +}; + +#else +static const char PROGMEM idle[_IDLE_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h new file mode 100644 index 000000000000..8cfcb4d0e8a2 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Jay Greco + * + * 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 OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +// Split Options +#define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c new file mode 100644 index 000000000000..07d01e606a24 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include "bongo.h" + +// NOTE: +// In order to get the slave oled to receive keypresses: +// See: https://zenn.dev/teppeis/articles/2021-05-qmk-fire-process-record-in-slave + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = 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_PAUS, + KC_F13, 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_DEL, KC_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + bongo_render(0, 0); + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bongo_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk new file mode 100644 index 000000000000..d0a184e961f1 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/default/keymap.c b/keyboards/nullbitsco/snap/keymaps/default/keymap.c new file mode 100644 index 000000000000..5178b503496e --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/default/keymap.c @@ -0,0 +1,105 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include "common/remote_kb.h" + +// clang-format off +enum layers { + _BASE = 0, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, + KC_F13, 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_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_FUNC), KC_SPC, KC_BSPC, MO(_FUNC), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FUNC] = LAYOUT_ansi( + QK_BOOT, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + RGB_TOG, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT + ), +}; +// clang-format on + +// RGB config, for changing RGB settings on non-VIA firmware +#ifdef RGBLIGHT_ENABLE +void change_RGB(bool clockwise) { + bool shift = get_mods() & MOD_MASK_SHIFT; + bool alt = get_mods() & MOD_MASK_ALT; + bool ctrl = get_mods() & MOD_MASK_CTRL; + +#ifdef CONSOLE_ENABLE + dprintf("Mods: %u\n", get_mods()); +#endif + + if (clockwise) { + if (alt) { + rgblight_increase_hue(); + } else if (ctrl) { + rgblight_increase_val(); + } else if (shift) { + rgblight_increase_sat(); + } else { + rgblight_step(); + } + + } else { + if (alt) { + rgblight_decrease_hue(); + } else if (ctrl) { + rgblight_decrease_val(); + } else if (shift) { + rgblight_decrease_sat(); + } else { + rgblight_step_reverse(); + } + } +} +#endif + +bool encoder_update_user(uint8_t index, bool clockwise) { + // change RGB settings and don't do anything else + if (!layer_state_is(_BASE)) { + #ifdef RGBLIGHT_ENABLE + change_RGB(clockwise); + #endif + return false; + } + /* Left encoder */ + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + /* Right encoder */ + } else if (index == 1) { + if (clockwise) { + tap_code_delay(KC_MNXT, 10); + } else { + tap_code_delay(KC_MPRV, 10); + } + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/iso/keymap.c b/keyboards/nullbitsco/snap/keymaps/iso/keymap.c new file mode 100644 index 000000000000..3c3b828263ee --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/iso/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 Jay Greco + * + * 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 +enum layers { + _BASE = 0, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_iso( + 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_PAUS, + KC_F13, 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_HOME, + KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, + KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_FUNC), KC_SPC, KC_SPC, MO(_FUNC), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FUNC] = LAYOUT_iso( + QK_BOOT, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + RGB_TOG, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT + ), +}; +// clang-format on + +// RGB config, for changing RGB settings on non-VIA firmwares +#ifdef RGBLIGHT_ENABLE +void change_RGB(bool clockwise) { + bool shift = get_mods() & MOD_MASK_SHIFT; + bool alt = get_mods() & MOD_MASK_ALT; + bool ctrl = get_mods() & MOD_MASK_CTRL; + +#ifdef CONSOLE_ENABLE + dprintf("Mods: %u\n", get_mods()); +#endif + + if (clockwise) { + if (alt) { + rgblight_increase_hue(); + } else if (ctrl) { + rgblight_increase_val(); + } else if (shift) { + rgblight_increase_sat(); + } else { + rgblight_step(); + } + + } else { + if (alt) { + rgblight_decrease_hue(); + } else if (ctrl) { + rgblight_decrease_val(); + } else if (shift) { + rgblight_decrease_sat(); + } else { + rgblight_step_reverse(); + } + } +} +#endif + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (layer_state_is(1)) { + // change RGB settings + #ifdef RGBLIGHT_ENABLE + change_RGB(clockwise); + #endif + } else { + if (index == 0) { + // Left encoder: Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Right encoder: skip forward/back + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/oled/config.h b/keyboards/nullbitsco/snap/keymaps/oled/config.h new file mode 100644 index 000000000000..d2000ce58981 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 +#define OLED_UPDATE_INTERVAL 250 diff --git a/keyboards/nullbitsco/snap/keymaps/oled/keymap.c b/keyboards/nullbitsco/snap/keymaps/oled/keymap.c new file mode 100644 index 000000000000..4e566fa3ee15 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/keymap.c @@ -0,0 +1,163 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include "oled_graphics.h" + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = 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_PAUS, + KC_F13, 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_DEL, KC_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_nullbits_logo(void) { +#ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(nullbits_logo_block_map, nullbits_logo_bmp); +#else + oled_write_raw_P(nullbits_logo, sizeof(nullbits_logo)); +#endif +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(""), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } + + // WPM and max WPM + oled_set_cursor(0, 2); + oled_write_P(PSTR("WPM "), false); + uint8_t current_wpm = get_current_wpm(); + oled_write(get_u8_str(current_wpm, '0'), true); + + oled_set_cursor(8, 2); + oled_write_P(PSTR("MAX "), false); + static uint8_t max_wpm; + max_wpm = MAX(max_wpm, current_wpm); + oled_write(get_u8_str(max_wpm, '0'), true); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + render_nullbits_logo(); + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h b/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h new file mode 100644 index 000000000000..487bb5974eaf --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h @@ -0,0 +1,82 @@ +/* Copyright 2022 Jay Greco + * + * 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 NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM nullbits_logo_block_map[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x78, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xf7, 0x0f, 0x1e, 0x3c, 0x3c, 0x7c, 0xf8, 0x3f, 0xf0, 0xf9, 0x3f, 0xff, 0x0f, 0x00, + 0x00, 0x80, 0xf7, 0x1f, 0x1e, 0x3c, 0x3c, 0x7c, 0xf8, 0xff, 0xe1, 0xf9, 0xbf, 0xff, 0x0f, 0x00, + 0x00, 0x80, 0x07, 0x1e, 0xfe, 0x3f, 0x3c, 0x7c, 0xf8, 0xff, 0xe1, 0xc1, 0x83, 0xff, 0x0f, 0x00 +}; + +static const char PROGMEM nullbits_logo_bmp[] = { + 0xf6, 0xff, 0xff, 0xfe, 0xe4, 0xfe, 0xff, 0xfe, 0xf4, 0xfe, 0xff, 0xfe, 0xfe, 0xc0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0xe0, + 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x01, 0xc3, 0xe3, 0xe3, 0xc3, 0xc0, + 0xe0, 0xe0, 0xfe, 0xfe, 0xff, 0xfe, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x03, 0x03, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, 0xff, 0xff, + 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, + 0x01, 0x1e, 0x3f, 0x7f, 0xff, 0xfb, 0xf3, 0xf1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x01, 0x7f, 0xff, + 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, + 0x7f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0x7f, + 0xf0, 0xf0, 0xf0, 0xf8, 0x78, 0x7e, 0x3f, 0x3f, 0x1f, 0x07, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, + 0xff, 0xff, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xfb, 0x7f, 0x7f, 0x3f, 0x1f +}; + +#else +static const char PROGMEM nullbits_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf6, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xfe, 0xff, 0xfe, 0xf4, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xe0, 0xe0, 0xe0, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xe3, 0xe3, 0xc3, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xfe, 0xfe, + 0xff, 0xfe, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, 0xff, 0xff, 0xfe, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x00, 0x1e, 0x3f, 0x7f, 0xff, 0xfb, 0xf3, 0xf1, 0xe1, 0xe1, + 0xe1, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0x7f, 0x3f, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x7f, 0xf0, 0xf0, 0xf0, 0xf8, 0x78, 0x7e, 0x3f, 0x3f, 0x1f, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xfb, + 0x7f, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/oled/rules.mk b/keyboards/nullbitsco/snap/keymaps/oled/rules.mk new file mode 100644 index 000000000000..d0a184e961f1 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/config.h b/keyboards/nullbitsco/snap/keymaps/typehud/config.h new file mode 100644 index 000000000000..62c11709a23c --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/config.h @@ -0,0 +1,46 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +// Old configuration +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 +#define OLED_UPDATE_INTERVAL 200 + +// Selectively undefine to save space +// VIA support won't fit otherwise +#ifdef RGBLIGHT_ENABLE +#undef RGBLIGHT_EFFECT_TWINKLE +#endif //RGB LIGHT_ENABLE + +// Split configuration +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_WPM_ENABLE + +// Typehud configuration +#define TYPEHUD_FILLGRAPH +#define TYPEHUD_MATRIX_COLS 16 +// #define TYPEHUD_MASTER +// #define TYPEHUD_MATRIX_ROTATE_90 +// #define TYPEHUD_MATRIX_ROTATE_180 +// #define TYPEHUD_MATRIX_ROTATE_270 diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c b/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c new file mode 100644 index 000000000000..ea3fc2e8ebfb --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c @@ -0,0 +1,157 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 +#include "typehud.h" + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = 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_PAUS, + KC_F13, 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_DEL, KC_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + oled_clear(); + +#ifdef TYPEHUD_MASTER + if (is_keyboard_master()) { +#else + if (!is_keyboard_master()) { +#endif + typehud_init(); + } + + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(" "), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } + + // WPM and max WPM + oled_set_cursor(0, 2); + oled_write_P(PSTR("WPM "), false); + uint8_t current_wpm = get_current_wpm(); + oled_write(get_u8_str(current_wpm, '0'), true); + + oled_set_cursor(8, 2); + oled_write_P(PSTR("MAX "), false); + static uint8_t max_wpm; + max_wpm = MAX(max_wpm, current_wpm); + oled_write(get_u8_str(max_wpm, '0'), true); +} + +bool oled_task_user(void) { +#ifdef TYPEHUD_MASTER + if (is_keyboard_master()) { +#else + if (!is_keyboard_master()) { +#endif + typehud_render(); + } else { + render_status(); + } + + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + typehud_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/readme.md b/keyboards/nullbitsco/snap/keymaps/typehud/readme.md new file mode 100644 index 000000000000..d5f50f310c80 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/readme.md @@ -0,0 +1,51 @@ +# Typehud Keymap + +VIA compatible keymap that displays a live wpm HUD on your OLED. + + + +## Configuration + +Configuration options (other than the keymap itself) can be found in `typehud/config.h`. + +### Graph Type + +By default the graph is filled. For a non-filled graph remove or comment out the following line: + +```c +#define TYPEHUD_FILLGRAPH +``` + +### Keyboard Matrix Orientation + +To change the keyboard matrix orientation add one of the following: + +- `TYPEHUD_MATRIX_ROTATE_90` +- `TYPEHUD_MATRIX_ROTATE_180` +- `TYPEHUD_MATRIX_ROTATE_270` + +### Keyboard Matrix Key Overrides + +If the number of physical keys doesn't match the keyboard matrix rows/columns you can override it: + +```c +#define TYPEHUD_MATRIX_ROWS 6 +#define TYPEHUD_MATRIX_COLS 16 +``` + +In addition if the position of the physical keys doesn't match the matrix you can override it. Negative numbers will shift the keys left/up and positive numbers will shift the keys right/down: + +```c +#define TYPEHUD_MATRIX_ROW_SHIFT -1 +#define TYPEHUD_MATRIX_COL_SHIFT -2 +``` + +### Split Keyboard Side + +For split keyboards, the keymap assumes it will be rendered to the slave side. + +To render to master instead, add the following configuration line: + +```c +#define TYPEHUD_MASTER +``` diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk b/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk new file mode 100644 index 000000000000..151e44f4aac8 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk @@ -0,0 +1,7 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +SRC += typehud.c diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c new file mode 100644 index 000000000000..ad884f843b8e --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c @@ -0,0 +1,349 @@ +/* Copyright 2023 Jay Greco + * + * 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 "typehud.h" + +static bool is_initialized; +static uint16_t timer; +static int8_t bar_height; +static uint8_t wpm_arr[_GRAPH_WIDTH]; +static uint8_t point_arr[_GRAPH_WIDTH]; + + +static void + render_graph(uint8_t wpm), + render_caret(void), + render_axis(void), + render_bar(void), + render_init(void); + +/* + * Renders the wpm counter. + */ +static void render_wpm(uint8_t wpm) { + oled_set_cursor(0, 0); + oled_write("WPM", false); + oled_set_cursor(0, 1); + oled_write(get_u8_str(wpm, '0'), false); +} + +/* + * Renders the keyboard matrix. + */ +static void render_matrix(keyrecord_t *record) { + uint8_t x = _MATRIX_X; + uint8_t y = _MATRIX_Y; + uint8_t width = _MATRIX_WIDTH; + uint8_t height = _MATRIX_HEIGHT; +#ifdef SPLIT_KEYBOARD + uint8_t rows = _NML_MATRIX_ROWS; + uint8_t cols = _NML_MATRIX_COLS; +#endif + + // On initial render draw the matrix outline + if (!is_initialized) { + for (uint8_t i = 1; i <= width - 2; i++) { + oled_write_pixel(x + i, y, true); + oled_write_pixel(x + i, y + height - 1, true); + } + for (uint8_t j = 1; j <= height - 2; j++) { + oled_write_pixel(x, y + j, true); + oled_write_pixel(x + width - 1, y + j, true); + } + return; + } + + // Determine position based on matrix rotation + // For split keyboards the keys on the right half get appended as additional rows and + // have their columns reset at 0 +#ifdef SPLIT_KEYBOARD + uint8_t row = (record->event.key.row % rows); + uint8_t col = record->event.key.col; + if (record->event.key.row >= rows) { + col += (cols / 2); + } +#else + uint8_t row = record->event.key.row; + uint8_t col = record->event.key.col; +#endif + +#ifdef TYPEHUD_MATRIX_ROW_SHIFT + row += TYPEHUD_MATRIX_ROW_SHIFT; +#endif +#ifdef TYPEHUD_MATRIX_COL_SHIFT + col += TYPEHUD_MATRIX_COL_SHIFT; +#endif + + // Scale position to key size + uint8_t size = _MATRIX_SIZE; + row *= size; + col *= size; + + // Render key in matrix + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { +#if defined(TYPEHUD_MATRIX_ROTATE_90) + uint8_t key_x = x + width - 1 - size - row; + uint8_t key_y = y + 1 + col; +#elif defined(TYPEHUD_MATRIX_ROTATE_180) + uint8_t key_x = x + width - 1 - size - col; + uint8_t key_y = y + height - 1 - size - row; +#elif defined(TYPEHUD_MATRIX_ROTATE_270) + uint8_t key_x = x + 1 + row; + uint8_t key_y = y + height - 1 - size - col; +#else + uint8_t key_x = x + 1 + col; + uint8_t key_y = y + 1 + row; +#endif + oled_write_pixel(key_x + i, key_y + j, record->event.pressed); + } + } +} + +/* + * Renders the graph. + */ +static void render_graph(uint8_t wpm) { + uint8_t x = _GRAPH_X; + uint8_t y = _GRAPH_Y + _GRAPH_HEIGHT; + uint8_t width = _GRAPH_WIDTH; + uint8_t height = _GRAPH_HEIGHT; + + // Handle intial graph render + if (!is_initialized) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x + i, y, true); + } + return; + } + + uint8_t i = 0; + + // Shift all graph points except last to the left and re-render + for (; i < width - 1; i++) { + int8_t point_delta = point_arr[i + 1] - point_arr[i]; + +#ifdef TYPEHUD_FILLGRAPH + if (point_delta < 0) { +#else + if (point_delta != 0) { +#endif + oled_write_pixel(x + i, y - point_arr[i], false); + } + + wpm_arr[i] = wpm_arr[i + 1]; + point_arr[i] = point_arr[i + 1]; + + if (point_delta != 0) { + oled_write_pixel(x + i, y - point_arr[i], true); + } + } + + // Clear last graph point + if (wpm > wpm_arr[i] && point_arr[i] + 1 <= height) { +#ifndef TYPEHUD_FILLGRAPH + oled_write_pixel(x + i, y - point_arr[i], false); +#endif + point_arr[i] = point_arr[i] + 1; + } else if ((wpm < wpm_arr[i] && point_arr[i] - 1 >= 0) || (wpm <= 0 && point_arr[i] > 0)) { + oled_write_pixel(x + i, y - point_arr[i], false); + point_arr[i] = point_arr[i] - 1; + } + + // Render last graph point + wpm_arr[i] = wpm; + + if (point_arr[i] != point_arr[i - 1]) { + oled_write_pixel(x + i, y - point_arr[i], true); + } +} + +/* + * Renders the caret. + */ +static void render_caret(void) { + uint8_t x = _GRAPH_X + _GRAPH_WIDTH + _GRAPH_RPAD + _CARET_WIDTH; + uint8_t y = 0; + uint8_t width = _CARET_WIDTH; + uint8_t height = _CARET_HEIGHT; + uint8_t g_width = _GRAPH_WIDTH; + uint8_t g_height = _GRAPH_HEIGHT; + + // Handle initial caret render + if (!is_initialized) { + y = g_height - point_arr[g_width - 1]; + + for (uint8_t i = 0; i < width; i++) { + for (uint8_t j = i; j < height - i; j++) { + oled_write_pixel(x - i, y - j, true); + } + } + return; + } + + // Handle caret updates and re-render + int8_t point_delta = point_arr[g_width - 1] - point_arr[g_width - 2]; + if (point_delta > 0) { + y = g_height - point_arr[g_width - 2]; + if (y - height + 1 > 0) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x - i, y - i, false); + oled_write_pixel(x - i, y - height + i, true); + } + } + } else if (point_delta < 0) { + y = g_height - point_arr[g_width - 1]; + if (y - height + 1 > 0) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x - i, y - height + i, false); + oled_write_pixel(x - i, y - i, true); + } + } + } +} + +/* + * Renders the axis. + */ +static void render_axis(void) { + uint8_t x = _AXIS_X; + uint8_t y = _AXIS_HEIGHT; + uint8_t width = _AXIS_WIDTH; + uint8_t height = _AXIS_HEIGHT; + uint8_t tick_width = _AXIS_TICK_WIDTH; + uint8_t subtick_width = _AXIS_SUBTICK_WIDTH; + uint8_t interval = _AXIS_INTERVAL; + uint8_t tick_interval = _AXIS_TICK_INTERVAL; + + for (uint8_t j = 0; j <= height; j += interval) { + uint8_t curr_tick_width = 0; + + // Determine tick width and draw extra point if at interval + if (j % tick_interval == 0) { + curr_tick_width = tick_width; + oled_write_pixel(x, y - j, true); + } else { + curr_tick_width = subtick_width; + } + + // Draw tick + for (uint8_t i = 0; i < curr_tick_width; i++) { + oled_write_pixel(x + width - i, y - j, true); + } + } +} + +/* + * Renders the input bar. + */ +static void render_bar(void) { + uint8_t x = _BAR_X; + uint8_t width = _BAR_WIDTH; + uint8_t height = _BAR_HEIGHT; + + // Increment bar height + bar_height = (bar_height + 1) % height; + + // When bar resets back to 0, clear bar pixels + if (bar_height % height == 0) { + for (uint8_t i = 0; i < width; i++) { + for (uint8_t j = 0; j < height; j++) { + oled_write_pixel(x + i, j, false); + } + } + } + + // Draw new bar pixels + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x + i, height - bar_height, true); + } +} + +/* + * Renders the initial frame for all components. + */ +static void render_init(void) { + render_graph(0); + render_caret(); + render_matrix(NULL); + render_axis(); +} + +/* + * Initializes and resets the typehud. + */ +void typehud_init(void) { + // Reset variables + is_initialized = false; + timer = 0; + bar_height = -1; + + for (uint8_t i = 0; i < _GRAPH_WIDTH; i++) { + wpm_arr[i] = 0; + point_arr[i] = 0; + } + + // Draw the initial graph + for (uint8_t i = 0; i < _GRAPH_WIDTH; i++) { + oled_write_pixel(_GRAPH_X + i, _GRAPH_HEIGHT, true); + } +} + +/* + * Renders the typehud. + */ +void typehud_render(void) { + uint8_t wpm = get_current_wpm(); + + // Run initial rendering once + if (!is_initialized) { + render_init(); + is_initialized = true; + } + + // Render wpm + render_wpm(wpm); + + // Render next graph and caret frame when timer reaches refresh rate + if (timer_elapsed(timer) > _GRAPH_REFRESH) { + render_graph(wpm); + render_caret(); + timer = timer_read(); + } +} + +/* + * Handles keypresses for the typehud. + */ +void typehud_process_record(keyrecord_t *record) { + // For split keyboards, only draw on correct side +#ifdef SPLIT_KEYBOARD +# ifdef TYPEHUD_MASTER + if (!is_keyboard_master()) { +# else + if (is_keyboard_master()) { +# endif + return; + } +#endif + // Render/update matrix + render_matrix(record); + + // Render/update input bar on keypress + if (record->event.pressed) { + render_bar(); + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h new file mode 100644 index 000000000000..c3ed876c422a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h @@ -0,0 +1,87 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 +#define _OLED_WIDTH (OLED_DISPLAY_WIDTH - 1) +#define _OLED_HEIGHT (OLED_DISPLAY_HEIGHT - 1) + +#ifdef SPLIT_KEYBOARD +#define _PHYSICAL_PARTS 2 +#else +#define _PHYSICAL_PARTS 1 +#endif + +#ifdef TYPEHUD_MATRIX_ROWS +#define _NML_MATRIX_ROWS TYPEHUD_MATRIX_ROWS +#else +# ifdef SPLIT_KEYBOARD +#define _NML_MATRIX_ROWS (MATRIX_ROWS / 2) +# else +#define _NML_MATRIX_ROWS MATRIX_ROWS +# endif +#endif + +#ifdef TYPEHUD_MATRIX_COLS +#define _NML_MATRIX_COLS TYPEHUD_MATRIX_COLS +#else +#define _NML_MATRIX_COLS (MATRIX_COLS * _PHYSICAL_PARTS) +#endif + +#define _MATRIX_SIZE 2 +#if defined(TYPEHUD_MATRIX_ROTATE_90) || defined(TYPEHUD_MATRIX_ROTATE_270) +#define _MATRIX_WIDTH (_NML_MATRIX_ROWS * _MATRIX_SIZE + 2) +#define _MATRIX_HEIGHT (_NML_MATRIX_COLS * _MATRIX_SIZE + 2) +#else +#define _MATRIX_WIDTH (_NML_MATRIX_COLS * _MATRIX_SIZE + 2) +#define _MATRIX_HEIGHT (_NML_MATRIX_ROWS * _MATRIX_SIZE + 2) +#endif +#define _MATRIX_X 0 +#define _MATRIX_Y (_OLED_HEIGHT - _MATRIX_HEIGHT + 1) +#define _MATRIX_RPAD 2 +#define _MATRIX_PAD_WIDTH (_MATRIX_WIDTH + _MATRIX_RPAD) + +#define _BAR_WIDTH 3 +#define _BAR_HEIGHT _OLED_HEIGHT +#define _BAR_X (_OLED_WIDTH - _BAR_WIDTH) + +#define _AXIS_WIDTH 5 +#define _AXIS_HEIGHT _OLED_HEIGHT +#define _AXIS_TICK_WIDTH 3 +#define _AXIS_SUBTICK_WIDTH 2 +#define _AXIS_INTERVAL 3 +#define _AXIS_TICK_INTERVAL 15 +#define _AXIS_RPAD 2 +#define _AXIS_PAD_WIDTH (_AXIS_WIDTH + _AXIS_RPAD) +#define _AXIS_X (_OLED_WIDTH - _BAR_WIDTH - _AXIS_PAD_WIDTH) + +#define _CARET_WIDTH 3 +#define _CARET_HEIGHT 5 + +#define _GRAPH_RPAD 2 +#define _GRAPH_MAX_WIDTH (_OLED_WIDTH - _BAR_WIDTH - _AXIS_PAD_WIDTH - _CARET_WIDTH - _GRAPH_RPAD - _MATRIX_PAD_WIDTH) +#define _GRAPH_WIDTH (_GRAPH_MAX_WIDTH - 4) +#define _GRAPH_HEIGHT 31 +#define _GRAPH_REFRESH 300 +#define _GRAPH_X (_MATRIX_WIDTH + _MATRIX_RPAD) +#define _GRAPH_Y 0 +// clang-format on + +void + typehud_init(void), + typehud_render(void), + typehud_process_record(keyrecord_t *record); diff --git a/keyboards/nullbitsco/snap/keymaps/via/config.h b/keyboards/nullbitsco/snap/keymaps/via/config.h new file mode 100644 index 000000000000..578a939d5454 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Jay Greco + * + * 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 . + */ +// clang-format off +#pragma once + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/nullbitsco/snap/keymaps/via/keymap.c b/keyboards/nullbitsco/snap/keymaps/via/keymap.c new file mode 100644 index 000000000000..291c4c6f165c --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2021 Jay Greco + * + * 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 +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = 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_PAUS, + KC_F13, 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_DEL, KC_HOME, + KC_F14, 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_END, + KC_F15, 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_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_PGDN, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/via/rules.mk b/keyboards/nullbitsco/snap/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/matrix.c b/keyboards/nullbitsco/snap/matrix.c new file mode 100644 index 000000000000..ceb9cd89841b --- /dev/null +++ b/keyboards/nullbitsco/snap/matrix.c @@ -0,0 +1,126 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include +#include +#include "util.h" +#include "matrix.h" +#include "split_util.h" +#include "quantum.h" + +#define VIRT_COLS_PER_HAND 1 +#define PHYS_COLS_PER_HAND (MATRIX_COLS - VIRT_COLS_PER_HAND) +#define ROWS_PER_HAND (MATRIX_ROWS / 2) +#define COL_SHIFTER ((uint32_t)1) +#define EXT_PIN_ROW 2 +#define EXT_PIN_COL 8 + +// Row & column pins +static uint8_t row_pins_left[MATRIX_ROWS] = MATRIX_ROW_PINS; +static uint8_t col_pins_left[MATRIX_MUX_COLS] = MATRIX_COL_MUX_PINS; +static uint8_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; +static uint8_t col_pins_right[MATRIX_MUX_COLS] = MATRIX_COL_MUX_PINS_RIGHT; +static uint8_t* row_pins = row_pins_left; +static uint8_t* col_pins = col_pins_left; + +// Internal functions +static void init_pins(void) { + // Set cols to outputs, low + for (uint8_t pin = 0; pin < MATRIX_MUX_COLS; pin++) { + setPinOutput(col_pins[pin]); + } + + // Unselect cols + for (uint8_t bit = 0; bit < MATRIX_MUX_COLS; bit++) { + writePinLow(col_pins[bit]); + } + + // Set rows to input, pullup + for (uint8_t pin = 0; pin < ROWS_PER_HAND; pin++) { + setPinInputHigh(row_pins[pin]); + } + + // Set extended pin (only on right side) + if (!isLeftHand) { + // Set extended pin to input, pullup + setPinInputHigh(MATRIX_EXT_PIN_RIGHT); + } +} + +static void select_col(uint8_t col) { + // Drive demux with correct column address + for (uint8_t bit = 0; bit < MATRIX_MUX_COLS; bit++) { + uint8_t state = (col & (0b1 << bit)) >> bit; + writePin(col_pins[bit], !state); + } +} + +static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + select_col(current_col % PHYS_COLS_PER_HAND); + wait_us(5); + + // Read each row sequentially + for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { + if (readPin(row_pins[row_index]) == 0) { + current_matrix[row_index] |= (COL_SHIFTER << current_col); + } else { + current_matrix[row_index] &= ~(COL_SHIFTER << current_col); + } + } +} + +static void read_ext_pin(matrix_row_t current_matrix[]) { + // Read the state of the extended matrix pin + if (!isLeftHand) { + if (readPin(MATRIX_EXT_PIN_RIGHT) == 0) { + current_matrix[EXT_PIN_ROW] |= (COL_SHIFTER << EXT_PIN_COL); + } else { + current_matrix[EXT_PIN_ROW] &= ~(COL_SHIFTER << EXT_PIN_COL); + } + } +} + +void matrix_init_custom(void) { + if (!isLeftHand) { + row_pins = row_pins_right; + col_pins = col_pins_right; + } + + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + matrix_row_t last_matrix[MATRIX_ROWS]; + memcpy(last_matrix, current_matrix, sizeof(last_matrix)); + + #ifdef DEBUG_SLOW_MATRIX + // Slow for debugging + wait_ms(1000); + #endif + + // Set col, read rows + for (uint8_t current_col = 0; current_col < PHYS_COLS_PER_HAND; current_col++) { + read_rows_on_col(current_matrix, current_col); + } + + // Read extended pin and store in matrix + read_ext_pin(current_matrix); + + // Check if the matrix changed + bool changed = memcmp(last_matrix, current_matrix, sizeof(last_matrix)) != 0; + + return changed; +} diff --git a/keyboards/nullbitsco/snap/readme.md b/keyboards/nullbitsco/snap/readme.md new file mode 100644 index 000000000000..e1b95faec6f8 --- /dev/null +++ b/keyboards/nullbitsco/snap/readme.md @@ -0,0 +1,26 @@ +# SNAP + +![SNAP](https://nullbits.co/static/img/snap10.jpg) + +A unique, tweakable split 75% keyboard kit built by nullbits. [More info at nullbits.co](https://nullbits.co/snap/) + +* Keyboard Maintainer: [Jay Greco](https://github.com/jaygreco) +* Hardware Supported: SNAP Rev1, Pro Micro comaptible MCUs. +* Hardware Availability: [nullbits.co](https://nullbits.co/) + +Note: If you are seeing issues with MacOS and keyboard hangs after sleep, make sure `NO_USB_STARTUP_CHECK = yes` is set in your rules.mk. + +Adds experimental "Remote Keyboard" functionality, which forwards keystrokes from an external macropad, keyboard, or numpad over UART/TRRS, removing the need for an additional USB connection. + +Make example for this keyboard (after setting up your build environment): + + make nullbitsco/snap:default + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Briefly press the reset button located near the MCU on the the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/nullbitsco/snap/rules.mk b/keyboards/nullbitsco/snap/rules.mk new file mode 100644 index 000000000000..79ba7d6eb6fe --- /dev/null +++ b/keyboards/nullbitsco/snap/rules.mk @@ -0,0 +1,23 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Split common +LTO_ENABLE = yes # Use Link Time Optimization +ENCODER_ENABLE = yes # Enables the use of one or more encoders +SPACE_CADET_ENABLE = no # Enables the use of Space Cadet +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +CUSTOM_MATRIX = lite # Split custom matrix + +# Project specific files +SRC += common/bitc_led.c \ + common/remote_kb.c \ + matrix.c \ + uart.c diff --git a/keyboards/nullbitsco/snap/snap.c b/keyboards/nullbitsco/snap/snap.c new file mode 100644 index 000000000000..1ec6e5cf0095 --- /dev/null +++ b/keyboards/nullbitsco/snap/snap.c @@ -0,0 +1,127 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +// Macro variables +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; +bool muted = false; + +void matrix_init_kb(void) { + set_bitc_LED(LED_OFF); + matrix_init_remote_kb(); + matrix_init_user(); +} + +void keyboard_post_init_kb(void) { + #ifdef CONSOLE_ENABLE + debug_enable = true; + debug_matrix = true; + #endif + keyboard_post_init_user(); +} + +void matrix_scan_kb(void) { + matrix_scan_remote_kb(); + matrix_scan_user(); + + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +// Use Bit-C LED to show CAPS LOCK and NUM LOCK status +void led_update_ports(led_t led_state) { + set_bitc_LED(led_state.caps_lock ? LED_DIM : LED_OFF); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed + #ifdef CONSOLE_ENABLE + dprintf("kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time); + #endif + + process_record_remote_kb(keycode, record); + if (!process_record_user(keycode, record)) return false; + + switch (keycode) { + case QK_BOOT: + if (record->event.pressed) { + set_bitc_LED(LED_DIM); + #ifdef RGBLIGHT_ENABLE + rgblight_disable_noeeprom(); + #endif + #ifdef OLED_ENABLE + oled_off(); + #endif + bootloader_jump(); // jump to bootloader + } + return false; + + case DISC_MUTE: + if (record->event.pressed) { + tap_code(KC_F23); + #ifdef RGBLIGHT_ENABLE + if (!rgblight_is_enabled()) break; + + if (muted) { + rgblight_enable_noeeprom(); + } else { + rgblight_timer_disable(); + uint8_t val = rgblight_get_val(); + rgblight_sethsv_range(255, 255, val, 1, 5); + } + #endif + muted = !muted; + } + break; + + case SUPER_ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + + default: + break; + } + + return true; +} + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif diff --git a/keyboards/nullbitsco/snap/snap.h b/keyboards/nullbitsco/snap/snap.h new file mode 100644 index 000000000000..00dacc3d8f01 --- /dev/null +++ b/keyboards/nullbitsco/snap/snap.h @@ -0,0 +1,106 @@ +/* Copyright 2021 Jay Greco + * + * 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 _____ KC_NO + +#include "quantum.h" +#include "common/remote_kb.h" +#include "common/bitc_led.h" + +#ifdef VIA_ENABLE +enum custom_keycodes { + DISC_MUTE = QK_USER_0, + SUPER_ALT_TAB +}; +#else +enum custom_keycodes { + DISC_MUTE = SAFE_RANGE, + SUPER_ALT_TAB +}; +#endif + +// clang-format off +#define LAYOUT_all( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R2C1R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { \ + /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, _____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R2C1R, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} + +#define LAYOUT_iso( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L ,_____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, _____, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} + +#define LAYOUT_ansi( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, _____, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, _____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, _____, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} +// clang-format on diff --git a/keyboards/phage_studio/pila87/keymaps/default/keymap.c b/keyboards/phage_studio/pila87/keymaps/default/keymap.c index f2de085ca6fc..10f01dbae51b 100644 --- a/keyboards/phage_studio/pila87/keymaps/default/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/default/keymap.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -151,25 +151,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; - } - return true; -} diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c index 5528e2805547..28de8ad449b5 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c @@ -16,7 +16,7 @@ #include QMK_KEYBOARD_H -#include "keymap_stuff.h" +#include "horrortroll.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -55,8 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_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, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), @@ -86,3 +86,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI ), }; + +#ifdef RGB_MATRIX_ENABLE + +#include +#include +#include + +bool rgb_matrix_indicators_user(void) { + HSV hsv = rgb_matrix_config.hsv; + uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); + hsv.h = time; + RGB rgb = hsv_to_rgb(hsv); + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(40, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(40, 0, 0, 0); + } + + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(89, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(89, 0, 0, 0); + } + return false; +} +#endif diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c deleted file mode 100644 index add83149ccc5..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 "led/flower_blooming/flower_blooming.h" - -static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) { - if (g_led_config.point[i].y > k_rgb_matrix_center.y) - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time; - else - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time; - return hsv; -} - -bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); } diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c deleted file mode 100644 index 432eb117f2f8..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -// variable for startup animation -bool BASE_EFFECT_NOT_STARTED_YET = true; -uint8_t base_effect_startup_counter = 255; - -uint8_t led_count = 11; -uint8_t led_first = 29; - -static uint8_t time_to_led(uint8_t time, uint8_t led_behind) { - uint16_t led_time = led_count * time; - uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count); - uint8_t led; - - if (step < led_count) { - led = step; - } else { - led = led_count - 1 - (step - led_count); - } - - return led; -} - -static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) { - - // reset base effect startup - if (i == 0) { - BASE_EFFECT_NOT_STARTED_YET = true; - } - - hsv.h = 0; - hsv.s = 255; - - if (i >= led_first && i < led_first + led_count) { - uint8_t j = i - led_first; - if (j == time_to_led(time, 0)) { - hsv.v = hsv.v; - } else if (j == time_to_led(time, 1)) { - hsv.v = hsv.v/2; - } else if (j == time_to_led(time, 2)) { - hsv.v = hsv.v/4; - } else if (j == time_to_led(time, 3)) { - hsv.v = hsv.v/8; - } else { - hsv.v = 0; - } - } else { - hsv.v = 0; - } - - return hsv; -} - -bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); } diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md b/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md deleted file mode 100644 index 8e0d1974faa9..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# My personal keymap with VIA and custom LED - -### Custom LED effect list: - -- Custom gradient ([ported from SirTimmyTimbit code](https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt)) -- Cool diagonal ([ported from pleasuretek code](https://github.com/pleasuretek/qmk_firmware)) -- Flower Blooming -- Knight Rider ([ported from jumper149 code](https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/)) -- Random breath rainbow ([based from daed code](https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed) and modify by me) diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk b/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk deleted file mode 100644 index d475530c871c..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -VIA_ENABLE = yes - -RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/phage_studio/pila87/keymaps/via/keymap.c b/keyboards/phage_studio/pila87/keymaps/via/keymap.c index f2de085ca6fc..10f01dbae51b 100644 --- a/keyboards/phage_studio/pila87/keymaps/via/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/via/keymap.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -151,25 +151,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; - } - return true; -} diff --git a/keyboards/phage_studio/pila87/pila87.c b/keyboards/phage_studio/pila87/pila87.c index c379be228ea0..23304c03bbfc 100644 --- a/keyboards/phage_studio/pila87/pila87.c +++ b/keyboards/phage_studio/pila87/pila87.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -17,11 +17,12 @@ #include "pila87.h" +#ifdef RGB_MATRIX_ENABLE + #include #include #include -#ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { { 75, NO_LED, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 }, { 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58 }, @@ -44,7 +45,28 @@ led_config_t g_led_config = { { 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, } }; -#endif + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + } + return process_record_user(keycode, record); +} bool rgb_matrix_indicators_kb(void) { if (!rgb_matrix_indicators_user()) { @@ -63,3 +85,4 @@ bool rgb_matrix_indicators_kb(void) { } return true; } +#endif diff --git a/keyboards/preonic/keymaps/arkag/keymap.c b/keyboards/preonic/keymaps/arkag/keymap.c index a35592589545..e1277117919f 100644 --- a/keyboards/preonic/keymaps/arkag/keymap.c +++ b/keyboards/preonic/keymaps/arkag/keymap.c @@ -20,11 +20,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_preonic_grid( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, M_OS, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, QK_LEAD, ARROW, FUNCT, XXXXXXX, KC_RALT, QK_LEAD), + KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, QK_LEAD, ARROW, FUNCT, KC_RALT, XXXXXXX, HITBOX), [_SYMBOL] = LAYOUT_preonic_grid( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -47,15 +47,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [_HITBOX] = LAYOUT_preonic_grid( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_U, KC_I, KC_O, KC_P, XXXXXXX, + XXXXXXX, XXXXXXX, KC_A, KC_S, KC_D, XXXXXXX, XXXXXXX, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_W, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, HITBOX), + [_FUNCT] = LAYOUT_preonic_grid( - 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, - M_SFTY, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, - _______, _______, _______, _______, _______, _______, M_AEST, _______, _______, _______, _______, M_OS ), + _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [_KEEB] = LAYOUT_preonic_grid( - CK_TOGG, AU_TOGG, MU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + CK_TOGG, AU_TOGG, MU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, HITBOX, M_USSR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, BL_DOWN, BL_BRTG, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, diff --git a/keyboards/preonic/keymaps/to-schneider/keymap.c b/keyboards/preonic/keymaps/to-schneider/keymap.c new file mode 100644 index 000000000000..41433901738c --- /dev/null +++ b/keyboards/preonic/keymaps/to-schneider/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Torsten Schneider (@toschneider) + * + * 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_preonic_1x2uC( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_RALT, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [1] = LAYOUT_preonic_1x2uC( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_LCBR, KC_RCBR, KC_TRNS, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, + KC_TRNS, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT + ), + + [2] = LAYOUT_preonic_1x2uC( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, LCA(KC_T), KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_TRNS, + KC_SLEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_CALC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT + ) +}; diff --git a/keyboards/preonic/keymaps/to-schneider/rules.mk b/keyboards/preonic/keymaps/to-schneider/rules.mk new file mode 100644 index 000000000000..dc1986915a15 --- /dev/null +++ b/keyboards/preonic/keymaps/to-schneider/rules.mk @@ -0,0 +1,2 @@ +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no diff --git a/keyboards/pteropus/info.json b/keyboards/pteropus/info.json new file mode 100644 index 000000000000..019b6c752623 --- /dev/null +++ b/keyboards/pteropus/info.json @@ -0,0 +1,69 @@ +{ + "manufacturer": "hulahermit", + "keyboard_name": "pteropus", + "maintainer": "hulahermit", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A8", "B15", "B14", "B13", "B12", "B5", "B4", "B3", "A15", "A14"], + "rows": ["B10", "B2", "B1", "B0"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x5_3"], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.125 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.125 }, + { "matrix": [0, 4], "x": 4, "y": 0.25 }, + { "matrix": [0, 5], "x": 8, "y": 0.25 }, + { "matrix": [0, 6], "x": 9, "y": 0.125 }, + { "matrix": [0, 7], "x": 10, "y": 0 }, + { "matrix": [0, 8], "x": 11, "y": 0.125 }, + { "matrix": [0, 9], "x": 12, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.125 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.125 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 8, "y": 1.25 }, + { "matrix": [1, 6], "x": 9, "y": 1.125 }, + { "matrix": [1, 7], "x": 10, "y": 1 }, + { "matrix": [1, 8], "x": 11, "y": 1.125 }, + { "matrix": [1, 9], "x": 12, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 1.25 }, + { "matrix": [2, 1], "x": 1, "y": 1.125 }, + { "matrix": [2, 2], "x": 2, "y": 1 }, + { "matrix": [2, 3], "x": 3, "y": 1.125 }, + { "matrix": [2, 4], "x": 4, "y": 1.25 }, + { "matrix": [2, 5], "x": 8, "y": 1.25 }, + { "matrix": [2, 6], "x": 9, "y": 1.125 }, + { "matrix": [2, 7], "x": 10, "y": 1 }, + { "matrix": [2, 8], "x": 11, "y": 1.125 }, + { "matrix": [2, 9], "x": 12, "y": 1.25 }, + { "matrix": [3, 2], "x": 3, "y": 3.25 }, + { "matrix": [3, 3], "x": 4, "y": 3.5 }, + { "matrix": [3, 4], "x": 5, "y": 3.75 }, + { "matrix": [3, 5], "x": 7, "y": 3.75 }, + { "matrix": [3, 6], "x": 8, "y": 3.5 }, + { "matrix": [3, 7], "x": 9, "y": 3.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/pteropus/keymaps/default/keymap.c b/keyboards/pteropus/keymaps/default/keymap.c new file mode 100644 index 000000000000..460295f41cfa --- /dev/null +++ b/keyboards/pteropus/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │GUI├───┐ ┌───┤Alt│ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤ │ │ ├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ), +}; diff --git a/keyboards/pteropus/readme.md b/keyboards/pteropus/readme.md new file mode 100644 index 000000000000..7471e08e8ba4 --- /dev/null +++ b/keyboards/pteropus/readme.md @@ -0,0 +1,30 @@ +# pteropus keyboard + +![pteropus](https://i.imgur.com/5AACuSXh.jpg) + +Another Miryoku inspired 36-key non-split keyboard + +* Keyboard Maintainer: [hulahermit](https://github.com/hulahermit) +* Hardware Supported: Embeded type-c connector with STM32F072 microcontroller +* Hardware Availability: [pteropus](https://github.com/hulahermit/pteropus_keyboard) + +Make example for this keyboard (after setting up your build environment): + + make pteropus:default + make pteropus:manna-harbour_miryoku + +Flashing example for this keyboard: + + make pteropus:default:flash + make pteropus:manna-harbour_miryoku: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: + +* **Bootmagic reset**: Hold down the top-left key and plug in the keyboard. +* **Physical reset**: Hold the `BOOT` button down, then press the `RESET` button. Alternately, plug the keyboard in while holding down the `BOOT` button. + The `BOOT` button can be released after a few seconds. +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymap, but you may assign this key in any keymaps you create. diff --git a/keyboards/pteropus/rules.mk b/keyboards/pteropus/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/pteropus/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/reedskeebs/alish40/alish.c b/keyboards/reedskeebs/alish40/alish40.c similarity index 100% rename from keyboards/reedskeebs/alish40/alish.c rename to keyboards/reedskeebs/alish40/alish40.c diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json index 524eec0da879..e12e7717eb71 100644 --- a/keyboards/rgbkb/pan/info.json +++ b/keyboards/rgbkb/pan/info.json @@ -11,76 +11,72 @@ "layouts": { "LAYOUT_all": { "layout": [ - {"x": 0, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, - {"x": 12, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1, "w": 1.5}, - {"x": 0, "y": 1.25}, - {"x": 1, "y": 1.25}, - {"x": 2, "y": 1.25}, - {"x": 3, "y": 1.25}, - {"x": 4, "y": 1.25}, - {"x": 5, "y": 1.25}, - {"x": 6, "y": 1.25}, - {"x": 7, "y": 1.25}, - {"x": 8, "y": 1.25}, - {"x": 9, "y": 1.25}, - {"x": 10, "y": 1.25}, - {"x": 11, "y": 1.25}, - {"x": 12, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2, "w": 1.5}, - {"x": 0, "y": 2.25, "w": 1.5}, - {"x": 1.5, "y": 2.25}, - {"x": 2.5, "y": 2.25}, - {"x": 3.5, "y": 2.25}, - {"x": 4.5, "y": 2.25}, - {"x": 5.5, "y": 2.25}, - {"x": 6.5, "y": 2.25}, - {"x": 7.5, "y": 2.25}, - {"x": 8.5, "y": 2.25}, - {"x": 9.5, "y": 2.25}, - {"x": 10.5, "y": 2.25}, - {"x": 11.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, - {"x": 0, "y": 3.25, "w": 1.5}, - {"x": 1.5, "y": 3.25}, - {"x": 2.5, "y": 3.25}, - {"x": 3.5, "y": 3.25}, - {"x": 4.5, "y": 3.25}, - {"x": 5.5, "y": 3.25}, - {"x": 6.5, "y": 3.25}, - {"x": 7.5, "y": 3.25}, - {"x": 8.5, "y": 3.25}, - {"x": 9.5, "y": 3.25}, - {"x": 10.5, "y": 3.25}, - {"x": 11.5, "y": 3.25, "w": 1.5}, - - {"x": 0, "y": 4.25}, - {"x": 1, "y": 4.25}, - {"x": 2, "y": 4.25}, - {"x": 3, "y": 4.25}, - {"x": 4, "y": 4.25}, - {"x": 5, "y": 4.25}, - {"x": 6, "y": 4.25}, - {"x": 7, "y": 4.25}, - {"x": 8, "y": 4.25}, - {"x": 9, "y": 4.25}, - {"x": 10, "y": 4.25}, - {"x": 11, "y": 4.25}, - {"x": 12, "y": 4.25}, - - {"x": 0, "y": 5.25, "w": 1.5}, - {"x": 1.5, "y": 5.25}, - {"x": 2.5, "y": 5.25}, - {"x": 3.5, "y": 5.25}, - {"x": 4.5, "y": 5.25}, - {"x": 5.5, "y": 5.25}, - {"x": 6.5, "y": 5.25}, - {"x": 7.5, "y": 5.25}, - {"x": 8.5, "y": 5.25}, - {"x": 9.5, "y": 5.25}, - {"x": 10.5, "y": 5.25}, - {"x": 11.5, "y": 5.25, "w": 1.5} + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4}, + {"matrix": [4, 3], "x": 3.5, "y": 4}, + {"matrix": [4, 4], "x": 4.5, "y": 4}, + {"matrix": [4, 5], "x": 5.5, "y": 4}, + {"matrix": [4, 6], "x": 6.5, "y": 4}, + {"matrix": [4, 7], "x": 7.5, "y": 4}, + {"matrix": [4, 8], "x": 8.5, "y": 4}, + {"matrix": [4, 9], "x": 9.5, "y": 4}, + {"matrix": [4, 10], "x": 10.5, "y": 4}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5} ] } } diff --git a/keyboards/rgbkb/pan/keymaps/default/keymap.c b/keyboards/rgbkb/pan/keymaps/default/keymap.c index 367aadbb4b0c..5d84ea07638b 100644 --- a/keyboards/rgbkb/pan/keymaps/default/keymap.c +++ b/keyboards/rgbkb/pan/keymaps/default/keymap.c @@ -34,7 +34,6 @@ enum layer_number { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_all( - KC_NO, KC_NO, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, @@ -43,7 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_COLEMAK] = LAYOUT_all( - KC_NO, KC_NO, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT, @@ -52,7 +50,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN] = LAYOUT_all( - KC_NO, KC_NO, 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_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, @@ -61,7 +58,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJ] = LAYOUT_all( - KC_NO, KC_NO, 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, _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c index f0194ebdfdff..fab3cac78542 100644 --- a/keyboards/rgbkb/pan/pan.c +++ b/keyboards/rgbkb/pan/pan.c @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "pan.h" + #include "quantum.h" #include "rgb_matrix_types.h" diff --git a/keyboards/rgbkb/pan/pan.h b/keyboards/rgbkb/pan/pan.h deleted file mode 100644 index c1b9f77f6df0..000000000000 --- a/keyboards/rgbkb/pan/pan.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2020 RGBKB - * - * 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 _x_ KC_NO - -#include "quantum.h" - -#define LAYOUT_all( \ - E01, E02, \ -/* 0 1 2 3 4 5 6 7 8 9 10 11 12 */\ -/* 0 */ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \ -/* 1 */ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \ -/* 2 */ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \ -/* 3 */ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, \ -/* 4 */ K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62 \ - ) { \ -/* 0 */{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12 }, \ -/* 1 */{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, KC_NO }, \ -/* 2 */{ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, KC_NO }, \ -/* 3 */{ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50 }, \ -/* 4 */{ K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, KC_NO, K62 } \ - } diff --git a/keyboards/rkg68/info.json b/keyboards/rkg68/info.json new file mode 100644 index 000000000000..f318019dd6ec --- /dev/null +++ b/keyboards/rkg68/info.json @@ -0,0 +1,105 @@ +{ + "manufacturer": "Royal Kludge", + "keyboard_name": "rkg68", + "maintainer": "Thomaz-Peres", + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": [ "F0", "F1", "E6", "C7", "C6", "B6", "D4", "B1", "B7", "B5", "B4", "D7", "D6", "B3", "F4" ], + "rows": [ "D0", "D1", "D2", "D3", "D5" ] + }, + "rgblight": { + "animations": { + "knight": true, + "rainbow_swirl": true + }, + "led_count": 4, + "pin": "B3" + }, + "url": "http://en.rkgaming.com/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0049", + "vid": "0x0049" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 1], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11, "y": 4}, + {"matrix": [4, 11], "x": 12, "y": 4}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/default/keymap.c b/keyboards/rkg68/keymaps/default/keymap.c new file mode 100644 index 000000000000..2631452b5ba6 --- /dev/null +++ b/keyboards/rkg68/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 DeskDaily + * + * 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_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_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + 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_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_HOME, KC_END, RGB_MOD, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_SCRL, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_VAD, RGB_SPD + ) +}; \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/via/keymap.c b/keyboards/rkg68/keymaps/via/keymap.c new file mode 100644 index 000000000000..2631452b5ba6 --- /dev/null +++ b/keyboards/rkg68/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 DeskDaily + * + * 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_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_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + 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_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_HOME, KC_END, RGB_MOD, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_SCRL, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_VAD, RGB_SPD + ) +}; \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/via/rules.mk b/keyboards/rkg68/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/rkg68/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rkg68/readme.md b/keyboards/rkg68/readme.md new file mode 100644 index 000000000000..8069a53169eb --- /dev/null +++ b/keyboards/rkg68/readme.md @@ -0,0 +1,31 @@ +# RK G68 + +![Keyboard picture](https://imgur.com/UnOJPZrh.jpg) + +* Keyboard Maintainer: [Royal Kludge](https://rkgamingstore.com/) +* Hardware Supported: Royal Kludge RK G68 +* Hardware Availability: [RKG 68](http://en.rkgaming.com/download/1/) + +After setting up your build environment, you can compile the default keymap by using: + + make rkg68:default + +Flashing example for this keyboard: + + make rkg68: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 `FN` and `Left CTRL`. + +## Layouts + +- ANSI layout; + +![Imgur](https://i.imgur.com/l7ka1gkh.png) diff --git a/keyboards/rkg68/rules.mk b/keyboards/rkg68/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/rkg68/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/info.json b/keyboards/sawnsprojects/plaque80/info.json new file mode 100644 index 000000000000..d45f9a38969a --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/info.json @@ -0,0 +1,145 @@ +{ + "keyboard_name": "Plaque80", + "manufacturer": "SawnsProjects", + "url": "", + "maintainer": "qmk", + "usb": { + "vid": "0x5350", + "pid": "0x0801", + "device_version": "1.0.0" + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "matrix_pins": { + "rows": ["D3", "D5", "B1", "B2", "B3", "B7", "D1", "D0", "F4", "F5", "F6", "F7"], + "cols": ["F1", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": false, + "rgblight": true + }, + "rgblight": { + "pin": "F0", + "led_count": 30, + "sleep": true, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "indicators": { + "caps_lock": "E6", + "scroll_lock": "D2" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "K00 (D3,C0)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K10 (D5,C0)", "matrix": [1, 0], "x": 1.25, "y": 0}, + {"label": "K01 (D3,C7)", "matrix": [0, 1], "x": 2.25, "y": 0}, + {"label": "K11 (D5,C7)", "matrix": [1, 1], "x": 3.25, "y": 0}, + {"label": "K02 (D3,C6)", "matrix": [0, 2], "x": 4.25, "y": 0}, + {"label": "K12 (D5,C6)", "matrix": [1, 2], "x": 5.5, "y": 0}, + {"label": "K03 (D3,B6)", "matrix": [0, 3], "x": 6.5, "y": 0}, + {"label": "K13 (D5,B6)", "matrix": [1, 3], "x": 7.5, "y": 0}, + {"label": "K04 (D3,B5)", "matrix": [0, 4], "x": 8.5, "y": 0}, + {"label": "K14 (D5,B5)", "matrix": [1, 4], "x": 9.75, "y": 0}, + {"label": "K05 (D3,B4)", "matrix": [0, 5], "x": 10.75, "y": 0}, + {"label": "K15 (D5,B4)", "matrix": [1, 5], "x": 11.75, "y": 0}, + {"label": "K06 (D3,D7)", "matrix": [0, 6], "x": 12.75, "y": 0}, + {"label": "K16 (D5,D7)", "matrix": [1, 6], "x": 14, "y": 0}, + {"label": "K17 (D5,D6)", "matrix": [1, 7], "x": 15.25, "y": 0}, + {"label": "K07 (D3,D6)", "matrix": [0, 7], "x": 16.25, "y": 0}, + {"label": "K08 (D3,D4)", "matrix": [0, 8], "x": 17.25, "y": 0}, + {"label": "K20 (B1,C0)", "matrix": [2, 0], "x": 0, "y": 1.5}, + {"label": "K30 (B2,C0)", "matrix": [3, 0], "x": 1, "y": 1.5}, + {"label": "K21 (B1,C7)", "matrix": [2, 1], "x": 2, "y": 1.5}, + {"label": "K31 (B2,C7)", "matrix": [3, 1], "x": 3, "y": 1.5}, + {"label": "K22 (B1,C6)", "matrix": [2, 2], "x": 4, "y": 1.5}, + {"label": "K32 (B2,C6)", "matrix": [3, 2], "x": 5, "y": 1.5}, + {"label": "K23 (B1,B6)", "matrix": [2, 3], "x": 6, "y": 1.5}, + {"label": "K33 (B2,B6)", "matrix": [3, 3], "x": 7, "y": 1.5}, + {"label": "K24 (B1,B5)", "matrix": [2, 4], "x": 8, "y": 1.5}, + {"label": "K34 (B2,B5)", "matrix": [3, 4], "x": 9, "y": 1.5}, + {"label": "K25 (B1,B4)", "matrix": [2, 5], "x": 10, "y": 1.5}, + {"label": "K35 (B2,B4)", "matrix": [3, 5], "x": 11, "y": 1.5}, + {"label": "K26 (B1,D7)", "matrix": [2, 6], "x": 12, "y": 1.5}, + {"label": "K36 (B2,D7)", "matrix": [3, 6], "x": 13, "y": 1.5}, + {"label": "K76 (D0,D7)", "matrix": [7, 6], "x": 14, "y": 1.5}, + {"label": "K37 (B2,D6)", "matrix": [3, 7], "x": 15.25, "y": 1.5}, + {"label": "K27 (B1,D6)", "matrix": [2, 7], "x": 16.25, "y": 1.5}, + {"label": "K28 (B1,D4)", "matrix": [2, 8], "x": 17.25, "y": 1.5}, + {"label": "K40 (B3,C0)", "matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "K50 (B7,C0)", "matrix": [5, 0], "x": 1.5, "y": 2.5}, + {"label": "K41 (B3,C7)", "matrix": [4, 1], "x": 2.5, "y": 2.5}, + {"label": "K51 (B7,C7)", "matrix": [5, 1], "x": 3.5, "y": 2.5}, + {"label": "K42 (B3,C6)", "matrix": [4, 2], "x": 4.5, "y": 2.5}, + {"label": "K52 (B7,C6)", "matrix": [5, 2], "x": 5.5, "y": 2.5}, + {"label": "K43 (B3,B6)", "matrix": [4, 3], "x": 6.5, "y": 2.5}, + {"label": "K53 (B7,B6)", "matrix": [5, 3], "x": 7.5, "y": 2.5}, + {"label": "K44 (B3,B5)", "matrix": [4, 4], "x": 8.5, "y": 2.5}, + {"label": "K54 (B7,B5)", "matrix": [5, 4], "x": 9.5, "y": 2.5}, + {"label": "K45 (B3,B4)", "matrix": [4, 5], "x": 10.5, "y": 2.5}, + {"label": "K55 (B7,B4)", "matrix": [5, 5], "x": 11.5, "y": 2.5}, + {"label": "K46 (B3,D7)", "matrix": [4, 6], "x": 12.5, "y": 2.5}, + {"label": "K56 (B7,D7)", "matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + {"label": "K57 (B7,D6)", "matrix": [5, 7], "x": 15.25, "y": 2.5}, + {"label": "K47 (B3,D6)", "matrix": [4, 7], "x": 16.25, "y": 2.5}, + {"label": "K48 (B3,D4)", "matrix": [4, 8], "x": 17.25, "y": 2.5}, + {"label": "K60 (D1,C0)", "matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "K70 (D0,C0)", "matrix": [7, 0], "x": 1.75, "y": 3.5}, + {"label": "K61 (D1,C7)", "matrix": [6, 1], "x": 2.75, "y": 3.5}, + {"label": "K71 (D0,C7)", "matrix": [7, 1], "x": 3.75, "y": 3.5}, + {"label": "K62 (D1,C6)", "matrix": [6, 2], "x": 4.75, "y": 3.5}, + {"label": "K72 (D0,C6)", "matrix": [7, 2], "x": 5.75, "y": 3.5}, + {"label": "K63 (D1,B6)", "matrix": [6, 3], "x": 6.75, "y": 3.5}, + {"label": "K73 (D0,B6)", "matrix": [7, 3], "x": 7.75, "y": 3.5}, + {"label": "K64 (D1,B5)", "matrix": [6, 4], "x": 8.75, "y": 3.5}, + {"label": "K74 (D0,B5)", "matrix": [7, 4], "x": 9.75, "y": 3.5}, + {"label": "K65 (D1,B4)", "matrix": [6, 5], "x": 10.75, "y": 3.5}, + {"label": "K75 (D0,B4)", "matrix": [7, 5], "x": 11.75, "y": 3.5}, + {"label": "K66 (D1,D7)", "matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25}, + {"label": "K80 (F4,C0)", "matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "K90 (F5,C0)", "matrix": [9, 0], "x": 1.25, "y": 4.5}, + {"label": "K81 (F4,C7)", "matrix": [8, 1], "x": 2.25, "y": 4.5}, + {"label": "K91 (F5,C7)", "matrix": [9, 1], "x": 3.25, "y": 4.5}, + {"label": "K82 (F4,C6)", "matrix": [8, 2], "x": 4.25, "y": 4.5}, + {"label": "K92 (F5,C6)", "matrix": [9, 2], "x": 5.25, "y": 4.5}, + {"label": "K83 (F4,B6)", "matrix": [8, 3], "x": 6.25, "y": 4.5}, + {"label": "K93 (F5,B6)", "matrix": [9, 3], "x": 7.25, "y": 4.5}, + {"label": "K84 (F4,B5)", "matrix": [8, 4], "x": 8.25, "y": 4.5}, + {"label": "K94 (F5,B5)", "matrix": [9, 4], "x": 9.25, "y": 4.5}, + {"label": "K85 (F4,B4)", "matrix": [8, 5], "x": 10.25, "y": 4.5}, + {"label": "K95 (F5,B4)", "matrix": [9, 5], "x": 11.25, "y": 4.5}, + {"label": "K86 (F4,D7)", "matrix": [8, 6], "x": 12.25, "y": 4.5, "w": 1.75}, + {"label": "K96 (F5,D7)", "matrix": [9, 6], "x": 14, "y": 4.5}, + {"label": "K97 (F5,D6)", "matrix": [9, 7], "x": 16.25, "y": 4.5}, + {"label": "KA0 (F6,C0)", "matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "KB0 (F7,C0)", "matrix": [11, 0], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "KA1 (F6,C7)", "matrix": [10, 1], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "KA3 (F6,B6)", "matrix": [10, 3], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "KA5 (F6,B4)", "matrix": [10, 5], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "KB5 (F7,B4)", "matrix": [11, 5], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "KA6 (F6,D7)", "matrix": [10, 6], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "KB6 (F7,D7)", "matrix": [11, 6], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "KB7 (F7,D6)", "matrix": [11, 7], "x": 15.25, "y": 5.5}, + {"label": "KA7 (F6,D6)", "matrix": [10, 7], "x": 16.25, "y": 5.5}, + {"label": "KA8 (F6,D4)", "matrix": [10, 8], "x": 17.25, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/keymaps/default/keymap.c b/keyboards/sawnsprojects/plaque80/keymaps/default/keymap.c new file mode 100644 index 000000000000..c3bd1eb819f7 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2023 SawnsProjects + * + * 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/keymaps/default/readme.md b/keyboards/sawnsprojects/plaque80/keymaps/default/readme.md new file mode 100644 index 000000000000..bb3f8c72e7c4 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Plaque80 \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/keymaps/via/keymap.c b/keyboards/sawnsprojects/plaque80/keymaps/via/keymap.c new file mode 100644 index 000000000000..26b3a3e98f56 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2022 SawnsProjects + * + * 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/keymaps/via/readme.md b/keyboards/sawnsprojects/plaque80/keymaps/via/readme.md new file mode 100644 index 000000000000..48798fd6e158 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for Plaque80 \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/keymaps/via/rules.mk b/keyboards/sawnsprojects/plaque80/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/readme.md b/keyboards/sawnsprojects/plaque80/readme.md new file mode 100644 index 000000000000..7dae55ba1a25 --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/readme.md @@ -0,0 +1,25 @@ +# Plaque80 + +![Plaque80](https://i.imgur.com/kgRcHTlh.png) + + A TKL keyboard sold in ParamountKeeb. Atmega32u4 soldered PCB. Sold under the name "Plaque80" with Plaque80 keyboard case. This PCB can compatible with Plaque80 keyboard case and several TKL boards like Geonworks Frog/F1-8x; KFE-CE; TGR Jane; Cloudline; Singa Jaguar; Amber80, among others. + + **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board. + +* Keyboard Maintainer: [SawnsProjects](https://github.com/MaiTheSan) [ParamountKeeb](https://paramountkeeb.com/) +* Hardware Supported: Plaque80 +* Hardware Availability: [ParamountKeeb](https://paramountkeeb.com/) + +Make examples for this keyboard (after setting up your build environment): + + make sawnsprojects/plaque80:default + +## 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 + +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). \ No newline at end of file diff --git a/keyboards/sawnsprojects/plaque80/rules.mk b/keyboards/sawnsprojects/plaque80/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/sawnsprojects/plaque80/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/config.h b/keyboards/studiokestra/galatea/config.h index 7c5b4dbb2944..4dbaafd5e40e 100644 --- a/keyboards/studiokestra/galatea/config.h +++ b/keyboards/studiokestra/galatea/config.h @@ -1,47 +1,9 @@ -/* -Copyright 2021 Studio Kestra - -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 . -*/ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B2, D5 } -#define MATRIX_ROW_PINS { D1, D0, B0, B7, E6, B3, B6, C6, D6, D7, B4, D3 } -#define DIODE_DIRECTION COL2ROW - -#if defined(KEYBOARD_studiokestra_galatea_rev2) - #define RGB_DI_PIN D4 - #define RGBLED_NUM 24 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_RAINBOW_MOOD - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - #define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RGB_TEST - #define RGBLIGHT_EFFECT_ALTERNATING -#endif - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE +#define LOCKING_RESYNC_ENABLE \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/keymaps/default/keymap.c deleted file mode 100644 index e2b187ef9c63..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/default/keymap.c +++ /dev/null @@ -1,42 +0,0 @@ - /* Copyright 2021 Studio Kestra - * - * 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 - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_BASE] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), - - [_FN] = 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 ), -}; \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/keymaps/default/readme.md b/keyboards/studiokestra/galatea/keymaps/default/readme.md deleted file mode 100644 index 1dbd94b7bf37..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Galatea diff --git a/keyboards/studiokestra/galatea/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/keymaps/via/keymap.c deleted file mode 100644 index 504f5b90b0df..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/via/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ - /* Copyright 2021 Studio Kestra - * - * 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 - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN1, - _FN2 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_BASE] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), - - [_FN1] = 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 ), - - [_FN2] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/studiokestra/galatea/keymaps/via/readme.md b/keyboards/studiokestra/galatea/keymaps/via/readme.md deleted file mode 100644 index a54a78203e33..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/via/readme.md +++ /dev/null @@ -1 +0,0 @@ -# Studio Kestra's Galatea keymap for VIA diff --git a/keyboards/studiokestra/galatea/readme.md b/keyboards/studiokestra/galatea/readme.md index 1268c596bf7d..580815fa6304 100644 --- a/keyboards/studiokestra/galatea/readme.md +++ b/keyboards/studiokestra/galatea/readme.md @@ -1,27 +1,29 @@ -# Galatea +# studiokestra/galatea + +![studiokestra/galatea](https://i.imgur.com/juPhV1xh.png) TKL H87/88c compatible PCB with support for the most common layouts. * Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) -* Hardware Supported: [studiokestra.ca/galatea](https://studiokestra.ca/galatea/) -* Hardware Availability: In-Stock Sale (Dec 2021) +* Hardware Supported: Most H87C compatible keyboards +* Hardware Availability: https://RNDKBD.com; https://geon.works/ * Rev1 firmware is used for Galatea PCBs with no RGB underglow. -* Rev2 firmware is used for Galatea PCBs with RGB underglow. +* Rev2 firmware is used for Galatea PCBs with RGB underglow. -## Bootload Sequence +Make example for this keyboard (after setting up your build environment): -There are 3 ways to put the board in bootloader mode: + make studiokestra/galatea/rev1:default -- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR -- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR -- With the default layout, toggle Layer 1 and press the `R` key. +Flashing example for this keyboard: -## Compiling Firmware + make studiokestra/galatea/rev1:default:flash -Make example for this keyboard (after setting up your build environment): +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). - make studiokestra/galatea/rev1:default +## Bootloader -If no revision is specified, it will build rev1 firmware by default. +Enter the bootloader in 3 ways: -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). +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/studiokestra/galatea/rev1/info.json b/keyboards/studiokestra/galatea/rev1/info.json index ce1b7f581602..37d3e19cc73b 100644 --- a/keyboards/studiokestra/galatea/rev1/info.json +++ b/keyboards/studiokestra/galatea/rev1/info.json @@ -1,321 +1,129 @@ { - "keyboard_name": "Galatea", "manufacturer": "Studio Kestra", - "url": "https://studiokestra.ca/galatea", + "keyboard_name": "Galatea", "maintainer": "studiokestra", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B2", "D5"], + "rows": ["D1", "D0", "B0", "B7", "E6", "B3", "B6", "C6", "D6", "D7", "B4", "D3"] + }, + "processor": "atmega32u4", + "url": "", "usb": { - "vid": "0x7C10", + "device_version": "1.0.0", "pid": "0x8801", - "device_version": "0.0.1" + "vid": "0x7C10" }, "indicators": { "caps_lock": "B5", "scroll_lock": "D2", "on_state": 0 }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu", "layouts": { - "LAYOUT_all": { - "layout": [ - {"x": 0, "y": 0}, - - {"x": 1.25, "y": 0}, - {"x": 2.25, "y": 0}, - {"x": 3.25, "y": 0}, - {"x": 4.25, "y": 0}, - {"x": 5.5, "y": 0}, - {"x": 6.5, "y": 0}, - {"x": 7.5, "y": 0}, - {"x": 8.5, "y": 0}, - {"x": 9.75, "y": 0}, - {"x": 10.75, "y": 0}, - {"x": 11.75, "y": 0}, - {"x": 12.75, "y": 0}, - {"x": 14, "y": 0}, - - {"x": 15.25, "y": 0}, - {"x": 16.25, "y": 0}, - {"x": 17.25, "y": 0}, - - {"x": 0, "y": 1.25}, - {"x": 1, "y": 1.25}, - {"x": 2, "y": 1.25}, - {"x": 3, "y": 1.25}, - {"x": 4, "y": 1.25}, - {"x": 5, "y": 1.25}, - {"x": 6, "y": 1.25}, - {"x": 7, "y": 1.25}, - {"x": 8, "y": 1.25}, - {"x": 9, "y": 1.25}, - {"x": 10, "y": 1.25}, - {"x": 11, "y": 1.25}, - {"x": 12, "y": 1.25}, - {"x": 13, "y": 1.25}, - {"x": 14, "y": 1.25}, - - {"x": 15.25, "y": 1.25}, - {"x": 16.25, "y": 1.25}, - {"x": 17.25, "y": 1.25}, - - {"x": 0, "y": 2.25, "w": 1.5}, - {"x": 1.5, "y": 2.25}, - {"x": 2.5, "y": 2.25}, - {"x": 3.5, "y": 2.25}, - {"x": 4.5, "y": 2.25}, - {"x": 5.5, "y": 2.25}, - {"x": 6.5, "y": 2.25}, - {"x": 7.5, "y": 2.25}, - {"x": 8.5, "y": 2.25}, - {"x": 9.5, "y": 2.25}, - {"x": 10.5, "y": 2.25}, - {"x": 11.5, "y": 2.25}, - {"x": 12.5, "y": 2.25}, - {"x": 13.5, "y": 2.25, "w": 1.5}, - - {"x": 15.25, "y": 2.25}, - {"x": 16.25, "y": 2.25}, - {"x": 17.25, "y": 2.25}, - - {"x": 0, "y": 3.25, "w": 1.75}, - {"x": 1.75, "y": 3.25}, - {"x": 2.75, "y": 3.25}, - {"x": 3.75, "y": 3.25}, - {"x": 4.75, "y": 3.25}, - {"x": 5.75, "y": 3.25}, - {"x": 6.75, "y": 3.25}, - {"x": 7.75, "y": 3.25}, - {"x": 8.75, "y": 3.25}, - {"x": 9.75, "y": 3.25}, - {"x": 10.75, "y": 3.25}, - {"x": 11.75, "y": 3.25}, - {"x": 12.75, "y": 3.25, "w": 2.25}, - - {"x": 0, "y": 4.25, "w": 1.25}, - {"x": 1.25, "y": 4.25}, - {"x": 2.25, "y": 4.25}, - {"x": 3.25, "y": 4.25}, - {"x": 4.25, "y": 4.25}, - {"x": 5.25, "y": 4.25}, - {"x": 6.25, "y": 4.25}, - {"x": 7.25, "y": 4.25}, - {"x": 8.25, "y": 4.25}, - {"x": 9.25, "y": 4.25}, - {"x": 10.25, "y": 4.25}, - {"x": 11.25, "y": 4.25}, - {"x": 12.25, "y": 4.25, "w": 1.75}, - {"x": 14, "y": 4.25}, - - {"x": 16.25, "y": 4.25}, - - {"x": 0, "y": 5.25, "w": 1.25}, - {"x": 1.25, "y": 5.25, "w": 1.25}, - {"x": 2.5, "y": 5.25, "w": 1.25}, - {"x": 3.75, "y": 5.25, "w": 6.25}, - {"x": 10, "y": 5.25, "w": 1.25}, - {"x": 11.25, "y": 5.25, "w": 1.25}, - {"x": 12.5, "y": 5.25, "w": 1.25}, - {"x": 13.75, "y": 5.25, "w": 1.25}, - - {"x": 15.25, "y": 5.25}, - {"x": 16.25, "y": 5.25}, - {"x": 17.25, "y": 5.25} - ] - }, - "LAYOUT_tkl_f13_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, - - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} - ] - }, - "LAYOUT_tkl_f13_iso": { + "LAYOUT": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2\"", "x":2, "y":1.25}, - {"label":"3\u00a3", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'@", "x":11.75, "y":3.25}, - {"label":"#~", "x":12.75, "y":3.25}, - {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, - - {"label":"Shift", "x":0, "y":4.25, "w":1.25}, - {"label":"\\|", "x":1.25, "y":4.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + + { "matrix": [0,0], "x":0, "y":0}, + { "matrix": [1,0], "x":1.25, "y":0}, + { "matrix": [0,1], "x":2.25, "y":0}, + { "matrix": [0,2], "x":3.25, "y":0}, + { "matrix": [1,2], "x":4.25, "y":0}, + { "matrix": [0,3], "x":5.5, "y":0}, + { "matrix": [1,3], "x":6.5, "y":0}, + { "matrix": [0,4], "x":7.5, "y":0}, + { "matrix": [1,4], "x":8.5, "y":0}, + { "matrix": [0,5], "x":9.75, "y":0}, + { "matrix": [1,5], "x":10.75, "y":0}, + { "matrix": [0,6], "x":11.75, "y":0}, + { "matrix": [1,6], "x":12.75, "y":0}, + { "matrix": [0,7], "x":14, "y":0}, + { "matrix": [1,7], "x":15.25, "y":0}, + { "matrix": [0,8], "x":16.25, "y":0}, + { "matrix": [1,8], "x":17.25, "y":0}, + { "matrix": [2,0], "x":0, "y":1.25}, + { "matrix": [3,0], "x":1, "y":1.25}, + { "matrix": [2,1], "x":2, "y":1.25}, + { "matrix": [3,1], "x":3, "y":1.25}, + { "matrix": [2,2], "x":4, "y":1.25}, + { "matrix": [3,2], "x":5, "y":1.25}, + { "matrix": [2,3], "x":6, "y":1.25}, + { "matrix": [3,3], "x":7, "y":1.25}, + { "matrix": [2,4], "x":8, "y":1.25}, + { "matrix": [3,4], "x":9, "y":1.25}, + { "matrix": [2,5], "x":10, "y":1.25}, + { "matrix": [3,5], "x":11, "y":1.25}, + { "matrix": [2,6], "x":12, "y":1.25}, + { "matrix": [3,6], "x":13, "y":1.25}, + { "matrix": [2,7], "x":14, "y":1.25}, + { "matrix": [3,7], "x":15.25, "y":1.25}, + { "matrix": [2,8], "x":16.25, "y":1.25}, + { "matrix": [3,8], "x":17.25, "y":1.25}, + { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, + { "matrix": [5,0], "x":1.5, "y":2.25}, + { "matrix": [4,1], "x":2.5, "y":2.25}, + { "matrix": [5,1], "x":3.5, "y":2.25}, + { "matrix": [4,2], "x":4.5, "y":2.25}, + { "matrix": [5,2], "x":5.5, "y":2.25}, + { "matrix": [4,3], "x":6.5, "y":2.25}, + { "matrix": [5,3], "x":7.5, "y":2.25}, + { "matrix": [4,4], "x":8.5, "y":2.25}, + { "matrix": [5,4], "x":9.5, "y":2.25}, + { "matrix": [4,5], "x":10.5, "y":2.25}, + { "matrix": [5,5], "x":11.5, "y":2.25}, + { "matrix": [4,6], "x":12.5, "y":2.25}, + { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, + { "matrix": [5,7], "x":15.25, "y":2.25}, + { "matrix": [4,8], "x":16.25, "y":2.25}, + { "matrix": [5,8], "x":17.25, "y":2.25}, + { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, + { "matrix": [7,0], "x":1.75, "y":3.25}, + { "matrix": [6,1], "x":2.75, "y":3.25}, + { "matrix": [7,1], "x":3.75, "y":3.25}, + { "matrix": [6,2], "x":4.75, "y":3.25}, + { "matrix": [7,2], "x":5.75, "y":3.25}, + { "matrix": [6,3], "x":6.75, "y":3.25}, + { "matrix": [7,3], "x":7.75, "y":3.25}, + { "matrix": [6,4], "x":8.75, "y":3.25}, + { "matrix": [7,4], "x":9.75, "y":3.25}, + { "matrix": [6,5], "x":10.75, "y":3.25}, + { "matrix": [7,5], "x":11.75, "y":3.25}, + { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, + { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, + { "matrix": [9,0], "x":1.25, "y":4.25}, + { "matrix": [8,1], "x":2.25, "y":4.25}, + { "matrix": [9,1], "x":3.25, "y":4.25}, + { "matrix": [8,2], "x":4.25, "y":4.25}, + { "matrix": [9,2], "x":5.25, "y":4.25}, + { "matrix": [8,3], "x":6.25, "y":4.25}, + { "matrix": [9,3], "x":7.25, "y":4.25}, + { "matrix": [8,4], "x":8.25, "y":4.25}, + { "matrix": [9,4], "x":9.25, "y":4.25}, + { "matrix": [8,5], "x":10.25, "y":4.25}, + { "matrix": [9,5], "x":11.25, "y":4.25}, + { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, + { "matrix": [8,7], "x":14, "y":4.25}, + { "matrix": [8,8], "x":16.25, "y":4.25}, + { "matrix": [10,0], "x":0, "y":5.25, "w":1.25}, + { "matrix": [11,0], "x":1.25, "y":5.25, "w":1.25}, + { "matrix": [10,1], "x":2.5, "y":5.25, "w":1.25}, + { "matrix": [10,3], "x":3.75, "y":5.25, "w":6.25}, + { "matrix": [10,5], "x":10, "y":5.25, "w":1.25}, + { "matrix": [11,5], "x":11.25, "y":5.25, "w":1.25}, + { "matrix": [10,6], "x":12.5, "y":5.25, "w":1.25}, + { "matrix": [10,7], "x":13.75, "y":5.25, "w":1.25}, + { "matrix": [11,7], "x":15.25, "y":5.25}, + { "matrix": [10,8], "x":16.25, "y":5.25}, + { "matrix": [11,8], "x":17.25, "y":5.25} ] } } -} +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..32db99b386d0 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │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 │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + 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 ), + }; diff --git a/keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..c0d093334932 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │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 │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + + [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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + 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 ), +}; diff --git a/keyboards/studiokestra/galatea/rev1/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/studiokestra/galatea/rev1/rev1.h b/keyboards/studiokestra/galatea/rev1/rev1.h deleted file mode 100644 index c319dfa63ffc..000000000000 --- a/keyboards/studiokestra/galatea/rev1/rev1.h +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define ___ KC_NO - -/* - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ - * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13 - * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ - * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ - * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │ - * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter - * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │ - * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ - * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift - * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ - * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ - * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ - * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - * ┌────┬────┬───────────────────────────────────────┬────┬────┐ - * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space - * └────┴────┴───────────────────────────────────────┴────┴────┘ - * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐ - * │A0 │ │A3 │ │A7 │ WKL 10u Space - * └─────┘ └───────────────────────────────────────┘ └─────┘ - */ - -#define LAYOUT_all(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_ansi(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_iso(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k47, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} diff --git a/keyboards/studiokestra/galatea/rev1/rules.mk b/keyboards/studiokestra/galatea/rev1/rules.mk index 6fe874e748be..6e7633bfe015 100644 --- a/keyboards/studiokestra/galatea/rev1/rules.mk +++ b/keyboards/studiokestra/galatea/rev1/rules.mk @@ -1,12 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +# This file intentionally left blank diff --git a/keyboards/4pplet/steezy60/rev_a/config.h b/keyboards/studiokestra/galatea/rev2/config.h similarity index 54% rename from keyboards/4pplet/steezy60/rev_a/config.h rename to keyboards/studiokestra/galatea/rev2/config.h index f7ef22d986d4..40c94daf6202 100644 --- a/keyboards/4pplet/steezy60/rev_a/config.h +++ b/keyboards/studiokestra/galatea/rev2/config.h @@ -1,19 +1,15 @@ -#pragma once - - -// ROWS: Top to bottom, COLS: Left to right -#define MATRIX_ROW_PINS {C2,D0,B0,C7,C5} -#define MATRIX_COL_PINS {C4,C6,B7,B6,B5,B4,B3,B2,B1,D6,D5,D4,D2,D1} +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN D3 -#define RGBLED_NUM 12 +#pragma once +#define RGB_DI_PIN D4 +#define RGBLED_NUM 24 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ #define RGBLIGHT_EFFECT_BREATHING #define RGBLIGHT_EFFECT_RAINBOW_MOOD #define RGBLIGHT_EFFECT_RAINBOW_SWIRL @@ -23,4 +19,4 @@ #define RGBLIGHT_EFFECT_STATIC_GRADIENT #define RGBLIGHT_EFFECT_RGB_TEST #define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_MODE_TWINKLE diff --git a/keyboards/studiokestra/galatea/rev2/info.json b/keyboards/studiokestra/galatea/rev2/info.json index dc3865c584a5..b3af7d934fe0 100644 --- a/keyboards/studiokestra/galatea/rev2/info.json +++ b/keyboards/studiokestra/galatea/rev2/info.json @@ -1,321 +1,130 @@ { - "keyboard_name": "Galatea", "manufacturer": "Studio Kestra", - "url": "https://studiokestra.ca/galatea", + "keyboard_name": "Galatea", "maintainer": "studiokestra", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B2", "D5"], + "rows": ["D1", "D0", "B0", "B7", "E6", "B3", "B6", "C6", "D6", "D7", "B4", "D3"] + }, + "processor": "atmega32u4", + "url": "", "usb": { - "vid": "0x7C10", + "device_version": "1.0.0", "pid": "0x8802", - "device_version": "0.0.2" + "vid": "0x7C10" }, "indicators": { "caps_lock": "B5", "scroll_lock": "D2", "on_state": 0 }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu", "layouts": { - "LAYOUT_all": { - "layout": [ - {"x": 0, "y": 0}, - - {"x": 1.25, "y": 0}, - {"x": 2.25, "y": 0}, - {"x": 3.25, "y": 0}, - {"x": 4.25, "y": 0}, - {"x": 5.5, "y": 0}, - {"x": 6.5, "y": 0}, - {"x": 7.5, "y": 0}, - {"x": 8.5, "y": 0}, - {"x": 9.75, "y": 0}, - {"x": 10.75, "y": 0}, - {"x": 11.75, "y": 0}, - {"x": 12.75, "y": 0}, - {"x": 14, "y": 0}, - - {"x": 15.25, "y": 0}, - {"x": 16.25, "y": 0}, - {"x": 17.25, "y": 0}, - - {"x": 0, "y": 1.25}, - {"x": 1, "y": 1.25}, - {"x": 2, "y": 1.25}, - {"x": 3, "y": 1.25}, - {"x": 4, "y": 1.25}, - {"x": 5, "y": 1.25}, - {"x": 6, "y": 1.25}, - {"x": 7, "y": 1.25}, - {"x": 8, "y": 1.25}, - {"x": 9, "y": 1.25}, - {"x": 10, "y": 1.25}, - {"x": 11, "y": 1.25}, - {"x": 12, "y": 1.25}, - {"x": 13, "y": 1.25}, - {"x": 14, "y": 1.25}, - - {"x": 15.25, "y": 1.25}, - {"x": 16.25, "y": 1.25}, - {"x": 17.25, "y": 1.25}, - - {"x": 0, "y": 2.25, "w": 1.5}, - {"x": 1.5, "y": 2.25}, - {"x": 2.5, "y": 2.25}, - {"x": 3.5, "y": 2.25}, - {"x": 4.5, "y": 2.25}, - {"x": 5.5, "y": 2.25}, - {"x": 6.5, "y": 2.25}, - {"x": 7.5, "y": 2.25}, - {"x": 8.5, "y": 2.25}, - {"x": 9.5, "y": 2.25}, - {"x": 10.5, "y": 2.25}, - {"x": 11.5, "y": 2.25}, - {"x": 12.5, "y": 2.25}, - {"x": 13.5, "y": 2.25, "w": 1.5}, - - {"x": 15.25, "y": 2.25}, - {"x": 16.25, "y": 2.25}, - {"x": 17.25, "y": 2.25}, - - {"x": 0, "y": 3.25, "w": 1.75}, - {"x": 1.75, "y": 3.25}, - {"x": 2.75, "y": 3.25}, - {"x": 3.75, "y": 3.25}, - {"x": 4.75, "y": 3.25}, - {"x": 5.75, "y": 3.25}, - {"x": 6.75, "y": 3.25}, - {"x": 7.75, "y": 3.25}, - {"x": 8.75, "y": 3.25}, - {"x": 9.75, "y": 3.25}, - {"x": 10.75, "y": 3.25}, - {"x": 11.75, "y": 3.25}, - {"x": 12.75, "y": 3.25, "w": 2.25}, - - {"x": 0, "y": 4.25, "w": 1.25}, - {"x": 1.25, "y": 4.25}, - {"x": 2.25, "y": 4.25}, - {"x": 3.25, "y": 4.25}, - {"x": 4.25, "y": 4.25}, - {"x": 5.25, "y": 4.25}, - {"x": 6.25, "y": 4.25}, - {"x": 7.25, "y": 4.25}, - {"x": 8.25, "y": 4.25}, - {"x": 9.25, "y": 4.25}, - {"x": 10.25, "y": 4.25}, - {"x": 11.25, "y": 4.25}, - {"x": 12.25, "y": 4.25, "w": 1.75}, - {"x": 14, "y": 4.25}, - - {"x": 16.25, "y": 4.25}, - - {"x": 0, "y": 5.25, "w": 1.25}, - {"x": 1.25, "y": 5.25, "w": 1.25}, - {"x": 2.5, "y": 5.25, "w": 1.25}, - {"x": 3.75, "y": 5.25, "w": 6.25}, - {"x": 10, "y": 5.25, "w": 1.25}, - {"x": 11.25, "y": 5.25, "w": 1.25}, - {"x": 12.5, "y": 5.25, "w": 1.25}, - {"x": 13.75, "y": 5.25, "w": 1.25}, - - {"x": 15.25, "y": 5.25}, - {"x": 16.25, "y": 5.25}, - {"x": 17.25, "y": 5.25} - ] - }, - "LAYOUT_tkl_f13_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, - - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} - ] - }, - "LAYOUT_tkl_f13_iso": { + "LAYOUT": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2\"", "x":2, "y":1.25}, - {"label":"3\u00a3", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'@", "x":11.75, "y":3.25}, - {"label":"#~", "x":12.75, "y":3.25}, - {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, - - {"label":"Shift", "x":0, "y":4.25, "w":1.25}, - {"label":"\\|", "x":1.25, "y":4.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + + { "matrix": [0,0], "x":0, "y":0}, + { "matrix": [1,0], "x":1.25, "y":0}, + { "matrix": [0,1], "x":2.25, "y":0}, + { "matrix": [0,2], "x":3.25, "y":0}, + { "matrix": [1,2], "x":4.25, "y":0}, + { "matrix": [0,3], "x":5.5, "y":0}, + { "matrix": [1,3], "x":6.5, "y":0}, + { "matrix": [0,4], "x":7.5, "y":0}, + { "matrix": [1,4], "x":8.5, "y":0}, + { "matrix": [0,5], "x":9.75, "y":0}, + { "matrix": [1,5], "x":10.75, "y":0}, + { "matrix": [0,6], "x":11.75, "y":0}, + { "matrix": [1,6], "x":12.75, "y":0}, + { "matrix": [0,7], "x":14, "y":0}, + { "matrix": [1,7], "x":15.25, "y":0}, + { "matrix": [0,8], "x":16.25, "y":0}, + { "matrix": [1,8], "x":17.25, "y":0}, + { "matrix": [2,0], "x":0, "y":1.25}, + { "matrix": [3,0], "x":1, "y":1.25}, + { "matrix": [2,1], "x":2, "y":1.25}, + { "matrix": [3,1], "x":3, "y":1.25}, + { "matrix": [2,2], "x":4, "y":1.25}, + { "matrix": [3,2], "x":5, "y":1.25}, + { "matrix": [2,3], "x":6, "y":1.25}, + { "matrix": [3,3], "x":7, "y":1.25}, + { "matrix": [2,4], "x":8, "y":1.25}, + { "matrix": [3,4], "x":9, "y":1.25}, + { "matrix": [2,5], "x":10, "y":1.25}, + { "matrix": [3,5], "x":11, "y":1.25}, + { "matrix": [2,6], "x":12, "y":1.25}, + { "matrix": [3,6], "x":13, "y":1.25}, + { "matrix": [2,7], "x":14, "y":1.25}, + { "matrix": [3,7], "x":15.25, "y":1.25}, + { "matrix": [2,8], "x":16.25, "y":1.25}, + { "matrix": [3,8], "x":17.25, "y":1.25}, + { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, + { "matrix": [5,0], "x":1.5, "y":2.25}, + { "matrix": [4,1], "x":2.5, "y":2.25}, + { "matrix": [5,1], "x":3.5, "y":2.25}, + { "matrix": [4,2], "x":4.5, "y":2.25}, + { "matrix": [5,2], "x":5.5, "y":2.25}, + { "matrix": [4,3], "x":6.5, "y":2.25}, + { "matrix": [5,3], "x":7.5, "y":2.25}, + { "matrix": [4,4], "x":8.5, "y":2.25}, + { "matrix": [5,4], "x":9.5, "y":2.25}, + { "matrix": [4,5], "x":10.5, "y":2.25}, + { "matrix": [5,5], "x":11.5, "y":2.25}, + { "matrix": [4,6], "x":12.5, "y":2.25}, + { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, + { "matrix": [5,7], "x":15.25, "y":2.25}, + { "matrix": [4,8], "x":16.25, "y":2.25}, + { "matrix": [5,8], "x":17.25, "y":2.25}, + { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, + { "matrix": [7,0], "x":1.75, "y":3.25}, + { "matrix": [6,1], "x":2.75, "y":3.25}, + { "matrix": [7,1], "x":3.75, "y":3.25}, + { "matrix": [6,2], "x":4.75, "y":3.25}, + { "matrix": [7,2], "x":5.75, "y":3.25}, + { "matrix": [6,3], "x":6.75, "y":3.25}, + { "matrix": [7,3], "x":7.75, "y":3.25}, + { "matrix": [6,4], "x":8.75, "y":3.25}, + { "matrix": [7,4], "x":9.75, "y":3.25}, + { "matrix": [6,5], "x":10.75, "y":3.25}, + { "matrix": [7,5], "x":11.75, "y":3.25}, + { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, + { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, + { "matrix": [9,0], "x":1.25, "y":4.25}, + { "matrix": [8,1], "x":2.25, "y":4.25}, + { "matrix": [9,1], "x":3.25, "y":4.25}, + { "matrix": [8,2], "x":4.25, "y":4.25}, + { "matrix": [9,2], "x":5.25, "y":4.25}, + { "matrix": [8,3], "x":6.25, "y":4.25}, + { "matrix": [9,3], "x":7.25, "y":4.25}, + { "matrix": [8,4], "x":8.25, "y":4.25}, + { "matrix": [9,4], "x":9.25, "y":4.25}, + { "matrix": [8,5], "x":10.25, "y":4.25}, + { "matrix": [9,5], "x":11.25, "y":4.25}, + { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, + { "matrix": [8,7], "x":14, "y":4.25}, + { "matrix": [8,8], "x":16.25, "y":4.25}, + { "matrix": [10,0], "x":0, "y":5.25, "w":1.25}, + { "matrix": [11,0], "x":1.25, "y":5.25, "w":1.25}, + { "matrix": [10,1], "x":2.5, "y":5.25, "w":1.25}, + { "matrix": [10,3], "x":3.75, "y":5.25, "w":6.25}, + { "matrix": [10,5], "x":10, "y":5.25, "w":1.25}, + { "matrix": [11,5], "x":11.25, "y":5.25, "w":1.25}, + { "matrix": [10,6], "x":12.5, "y":5.25, "w":1.25}, + { "matrix": [10,7], "x":13.75, "y":5.25, "w":1.25}, + { "matrix": [11,7], "x":15.25, "y":5.25}, + { "matrix": [10,8], "x":16.25, "y":5.25}, + { "matrix": [11,8], "x":17.25, "y":5.25} ] } } -} +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..32db99b386d0 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │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 │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + 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 ), + }; diff --git a/keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c new file mode 100644 index 000000000000..c0d093334932 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │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 │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + + [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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + 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 ), +}; diff --git a/keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/studiokestra/galatea/rev2/rev2.c b/keyboards/studiokestra/galatea/rev2/rev2.c deleted file mode 100644 index 5e7125b0b61f..000000000000 --- a/keyboards/studiokestra/galatea/rev2/rev2.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 "rev2.h" diff --git a/keyboards/studiokestra/galatea/rev2/rev2.h b/keyboards/studiokestra/galatea/rev2/rev2.h deleted file mode 100644 index c319dfa63ffc..000000000000 --- a/keyboards/studiokestra/galatea/rev2/rev2.h +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define ___ KC_NO - -/* - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ - * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13 - * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ - * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ - * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │ - * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter - * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │ - * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ - * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift - * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ - * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ - * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ - * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - * ┌────┬────┬───────────────────────────────────────┬────┬────┐ - * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space - * └────┴────┴───────────────────────────────────────┴────┴────┘ - * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐ - * │A0 │ │A3 │ │A7 │ WKL 10u Space - * └─────┘ └───────────────────────────────────────┘ └─────┘ - */ - -#define LAYOUT_all(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_ansi(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_iso(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k47, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} diff --git a/keyboards/studiokestra/galatea/rev2/rules.mk b/keyboards/studiokestra/galatea/rev2/rules.mk index a927de843cb1..6e7633bfe015 100644 --- a/keyboards/studiokestra/galatea/rev2/rules.mk +++ b/keyboards/studiokestra/galatea/rev2/rules.mk @@ -1,12 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +# This file intentionally left blank diff --git a/keyboards/studiokestra/galatea/rules.mk b/keyboards/studiokestra/galatea/rules.mk index c60419c59e68..b5b1db42388c 100644 --- a/keyboards/studiokestra/galatea/rules.mk +++ b/keyboards/studiokestra/galatea/rules.mk @@ -1 +1 @@ -DEFAULT_FOLDER = studiokestra/galatea/rev1 +DEFAULT_FOLDER = studiokestra/galatea/rev1 \ No newline at end of file diff --git a/keyboards/takashicompany/tightwriter/info.json b/keyboards/takashicompany/tightwriter/info.json new file mode 100644 index 000000000000..7918682c201b --- /dev/null +++ b/keyboards/takashicompany/tightwriter/info.json @@ -0,0 +1,97 @@ +{ + "manufacturer": "takashicompany", + "keyboard_name": "Tightwriter", + "maintainer": "takashicompany", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": [ + "D4", + "C6", + "D7", + "E6", + "B4", + "B5" + ], + "rows": [ + "F6", + "F7", + "B1", + "B3", + "B2", + "B6" + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0025", + "vid": "0x7463" + }, + "rgblight": { + "led_count": 10, + "pin": "D3", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25 }, + { "matrix": [0, 1], "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "x": 5.25, "y": 0 }, + { "matrix": [1, 0], "x": 6.25, "y": 0 }, + { "matrix": [1, 1], "x": 7.25, "y": 0 }, + { "matrix": [1, 2], "x": 8.25, "y": 0 }, + { "matrix": [1, 3], "x": 9.25, "y": 0 }, + { "matrix": [1, 4], "x": 10.25, "y": 0 }, + { "matrix": [2, 0], "x": 0, "y": 1, "w": 1.75 }, + { "matrix": [2, 1], "x": 1.75, "y": 1 }, + { "matrix": [2, 2], "x": 2.75, "y": 1 }, + { "matrix": [2, 3], "x": 3.75, "y": 1 }, + { "matrix": [2, 4], "x": 4.75, "y": 1 }, + { "matrix": [2, 5], "x": 5.75, "y": 1 }, + { "matrix": [3, 0], "x": 6.75, "y": 1 }, + { "matrix": [3, 1], "x": 7.75, "y": 1 }, + { "matrix": [3, 2], "x": 8.75, "y": 1 }, + { "matrix": [1, 5], "x": 10, "y": 1, "w": 1.25, "h": 2 }, + { "matrix": [4, 0], "x": 0, "y": 2, "w": 2 }, + { "matrix": [4, 1], "x": 2, "y": 2 }, + { "matrix": [4, 2], "x": 3, "y": 2 }, + { "matrix": [4, 3], "x": 4, "y": 2 }, + { "matrix": [4, 4], "x": 5, "y": 2 }, + { "matrix": [4, 5], "x": 6, "y": 2 }, + { "matrix": [3, 3], "x": 7, "y": 2 }, + { "matrix": [3, 4], "x": 8, "y": 2 }, + { "matrix": [3, 5], "x": 9, "y": 2 }, + { "matrix": [5, 0], "x": 0, "y": 3, "w": 1.25 }, + { "matrix": [5, 1], "x": 1.25, "y": 3, "w": 1.25 }, + { "matrix": [5, 2], "x": 2.5, "y": 3, "w": 6.25 }, + { "matrix": [5, 3], "x": 8.75, "y": 3, "w": 1.25 }, + { "matrix": [5, 4], "x": 10, "y": 3, "w": 1.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/tightwriter/keymaps/default/keymap.c b/keyboards/takashicompany/tightwriter/keymaps/default/keymap.c new file mode 100644 index 000000000000..30c9d9169a02 --- /dev/null +++ b/keyboards/takashicompany/tightwriter/keymaps/default/keymap.c @@ -0,0 +1,112 @@ +// Copyright 2023 takashicompany (@takashicompany) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + SWITCH_LANG = SAFE_RANGE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + 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_LGUI, LALT_T(KC_LNG2), LT(1, KC_SPC), LT(1, KC_LNG1), KC_BSPC + ), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + 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), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, + 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_LGUI, LALT_T(KC_LNG2), LT(4, KC_SPC), LT(4, KC_LNG1), KC_BSPC + ), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS, + 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_TRNS, KC_TRNS, SWITCH_LANG, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, + 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), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; + +bool is_lang1 = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SWITCH_LANG: + if (record->event.pressed) { + + if (is_lang1) { + register_code(KC_LNG1); + is_lang1 = false; + } + else { + register_code(KC_LNG2); + is_lang1 = true; + } + } + break; + case KC_LNG1: + if (record->event.pressed) { + is_lang1 = false; + } + break; + + case KC_LNG2: + if (record->event.pressed) { + is_lang1 = true; + } + break; + } + return true; +} diff --git a/keyboards/takashicompany/tightwriter/keymaps/via/config.h b/keyboards/takashicompany/tightwriter/keymaps/via/config.h new file mode 100644 index 000000000000..f357dce30324 --- /dev/null +++ b/keyboards/takashicompany/tightwriter/keymaps/via/config.h @@ -0,0 +1,5 @@ +// Copyright 2022 takashicompany (@takashicompany) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 10 \ No newline at end of file diff --git a/keyboards/takashicompany/tightwriter/keymaps/via/keymap.c b/keyboards/takashicompany/tightwriter/keymaps/via/keymap.c new file mode 100644 index 000000000000..30c9d9169a02 --- /dev/null +++ b/keyboards/takashicompany/tightwriter/keymaps/via/keymap.c @@ -0,0 +1,112 @@ +// Copyright 2023 takashicompany (@takashicompany) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + SWITCH_LANG = SAFE_RANGE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + 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_LGUI, LALT_T(KC_LNG2), LT(1, KC_SPC), LT(1, KC_LNG1), KC_BSPC + ), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + 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), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, + 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_LGUI, LALT_T(KC_LNG2), LT(4, KC_SPC), LT(4, KC_LNG1), KC_BSPC + ), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS, + 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_TRNS, KC_TRNS, SWITCH_LANG, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, + 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), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS, + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; + +bool is_lang1 = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SWITCH_LANG: + if (record->event.pressed) { + + if (is_lang1) { + register_code(KC_LNG1); + is_lang1 = false; + } + else { + register_code(KC_LNG2); + is_lang1 = true; + } + } + break; + case KC_LNG1: + if (record->event.pressed) { + is_lang1 = false; + } + break; + + case KC_LNG2: + if (record->event.pressed) { + is_lang1 = true; + } + break; + } + return true; +} diff --git a/keyboards/takashicompany/tightwriter/keymaps/via/rules.mk b/keyboards/takashicompany/tightwriter/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/tightwriter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/tightwriter/readme.md b/keyboards/takashicompany/tightwriter/readme.md new file mode 100644 index 000000000000..779d3a9bc73b --- /dev/null +++ b/keyboards/takashicompany/tightwriter/readme.md @@ -0,0 +1,29 @@ +# takashicompany/tightwriter + +![Tightwriter](https://i.imgur.com/evVMdSRh.jpg) + +Tightwriter is a 35-key keyboard. +The PCB is compatible with Cherry MX compatible key switches and Kailh Choc v1 key switches. +It can be equipped with backlight LEDs and a TRRS socket. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/tightwriter + +Make example for this keyboard (after setting up your build environment): + +caterina: + make takashicompany/tightwriter:default + +Many popular Pro Micro alternatives like the Elite-C, Bit-C, Sea-Micro, Puchi-C etc... + make takashicompany/tightwriter:default:dfu + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +- Bootmagic reset: Hold down the top-left key and plug in the keyboard. This will also clear EEPROM, so it is a good first step if the keyboard is misbehaving. +- Physical reset button: Briefly press the button on the back of the PCB. +- Keycode in layout: Press the key mapped to QK_BOOT. In the pre-supplied keymaps it is on the ninth layer, replacing the N key. diff --git a/keyboards/takashicompany/tightwriter/rules.mk b/keyboards/takashicompany/tightwriter/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/takashicompany/tightwriter/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/tzarc/djinn/djinn_portscan_matrix.c b/keyboards/tzarc/djinn/djinn_portscan_matrix.c index 6fcfd48bbaf7..cb73c47def77 100644 --- a/keyboards/tzarc/djinn/djinn_portscan_matrix.c +++ b/keyboards/tzarc/djinn/djinn_portscan_matrix.c @@ -114,4 +114,4 @@ void matrix_wait_for_interrupt(void) { writePinHigh(col_pins[i]); setPinInputHigh(col_pins[i]); } -} \ No newline at end of file +} diff --git a/keyboards/tzarc/djinn/djinn_usbpd.c b/keyboards/tzarc/djinn/djinn_usbpd.c index b0bf166b7c01..7a56f92b8e95 100644 --- a/keyboards/tzarc/djinn/djinn_usbpd.c +++ b/keyboards/tzarc/djinn/djinn_usbpd.c @@ -25,4 +25,4 @@ void usbpd_update(void) { kb_state.current_setting = allowance; } } -} \ No newline at end of file +} diff --git a/keyboards/tzarc/djinn/keymaps/default/config.h b/keyboards/tzarc/djinn/keymaps/default/config.h index b40936ff9343..9ba29d4cf38f 100644 --- a/keyboards/tzarc/djinn/keymaps/default/config.h +++ b/keyboards/tzarc/djinn/keymaps/default/config.h @@ -3,7 +3,7 @@ #pragma once // Uncomment the following if your board uses 1.5A and 3.0A hold current fuses. -//#define DJINN_SUPPORTS_3A_FUSE +// #define DJINN_SUPPORTS_3A_FUSE // Encoder settings #define ENCODER_RESOLUTION 2 @@ -60,4 +60,4 @@ #define ENABLE_RGB_MATRIX_SPLASH #define ENABLE_RGB_MATRIX_MULTISPLASH #define ENABLE_RGB_MATRIX_SOLID_SPLASH -#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH \ No newline at end of file +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/tzarc/djinn/keymaps/via/config.h b/keyboards/tzarc/djinn/keymaps/via/config.h index b40936ff9343..9ba29d4cf38f 100644 --- a/keyboards/tzarc/djinn/keymaps/via/config.h +++ b/keyboards/tzarc/djinn/keymaps/via/config.h @@ -3,7 +3,7 @@ #pragma once // Uncomment the following if your board uses 1.5A and 3.0A hold current fuses. -//#define DJINN_SUPPORTS_3A_FUSE +// #define DJINN_SUPPORTS_3A_FUSE // Encoder settings #define ENCODER_RESOLUTION 2 @@ -60,4 +60,4 @@ #define ENABLE_RGB_MATRIX_SPLASH #define ENABLE_RGB_MATRIX_MULTISPLASH #define ENABLE_RGB_MATRIX_SOLID_SPLASH -#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH \ No newline at end of file +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/tzarc/ghoul/config.h b/keyboards/tzarc/ghoul/config.h index e08b8beee30a..c027b77565d8 100644 --- a/keyboards/tzarc/ghoul/config.h +++ b/keyboards/tzarc/ghoul/config.h @@ -2,11 +2,10 @@ // SPDX-License-Identifier: GPL-3.0-or-later #pragma once - // Matrix #define MATRIX_SHIFT_REGISTER_COUNT 5 -//#define MATRIX_ROWS 6 // actually defined in info.json: 5 shift registers, plus one row for extras (i.e. encoder pushbutton read) -//#define MATRIX_COLS 8 // actually defined in info.json: 8 bits per register +// #define MATRIX_ROWS 6 // actually defined in info.json: 5 shift registers, plus one row for extras (i.e. encoder pushbutton read) +// #define MATRIX_COLS 8 // actually defined in info.json: 8 bits per register // EEPROM configuration #define EXTERNAL_EEPROM_BYTE_COUNT 8192 diff --git a/keyboards/tzarc/ghoul/rev1/rp2040/config.h b/keyboards/tzarc/ghoul/rev1/rp2040/config.h index 1a101d5dc4c2..39b587bab0f4 100644 --- a/keyboards/tzarc/ghoul/rev1/rp2040/config.h +++ b/keyboards/tzarc/ghoul/rev1/rp2040/config.h @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later #pragma once - // Matrix configuration #define SPI_MATRIX_CHIP_SELECT_PIN GP21 #define SPI_MATRIX_DIVISOR 16 diff --git a/keyboards/tzarc/ghoul/rev1/stm32/config.h b/keyboards/tzarc/ghoul/rev1/stm32/config.h index 53a370437d08..12c9f77d5eb6 100644 --- a/keyboards/tzarc/ghoul/rev1/stm32/config.h +++ b/keyboards/tzarc/ghoul/rev1/stm32/config.h @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later #pragma once - // Matrix configuration #define SPI_MATRIX_CHIP_SELECT_PIN C4 #define SPI_MATRIX_DIVISOR 32 diff --git a/keyboards/unicomp/classic_ultracl_post_2013/info.json b/keyboards/unicomp/classic_ultracl_post_2013/info.json index dee9f85acc1a..693250310d38 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/info.json +++ b/keyboards/unicomp/classic_ultracl_post_2013/info.json @@ -1,29 +1,2636 @@ { - "keyboard_name": "Unicomp Classic / Ultra Classic (post-2013)", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..13615db22d43 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp Classic / Ultra Classic / New M (post-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "maintainer": "purdeaandrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index a62e8cfbab21..000000000000 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md index fe8fc769e499..7889bf6d8299 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md @@ -2,7 +2,7 @@ ![unicomp/classic_ultracl_post_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) -Will support the following Unicomp Classic and Ultra Classic keyboards: +Will support the following Unicomp Classic, Ultra Classic, and New Model M keyboards: * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. * It will likely also support 103-key ANSI or 104-key ISO keyboard variants (not tested) (these are the keyboards with no menu key) * At this point in time it's unclear if it supports 101-key keyboard variants built after 2013. diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/info.json index aa28ce85c896..3230af60245e 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/info.json +++ b/keyboards/unicomp/classic_ultracl_pre_2013/info.json @@ -1,30 +1,2646 @@ { - "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", - "community_layouts": ["fullsize_ansi", "fullsize_iso"], + "community_layouts": [ + "fullsize_ansi", + "fullsize_iso" + ], "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_fullsize_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_fullsize_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..1c2f5b300bdd --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index a939e986dd30..000000000000 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_fullsize_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_fullsize_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md index c25024b4772e..b972de30749c 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md @@ -3,7 +3,7 @@ ![unicomp/classic_ultracl_pre_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) Will support the following Unicomp Classic and Ultra Classic keyboards: - * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. + * 104-key ANSI and 105-key ISO keyboards with pre-2013 bottom row are supported. * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Hardware Supported: OverNumpad controller v1.Xb diff --git a/keyboards/unicomp/pc122/info.json b/keyboards/unicomp/pc122/info.json index f1d47ef1b001..0c580e729f78 100644 --- a/keyboards/unicomp/pc122/info.json +++ b/keyboards/unicomp/pc122/info.json @@ -1,23 +1,2000 @@ { - "keyboard_name": "Unicomp PC122", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":13.25, "y":1}, {"x":14.25, "y":1}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2.25, "y":2.5}, {"x":3.25, "y":2.5}, {"x":4.25, "y":2.5}, {"x":5.25, "y":2.5}, {"x":6.25, "y":2.5}, {"x":7.25, "y":2.5}, {"x":8.25, "y":2.5}, {"x":9.25, "y":2.5}, {"x":10.25, "y":2.5}, {"x":11.25, "y":2.5}, {"x":12.25, "y":2.5}, {"x":13.25, "y":2.5}, {"x":14.25, "y":2.5}, {"x":15.25, "y":2.5, "w":2}, {"x":17.75, "y":2.5}, {"x":18.75, "y":2.5}, {"x":19.75, "y":2.5}, {"x":21.25, "y":2.5}, {"x":22.25, "y":2.5}, {"x":23.25, "y":2.5}, {"x":24.25, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2.25, "y":3.5, "w":1.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5}, {"x":14.75, "y":3.5}, {"x":15.75, "y":3.5, "w":1.5}, {"x":17.75, "y":3.5}, {"x":18.75, "y":3.5}, {"x":19.75, "y":3.5}, {"x":21.25, "y":3.5}, {"x":22.25, "y":3.5}, {"x":23.25, "y":3.5}, {"x":24.25, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2.25, "y":4.5, "w":1.75}, {"x":4, "y":4.5}, {"x":5, "y":4.5}, {"x":6, "y":4.5}, {"x":7, "y":4.5}, {"x":8, "y":4.5}, {"x":9, "y":4.5}, {"x":10, "y":4.5}, {"x":11, "y":4.5}, {"x":12, "y":4.5}, {"x":13, "y":4.5}, {"x":14, "y":4.5}, {"x":15, "y":4.5}, {"x":16, "y":4.5, "w":1.25}, {"x":18.75, "y":4.5}, {"x":21.25, "y":4.5}, {"x":22.25, "y":4.5}, {"x":23.25, "y":4.5}, {"x":24.25, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2.25, "y":5.5, "w":1.25}, {"x":3.5, "y":5.5}, {"x":4.5, "y":5.5}, {"x":5.5, "y":5.5}, {"x":6.5, "y":5.5}, {"x":7.5, "y":5.5}, {"x":8.5, "y":5.5}, {"x":9.5, "y":5.5}, {"x":10.5, "y":5.5}, {"x":11.5, "y":5.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5}, {"x":14.5, "y":5.5, "w":2.75}, {"x":17.75, "y":5.5}, {"x":18.75, "y":5.5}, {"x":19.75, "y":5.5}, {"x":21.25, "y":5.5}, {"x":22.25, "y":5.5}, {"x":23.25, "y":5.5}, {"x":24.25, "y":5.5, "h":2}, {"x":0, "y":6.5}, {"x":1, "y":6.5}, {"x":2.25, "y":6.5, "w":1.5}, {"x":4.75, "y":6.5, "w":1.5}, {"x":6.25, "y":6.5, "w":7}, {"x":13.25, "y":6.5, "w":1.5}, {"x":15.75, "y":6.5, "w":1.5}, {"x":18.75, "y":6.5}, {"x":21.25, "y":6.5, "w":2}, {"x":23.25, "y":6.5}] + "layout": [ + { + "matrix": [ + 3, + 14 + ], + "x": 3.25, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4.25, + "y": 0 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 5.25, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 6.25, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 7.25, + "y": 0 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 8.25, + "y": 0 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 9.25, + "y": 0 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 10.25, + "y": 0 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 11.25, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 12.25, + "y": 0 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 13.25, + "y": 0 + }, + { + "matrix": [ + 3, + 13 + ], + "x": 14.25, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 3.25, + "y": 1 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 4.25, + "y": 1 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 5.25, + "y": 1 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 6.25, + "y": 1 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 7.25, + "y": 1 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 8.25, + "y": 1 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 9.25, + "y": 1 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 10.25, + "y": 1 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11.25, + "y": 1 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12.25, + "y": 1 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13.25, + "y": 1 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14.25, + "y": 1 + }, + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 2.5 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 1, + "y": 2.5 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 2.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 3.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 4.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 5.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 7.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 8.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 9.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 10.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 11.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 12.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 13.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 14.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 15.25, + "y": 2.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 17.75, + "y": 2.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 18.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 19.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 21.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 22.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 23.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 24.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 0, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 1, + "y": 3.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 2.25, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 13.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 14.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 15.75, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 17.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 18.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 19.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 21.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 22.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 23.25, + "y": 3.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 24.25, + "y": 3.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 0, + "y": 4.5 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1, + "y": 4.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 2.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 4, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 5, + "y": 4.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 6, + "y": 4.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 7, + "y": 4.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 8, + "y": 4.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 9, + "y": 4.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 10, + "y": 4.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 11, + "y": 4.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 12, + "y": 4.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 13, + "y": 4.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 14, + "y": 4.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 15, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 16, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 18.75, + "y": 4.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 21.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 22.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 23.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 24.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 0, + "y": 5.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 1, + "y": 5.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 2.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 3.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 4.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 5.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 6.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 7.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 8.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 9.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 10.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 11.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 13.5, + "y": 5.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 14.5, + "y": 5.5, + "w": 2.75 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 17.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 13 + ], + "x": 18.75, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 19.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 22.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 23.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 24.25, + "y": 5.5, + "h": 2 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 0, + "y": 6.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 1, + "y": 6.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 4.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 6.25, + "y": 6.5, + "w": 7 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 13.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 15.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 18.75, + "y": 6.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.25, + "y": 6.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 23.25, + "y": 6.5 + } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { + "matrix": [ + 3, + 14 + ], + "x": 3.25, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4.25, + "y": 0 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 5.25, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 6.25, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 7.25, + "y": 0 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 8.25, + "y": 0 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 9.25, + "y": 0 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 10.25, + "y": 0 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 11.25, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 12.25, + "y": 0 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 13.25, + "y": 0 + }, + { + "matrix": [ + 3, + 13 + ], + "x": 14.25, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 3.25, + "y": 1 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 4.25, + "y": 1 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 5.25, + "y": 1 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 6.25, + "y": 1 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 7.25, + "y": 1 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 8.25, + "y": 1 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 9.25, + "y": 1 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 10.25, + "y": 1 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11.25, + "y": 1 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12.25, + "y": 1 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13.25, + "y": 1 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14.25, + "y": 1 + }, + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 2.5 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 1, + "y": 2.5 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 2.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 3.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 4.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 5.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 7.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 8.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 9.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 10.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 11.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 12.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 13.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 14.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 15.25, + "y": 2.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 17.75, + "y": 2.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 18.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 19.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 21.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 22.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 23.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 24.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 0, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 1, + "y": 3.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 2.25, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 13.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 14.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 15.75, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 17.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 18.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 19.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 21.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 22.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 23.25, + "y": 3.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 24.25, + "y": 3.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 0, + "y": 4.5 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1, + "y": 4.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 2.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 4, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 5, + "y": 4.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 6, + "y": 4.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 7, + "y": 4.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 8, + "y": 4.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 9, + "y": 4.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 10, + "y": 4.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 11, + "y": 4.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 12, + "y": 4.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 13, + "y": 4.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 14, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 15, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 18.75, + "y": 4.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 21.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 22.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 23.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 24.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 0, + "y": 5.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 1, + "y": 5.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 2.25, + "y": 5.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 4.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 5.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 6.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 7.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 8.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 9.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 10.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 11.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 13.5, + "y": 5.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 14.5, + "y": 5.5, + "w": 2.75 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 17.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 13 + ], + "x": 18.75, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 19.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 22.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 23.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 24.25, + "y": 5.5, + "h": 2 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 0, + "y": 6.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 1, + "y": 6.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 4.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 6.25, + "y": 6.5, + "w": 7 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 13.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 15.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 18.75, + "y": 6.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.25, + "y": 6.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 23.25, + "y": 6.5 + } + ] } } } diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/config.h b/keyboards/unicomp/pc122/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/pc122/overnumpad_1xb/config.h +++ b/keyboards/unicomp/pc122/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/info.json b/keyboards/unicomp/pc122/overnumpad_1xb/info.json new file mode 100644 index 000000000000..16e391682319 --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp PC122", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index e0dc0d8f33f1..000000000000 --- a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_all( \ - k_f13, k_f14, k_f15, k_f16, k_f17, k_f18, k_f19, k_f20, k_f21, k_f22, k_f23, k_f24, \ - k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, \ -k_lb1, k_lb2, k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ -k_lb3, k_lb4, k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ -k_lb5, k_lb6, k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, k_up, kp_4, kp_5, kp_6, kp_plus_hidden, \ -k_lb7, k_lb8, k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_left, k_navmid, k_right, kp_1, kp_2, kp_3, kp_enter, \ -k_lb9, k_lb10, k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_down, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_lb1, k_lb4, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_lb3, k_right, k_lb2, k_lb6 }, \ - /* 1 */ { k_tab, k_f21, k_del, k_pgdn, k_f22, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_f23, k_f14, k_caps }, \ - /* 2 */ { k_1, k_f19, kp_nl, k_pgup, k_f17, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lb9, k_f16 }, \ - /* 3 */ { k_q, k_rshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, k_f24, k_f13, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_f20, k_f15, k_lb10 }, \ - /* 5 */ { k_z, k_lshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, k_navmid, kp_plus_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_ralt, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, k_lb7, KC_NO }, \ - /* 7 */ { k_tild, k_f18, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_lb8, k_space, kp_enter, k_lb5 } \ -} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/info.json b/keyboards/unicomp/spacesaver_m_post_2013/info.json index c484553e8998..fc91057391fe 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/info.json +++ b/keyboards/unicomp/spacesaver_m_post_2013/info.json @@ -1,27 +1,2650 @@ { - "keyboard_name": "Unicomp Spacesaver M", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C12" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..cf25addc9e28 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Unicomp Spacesaver M (post-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C12" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c index eda367804d0f..f0c1161cfe38 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c @@ -14,18 +14,15 @@ * along with this program. If not, see . */ -#include "overnumpad_1xb.h" +#include "quantum.h" void keyboard_post_init_kb(void) { // Led pins: - // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in info.json setPinOutput(C11); // middle led, always off on Spacesaver M writePin(C11, 0); setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer - - //debug_enable=true; - //debug_matrix=true; } diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index faffbcd4ec57..000000000000 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/info.json index 249b33fdd24b..57ac811dd9f0 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/info.json +++ b/keyboards/unicomp/spacesaver_m_pre_2013/info.json @@ -1,27 +1,2656 @@ { - "keyboard_name": "Unicomp Spacesaver M", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C12" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..31fc97a527fa --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Unicomp Spacesaver M (pre-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C12" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c index b7e3fd9632e2..517df0035a3b 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c @@ -14,18 +14,15 @@ * along with this program. If not, see . */ -#include "overnumpad_1xb.h" +#include "quantum.h" void keyboard_post_init_kb(void) { // Led pins: - // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in info.json setPinOutput(C11); // middle led, always off on Spacesaver M writePin(C11, 0); setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer - - //debug_enable=true; - //debug_matrix=true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index 0938d456d10f..000000000000 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define LAYOUT_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/vertex/angle65/chconf.h b/keyboards/vertex/angle65/chconf.h new file mode 100644 index 000000000000..343afe57a617 --- /dev/null +++ b/keyboards/vertex/angle65/chconf.h @@ -0,0 +1,28 @@ +/* Copyright 2022 vertex + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/vertex/angle65/config.h b/keyboards/vertex/angle65/config.h new file mode 100644 index 000000000000..33235010ac9a --- /dev/null +++ b/keyboards/vertex/angle65/config.h @@ -0,0 +1,21 @@ +/* Copyright 2022 vertex + +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 SOLENOID_PIN A2 + +#define FORCE_NKRO diff --git a/keyboards/vertex/angle65/halconf.h b/keyboards/vertex/angle65/halconf.h new file mode 100644 index 000000000000..7fb6be528fd8 --- /dev/null +++ b/keyboards/vertex/angle65/halconf.h @@ -0,0 +1,28 @@ +/* Copyright 2022 vertex + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/vertex/angle65/info.json b/keyboards/vertex/angle65/info.json new file mode 100644 index 000000000000..cb017b7f8163 --- /dev/null +++ b/keyboards/vertex/angle65/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "ANGLE65", + "manufacturer": "vertex", + "url": "", + "maintainer": "EasonQian1, Vertex-kb", + "usb": { + "vid": "0x7374", + "pid": "0x9770", + "device_version": "0.0.1" + }, + "processor": "STM32F103", + "bootloader": "stm32duino", + "matrix_pins": { + "rows": ["B10", "B1", "B0", "A7", "A6"], + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "B11", "A15", "A10", "A9", "B14", "B13", "B12", "A5"] + }, + "diode_direction": "COL2ROW", + "indicators": { + "caps_lock": "C13", + "on_state": 0 + }, + "layouts": { + "LAYOUT": { + "layout":[ + {"label": "K00 (B10,B9)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01 (B10,B8)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02 (B10,B7)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03 (B10,B6)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04 (B10,B5)", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05 (B10,B4)", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06 (B10,B3)", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07 (B10,B11)", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08 (B10,A15)", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09 (B10,A10)", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A (B10,A9)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B (B10,B14)", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C (B10,B13)", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D (B10,B12)", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K0E (B10,A5)", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "K10 (B1,B9)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11 (B1,B8)", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12 (B1,B7)", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13 (B1,B6)", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14 (B1,B5)", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15 (B1,B4)", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16 (B1,B3)", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17 (B1,B11)", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18 (B1,A15)", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19 (B1,A10)", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A (B1,A9)", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B (B1,B14)", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C (B1,B13)", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D (B1,B12)", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E (B1,A5)", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20 (B0,B9)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21 (B0,B8)", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22 (B0,B7)", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23 (B0,B6)", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24 (B0,B5)", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25 (B0,B4)", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26 (B0,B3)", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27 (B0,B11)", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28 (B0,A15)", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29 (B0,A10)", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A (B0,A9)", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B (B0,B14)", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C (B0,B13)", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "K2D (B0,B12)", "matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "K2E (B0,A5)", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30 (A7,B9)", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "K31 (A7,B8)", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "K32 (A7,B7)", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33 (A7,B6)", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34 (A7,B5)", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35 (A7,B4)", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36 (A7,B3)", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37 (A7,B11)", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38 (A7,A15)", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39 (A7,A10)", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A (A7,A9)", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B (A7,B14)", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C (A7,B13)", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D (A7,B12)", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E (A7,A5)", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40 (A6,B9)", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "K41 (A6,B8)", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "K42 (A6,B7)", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K46 (A6,B3)", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K4A (A6,A9)", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "K4B (A6,B14)", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "K4C (A6,B13)", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D (A6,B12)", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E (A6,A5)", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/vertex/angle65/keymaps/default/keymap.c b/keyboards/vertex/angle65/keymaps/default/keymap.c new file mode 100644 index 000000000000..5c19a6404b42 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 vertex + * + * 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_1, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT ( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______, + _______, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), +}; diff --git a/keyboards/vertex/angle65/keymaps/via/keymap.c b/keyboards/vertex/angle65/keymaps/via/keymap.c new file mode 100644 index 000000000000..06158dffc4f9 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2022 vertex + * + * 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_1, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT ( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______, + _______, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), + + [2] = LAYOUT ( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), + + [3] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), +}; diff --git a/keyboards/vertex/angle65/keymaps/via/rules.mk b/keyboards/vertex/angle65/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/vertex/angle65/mcuconf.h b/keyboards/vertex/angle65/mcuconf.h new file mode 100644 index 000000000000..659e21d83b58 --- /dev/null +++ b/keyboards/vertex/angle65/mcuconf.h @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/vertex/angle65/readme.md b/keyboards/vertex/angle65/readme.md new file mode 100644 index 000000000000..33bd975510f4 --- /dev/null +++ b/keyboards/vertex/angle65/readme.md @@ -0,0 +1,22 @@ +# angle65 + +* A customizable soldering 60% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: angle65 +* Hardware Availability: [vertex-kb](https://github.com/Vertex-kb) + +Make example for this keyboard (after setting up your build environment): + + make vertex/angle65:default + +Flashing example for this keyboard: + + make vertex/angle65: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 Enter in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/vertex/angle65/rules.mk b/keyboards/vertex/angle65/rules.mk new file mode 100644 index 000000000000..c36e3ade8261 --- /dev/null +++ b/keyboards/vertex/angle65/rules.mk @@ -0,0 +1,17 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +HAPTIC_ENABLE = yes +HAPTIC_DRIVER += SOLENOID + +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/viktus/minne/info.json b/keyboards/viktus/minne/info.json index a3c2d64511d0..396aca8bcdf8 100644 --- a/keyboards/viktus/minne/info.json +++ b/keyboards/viktus/minne/info.json @@ -15,8 +15,8 @@ "bootmagic": true, "command": false, "console": false, - "extrakey": false, - "mousekey": false, + "extrakey": true, + "mousekey": true, "nkro": true }, "bootmagic": { diff --git a/keyboards/viktus/minne_topre/ec.c b/keyboards/viktus/minne_topre/ec.c new file mode 100644 index 000000000000..569c87858226 --- /dev/null +++ b/keyboards/viktus/minne_topre/ec.c @@ -0,0 +1,179 @@ +/* Copyright 2023 Viktus Design 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 "quantum.h" +#include "ec.h" +#include "analog.h" +//#include "debug.h" // needed for debugging + +// sensing channel definitions +#define A0 0 +#define A1 1 +#define A2 2 +#define A3 3 +#define A4 4 +#define A5 5 +#define A6 6 +#define A7 7 + +// analog connection settings +#define DISCHARGE_PIN D5 +#define ANALOG_PORT D4 + +#ifndef MUX_SEL_PIN +# define MUX_SEL_PINS \ + { D1, D2, D3 } +#endif + +// pin connections +const uint8_t row_channels[] = MATRIX_ROW_PINS; +const uint8_t col_pins[] = MATRIX_COL_PINS; +const uint8_t mux_sel_pins[] = MUX_SEL_PINS; + +_Static_assert(sizeof(mux_sel_pins) == 3, "invalid MUX_SEL_PINS"); + +static ec_config_t config; +static uint16_t ec_sw_value[MATRIX_COLS][MATRIX_ROWS]; + +static inline void discharge_capacitor(void) { setPinOutput(DISCHARGE_PIN); } +static inline void charge_capacitor(uint8_t col) { + setPinInput(DISCHARGE_PIN); + writePinHigh(col_pins[col]); +} + +static inline void clear_all_col_pins(void) { + for (int col = 0; col < sizeof(col_pins); col++) { + writePinLow(col_pins[col]); + } +} + +void init_mux_sel(void) { + for (int idx = 0; idx < sizeof(mux_sel_pins); idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +void select_mux(uint8_t row) { + uint8_t ch = row_channels[row]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +void init_col(void) { + for (int idx = 0; idx < sizeof(col_pins); idx++) { + setPinOutput(col_pins[idx]); + writePinLow(col_pins[idx]); + } +} + +void ec_init(ec_config_t const* const ec_config) { + // save config + config = *ec_config; + + // initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutput(DISCHARGE_PIN); + + // set analog reference + analogReference(ADC_REF_POWER); + + // initialize drive lines + init_col(); + + // initialize multiplexer select pin + init_mux_sel(); + + // set discharge pin to charge mode + setPinInput(DISCHARGE_PIN); +} + +uint16_t ec_readkey_raw(uint8_t col, uint8_t row) { + uint16_t sw_value = 0; + + discharge_capacitor(); + + select_mux(row); + + clear_all_col_pins(); + + cli(); + + charge_capacitor(col); + + sw_value = analogReadPin(ANALOG_PORT); + + sei(); + + return sw_value; +} + +bool ec_update_key(matrix_row_t* current_row, matrix_row_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt) { + bool current_state = (*current_row >> col) & 1; + + // press to release + if (current_state && sw_value < reset_pt) { + *current_row &= ~(MATRIX_ROW_SHIFTER << col); + return true; + } + + // release to press + if ((!current_state) && sw_value > actuation_pt) { + *current_row |= (MATRIX_ROW_SHIFTER << col); + return true; + } + + return false; +} + +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + uint16_t reset_pt = config.reset_pt; + uint16_t actuation_pt = config.actuation_pt; + + //Modifying threshold values for overlapping pads + switch(row) { + case 3: + switch(col) { + case 1: + case 10: // lower threshold for bottom outside mods (40 rest, 50 act, 58 btm) + reset_pt = 45; + actuation_pt = 50; + break; + } + break; + } + + ec_sw_value[col][row] = ec_readkey_raw(col, row); + updated |= ec_update_key(¤t_matrix[row], col, ec_sw_value[col][row], reset_pt, actuation_pt); + } + } + + return updated; +} + +// console debugging for pad values +/*void ec_dprint_matrix(void) { + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + dprintf("%5d", ec_sw_value[col][row]); + } + dprintf("\n"); + } +}*/ diff --git a/keyboards/viktus/minne_topre/ec.h b/keyboards/viktus/minne_topre/ec.h new file mode 100644 index 000000000000..8d3a4f04f80e --- /dev/null +++ b/keyboards/viktus/minne_topre/ec.h @@ -0,0 +1,31 @@ +/* Copyright 2023 Viktus Design 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 +#include + +#include "matrix.h" + +typedef struct { + uint16_t reset_pt; + uint16_t actuation_pt; +} ec_config_t; + +void ec_init(ec_config_t const* const ec_config); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +//void ec_dprint_matrix(void); // needed for debugging +uint16_t ec_readkey_raw(uint8_t col, uint8_t row); +bool ec_update_key(matrix_row_t* current_row, matrix_row_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt); diff --git a/keyboards/viktus/minne_topre/info.json b/keyboards/viktus/minne_topre/info.json new file mode 100644 index 000000000000..afe00b7652b0 --- /dev/null +++ b/keyboards/viktus/minne_topre/info.json @@ -0,0 +1,256 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "Viktus Minne - Topre", + "maintainer": "BlindAssassin111", + "url": "https://viktus.design", + "usb": { + "device_version": "1.3.0", + "vid": "0x5644", + "pid": "0x4D54" + }, + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "bootmagic": { + "matrix": [0,0] + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B7", "D0", "B6", "D6", "C6", "C7", "D7", "F7", "B4", "F6", "F5", "B5"], + "rows": ["A0", "A1", "A3", "A4"] + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "K0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "K0B", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 }, + { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 }, + { "label": "K1A", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 }, + { "label": "K1B", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, + { "label": "K2A", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "K2B", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 1, "x": 1.375, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 2.375, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 2.5, "x": 3.375, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 5.875, "y": 3 }, + { "label": "K37", "matrix": [3, 7], "w": 2.5, "x": 6.875, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "w": 1, "x": 9.375, "y": 3 }, + { "label": "K3A", "matrix": [3, 10], "w": 1, "x": 10.375, "y": 3 } + ] + }, + "LAYOUT_dual_3u": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "K0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "K0B", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 }, + { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 }, + { "label": "K1A", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 }, + { "label": "K1B", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, + { "label": "K2A", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "K2B", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 1, "x": 1.375, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 2.375, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 3, "x": 3.375, "y": 3 }, + { "label": "K37", "matrix": [3, 7], "w": 3, "x": 6.375, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "w": 1, "x": 9.375, "y": 3 }, + { "label": "K3A", "matrix": [3, 10], "w": 1, "x": 10.375, "y": 3 } + ] + }, + "LAYOUT_6u": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "K0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "K0B", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 }, + { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 }, + { "label": "K1A", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 }, + { "label": "K1B", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, + { "label": "K2A", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "K2B", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 1, "x": 1.375, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 2.375, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 6, "x": 3.375, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "w": 1, "x": 9.375, "y": 3 }, + { "label": "K3A", "matrix": [3, 10], "w": 1, "x": 10.375, "y": 3 } + ] + }, + "LAYOUT_7u": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "K0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "K0B", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 }, + { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 }, + { "label": "K1A", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 }, + { "label": "K1B", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, + { "label": "K2A", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "K2B", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 1.5, "x": 1.375, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 7, "x": 2.875, "y": 3 }, + { "label": "K3A", "matrix": [3, 10], "w": 1.5, "x": 9.875, "y": 3 } + ] + }, + "LAYOUT_10u": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "K0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "K0B", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 }, + { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 }, + { "label": "K1A", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 }, + { "label": "K1B", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, + { "label": "K2A", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "K2B", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "K35", "matrix": [3, 5], "w": 10, "x": 1.375, "y": 3 } + ] + } + } +} diff --git a/keyboards/viktus/minne_topre/keymaps/default/keymap.c b/keyboards/viktus/minne_topre/keymaps/default/keymap.c new file mode 100644 index 000000000000..5ad476a25da0 --- /dev/null +++ b/keyboards/viktus/minne_topre/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2023 Viktus Design 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_all( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ) +}; diff --git a/keyboards/viktus/minne_topre/keymaps/via/keymap.c b/keyboards/viktus/minne_topre/keymaps/via/keymap.c new file mode 100644 index 000000000000..5ad476a25da0 --- /dev/null +++ b/keyboards/viktus/minne_topre/keymaps/via/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2023 Viktus Design 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_all( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ) +}; diff --git a/keyboards/viktus/minne_topre/keymaps/via/rules.mk b/keyboards/viktus/minne_topre/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/minne_topre/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/minne_topre/minne_topre.c b/keyboards/viktus/minne_topre/minne_topre.c new file mode 100644 index 000000000000..96b04090cf6f --- /dev/null +++ b/keyboards/viktus/minne_topre/minne_topre.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Viktus Design 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 "quantum.h" +#include "ec.h" +#include "matrix.h" +//#include "debug.h" // needed for debugging + +#define RESET_PT 55 +#define ACTUATION_PT 65 + +// console debugging for pad values +/*void keyboard_post_init_kb() { + debug_enable = true; + debug_matrix = true; +}*/ + +void matrix_init_custom(void) { + ec_config_t ec_config = {.reset_pt = RESET_PT, .actuation_pt = ACTUATION_PT}; + + ec_init(&ec_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + // console debugging for pad values + /*static int cnt = 0; + if (cnt++ == 300) { + cnt = 0; + ec_dprint_matrix(); + dprintf("\n"); + }*/ + + return updated; +} diff --git a/keyboards/viktus/minne_topre/readme.md b/keyboards/viktus/minne_topre/readme.md new file mode 100644 index 000000000000..0bd412f28c9d --- /dev/null +++ b/keyboards/viktus/minne_topre/readme.md @@ -0,0 +1,27 @@ +# Viktus Minne - Topre + +![minne_topre](https://i.imgur.com/OKnryxch.png) + +Minne is a 40% keyboard with an HHKB bottom row, Now with Topre. + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: Viktus Minne Topre PCB +- Hardware Availability: Viktus Design LLC + +Make example for this keyboard (after setting up your build environment): + + make viktus/minne_topre:default + +Flashing example for this keyboard: + + make viktus/minne_topre:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/viktus/minne_topre/rules.mk b/keyboards/viktus/minne_topre/rules.mk new file mode 100644 index 000000000000..037e26c530c7 --- /dev/null +++ b/keyboards/viktus/minne_topre/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += ec.c diff --git a/keyboards/viktus/osav2/info.json b/keyboards/viktus/osav2/info.json new file mode 100644 index 000000000000..b2274880bc5d --- /dev/null +++ b/keyboards/viktus/osav2/info.json @@ -0,0 +1,471 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "OSAv2", + "maintainer": "BlindAssassin111", + "url": "https://viktus.design", + "usb": { + "device_version": "2.1.0", + "vid": "0x5644", + "pid": "0x5632" + }, + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "features": { + "backlight": true, + "rgblight": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "bootmagic": { + "matrix": [1,0] + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B4", "D7", "D5", "D3", "D2", "D1", "D0", "B5"], + "rows": ["F0", "F1", "F4", "F5", "F6", "B0", "B1", "B2", "B3", "B7"] + }, + "rgblight": { + "led_count": 23, + "pin": "D4", + "max_brightness": 191, + "animations": { + "breathing": true, + "rainbow_swirl": true, + "twinkle": true + } + }, + "backlight": { + "levels": 6, + "max_brightness": 191, + "pin": "D6" + }, + "indicators": { + "num_lock": "C7", + "caps_lock": "C6", + "scroll_lock": "B6" + }, + "layouts": { + "LAYOUT_split_normal": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K50", "matrix": [5, 0], "w": 1, "x": 15.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 1, "x": 16.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_split_normal_split": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K50", "matrix": [5, 0], "w": 1, "x": 15.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 1, "x": 16.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K87", "matrix": [8, 7], "w": 1, "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_split_mirrored_split": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K50", "matrix": [5, 0], "w": 1, "x": 15.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 1, "x": 16.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K87", "matrix": [8, 7], "w": 1, "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 1, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_normal": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_normal_split": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K87", "matrix": [8, 7], "w": 1, "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_mirrored_split": { + "layout": [ + { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0.5, "y": 0 }, + { "label": "K00", "matrix": [0, 0], "w": 1, "x": 1.75, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "w": 1, "x": 2.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "w": 1, "x": 3.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "w": 1, "x": 4.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "w": 1, "x": 5.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "w": 1, "x": 6.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "w": 1, "x": 7.75, "y": 0 }, + { "label": "K56", "matrix": [5, 6], "w": 1, "x": 9.75, "y": 0 }, + { "label": "K55", "matrix": [5, 5], "w": 1, "x": 10.75, "y": 0 }, + { "label": "K54", "matrix": [5, 4], "w": 1, "x": 11.75, "y": 0 }, + { "label": "K53", "matrix": [5, 3], "w": 1, "x": 12.75, "y": 0 }, + { "label": "K52", "matrix": [5, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "K51", "matrix": [5, 1], "w": 1, "x": 14.75, "y": 0 }, + { "label": "K57", "matrix": [5, 7], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "w": 1, "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "w": 1, "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "w": 1, "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "w": 1, "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "w": 1, "x": 7, "y": 1 }, + { "label": "K66", "matrix": [6, 6], "w": 1, "x": 9.5, "y": 1 }, + { "label": "K65", "matrix": [6, 5], "w": 1, "x": 10.5, "y": 1 }, + { "label": "K64", "matrix": [6, 4], "w": 1, "x": 11.5, "y": 1 }, + { "label": "K63", "matrix": [6, 3], "w": 1, "x": 12.5, "y": 1 }, + { "label": "K62", "matrix": [6, 2], "w": 1, "x": 13.5, "y": 1 }, + { "label": "K61", "matrix": [6, 1], "w": 1, "x": 14.5, "y": 1 }, + { "label": "K60", "matrix": [6, 0], "w": 1, "x": 15.5, "y": 1 }, + { "label": "K67", "matrix": [6, 7], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "w": 1, "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "w": 1, "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "w": 1, "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "w": 1, "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "w": 1, "x": 7, "y": 2 }, + { "label": "K76", "matrix": [7, 6], "w": 1, "x": 10, "y": 2 }, + { "label": "K75", "matrix": [7, 5], "w": 1, "x": 11, "y": 2 }, + { "label": "K74", "matrix": [7, 4], "w": 1, "x": 12, "y": 2 }, + { "label": "K73", "matrix": [7, 3], "w": 1, "x": 13, "y": 2 }, + { "label": "K72", "matrix": [7, 2], "w": 1, "x": 14, "y": 2 }, + { "label": "K71", "matrix": [7, 1], "w": 1, "x": 15, "y": 2 }, + { "label": "K77", "matrix": [7, 7], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "w": 1, "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "w": 1, "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "w": 1, "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3 }, + { "label": "K86", "matrix": [8, 6], "w": 1, "x": 9.75, "y": 3 }, + { "label": "K85", "matrix": [8, 5], "w": 1, "x": 10.75, "y": 3 }, + { "label": "K84", "matrix": [8, 4], "w": 1, "x": 11.75, "y": 3 }, + { "label": "K83", "matrix": [8, 3], "w": 1, "x": 12.75, "y": 3 }, + { "label": "K82", "matrix": [8, 2], "w": 1, "x": 13.75, "y": 3 }, + { "label": "K81", "matrix": [8, 1], "w": 1, "x": 14.75, "y": 3 }, + { "label": "K80", "matrix": [8, 0], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K87", "matrix": [8, 7], "w": 1, "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K45", "matrix": [4, 5], "w": 1, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K95", "matrix": [9, 5], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K93", "matrix": [9, 3], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K90", "matrix": [9, 0], "w": 1.5, "x": 16.75, "y": 4 } + ] + } + } +} diff --git a/keyboards/viktus/osav2/keymaps/default/keymap.c b/keyboards/viktus/osav2/keymaps/default/keymap.c new file mode 100644 index 000000000000..41533f136ca3 --- /dev/null +++ b/keyboards/viktus/osav2/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Viktus Design 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_split_normal_split( + KC_DEL, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, + 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_BSPC, + KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ) +}; diff --git a/keyboards/viktus/osav2/keymaps/via/keymap.c b/keyboards/viktus/osav2/keymaps/via/keymap.c new file mode 100644 index 000000000000..41533f136ca3 --- /dev/null +++ b/keyboards/viktus/osav2/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Viktus Design 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_split_normal_split( + KC_DEL, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, + 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_BSPC, + KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ) +}; diff --git a/keyboards/viktus/osav2/keymaps/via/rules.mk b/keyboards/viktus/osav2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/osav2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/osav2/readme.md b/keyboards/viktus/osav2/readme.md new file mode 100644 index 000000000000..4808e15a12dc --- /dev/null +++ b/keyboards/viktus/osav2/readme.md @@ -0,0 +1,27 @@ +# OSAv2 + +![osav2](https://i.imgur.com/CIDckmjh.png) + +The OSAv2 is the second version of the OSA and a complete overhaul in design. + +- Keyboard Maintainer: [BlindAssassin111](https://github.com/blindassassin111) +- Hardware Supported: OSAv2 PCB +- Hardware Availability: Viktus Design LLC + +Make example for this keyboard (after setting up your build environment): + + make viktus/osav2:default + +Flashing example for this keyboard: + + make viktus/osav2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/viktus/osav2/rules.mk b/keyboards/viktus/osav2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/viktus/osav2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/wilba_tech/wt60_h1/config.h b/keyboards/wilba_tech/wt60_h1/config.h index 32645266942d..793d8d8baf95 100644 --- a/keyboards/wilba_tech/wt60_h1/config.h +++ b/keyboards/wilba_tech/wt60_h1/config.h @@ -1,38 +1,8 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } -#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/wilba_tech/wt60_h1/info.json b/keyboards/wilba_tech/wt60_h1/info.json index 928ea8ba8ab6..d037f73761d3 100644 --- a/keyboards/wilba_tech/wt60_h1/info.json +++ b/keyboards/wilba_tech/wt60_h1/info.json @@ -1,8 +1,8 @@ { - "keyboard_name": "WT60-H1", + "keyboard_name": "WT60-H1", "manufacturer": "wilba.tech", - "url": "https://wilba.tech", - "maintainer": "Wilba", + "url": "https://wilba.tech", + "maintainer": "Wilba", "usb": { "vid": "0x6582", "pid": "0x0024", @@ -10,10 +10,82 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", - "community_layouts": ["60_tsangan_hhkb"], + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["F0", "F1", "F4", "F6", "F7"], + "cols": ["F5", "D5", "B1", "B2", "B3", "D3", "D2", "C7", "C6", "B6", "B5", "B4", "D7", "D6"] + }, + "community_layouts": ["60_ansi_split_bs_rshift"], + "layout_aliases": { + "LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift" + }, "layouts": { - "LAYOUT_60_tsangan_hhkb": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "matrix": [2, 13], "x": 14.0, "y": 0.0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1.0 }, + { "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2.0 }, + { "matrix": [3, 0], "w": 2.25, "x": 0.0, "y": 3.0 }, + { "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 } + ] } } } diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c index 5635a1b3e9f5..0f4abc0bb102 100644 --- a/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c +++ b/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c @@ -1,52 +1,40 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later + // Default layout for WT60-H1 #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer - [0] = LAYOUT_60_tsangan_hhkb( + [0] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL), // Fn1 Layer - [1] = LAYOUT_60_tsangan_hhkb( + [1] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // Fn2 Layer - [2] = LAYOUT_60_tsangan_hhkb( + [2] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // Fn3 Layer - [3] = LAYOUT_60_tsangan_hhkb( + [3] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -}; + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c index 1f9d213f05db..7291ae849a03 100644 --- a/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c +++ b/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c @@ -1 +1,3 @@ -#include "../default/keymap.c" \ No newline at end of file +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "../default/keymap.c" diff --git a/keyboards/wilba_tech/wt60_h1/wt60_h1.c b/keyboards/wilba_tech/wt60_h1/wt60_h1.c deleted file mode 100644 index 5370394e15b5..000000000000 --- a/keyboards/wilba_tech/wt60_h1/wt60_h1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 "wt60_h1.h" diff --git a/keyboards/wilba_tech/wt60_h1/wt60_h1.h b/keyboards/wilba_tech/wt60_h1/wt60_h1.h deleted file mode 100644 index 89b90e7afc37..000000000000 --- a/keyboards/wilba_tech/wt60_h1/wt60_h1.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define ____ KC_NO - -// This is equivalent to LAYOUT_all -#define LAYOUT_60_tsangan_hhkb( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ - K400, K401, K402, K406, K411, K412, K413 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ - { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ -} diff --git a/keyboards/wilba_tech/wt60_h3/config.h b/keyboards/wilba_tech/wt60_h3/config.h index 32645266942d..793d8d8baf95 100644 --- a/keyboards/wilba_tech/wt60_h3/config.h +++ b/keyboards/wilba_tech/wt60_h3/config.h @@ -1,38 +1,8 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } -#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json index df002063a37c..57bb26c243a4 100644 --- a/keyboards/wilba_tech/wt60_h3/info.json +++ b/keyboards/wilba_tech/wt60_h3/info.json @@ -1,8 +1,8 @@ { - "keyboard_name": "WT60-H3", + "keyboard_name": "WT60-H3", "manufacturer": "wilba.tech", - "url": "https://wilba.tech", - "maintainer": "Wilba", + "url": "https://wilba.tech", + "maintainer": "Wilba", "usb": { "vid": "0x6582", "pid": "0x002C", @@ -10,78 +10,82 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["F0", "F1", "F4", "F6", "F7"], + "cols": ["F5", "D5", "B1", "B2", "B3", "D3", "D2", "C7", "C6", "B6", "B5", "B4", "D7", "D6"] + }, + "community_layouts": ["60_iso_split_bs_rshift"], "layout_aliases": { - "LAYOUT_all": "LAYOUT_60_iso_tsangan_split_rshift" + "LAYOUT_all": "LAYOUT_60_iso_split_bs_rshift" }, "layouts": { - "LAYOUT_60_iso_tsangan_split_rshift": { + "LAYOUT_60_iso_split_bs_rshift": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - {"x":13.75, "y":1, "w":1.25, "h":2}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4}, - {"x":2.5, "y":4, "w":1.5}, - {"x":4, "y":4, "w":7}, - {"x":11, "y":4, "w":1.5}, - {"x":12.5, "y":4}, - {"x":13.5, "y":4, "w":1.5} + { "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "matrix": [2, 13], "x": 14.0, "y": 0.0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "matrix": [1, 13], "w": 1.25, "h": 2.0, "x": 13.75, "y": 1.0 }, + { "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 } ] } } diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c index 19236e0a4500..e02b9c561b00 100644 --- a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c +++ b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c @@ -1,18 +1,6 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later + // Default layout for WT60-H3 #include QMK_KEYBOARD_H @@ -20,33 +8,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer [0] = LAYOUT_all( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL), // Fn1 Layer [1] = LAYOUT_all( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, 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_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // Fn2 Layer [2] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // Fn3 Layer [3] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, 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/wilba_tech/wt60_h3/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c index 1f9d213f05db..7291ae849a03 100644 --- a/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c +++ b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c @@ -1 +1,3 @@ -#include "../default/keymap.c" \ No newline at end of file +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "../default/keymap.c" diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.c b/keyboards/wilba_tech/wt60_h3/wt60_h3.c deleted file mode 100644 index a6c839b5a42c..000000000000 --- a/keyboards/wilba_tech/wt60_h3/wt60_h3.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 "wt60_h3.h" diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.h b/keyboards/wilba_tech/wt60_h3/wt60_h3.h deleted file mode 100644 index 84ca69ffc261..000000000000 --- a/keyboards/wilba_tech/wt60_h3/wt60_h3.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define ____ KC_NO - -#define LAYOUT_60_iso_tsangan_split_rshift( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K113, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ - K400, K401, K402, K406, K411, K412, K413 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ -} diff --git a/keyboards/wuque/creek70/config.h b/keyboards/wuque/creek70/config.h index 1048387aa268..4f17871ab05e 100644 --- a/keyboards/wuque/creek70/config.h +++ b/keyboards/wuque/creek70/config.h @@ -18,14 +18,20 @@ #define RGB_DI_PIN D0 #ifdef RGB_DI_PIN - #define RGBLED_NUM 1 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*======= RGB function=======*/ -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLED_NUM 7 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_TWINKLE #endif diff --git a/keyboards/wuque/creek70/info.json b/keyboards/wuque/creek70/info.json index 00c9df86c3dc..e03b4df35ff2 100644 --- a/keyboards/wuque/creek70/info.json +++ b/keyboards/wuque/creek70/info.json @@ -42,7 +42,8 @@ "device_version": "0.0.1" }, "indicators": { - "caps_lock": "F6" + "caps_lock": "F6", + "on_state": 0 }, "layouts": { "LAYOUT": { diff --git a/keyboards/wuque/creek70/keymaps/default/keymap.c b/keyboards/wuque/creek70/keymaps/default/keymap.c index d99b8c10c79b..4a0678525451 100644 --- a/keyboards/wuque/creek70/keymaps/default/keymap.c +++ b/keyboards/wuque/creek70/keymaps/default/keymap.c @@ -18,17 +18,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={ [0] = LAYOUT( - 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_KB_MUTE, 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_KB_VOLUME_UP, 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_BSPC, - KC_KB_VOLUME_DOWN, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, - KC_PAUSE, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_MUTE, 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_VOLU, 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_VOLD, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_PAUSE, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/wuque/creek70/keymaps/via/keymap.c b/keyboards/wuque/creek70/keymaps/via/keymap.c index e376fde0d625..9c0a99a98643 100644 --- a/keyboards/wuque/creek70/keymaps/via/keymap.c +++ b/keyboards/wuque/creek70/keymaps/via/keymap.c @@ -18,31 +18,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={ [0] = LAYOUT( - 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_KB_MUTE, 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_KB_VOLUME_UP, 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_BSPC, - KC_KB_VOLUME_DOWN, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, - KC_PAUSE, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_MUTE, 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_VOLU, 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_VOLD, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_PAUSE, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/wuque/creek70/readme.md b/keyboards/wuque/creek70/readme.md index 33c7a5d609ba..2b7f9f4688fa 100644 --- a/keyboards/wuque/creek70/readme.md +++ b/keyboards/wuque/creek70/readme.md @@ -1,12 +1,10 @@ # creek70 More Info at [creek70](https://shop.wuquestudio.com/) -​ * Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) * Hardware Supported: creek 70 * Hardware Availability: [creek70](https://shop.wuquestudio.com/) -​ Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/wuque/creek70/rules.mk b/keyboards/wuque/creek70/rules.mk index 69a7faea4a7e..1e3cebb14515 100644 --- a/keyboards/wuque/creek70/rules.mk +++ b/keyboards/wuque/creek70/rules.mk @@ -1 +1 @@ -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = yes diff --git a/keyboards/wuque/ikki68_aurora/readme.md b/keyboards/wuque/ikki68_aurora/readme.md index 98674d0d728f..e9b9405da06a 100644 --- a/keyboards/wuque/ikki68_aurora/readme.md +++ b/keyboards/wuque/ikki68_aurora/readme.md @@ -1,14 +1,14 @@ # ikki68_aurora ![ikki68_aurora](https://cdn.shopify.com/s/files/1/0403/9809/4489/products/GMK_Mizu_FK5225_2021-Jan-28_01-50-51AM-000_CustomizedView25613364763.jpg?v=1611994134) -​ + Hope this kit is the same as ikki, every rebirth will be stronger More Info at[wuquestudio](https://shop.wuquestudio.com/). -​ + * Keyboard Maintainer: [wuquestudio](https://shop.wuquestudio.com) * Hardware Supported: ikki68 aurora Standard * Hardware Availability: [wuquestudio](http://aurora.wuquestudio.com/) -​ + Make example for this keyboard (after setting up your build environment): make wuque/ikki68_aurora:default diff --git a/keyboards/wuque/mammoth75x/readme.md b/keyboards/wuque/mammoth75x/readme.md index 9528552fb17e..825dd26b67ab 100644 --- a/keyboards/wuque/mammoth75x/readme.md +++ b/keyboards/wuque/mammoth75x/readme.md @@ -1,13 +1,13 @@ # mammoth75x -​ + ![mammoth75x](https://i.imgur.com/mhIKh2P.jpeg) -​ + More Info at [wuquestudio](https://shop.wuquestudio.com/). -​ + * Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) * Hardware Supported: mammoth75x Standard * Hardware Availability: [mammoth75x](https://shop.wuquestudio.com/) -​ + Make example for this keyboard (after setting up your build environment): make wuque/mammoth75x:default diff --git a/keyboards/wuque/promise87/ansi/readme.md b/keyboards/wuque/promise87/ansi/readme.md index 08ad5875c6aa..497d747a71fb 100644 --- a/keyboards/wuque/promise87/ansi/readme.md +++ b/keyboards/wuque/promise87/ansi/readme.md @@ -3,12 +3,10 @@ ![Promise87](https://i.imgur.com/0gtouZ2.png) More Info at [promise87](https://promisetkl.com/) -​ * Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) * Hardware Supported: promise 87 * Hardware Availability: [promise87](https://promisetkl.com/) -​ Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/wuque/promise87/wkl/readme.md b/keyboards/wuque/promise87/wkl/readme.md index 8629c75291c1..c2db136a81e4 100644 --- a/keyboards/wuque/promise87/wkl/readme.md +++ b/keyboards/wuque/promise87/wkl/readme.md @@ -3,12 +3,10 @@ ![Promise87](https://i.imgur.com/0gtouZ2.png) More Info at [promise87](https://promisetkl.com/) -​ * Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) * Hardware Supported: promise 87 * Hardware Availability: [promise87](https://promisetkl.com/) -​ Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/wuque/serneity65/readme.md b/keyboards/wuque/serneity65/readme.md index 11d18bacbb6f..78a8e6d2f63d 100644 --- a/keyboards/wuque/serneity65/readme.md +++ b/keyboards/wuque/serneity65/readme.md @@ -1,11 +1,11 @@ # serneity65 More Info at [serneity65](https://shop.wuquestudio.com/) -​ + * Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) * Hardware Supported: zoom65 Standard * Hardware Availability: [serneity65](https://shop.wuquestudio.com/) -​ + Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/wuque/tata80/wkl/info.json b/keyboards/wuque/tata80/wkl/info.json index c23c8dd856f5..868448e0f151 100644 --- a/keyboards/wuque/tata80/wkl/info.json +++ b/keyboards/wuque/tata80/wkl/info.json @@ -29,6 +29,7 @@ { "label": "F10", "x": 10.75, "y": 0 }, { "label": "F11", "x": 11.75, "y": 0 }, { "label": "F12", "x": 12.75, "y": 0 }, + { "label": "F13", "x": 14, "y": 0 }, { "label": "Print", "x": 15.25, "y": 0 }, { "label": "Scroll", "x": 16.25, "y": 0 }, { "label": "Pause", "x": 17.25, "y": 0 }, @@ -97,14 +98,11 @@ { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, { "label": "\u2191", "x": 16.25, "y": 4.25 }, - { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, - { "label": "Space", "x": 3.75, "y": 5.25, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, - { "label": "Fn", "x": 11.25, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 12.5, "y": 5.25, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.5 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.5 }, + { "label": "Space", "x": 4, "y": 5.25, "w": 7 }, + { "label": "Alt", "x": 11, "y": 5.25, "w": 1.5 }, + { "label": "Fn", "x": 13.5, "y": 5.25, "w": 1.5 }, { "label": "\u2190", "x": 15.25, "y": 5.25 }, { "label": "\u2193", "x": 16.25, "y": 5.25 }, { "label": "\u2192", "x": 17.25, "y": 5.25 } diff --git a/keyboards/wuque/tata80/wkl/keymaps/default/keymap.c b/keyboards/wuque/tata80/wkl/keymaps/default/keymap.c index 8f135e2587ed..94310988e3b3 100644 --- a/keyboards/wuque/tata80/wkl/keymaps/default/keymap.c +++ b/keyboards/wuque/tata80/wkl/keymaps/default/keymap.c @@ -18,19 +18,19 @@ 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_PSCR, KC_SCRL, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT( - _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/wuque/tata80/wkl/keymaps/via/keymap.c b/keyboards/wuque/tata80/wkl/keymaps/via/keymap.c index 597bbacc08bf..73568d966ce1 100644 --- a/keyboards/wuque/tata80/wkl/keymaps/via/keymap.c +++ b/keyboards/wuque/tata80/wkl/keymaps/via/keymap.c @@ -17,35 +17,35 @@ 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_PSCR, KC_SCRL, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT( - _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______ ), [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______ ), [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/wuque/tata80/wkl/wkl.h b/keyboards/wuque/tata80/wkl/wkl.h index 9795f513212c..2981f26d550a 100644 --- a/keyboards/wuque/tata80/wkl/wkl.h +++ b/keyboards/wuque/tata80/wkl/wkl.h @@ -27,18 +27,18 @@ * represents the switch matrix. */ #define LAYOUT( \ - k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, k016, \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \ k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k413, k415, \ - k500, k501, k502, k506, k509, k510, k511, k513, k514, k515, k516 \ + k500, k502, k506, k509, k513, k514, k515, k516 \ ) \ { \ - { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, k016 }, \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016 }, \ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116 }, \ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216 }, \ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, KC_NO, k313, KC_NO, KC_NO, KC_NO }, \ { k400, KC_NO, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, KC_NO, k413, KC_NO, k415, KC_NO }, \ - { k500, k501, k502, KC_NO, KC_NO, KC_NO, k506, KC_NO, KC_NO, k509, k510, k511, KC_NO, k513, k514, k515, k516 } \ + { k500, KC_NO, k502, KC_NO, KC_NO, KC_NO, k506, KC_NO, KC_NO, k509, KC_NO, KC_NO, KC_NO, k513, k514, k515, k516 } \ } diff --git a/keyboards/ymdk/ymd09/config.h b/keyboards/ymdk/ymd09/config.h index 4c4ca90583a3..768d93d62461 100644 --- a/keyboards/ymdk/ymd09/config.h +++ b/keyboards/ymdk/ymd09/config.h @@ -1,5 +1,6 @@ /* Copyright 2020 Patrick Fruh +Copyright 2023 SHVD3x 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 @@ -17,33 +18,59 @@ along with this program. If not, see . #pragma once +#define RGB_MATRIX_LED_COUNT 9 +#define RGB_DI_PIN E2 -/* Keyboard Matrix Assignments */ -#define MATRIX_ROW_PINS { F5, F4, F1 } -#define MATRIX_COL_PINS { D6, D2, D1 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL +#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_DI_PIN E2 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 9 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#endif +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +//#define ENABLE_RGB_MATRIX_ALPHAS_MODS +//#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +//#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +//#define ENABLE_RGB_MATRIX_BAND_SAT +//#define ENABLE_RGB_MATRIX_BAND_VAL +//#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +//#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +//#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +//#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +//#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +//#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/ymdk/ymd09/info.json b/keyboards/ymdk/ymd09/info.json index 0e3aaba46bfb..d34cf858b4ed 100644 --- a/keyboards/ymdk/ymd09/info.json +++ b/keyboards/ymdk/ymd09/info.json @@ -10,19 +10,51 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "rgb_matrix": true, + }, + "build": { + "lto": true + }, + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["D6", "D2", "D1"], + "rows": ["F5", "F4", "F1"] + }, "layouts": { "LAYOUT": { "layout": [ - {"label": "7", "x": 0, "y": 0}, - {"label": "8", "x": 1, "y": 0}, - {"label": "9", "x": 2, "y": 0}, - {"label": "4", "x": 0, "y": 1}, - {"label": "5", "x": 1, "y": 1}, - {"label": "6", "x": 2, "y": 1}, - {"label": "1", "x": 0, "y": 2}, - {"label": "2", "x": 1, "y": 2}, - {"label": "3", "x": 2, "y": 2} + {"label": "7", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "8", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "9", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "4", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "5", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "6", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "1", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "2", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "3", "matrix": [2, 2], "x": 2, "y": 2} ] } + }, + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + { "flags": 4, "matrix": [0, 2], "x": 64, "y": 0 }, //7 + { "flags": 4, "matrix": [0, 1], "x": 32, "y": 0 }, //8 + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 }, //9 + { "flags": 4, "matrix": [1, 2], "x": 64, "y": 32 }, //4 + { "flags": 4, "matrix": [1, 1], "x": 32, "y": 32 }, //5 + { "flags": 4, "matrix": [1, 0], "x": 0, "y": 32 }, //6 + { "flags": 4, "matrix": [2, 2], "x": 64, "y": 64 }, //1 + { "flags": 4, "matrix": [2, 1], "x": 32, "y": 64 }, //2 + { "flags": 4, "matrix": [2, 0], "x": 0, "y": 64 } //3 + ], + "center_point": [ 32, 32 ], } } diff --git a/keyboards/ymdk/ymd09/keymaps/default/keymap.c b/keyboards/ymdk/ymd09/keymaps/default/keymap.c index 330e41db6311..035bc079b887 100644 --- a/keyboards/ymdk/ymd09/keymaps/default/keymap.c +++ b/keyboards/ymdk/ymd09/keymaps/default/keymap.c @@ -1,3 +1,18 @@ +/* +Copyright 2023 +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] = { diff --git a/keyboards/ymdk/ymd09/keymaps/via/keymap.c b/keyboards/ymdk/ymd09/keymaps/via/keymap.c index 15962e367aa3..60c7cc1eed9a 100644 --- a/keyboards/ymdk/ymd09/keymaps/via/keymap.c +++ b/keyboards/ymdk/ymd09/keymaps/via/keymap.c @@ -1,3 +1,18 @@ +/* +Copyright 2023 +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] = { diff --git a/keyboards/ymdk/ymd09/readme.md b/keyboards/ymdk/ymd09/readme.md index dce883c1f5f1..efdb16cf6d86 100644 --- a/keyboards/ymdk/ymd09/readme.md +++ b/keyboards/ymdk/ymd09/readme.md @@ -12,4 +12,16 @@ Make example for this keyboard (after setting up your build environment): make ymdk/ymd09:default +Flashing example for this keyboard: + + make ymdk/ymd09:default:flash + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/ymdk/ymd09/rules.mk b/keyboards/ymdk/ymd09/rules.mk index 9bdb5fd9245f..6e7633bfe015 100644 --- a/keyboards/ymdk/ymd09/rules.mk +++ b/keyboards/ymdk/ymd09/rules.mk @@ -1,13 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -LTO_ENABLE = yes # reduce firmware size +# This file intentionally left blank diff --git a/keyboards/ymdk/ymd09/ymd09.c b/keyboards/ymdk/ymd09/ymd09.c deleted file mode 100644 index 179c0c6b3e74..000000000000 --- a/keyboards/ymdk/ymd09/ymd09.c +++ /dev/null @@ -1 +0,0 @@ -#include "ymd09.h" diff --git a/keyboards/ymdk/ymd09/ymd09.h b/keyboards/ymdk/ymd09/ymd09.h deleted file mode 100644 index 76cb5d3f0c34..000000000000 --- a/keyboards/ymdk/ymd09/ymd09.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "quantum.h" - -#define LAYOUT( \ - K00, K01, K02, \ - K10, K11, K12, \ - K20, K21, K22 \ -) { \ - { K00, K01, K02 }, \ - { K10, K11, K12 }, \ - { K20, K21, K22 } \ -} diff --git a/lib/python/qmk/c_parse.py b/lib/python/qmk/c_parse.py index 83ab1d1e6d63..b8e5f6a3c9d3 100644 --- a/lib/python/qmk/c_parse.py +++ b/lib/python/qmk/c_parse.py @@ -90,8 +90,10 @@ def find_layouts(file): cli.log.error('Invalid LAYOUT macro in %s: Empty parameter name in macro %s at pos %s.', file, macro_name, i) elif key['label'] not in matrix_locations: cli.log.error('Invalid LAYOUT macro in %s: Key %s in macro %s has no matrix position!', file, key['label'], macro_name) + elif len(matrix_locations.get(key['label'])) > 1: + cli.log.error('Invalid LAYOUT macro in %s: Key %s in macro %s has multiple matrix positions (%s)', file, key['label'], macro_name, ', '.join(str(x) for x in matrix_locations[key['label']])) else: - key['matrix'] = matrix_locations[key['label']] + key['matrix'] = matrix_locations[key['label']][0] parsed_layouts[macro_name] = { 'layout': parsed_layout, @@ -186,7 +188,9 @@ def _parse_matrix_locations(matrix, file, macro_name): row = row.replace('{', '').replace('}', '') for col_num, identifier in enumerate(row.split(',')): if identifier != 'KC_NO': - matrix_locations[identifier] = [row_num, col_num] + if identifier not in matrix_locations: + matrix_locations[identifier] = [] + matrix_locations[identifier].append([row_num, col_num]) return matrix_locations diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py index 11d4616199d3..580e080eeb56 100755 --- a/lib/python/qmk/cli/generate/api.py +++ b/lib/python/qmk/cli/generate/api.py @@ -8,7 +8,6 @@ from qmk.datetime import current_datetime from qmk.info import info_json -from qmk.json_encoders import InfoJSONEncoder from qmk.json_schema import json_load from qmk.keymap import list_keymaps from qmk.keyboard import find_readme, list_keyboards @@ -43,14 +42,14 @@ def _resolve_keycode_specs(output_folder): overall = load_spec(version) output_file = output_folder / f'constants/keycodes_{version}.json' - output_file.write_text(json.dumps(overall), encoding='utf-8') + output_file.write_text(json.dumps(overall, separators=(',', ':')), encoding='utf-8') for lang in list_languages(): for version in list_versions(lang): overall = load_spec(version, lang) output_file = output_folder / f'constants/keycodes_{lang}_{version}.json' - output_file.write_text(json.dumps(overall, indent=4), encoding='utf-8') + output_file.write_text(json.dumps(overall, separators=(',', ':')), encoding='utf-8') # Purge files consumed by 'load_spec' shutil.rmtree(output_folder / 'constants/keycodes/') @@ -64,7 +63,7 @@ def _filtered_copy(src, dst): data = json_load(src) dst = dst.with_suffix('.json') - dst.write_text(json.dumps(data), encoding='utf-8') + dst.write_text(json.dumps(data, separators=(',', ':')), encoding='utf-8') return dst return shutil.copy2(src, dst) @@ -130,7 +129,7 @@ def generate_api(cli): } keyboard_dir.mkdir(parents=True, exist_ok=True) - keyboard_json = json.dumps({'last_updated': current_datetime(), 'keyboards': {keyboard_name: kb_json}}) + keyboard_json = json.dumps({'last_updated': current_datetime(), 'keyboards': {keyboard_name: kb_json}}, separators=(',', ':')) if not cli.args.dry_run: keyboard_info.write_text(keyboard_json, encoding='utf-8') cli.log.debug('Wrote file %s', keyboard_info) @@ -144,7 +143,7 @@ def generate_api(cli): keymap_hjson = kb_json['keymaps'][keymap]['path'] keymap_json = v1_dir / keymap_hjson keymap_json.parent.mkdir(parents=True, exist_ok=True) - keymap_json.write_text(json.dumps(json_load(Path(keymap_hjson))), encoding='utf-8') + keymap_json.write_text(json.dumps(json_load(Path(keymap_hjson)), separators=(',', ':')), encoding='utf-8') cli.log.debug('Wrote keymap %s', keymap_json) if 'usb' in kb_json: @@ -173,12 +172,12 @@ def generate_api(cli): _resolve_keycode_specs(v1_dir) # Write the global JSON files - keyboard_all_json = json.dumps({'last_updated': current_datetime(), 'keyboards': kb_all}, cls=InfoJSONEncoder) - usb_json = json.dumps({'last_updated': current_datetime(), 'usb': usb_list}, cls=InfoJSONEncoder) - keyboard_list_json = json.dumps({'last_updated': current_datetime(), 'keyboards': keyboard_list}, cls=InfoJSONEncoder) - keyboard_aliases_json = json.dumps({'last_updated': current_datetime(), 'keyboard_aliases': keyboard_aliases}, cls=InfoJSONEncoder) - keyboard_metadata_json = json.dumps(keyboard_metadata, cls=InfoJSONEncoder) - constants_metadata_json = json.dumps({'last_updated': current_datetime(), 'constants': _list_constants(v1_dir)}) + keyboard_all_json = json.dumps({'last_updated': current_datetime(), 'keyboards': kb_all}, separators=(',', ':')) + usb_json = json.dumps({'last_updated': current_datetime(), 'usb': usb_list}, separators=(',', ':')) + keyboard_list_json = json.dumps({'last_updated': current_datetime(), 'keyboards': keyboard_list}, separators=(',', ':')) + keyboard_aliases_json = json.dumps({'last_updated': current_datetime(), 'keyboard_aliases': keyboard_aliases}, separators=(',', ':')) + keyboard_metadata_json = json.dumps(keyboard_metadata, separators=(',', ':')) + constants_metadata_json = json.dumps({'last_updated': current_datetime(), 'constants': _list_constants(v1_dir)}, separators=(',', ':')) if not cli.args.dry_run: keyboard_all_file.write_text(keyboard_all_json, encoding='utf-8') diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 941e6aa411fb..909118790c8d 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -12,6 +12,7 @@ from qmk.search import search_keymap_targets +@cli.argument('builds', nargs='*', arg_only=True, help="List of builds in form : to compile in parallel. Specifying this overrides all other target search options.") @cli.argument('-t', '--no-temp', arg_only=True, action='store_true', help="Remove temporary files during build.") @cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @@ -37,7 +38,11 @@ def mass_compile(cli): builddir = Path(QMK_FIRMWARE) / '.build' makefile = builddir / 'parallel_kb_builds.mk' - targets = search_keymap_targets(cli.args.keymap, cli.args.filter) + if len(cli.args.builds) > 0: + targets = [(e[0], e[1]) for e in [b.split(':') for b in cli.args.builds]] + else: + targets = search_keymap_targets(cli.args.keymap, cli.args.filter) + if len(targets) == 0: return @@ -71,9 +76,6 @@ def mass_compile(cli): f"""\ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.elf" 2>/dev/null || true @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.map" 2>/dev/null || true - @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.hex" 2>/dev/null || true - @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.bin" 2>/dev/null || true - @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.uf2" 2>/dev/null || true @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}" || true @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}_{keymap_name}" || true """# noqa diff --git a/lib/python/qmk/painter_qgf.py b/lib/python/qmk/painter_qgf.py index 71ce1f5a02ce..2b8edfb04db3 100644 --- a/lib/python/qmk/painter_qgf.py +++ b/lib/python/qmk/painter_qgf.py @@ -372,8 +372,8 @@ def rgb888_to_qmk_hsv888(e): delta_descriptor = QGFFrameDeltaDescriptorV1() delta_descriptor.left = location[0] delta_descriptor.top = location[1] - delta_descriptor.right = location[0] + size[0] - delta_descriptor.bottom = location[1] + size[1] + delta_descriptor.right = location[0] + size[0] - 1 + delta_descriptor.bottom = location[1] + size[1] - 1 # Write the delta frame to the output vprint(f'{f"Frame {idx:3d} delta":26s} {fp.tell():5d}d / {fp.tell():04X}h') diff --git a/quantum/painter/qp_draw_image.c b/quantum/painter/qp_draw_image.c index fa806172420b..073f1da8ebfd 100644 --- a/quantum/painter/qp_draw_image.c +++ b/quantum/painter/qp_draw_image.c @@ -273,6 +273,10 @@ static bool qp_drawimage_recolor_impl(painter_device_t device, uint16_t x, uint1 if (ret && output_state.pixel_write_pos > 0) { ret &= driver->driver_vtable->pixdata(device, qp_internal_global_pixdata_buffer, output_state.pixel_write_pos); } + } else if (frame_info->bpp != driver->native_bits_per_pixel) { + // Prevent stuff like drawing 24bpp images on 16bpp displays + qp_dprintf("Image's bpp doesn't match the target display's native_bits_per_pixel\n"); + return false; } else { // Set up the output state struct qp_internal_byte_output_state output_state = {.device = device, .byte_write_pos = 0, .max_bytes = qp_internal_num_pixels_in_buffer(device) * driver->native_bits_per_pixel / 8}; diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index 4e80b318a718..7af06acdf1ef 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -41,7 +41,6 @@ uint8_t velocikey_match_speed(uint8_t minValue, uint8_t maxValue) { } // End: Written by Chris Lewis -static int shift_int = 0; uint8_t current_os, mod_primary_mask, fade_interval, @@ -53,8 +52,6 @@ Color underglow, flashState flash_state = no_flash; fadeState fade_state = add_fade; activityState state = boot; -bool aesthetic = false, - shifty = false; float song_ussr[][2] = SONG(USSR_ANTHEM); @@ -208,7 +205,7 @@ void set_os (uint8_t os, bool update) { flash_color = underglow; flash_state = flash_off; state = boot; - num_extra_flashes_off = 1; + num_extra_flashes_off = 3; } // register GUI if Mac or Ctrl if other @@ -245,17 +242,6 @@ void sec_mod(bool press) { } } -// register Meh if Win or Hyper if other -// KC_MEH/HYPR registers both sides, causes issues with some apps -// I'll do it myself, then -void meh_hyper(bool press) { - if (current_os == OS_WIN) { - (press) ? register_mods(L_BIT_MEH) : unregister_mods(L_BIT_MEH); - } else { - (press) ? register_mods(L_BIT_HYPR) : unregister_mods(L_BIT_HYPR); - } -} - void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { if (use_shift) { register_code(KC_LSFT); @@ -441,56 +427,6 @@ void matrix_scan_user(void) { } bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (aesthetic) { - switch (keycode) { - case KC_A ... KC_0: - case KC_SPACE ... KC_SLASH: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - tap_code(KC_SPACE); - } - return false; - - case KC_BACKSPACE: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - tap_code(keycode); - } - return false; - default: // Do nothing - break; - } - } - - if (shifty) { - switch (keycode) { - case KC_A ... KC_Z: - if (record->event.pressed) { - shift_int += (rand() % 5); - int shift = ((shift_int % 2) == 1) ? true : false; - state = active; - velocikey_accelerate(); - (shift) ? register_code(KC_LSFT) : NULL; - tap_code(keycode); - (shift) ? unregister_code(KC_LSFT) : NULL; - } - return false; - case KC_SPC: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - } - return false; - default: // Do nothing - break; - } - } - switch (keycode) { #ifdef AUDIO_ENABLE case M_USSR: @@ -509,29 +445,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_unicode(0x2014); // — } return false; - case M_LMHYP: - case M_EHYPR: - (keycode = M_LMHYP) ? (record->event.pressed) ? layer_on(_ARROW) : layer_off(_ARROW) : NULL; - meh_hyper(record->event.pressed); - return false; - - case M_SFTY: - if(record->event.pressed){ - num_extra_flashes_off = (shifty) ? 1 : 0; - shifty = !shifty; - flash_color = underglow; - flash_state = flash_off; - return false; - } - - case M_AEST: - if(record->event.pressed){ - num_extra_flashes_off = (aesthetic) ? 1 : 0; - aesthetic = !aesthetic; - flash_color = underglow; - flash_state = flash_off; - return false; - } default: if (record->event.pressed) { diff --git a/users/arkag/arkag.h b/users/arkag/arkag.h index d4bec6598f3a..e127702e94cb 100644 --- a/users/arkag/arkag.h +++ b/users/arkag/arkag.h @@ -4,14 +4,12 @@ #define EECONFIG_USERSPACE (uint8_t *)20 -#define SYMBOL MO(1) -#define MEDIA MO(2) -#define ARROW MO(3) -#define FUNCT MO(4) -#define KEEB MO(5) - -#define L_BIT_MEH MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) -#define L_BIT_HYPR MOD_BIT(KC_LCTL) | MOD_BIT(KC_LGUI) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) +#define SYMBOL MO(_SYMBOL) +#define MEDIA MO(_MEDIA) +#define ARROW MO(_ARROW) +#define FUNCT MO(_FUNCT) +#define KEEB MO(_KEEB) +#define HITBOX TT(_HITBOX) #define LED_FLASH_DELAY 150 @@ -30,6 +28,7 @@ enum { _ARROW, _FUNCT, _KEEB, + _HITBOX, }; typedef enum { @@ -68,10 +67,6 @@ enum custom_keycodes { M_OS, M_DASH, M_USSR, - M_EHYPR, - M_LMHYP, - M_SFTY, - M_AEST, }; void velocikey_accelerate(void); diff --git a/users/horrortroll/config.h b/users/horrortroll/config.h new file mode 100644 index 000000000000..50bc7da53784 --- /dev/null +++ b/users/horrortroll/config.h @@ -0,0 +1,64 @@ +/* Copyright 2023 HorrorTroll + * + * 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 + +/* Forcing to use NKRO instead 6KRO */ +#define FORCE_NKRO + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 + +#if defined(__arm__) + #ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE + #endif +#endif + +#if defined(__AVR_ATmega32U4__) + #define NO_ACTION_ONESHOT + + #ifdef RGB_MATRIX_ENABLE + /* RGB Matrix effect */ + #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT + #undef ENABLE_RGB_MATRIX_BAND_SAT + #undef ENABLE_RGB_MATRIX_BAND_VAL + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL + #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + #undef ENABLE_RGB_MATRIX_DUAL_BEACON + #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON + #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + #undef ENABLE_RGB_MATRIX_RAINDROPS + #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + #undef ENABLE_RGB_MATRIX_HUE_WAVE + #undef ENABLE_RGB_MATRIX_PIXEL_RAIN + + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + #undef ENABLE_RGB_MATRIX_SPLASH + #undef ENABLE_RGB_MATRIX_SOLID_SPLASH + #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif +#endif diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h b/users/horrortroll/horrortroll.c similarity index 69% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h rename to users/horrortroll/horrortroll.c index e850ccfc2e51..1152b2cc9d06 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h +++ b/users/horrortroll/horrortroll.c @@ -1,4 +1,4 @@ -/* Copyright 2022 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -14,19 +14,9 @@ * along with this program. If not, see . */ -#include -#include -#include +#include "horrortroll.h" -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layer_names { - _BASE, - _FN, -}; +#include "rgb_matrix.h" // For CUSTOM_GRADIENT HSV gradient_0 = {205, 250, 255}; @@ -40,28 +30,6 @@ typedef struct { bool reflected; } CUSTOM_PRESETS; -enum layer_keycodes { - //Custom Gradient control keycode - G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase - G1_HUD, //Custom gradient color 1 hue decrease - G1_SAI, //Custom gradient color 1 saturation increase - G1_SAD, //Custom gradient color 1 saturation decrease - G1_VAI, //Custom gradient color 1 value increase - G1_VAD, //Custom gradient color 1 value decrease - G2_HUI, //Custom gradient color 2 hue increase - G2_HUD, //Custom gradient color 2 hue decrease - G2_SAI, //Custom gradient color 2 saturation increase - G2_SAD, //Custom gradient color 2 saturation decrease - G2_VAI, //Custom gradient color 2 value increase - G2_VAD, //Custom gradient color 2 value decrease - G_PRE, //Gradient presets - REF_G, //Toggle between linear and reflected gradient - G_FLIP, //Flip the gradient colors - - //Custom led effect keycode - RGB_C_E, //Cycle user effect -}; - bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint8_t color_adj_step = 5; @@ -184,9 +152,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING); return false; case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT); - return false; - case RGB_MATRIX_CUSTOM_KITT: rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW); return false; default: @@ -195,42 +160,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return false; - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; } return true; } - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(40, rgb.r, rgb.g, rgb.b); - } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { - rgb_matrix_set_color(40, 0, 0, 0); - } - - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(89, rgb.r, rgb.g, rgb.b); - } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { - rgb_matrix_set_color(89, 0, 0, 0); - } - return false; -} diff --git a/users/horrortroll/horrortroll.h b/users/horrortroll/horrortroll.h new file mode 100644 index 000000000000..a251f74d6c08 --- /dev/null +++ b/users/horrortroll/horrortroll.h @@ -0,0 +1,49 @@ +/* Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layer_names { + _BASE, + _FN, +}; + +enum custom_keycodes { + //Custom Gradient control keycode + G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase + G1_HUD, //Custom gradient color 1 hue decrease + G1_SAI, //Custom gradient color 1 saturation increase + G1_SAD, //Custom gradient color 1 saturation decrease + G1_VAI, //Custom gradient color 1 value increase + G1_VAD, //Custom gradient color 1 value decrease + G2_HUI, //Custom gradient color 2 hue increase + G2_HUD, //Custom gradient color 2 hue decrease + G2_SAI, //Custom gradient color 2 saturation increase + G2_SAD, //Custom gradient color 2 saturation decrease + G2_VAI, //Custom gradient color 2 value increase + G2_VAD, //Custom gradient color 2 value decrease + G_PRE, //Gradient presets + REF_G, //Toggle between linear and reflected gradient + G_FLIP, //Flip the gradient colors + + //Custom led effect keycode + RGB_C_E, //Cycle user effect +}; diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/cool_diagonal.c b/users/horrortroll/led/cool_diagonal.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/cool_diagonal.c rename to users/horrortroll/led/cool_diagonal.c diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/custom_gradient.c b/users/horrortroll/led/custom_gradient.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/custom_gradient.c rename to users/horrortroll/led/custom_gradient.c diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c b/users/horrortroll/led/flower_blooming/flower_blooming.c similarity index 100% rename from keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c rename to users/horrortroll/led/flower_blooming/flower_blooming.c diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.h b/users/horrortroll/led/flower_blooming/flower_blooming.h similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.h rename to users/horrortroll/led/flower_blooming/flower_blooming.h diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/random_breath_rainbow.c b/users/horrortroll/led/random_breath_rainbow.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/random_breath_rainbow.c rename to users/horrortroll/led/random_breath_rainbow.c diff --git a/users/horrortroll/readme.md b/users/horrortroll/readme.md new file mode 100644 index 000000000000..420c9b098602 --- /dev/null +++ b/users/horrortroll/readme.md @@ -0,0 +1,24 @@ +/* Copyright 2023 HorrorTroll + * + * 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 . + */ + +# My personal keymap with custom LED + +### Custom LED effect list: + +- Custom gradient ([ported from SirTimmyTimbit code](https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt)) +- Cool diagonal ([ported from pleasuretek code](https://github.com/pleasuretek/qmk_firmware)) +- Flower Blooming +- Random breath rainbow ([based from daed code](https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed) and modify by me) diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc b/users/horrortroll/rgb_matrix_user.inc similarity index 89% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc rename to users/horrortroll/rgb_matrix_user.inc index 1e09e3f0c12d..08c608dc44a5 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc +++ b/users/horrortroll/rgb_matrix_user.inc @@ -1,7 +1,6 @@ RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) RGB_MATRIX_EFFECT(COOL_DIAGONAL) RGB_MATRIX_EFFECT(FLOWER_BLOOMING) -RGB_MATRIX_EFFECT(KITT) RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) #ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -9,7 +8,6 @@ RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) #include "led/custom_gradient.c" #include "led/cool_diagonal.c" #include "led/flower_blooming/flower_blooming.c" -#include "led/kitt.c" #include "led/random_breath_rainbow.c" #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/users/horrortroll/rules.mk b/users/horrortroll/rules.mk new file mode 100644 index 000000000000..579f5fd38b64 --- /dev/null +++ b/users/horrortroll/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +RGB_MATRIX_CUSTOM_USER = yes + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += $(USER_PATH)/horrortroll.c +endif diff --git a/util/ci/generate_failure_markdown.sh b/util/ci/generate_failure_markdown.sh new file mode 100755 index 000000000000..ccb3eacb3501 --- /dev/null +++ b/util/ci/generate_failure_markdown.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +this_script="$(realpath "${BASH_SOURCE[0]}")" +script_dir="$(realpath "$(dirname "$this_script")")" +qmk_firmware_dir="$(realpath "$script_dir/../../")" + +dump_failure_info() { + local failure_file="$1" + local keyboard=$(cat "$failure_file" | grep 'CI Metadata: KEYBOARD=' | cut -d= -f2) + local keymap=$(cat "$failure_file" | grep 'CI Metadata: KEYMAP=' | cut -d= -f2) + echo "## ${keyboard}:${keymap}" + echo "\`\`\`" + cat "$failure_file" | sed -e $'s/\x1b\[[0-9;]*m//g' | grep -v "CI Metadata:" | grep -vP "(Entering|Leaving) directory" + echo "\`\`\`" +} + +for failure_file in $(find "$qmk_firmware_dir/.build" -name 'failed.log.*' | sort); do + dump_failure_info "$failure_file" +done + +exit 0