forked from mirror/qmk_firmware
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15a106b1ef | ||
|
|
ac9f9f9efb | ||
|
|
ec83c0b185 | ||
|
|
d300811009 | ||
|
|
27e6e27d3a | ||
|
|
5687fc7646 | ||
|
|
ebe36ea83c | ||
|
|
6b205c3064 | ||
|
|
b5d0c44690 | ||
|
|
d0e0b9e583 | ||
|
|
b0dc99fbd8 | ||
|
|
5b8dae0d61 | ||
|
|
fd56a2a1dc | ||
|
|
be9f6e679b | ||
|
|
b53356f7ab | ||
|
|
c402bac023 | ||
|
|
a030e8094f | ||
|
|
c3c401f91d | ||
|
|
b63e388692 | ||
|
|
81f3f0f3e9 | ||
|
|
d0c36a7683 | ||
|
|
c6cc638752 | ||
|
|
621dbdf8ee | ||
|
|
896f38c52c | ||
|
|
f56580404d | ||
|
|
5bb8f7ae84 | ||
|
|
d31d1488e8 |
8
.github/workflows/ci_builds.yml
vendored
8
.github/workflows/ci_builds.yml
vendored
@@ -39,11 +39,13 @@ jobs:
|
||||
- name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
|
||||
run: |
|
||||
export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
|
||||
qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes
|
||||
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
|
||||
./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
|
||||
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
|
||||
|
||||
@@ -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 <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
|
||||
2. Open the QMK Firmware folder that you cloned from GitHub.
|
||||
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
|
||||
|
||||
## 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 <keyboard> -km <keymap>` 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.
|
||||
@@ -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 )
|
||||
};
|
||||
|
||||
|
||||
39
keyboards/4pplet/steezy60/keymaps/canon/keymap.c
Normal file
39
keyboards/4pplet/steezy60/keymaps/canon/keymap.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#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)
|
||||
};
|
||||
@@ -1,18 +1,34 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#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, _______, _______, _______ )
|
||||
};
|
||||
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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
|
||||
};
|
||||
|
||||
@@ -1,32 +1,48 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#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(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ )
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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).
|
||||
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
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
#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}
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define RGB_DI_PIN D3
|
||||
#define RGBLED_NUM 12
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#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
|
||||
@@ -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 }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "rev_a.h"
|
||||
@@ -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} \
|
||||
}
|
||||
@@ -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
|
||||
|
||||
19
keyboards/4pplet/steezy60/rev_b/config.h
Normal file
19
keyboards/4pplet/steezy60/rev_b/config.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
725
keyboards/4pplet/steezy60/rev_b/info.json
Normal file
725
keyboards/4pplet/steezy60/rev_b/info.json
Normal file
@@ -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 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
10
keyboards/4pplet/steezy60/rev_b/rules.mk
Normal file
10
keyboards/4pplet/steezy60/rev_b/rules.mk
Normal file
@@ -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
|
||||
73
keyboards/alhenkb/macropad5x4/info.json
Normal file
73
keyboards/alhenkb/macropad5x4/info.json
Normal file
@@ -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},
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
27
keyboards/alhenkb/macropad5x4/keymaps/default/keymap.c
Normal file
27
keyboards/alhenkb/macropad5x4/keymaps/default/keymap.c
Normal file
@@ -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
|
||||
),
|
||||
};
|
||||
48
keyboards/alhenkb/macropad5x4/keymaps/numpad/keymap.c
Normal file
48
keyboards/alhenkb/macropad5x4/keymaps/numpad/keymap.c
Normal file
@@ -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, _______
|
||||
)
|
||||
};
|
||||
27
keyboards/alhenkb/macropad5x4/keymaps/via/keymap.c
Normal file
27
keyboards/alhenkb/macropad5x4/keymaps/via/keymap.c
Normal file
@@ -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
|
||||
),
|
||||
};
|
||||
1
keyboards/alhenkb/macropad5x4/keymaps/via/rules.mk
Normal file
1
keyboards/alhenkb/macropad5x4/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
41
keyboards/alhenkb/macropad5x4/readme.md
Normal file
41
keyboards/alhenkb/macropad5x4/readme.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# AlhenKB - Macropad 5x4 and Numpad
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
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
|
||||
1
keyboards/alhenkb/macropad5x4/rules.mk
Normal file
1
keyboards/alhenkb/macropad5x4/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
56
keyboards/butterkeebs/pocketpad/info.json
Normal file
56
keyboards/butterkeebs/pocketpad/info.json
Normal file
@@ -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]}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
14
keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c
Normal file
14
keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,14 @@
|
||||
// ButterKeebs <butterkeebs@github>
|
||||
// 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)
|
||||
};
|
||||
27
keyboards/butterkeebs/pocketpad/readme.md
Normal file
27
keyboards/butterkeebs/pocketpad/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# PocketPad
|
||||
|
||||

|
||||
|
||||
*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
|
||||
1
keyboards/butterkeebs/pocketpad/rules.mk
Normal file
1
keyboards/butterkeebs/pocketpad/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally blank
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2022 HorrorTroll <https://github.com/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,15 +13,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "led/flower_blooming/flower_blooming.h"
|
||||
// The pin connected to the data pin of the LEDs
|
||||
#define RGBLIGHT_LAYERS//允许您定义可打开或关闭的照明层。非常适合显示当前键盘层或大写锁定状态。
|
||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF//如果已定义,则即使 RGB 光源处于关闭状态,也会显示照明图层。
|
||||
|
||||
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); }
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE//尝试使开关状态与键盘指示灯状态保持一致
|
||||
28
keyboards/citrus/erdnuss65/erdnuss65.c
Normal file
28
keyboards/citrus/erdnuss65/erdnuss65.c
Normal file
@@ -0,0 +1,28 @@
|
||||
/* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "quantum.h"
|
||||
|
||||
//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;
|
||||
}
|
||||
109
keyboards/citrus/erdnuss65/info.json
Normal file
109
keyboards/citrus/erdnuss65/info.json
Normal file
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
23
keyboards/citrus/erdnuss65/keymaps/default/keymap.c
Normal file
23
keyboards/citrus/erdnuss65/keymaps/default/keymap.c
Normal file
@@ -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
|
||||
)
|
||||
};
|
||||
|
||||
39
keyboards/citrus/erdnuss65/keymaps/via/keymap.c
Normal file
39
keyboards/citrus/erdnuss65/keymaps/via/keymap.c
Normal file
@@ -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(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
1
keyboards/citrus/erdnuss65/keymaps/via/rules.mk
Normal file
1
keyboards/citrus/erdnuss65/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
22
keyboards/citrus/erdnuss65/readme.md
Normal file
22
keyboards/citrus/erdnuss65/readme.md
Normal file
@@ -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
|
||||
2
keyboards/citrus/erdnuss65/rules.mk
Normal file
2
keyboards/citrus/erdnuss65/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
2
keyboards/citrus/readme.md
Normal file
2
keyboards/citrus/readme.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Citrus Lab
|
||||
QMK folders for PCB commissions.
|
||||
41
keyboards/crkbd/keymaps/md40/config.h
Normal file
41
keyboards/crkbd/keymaps/md40/config.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
38
keyboards/crkbd/keymaps/md40/keymap.c
Normal file
38
keyboards/crkbd/keymaps/md40/keymap.c
Normal file
@@ -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,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
_______,_______,_______ , _______,_______,_______
|
||||
// `----+----+----' `----+----+----'
|
||||
)
|
||||
};
|
||||
|
||||
19
keyboards/crkbd/keymaps/md40/readme.md
Normal file
19
keyboards/crkbd/keymaps/md40/readme.md
Normal file
@@ -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
|
||||
|
||||

|
||||
|
||||
## Fn Layer
|
||||
|
||||

|
||||
8
keyboards/crkbd/keymaps/md40/rules.mk
Normal file
8
keyboards/crkbd/keymaps/md40/rules.mk
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
21
keyboards/geistmaschine/macropod/config.h
Normal file
21
keyboards/geistmaschine/macropod/config.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* This program is free software: you can 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
41
keyboards/geistmaschine/macropod/info.json
Normal file
41
keyboards/geistmaschine/macropod/info.json
Normal file
@@ -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] }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
35
keyboards/geistmaschine/macropod/keymaps/default/keymap.c
Normal file
35
keyboards/geistmaschine/macropod/keymaps/default/keymap.c
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
35
keyboards/geistmaschine/macropod/keymaps/via/keymap.c
Normal file
35
keyboards/geistmaschine/macropod/keymaps/via/keymap.c
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
2
keyboards/geistmaschine/macropod/keymaps/via/rules.mk
Normal file
2
keyboards/geistmaschine/macropod/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
VIA_ENABLE = yes
|
||||
21
keyboards/geistmaschine/macropod/macropod.c
Normal file
21
keyboards/geistmaschine/macropod/macropod.c
Normal file
@@ -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
|
||||
87
keyboards/geistmaschine/macropod/matrix.c
Normal file
87
keyboards/geistmaschine/macropod/matrix.c
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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;
|
||||
}
|
||||
25
keyboards/geistmaschine/macropod/readme.md
Normal file
25
keyboards/geistmaschine/macropod/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Geistmaschine Macropod
|
||||
|
||||

|
||||
|
||||
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
|
||||
5
keyboards/geistmaschine/macropod/rules.mk
Normal file
5
keyboards/geistmaschine/macropod/rules.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
CUSTOM_MATRIX = lite
|
||||
|
||||
VPATH += drivers/gpio
|
||||
SRC += pca9555.c matrix.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
84
keyboards/gmmk/numpad/config.h
Normal file
84
keyboards/gmmk/numpad/config.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -1,4 +1,5 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
* 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
|
||||
@@ -13,10 +14,13 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
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;
|
||||
}
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); }
|
||||
|
||||
#include_next <halconf.h>
|
||||
51
keyboards/gmmk/numpad/info.json
Normal file
51
keyboards/gmmk/numpad/info.json
Normal file
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
60
keyboards/gmmk/numpad/keymaps/default/keymap.c
Normal file
60
keyboards/gmmk/numpad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,60 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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();
|
||||
}
|
||||
79
keyboards/gmmk/numpad/keymaps/via/keymap.c
Normal file
79
keyboards/gmmk/numpad/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,79 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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();
|
||||
}
|
||||
2
keyboards/gmmk/numpad/keymaps/via/rules.mk
Normal file
2
keyboards/gmmk/numpad/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE=yes
|
||||
ENCODER_MAP_ENABLE=yes
|
||||
133
keyboards/gmmk/numpad/matrix.c
Normal file
133
keyboards/gmmk/numpad/matrix.c
Normal file
@@ -0,0 +1,133 @@
|
||||
// Copyright 2023 Cameron Varley (@RustedAperture)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*
|
||||
* scan matrix
|
||||
*/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#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;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
* 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
|
||||
@@ -14,12 +15,12 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "led/rainbow_reactive_simple/rainbow_reactive_simple.h"
|
||||
#pragma once
|
||||
|
||||
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;
|
||||
}
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
bool RAINBOW_REACTIVE_SIMPLE(effect_params_t* params) { return effect_rainbow_reactive(params, &RAINBOW_REACTIVE_SIMPLE_math); }
|
||||
#undef WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
// #undef WB32_ADC_USE_ADC1
|
||||
#define WB32_ADC_USE_ADC1 TRUE
|
||||
136
keyboards/gmmk/numpad/numpad.c
Normal file
136
keyboards/gmmk/numpad/numpad.c
Normal file
@@ -0,0 +1,136 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
|
||||
/* 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
|
||||
@@ -16,11 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Forcing to use NKRO instead 6KRO */
|
||||
#define FORCE_NKRO
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 2
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
|
||||
#endif
|
||||
#ifndef TAP_CODE_DELAY
|
||||
# define TAP_CODE_DELAY 10
|
||||
#endif
|
||||
40
keyboards/gmmk/numpad/readme.md
Normal file
40
keyboards/gmmk/numpad/readme.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# GMMK NUMPAD
|
||||
|
||||

|
||||
|
||||
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
|
||||
26
keyboards/gmmk/numpad/rules.mk
Normal file
26
keyboards/gmmk/numpad/rules.mk
Normal file
@@ -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
|
||||
@@ -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 <string.h>
|
||||
#include <math.h>
|
||||
#include <lib/lib8tion/lib8tion.h>
|
||||
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
|
||||
/* Copyright 2023 HorrorTroll <https://github.com/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 <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <lib/lib8tion/lib8tion.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
|
||||
@@ -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();
|
||||
|
||||
@@ -1,3 +1 @@
|
||||
# Keymap with VIA and Bongo Cat on OLED
|
||||
|
||||
Keymap is default 87 qwerty, with TKL 7u-spacebar layout
|
||||
|
||||
@@ -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 <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <lib/lib8tion/lib8tion.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
|
||||
@@ -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)) {
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
|
||||
/* Copyright 2023 HorrorTroll <https://github.com/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] = {
|
||||
|
||||
|
||||
@@ -1,305 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "oled/oled_stuff.h"
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <lib/lib8tion/lib8tion.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,
|
||||
};
|
||||
|
||||
// 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;
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// 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); }
|
||||
@@ -1,45 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
/* Copyright 2021 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
|
||||
RGB_MATRIX_CUSTOM_USER = yes
|
||||
@@ -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 <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <lib/lib8tion/lib8tion.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
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#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 }
|
||||
|
||||
@@ -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,
|
||||
_______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
|
||||
## 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.
|
||||
38
keyboards/handwired/maverick0197/keydeck8/info.json
Normal file
38
keyboards/handwired/maverick0197/keydeck8/info.json
Normal file
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
33
keyboards/handwired/maverick0197/keydeck8/keydeck8.c
Normal file
33
keyboards/handwired/maverick0197/keydeck8/keydeck8.c
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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)
|
||||
};
|
||||
#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
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
40
keyboards/handwired/maverick0197/keydeck8/readme.md
Normal file
40
keyboards/handwired/maverick0197/keydeck8/readme.md
Normal file
@@ -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)
|
||||
|
||||
|
||||

|
||||
|
||||
---
|
||||
Wiring Diagram:
|
||||
|
||||

|
||||
|
||||
|
||||
Pinouts for Pro Micro:
|
||||
|
||||

|
||||
|
||||
---
|
||||
* 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.
|
||||
1
keyboards/handwired/maverick0197/keydeck8/rules.mk
Normal file
1
keyboards/handwired/maverick0197/keydeck8/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
6
keyboards/hotdox76v2/keymaps/dancxjo/config.h
Normal file
6
keyboards/hotdox76v2/keymaps/dancxjo/config.h
Normal file
@@ -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
|
||||
177
keyboards/hotdox76v2/keymaps/dancxjo/keymap.c
Normal file
177
keyboards/hotdox76v2/keymaps/dancxjo/keymap.c
Normal file
@@ -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;
|
||||
}
|
||||
4
keyboards/hotdox76v2/keymaps/dancxjo/rules.mk
Normal file
4
keyboards/hotdox76v2/keymaps/dancxjo/rules.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
COMMAND_ENABLE = yes
|
||||
VIA_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
@@ -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
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
"pid": "0x6509",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"backlight": true
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "B8",
|
||||
"breathing": true
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
"pid": "0x6509",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"features": {
|
||||
"backlight": true
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "D4",
|
||||
"breathing": true
|
||||
|
||||
22
keyboards/mechlovin/mechlovin9/rev3/info.json
Normal file
22
keyboards/mechlovin/mechlovin9/rev3/info.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
23
keyboards/mechlovin/mechlovin9/rev3/readme.md
Normal file
23
keyboards/mechlovin/mechlovin9/rev3/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# mechlovin9
|
||||
|
||||

|
||||
|
||||
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.
|
||||
0
keyboards/mechlovin/mechlovin9/rev3/rules.mk
Normal file
0
keyboards/mechlovin/mechlovin9/rev3/rules.mk
Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user