diff --git a/.github/workflows/develop_update.yml b/.github/workflows/develop_update.yml index 285720fefe..1f5c841bff 100644 --- a/.github/workflows/develop_update.yml +++ b/.github/workflows/develop_update.yml @@ -5,7 +5,6 @@ on: branches: - master - jobs: develop_update: runs-on: ubuntu-latest @@ -22,14 +21,7 @@ jobs: git fetch origin master develop git checkout develop - - name: Check if branch locked - id: check_locked - uses: andstor/file-existence-action@v1 - with: - files: ".locked" - - name: Update develop from master - if: steps.check_locked.outputs.files_exists == 'false' run: | git config --global user.name "QMK Bot" git config --global user.email "hello@qmk.fm" diff --git a/.github/workflows/feature_branch_update.yml b/.github/workflows/feature_branch_update.yml new file mode 100644 index 0000000000..fc7bbafd18 --- /dev/null +++ b/.github/workflows/feature_branch_update.yml @@ -0,0 +1,34 @@ +name: Update feature branches after develop merge + +on: + push: + branches: + - develop + +jobs: + feature_branch_update: + runs-on: ubuntu-latest + + if: github.repository == 'qmk/qmk_firmware' + + strategy: + matrix: + branch: + - xap + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout branch + run: | + git fetch origin develop ${{ matrix.branch }} + git checkout ${{ matrix.branch }} + + - name: Update branch from develop + run: | + git config --global user.name "QMK Bot" + git config --global user.email "hello@qmk.fm" + git merge origin/develop + git push origin ${{ matrix.branch }} diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md index 148ea92b9e..4239cdfd2a 100644 --- a/docs/feature_bootmagic.md +++ b/docs/feature_bootmagic.md @@ -23,14 +23,35 @@ And to trigger the bootloader, you hold this key down when plugging the keyboard ## Split Keyboards -When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. To do so, add these entries to your `config.h` file: +When [handedness](feature_split_keyboard.md#setting-handedness) is predetermined via options like `SPLIT_HAND_PIN` or `EE_HANDS`, you might need to configure a different key between halves. To identify the correct key for the right half, examine the split key matrix defined in the `.h` file, e.g.: + +```c +#define LAYOUT_split_3x5_2( \ + L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \ + L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \ + L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \ + L16, L17, R16, R17 \ + ) \ + { \ + { L01, L02, L03, L04, L05 }, \ + { L06, L07, L08, L09, L10 }, \ + { L11, L12, L13, L14, L15 }, \ + { L16, L17, KC_NO, KC_NO, KC_NO }, \ + { R01, R02, R03, R04, R05 }, \ + { R06, R07, R08, R09, R10 }, \ + { R11, R12, R13, R14, R15 }, \ + { R16, R17, KC_NO, KC_NO, KC_NO } \ + } +``` + +If you pick the top right key for the right half, it is `R05` on the top layout. Within the key matrix below, `R05` is located on row 4 columnn 4. To use that key as the right half's Bootmagic Lite trigger, add these entries to your `config.h` file: ```c #define BOOTMAGIC_LITE_ROW_RIGHT 4 -#define BOOTMAGIC_LITE_COLUMN_RIGHT 1 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 4 ``` -By default, these values are not set. +?> These values are not set by default. ## Advanced Bootmagic Lite @@ -51,7 +72,7 @@ void bootmagic_lite(void) { } ``` -You can additional feature here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic Lite. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware. +You can define additional logic here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic Lite. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware. ## Addenda diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 23a16b843d..8c51865558 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -325,7 +325,8 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { if (set_scrolling) { mouse_report.h = mouse_report.x; mouse_report.v = mouse_report.y; - mouse_report.x = mouse_report.y = 0 + mouse_report.x = 0; + mouse_report.y = 0; } return mouse_report; } diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md index febb34c574..08f56e987b 100644 --- a/docs/isp_flashing_guide.md +++ b/docs/isp_flashing_guide.md @@ -4,7 +4,7 @@ In order to flash a microcontroller over USB, it needs something called a bootlo However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller. -There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. +There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. The one current exception is the [STM32F103](#flashing-stm32duino-bootloader). ## Hardware @@ -260,3 +260,93 @@ For mass production purposes, it is possible to join the bootloader and QMK firm 4. Save it as a new file, for example `__production.hex`. You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB. + +## Flashing STM32Duino Bootloader + +As mentioned above, *most* supported STM32 devices already possess a USB DFU bootloader which cannot be overwritten, however the ROM bootloader in the STM32F103 used on the Bluepill is not USB capable. In this case an ST-Link V2 dongle is required to upload the STM32Duino bootloader to the device. These can be readily purchased for relatively cheap on eBay and other places. + +This bootloader is a descendant of the Maple bootloader by Leaflabs, and is compatible with dfu-util. + +### Software + +To communicate with the ST-Link, you must install the following packages: + +* **macOS:** `brew install stlink openocd` +* **Windows (MSYS2):** `pacman -S mingw-w64-x86_64-stlink mingw-w64-x86_64-openocd` +* **Linux:** will vary by distribution, but will likely be `stlink` and `openocd` through your particular package manager + +Additionally, you may need to update the ST-Link's firmware with the [`STSW-LINK007`](https://www.st.com/en/development-tools/stsw-link007.html) application. Note you will be asked to provide your name and email address if you do not have an ST.com account (this does not create one). + +Finally, the bootloader binary itself can be downloaded from [here](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/generic_boot20_pc13.bin). + +### Wiring + +Connect the four-pin header on the end of the Bluepill to the matching pins on the ST-Link (the pinout will usually be printed on the side): + +|ST-Link |Bluepill| +|-------------|--------| +|`GND` (6) |`GND` | +|`SWCLK` (2) |`DCLK` | +|`SWDIO` (4) |`DIO` | +|`3.3V` (8) |`3.3` | + +### Flashing + +Firstly, make sure both jumpers on the Bluepill are set to 0. + +Check that the ST-Link can talk to the Bluepill by running `st-info --probe`: + +``` +Found 1 stlink programmers + version: V2J37S7 + serial: 2C1219002B135937334D4E00 + flash: 65536 (pagesize: 1024) + sram: 20480 + chipid: 0x0410 + descr: F1xx Medium-density +``` + +If the reported `chipid` is `0x0410`, everything is working. If it is `0x0000`, check your wiring, and try swapping the `SWDIO` and `SWCLK` pins, as some ST-Link dongles may have incorrect pinouts. + +Next, run the following command: + +``` +st-flash --reset --format binary write 0x08000000 +``` + +where `` is the path to the bootloader `.bin` file above. You can run this command from the directory you downloaded it to, so that you can simply pass in the filename. + +If all goes well, you should get output similar to the following: + +``` +st-flash 1.7.0 +2022-03-08T12:16:30 INFO common.c: F1xx Medium-density: 20 KiB SRAM, 64 KiB flash in at least 1 KiB pages. +file generic_boot20_pc13.bin md5 checksum: 333c30605e739ce9bedee5999fdaf81b, stlink checksum: 0x0008e534 +2022-03-08T12:16:30 INFO common.c: Attempting to write 7172 (0x1c04) bytes to stm32 address: 134217728 (0x8000000) +2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000000 erased +2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000400 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000800 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000c00 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001000 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001400 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001800 erased +2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001c00 erased +2022-03-08T12:16:31 INFO common.c: Finished erasing 8 pages of 1024 (0x400) bytes +2022-03-08T12:16:31 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL +2022-03-08T12:16:31 INFO flash_loader.c: Successfully loaded flash loader in sram +2022-03-08T12:16:31 INFO flash_loader.c: Clear DFSR + 8/ 8 pages written +2022-03-08T12:16:31 INFO common.c: Starting verification of write complete +2022-03-08T12:16:31 INFO common.c: Flash written and verified! jolly good! +2022-03-08T12:16:31 WARN common.c: NRST is not connected +``` + +Otherwise, if you receive an `Unknown memory region` error, run the following command to unlock the STM32F103: + +``` +openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init; reset halt; stm32f1x unlock 0; reset halt; exit" +``` + +Then re-plug the ST-Link and try again. + +After all of this, unplug the Bluepill from the ST-Link and connect it to USB. It should now be ready to flash using dfu-util, the QMK CLI or Toolbox. diff --git a/docs/tap_hold.md b/docs/tap_hold.md index d206c10cc5..39fa84a9f3 100644 --- a/docs/tap_hold.md +++ b/docs/tap_hold.md @@ -126,6 +126,61 @@ The code which decides between the tap and hold actions of dual-role keys suppor Note that until the tap-or-hold decision completes (which happens when either the dual-role key is released, or the tapping term has expired, or the extra condition for the selected decision mode is satisfied), key events are delayed and not transmitted to the host immediately. The default mode gives the most delay (if the dual-role key is held down, this mode always waits for the whole tapping term), and the other modes may give less delay when other keys are pressed, because the hold action may be selected earlier. +### Default Mode +Example sequence 1 (the `L` key is also mapped to `KC_RGHT` on layer 2): + +``` + TAPPING_TERM + +---------------|--------------------+ + | +-------------|-------+ | + | | LT(2, KC_A) | | | + | +-------------|-------+ | + | | +--------------+ | + | | | KC_L | | + | | +--------------+ | + +---------------|--------------------+ +``` +The above sequence would send a `KC_RGHT`, since `LT(2, KC_A)` is held longer than the `TAPPING_TERM`. + +--- + +Example sequence 2 (the `L` key is also mapped to `KC_RGHT` on layer 2): + +``` + TAPPING_TERM + +-----------------------------|------+ + | +---------------+ | | + | | LT(2, KC_A) | | | + | +---------------+ | | + | +--------------+ | | + | | KC_L | | | + | +--------------+ | | + +-----------------------------|------+ +``` +The above sequence will not send `KC_RGHT` but `KC_A` `KC_L` instead, since `LT(2, KC_A)` is not held longer than the `TAPPING_TERM`. + +--- + +Example sequence 3 (Mod Tap): + +``` + TAPPING_TERM + +---------------------------|--------+ + | +-------------+ | | + | | SFT_T(KC_A) | | | + | +-------------+ | | + | +--------------+ | | + | | KC_X | | | + | +--------------+ | | + +---------------------------|--------+ +``` +Based previous examples, you might have expected the output of the above sequence to be `KC_A` `KC_X` +since `SFT_T(KC_A)` is NOT held longer than the `TAPPING_TERM`. +However, the actual output would be capital `X` (`SHIFT` + `x`) due to reasons +explained under [Ignore Mod Tap Interrupt](#ignore-mod-tap-interrupt). + + + ### Permissive Hold The “permissive hold” mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`: @@ -145,6 +200,18 @@ An example of a sequence which is affected by the “permissive hold” mode: - `KC_L` Up - `LT(2, KC_A)` Up +``` + TAPPING_TERM + +---------------------------|--------+ + | +----------------------+ | | + | | LT(2, KC_A) | | | + | +----------------------+ | | + | +--------------+ | | + | | KC_L | | | + | +--------------+ | | + +---------------------------|--------+ +``` + Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a “nested press” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events). However, this slightly different sequence will not be affected by the “permissive hold” mode: @@ -154,6 +221,18 @@ However, this slightly different sequence will not be affected by the “permiss - `LT(2, KC_A)` Up - `KC_L` Up +``` + TAPPING_TERM + +---------------------------|--------+ + | +-------------+ | | + | | LT(2, KC_A) | | | + | +-------------+ | | + | +--------------+ | | + | | KC_L | | | + | +--------------+ | | + +---------------------------|--------+ +``` + In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order). ?> The `PERMISSIVE_HOLD` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers both the “nested press” and “rolling press” sequences like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `PERMISSIVE_HOLD` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host. @@ -198,6 +277,18 @@ An example of a sequence which is affected by the “hold on other key press” - `LT(2, KC_A)` Up - `KC_L` Up +``` + TAPPING_TERM + +---------------------------|--------+ + | +-------------+ | | + | | LT(2, KC_A) | | | + | +-------------+ | | + | +--------------+ | | + | | KC_L | | | + | +--------------+ | | + +---------------------------|--------+ +``` + Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). ?> The `HOLD_ON_OTHER_KEY_PRESS` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers the “rolling press” sequence like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `HOLD_ON_OTHER_KEY_PRESS` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host. @@ -245,6 +336,18 @@ An example of a sequence which will be affected by the `IGNORE_MOD_TAP_INTERRUPT - `SFT_T(KC_A)` Up - `KC_X` Up +``` + TAPPING_TERM + +---------------------------|--------+ + | +-------------+ | | + | | SFT_T(KC_A) | | | + | +-------------+ | | + | +--------------+ | | + | | KC_X | | | + | +--------------+ | | + +---------------------------|--------+ +``` + Normally, this would send a capital `X` (`SHIFT`+`x`), even if the sequence is performed faster than the `TAPPING_TERM`. However, if the `IGNORE_MOD_TAP_INTERRUPT` option is enabled, the `SFT_T(KC_A)` key must be held longer than the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold will still output a capital `X` (`SHIFT`+`x`). However, if the `HOLD_ON_OTHER_KEY_PRESS` option is enabled in addition to `IGNORE_MOD_TAP_INTERRUPT`, the above sequence will again send a capital `X` (`SHIFT`+`x`) even if performed faster that the `TAPPING_TERM`. The difference from the default configuration is that by default the host will receive the key events only after the `SFT_T(KC_A)` key is released, but with the `HOLD_ON_OTHER_KEY_PRESS` option the host will start receiving key events when the `KC_X` key is pressed. @@ -327,6 +430,18 @@ Holding and releasing a dual function key without pressing another key will resu For instance, holding and releasing `LT(2, KC_SPC)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPC` instead. +``` + TAPPING_TERM + +-----------------|------------------+ + | +---------------|-------+ | + | | LT(2, KC_SPC) | | | + | +---------------|-------+ | + | | | + | | | + | | | + +-----------------|------------------+ +``` + For more granular control of this feature, you can add the following to your `config.h`: ```c diff --git a/drivers/gpio/sn74x154.c b/drivers/gpio/sn74x154.c new file mode 100644 index 0000000000..5f21f12b55 --- /dev/null +++ b/drivers/gpio/sn74x154.c @@ -0,0 +1,58 @@ +/* Copyright 2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "sn74x154.h" +#include "gpio.h" + +#define ADDRESS_PIN_COUNT 4 + +#ifndef SN74X154_ADDRESS_PINS +# error sn74x154: no address pins defined! +#endif + +static const pin_t address_pins[ADDRESS_PIN_COUNT] = SN74X154_ADDRESS_PINS; + +void sn74x154_init(void) { + for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { + setPinOutput(address_pins[i]); + writePinLow(address_pins[i]); + } + +#if defined(SN74X154_E0_PIN) + setPinOutput(SN74X154_E0_PIN); + writePinHigh(SN74X154_E0_PIN); +#endif + +#if defined(SN74X154_E1_PIN) + setPinOutput(SN74X154_E1_PIN); + writePinHigh(SN74X154_E1_PIN); +#endif +} + +void sn74x154_set_enabled(bool enabled) { +#if defined(SN74X154_E0_PIN) + writePin(SN74X154_E0_PIN, !enabled); +#endif +#if defined(SN74X154_E1_PIN) + writePin(SN74X154_E1_PIN, !enabled); +#endif +} + +void sn74x154_set_addr(uint8_t address) { + for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { + writePin(address_pins[i], address & (1 << i)); + } +} diff --git a/drivers/gpio/sn74x154.h b/drivers/gpio/sn74x154.h new file mode 100644 index 0000000000..ce6a9ddb0e --- /dev/null +++ b/drivers/gpio/sn74x154.h @@ -0,0 +1,48 @@ +/* Copyright 2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +/** + * Driver for 74x154 4-to-16 decoder/demultiplexer with inverting outputs + * https://assets.nexperia.com/documents/data-sheet/74HC_HCT154.pdf + */ + +/** + * Initialize the address and output enable pins. + */ +void sn74x154_init(void); + +/** + * Set the enabled state. + * + * When enabled is true, pulls the E0 and E1 pins low. + * + * \param enabled The enable state to set. + */ +void sn74x154_set_enabled(bool enabled); + +/** + * Set the output pin address. + * + * The selected output pin will be pulled low, while the remaining output pins will be high. + * + * \param address The address to set, from 0 to 15. + */ +void sn74x154_set_addr(uint8_t address); diff --git a/keyboards/0xc7/61key/config.h b/keyboards/0xc7/61key/config.h index d83a855572..d1edf3284e 100644 --- a/keyboards/0xc7/61key/config.h +++ b/keyboards/0xc7/61key/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xE117 -#define PRODUCT_ID 0x6161 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 0xC7 -#define PRODUCT 61Key - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 @@ -149,4 +142,4 @@ along with this program. If not, see . /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/0xc7/61key/info.json b/keyboards/0xc7/61key/info.json index 02070e87c9..9ed798c93b 100644 --- a/keyboards/0xc7/61key/info.json +++ b/keyboards/0xc7/61key/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "61Key", + "manufacturer": "0xC7", "url": "", "maintainer": "RealEmanGaming", + "usb": { + "vid": "0xE117", + "pid": "0x6161", + "device_version": "0.0.1" + }, "layout_aliases": { "LAYOUT": "LAYOUT_60_ansi" }, diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h index d134d1ab49..3b34af6580 100644 --- a/keyboards/0xcb/1337/config.h +++ b/keyboards/0xcb/1337/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" // clang-format off -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xCB00 -#define PRODUCT_ID 0x1337 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 0xCB -#define PRODUCT 1337 - /* key matrix size */ #define MATRIX_ROWS 3 #define MATRIX_COLS 3 diff --git a/keyboards/0xcb/1337/info.json b/keyboards/0xcb/1337/info.json index 25899933cb..cd5993ee0d 100644 --- a/keyboards/0xcb/1337/info.json +++ b/keyboards/0xcb/1337/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "0xCB 1337", + "keyboard_name": "1337", + "manufacturer": "0xCB", "url": "https://0xCB.dev", "maintainer": "Conor-Burns", + "usb": { + "vid": "0xCB00", + "pid": "0x1337", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/0xcb/static/config.h b/keyboards/0xcb/static/config.h index c30450b460..9c3a0c6649 100644 --- a/keyboards/0xcb/static/config.h +++ b/keyboards/0xcb/static/config.h @@ -18,12 +18,6 @@ along with this program. If not, see . #include "config_common.h" // clang-format off -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xCB00 -#define PRODUCT_ID 0xA455 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 0xCB -#define PRODUCT Static /* key matrix size */ #define MATRIX_ROWS 8 diff --git a/keyboards/0xcb/static/info.json b/keyboards/0xcb/static/info.json index 33fa8d265e..4a6232abad 100644 --- a/keyboards/0xcb/static/info.json +++ b/keyboards/0xcb/static/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "0xCB Static", + "keyboard_name": "Static", + "manufacturer": "0xCB", "url": "https://0xCB.dev", "maintainer": "Conor-Burns", + "usb": { + "vid": "0xCB00", + "pid": "0xA455", + "device_version": "0.0.1" + }, "layout_aliases": { "LAYOUT": "LAYOUT_all" }, diff --git a/keyboards/10bleoledhub/config.h b/keyboards/10bleoledhub/config.h index d3e845fec9..867589a27c 100644 --- a/keyboards/10bleoledhub/config.h +++ b/keyboards/10bleoledhub/config.h @@ -17,11 +17,6 @@ along with this program. If not, see .*/ #pragma once #include "config_common.h" -#define VENDOR_ID 0x7C88 // "hw" = haierwangwei2005 -#define PRODUCT_ID 0x7C99 // "10b" = 10bleoledhub -#define DEVICE_VER 0x0001 -#define MANUFACTURER haierwangwei2005 -#define PRODUCT 10bleoledhub /* key matrix size */ #define MATRIX_ROWS 4 diff --git a/keyboards/10bleoledhub/info.json b/keyboards/10bleoledhub/info.json index 769c98874d..ec468454b1 100644 --- a/keyboards/10bleoledhub/info.json +++ b/keyboards/10bleoledhub/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "10bleoledhub", + "manufacturer": "haierwangwei2005", "url": "https://github.com/haierwangwei2005/10BLE-OLED-HUB", "maintainer": "haierwangwei2005", + "usb": { + "vid": "0x7C88", + "pid": "0x7C99", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/1upkeyboards/1up60hse/config.h b/keyboards/1upkeyboards/1up60hse/config.h index 7a7fa56fe5..3f4f742b48 100644 --- a/keyboards/1upkeyboards/1up60hse/config.h +++ b/keyboards/1upkeyboards/1up60hse/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x6F75 // OU -#define PRODUCT_ID 0x6873 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 1upkeyboards -#define PRODUCT 1up60hse - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 diff --git a/keyboards/1upkeyboards/1up60hse/info.json b/keyboards/1upkeyboards/1up60hse/info.json index 7eca93d8a9..d6d87310d6 100644 --- a/keyboards/1upkeyboards/1up60hse/info.json +++ b/keyboards/1upkeyboards/1up60hse/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "1up60hse", + "manufacturer": "1upkeyboards", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x6F75", + "pid": "0x6873", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_60_ansi": { "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/1upkeyboards/1up60hte/config.h b/keyboards/1upkeyboards/1up60hte/config.h index 81fa0e1eb6..256af396e5 100644 --- a/keyboards/1upkeyboards/1up60hte/config.h +++ b/keyboards/1upkeyboards/1up60hte/config.h @@ -20,13 +20,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x6F75 // OU -#define PRODUCT_ID 0x6874 // HT -#define DEVICE_VER 0x0001 -#define MANUFACTURER 1upkeyboards -#define PRODUCT 1up60hte - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 diff --git a/keyboards/1upkeyboards/1up60hte/info.json b/keyboards/1upkeyboards/1up60hte/info.json index 830c6e289f..3a4a716d96 100644 --- a/keyboards/1upkeyboards/1up60hte/info.json +++ b/keyboards/1upkeyboards/1up60hte/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "1up60hte", + "manufacturer": "1upkeyboards", "url": "https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/", "maintainer": "1upkeyboards", + "usb": { + "vid": "0x6F75", + "pid": "0x6874", + "device_version": "0.0.1" + }, "layout_aliases": { "LAYOUT_tsangan": "LAYOUT_60_tsangan_hhkb" }, diff --git a/keyboards/1upkeyboards/1up60rgb/config.h b/keyboards/1upkeyboards/1up60rgb/config.h index c78fc3e52b..00cff570b1 100644 --- a/keyboards/1upkeyboards/1up60rgb/config.h +++ b/keyboards/1upkeyboards/1up60rgb/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x6F75 // OU -#define PRODUCT_ID 0x7267 // RG -#define DEVICE_VER 0x0001 -#define MANUFACTURER 1upkeyboards -#define PRODUCT 1UP RGB Underglow PCB - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 15 diff --git a/keyboards/1upkeyboards/1up60rgb/info.json b/keyboards/1upkeyboards/1up60rgb/info.json index 701088c461..956ccb0afa 100644 --- a/keyboards/1upkeyboards/1up60rgb/info.json +++ b/keyboards/1upkeyboards/1up60rgb/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "1up60rgb", + "keyboard_name": "1UP RGB Underglow PCB", + "manufacturer": "1upkeyboards", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x6F75", + "pid": "0x7267", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h index c0c0a7891b..354f0680e8 100644 --- a/keyboards/1upkeyboards/super16/config.h +++ b/keyboards/1upkeyboards/super16/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x6F75 // "ou" -#define PRODUCT_ID 0x5516 // "U" 16 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 1upkeyboards -#define PRODUCT super16 - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 4 diff --git a/keyboards/1upkeyboards/super16/info.json b/keyboards/1upkeyboards/super16/info.json index 261fde20a6..b437bb5038 100644 --- a/keyboards/1upkeyboards/super16/info.json +++ b/keyboards/1upkeyboards/super16/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "super16", + "manufacturer": "1upkeyboards", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x6F75", + "pid": "0x5516", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_4x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}] diff --git a/keyboards/1upkeyboards/super16v2/config.h b/keyboards/1upkeyboards/super16v2/config.h index 4fd4238780..77bb89d954 100644 --- a/keyboards/1upkeyboards/super16v2/config.h +++ b/keyboards/1upkeyboards/super16v2/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x6F75 // OU -#define PRODUCT_ID 0x5517 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 1upkeyboards -#define PRODUCT super16v2 - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 4 diff --git a/keyboards/1upkeyboards/super16v2/info.json b/keyboards/1upkeyboards/super16v2/info.json index 2a384f775d..891eaf316b 100644 --- a/keyboards/1upkeyboards/super16v2/info.json +++ b/keyboards/1upkeyboards/super16v2/info.json @@ -1,10 +1,16 @@ { "keyboard_name": "super16v2", + "manufacturer": "1upkeyboards", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x6F75", + "pid": "0x5517", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_4x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}] } } - } \ No newline at end of file + } diff --git a/keyboards/25keys/cassette42/config.h b/keyboards/25keys/cassette42/config.h index cac03f6346..71621695f4 100644 --- a/keyboards/25keys/cassette42/config.h +++ b/keyboards/25keys/cassette42/config.h @@ -19,14 +19,6 @@ along with this program. If not, see . #include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xCA42 -#define DEVICE_VER 0x0001 -#define MANUFACTURER monksoffunk -#define PRODUCT cassette42 - /* key matrix size */ #define MATRIX_ROWS 1 #define MATRIX_COLS 6 diff --git a/keyboards/25keys/cassette42/info.json b/keyboards/25keys/cassette42/info.json index 87c67df951..4fe088f9e6 100644 --- a/keyboards/25keys/cassette42/info.json +++ b/keyboards/25keys/cassette42/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "cassette42", - "url": "http://www.sho-k.co.uk/tech/1246.html", - "maintainer": "monksoffunk", + "keyboard_name": "cassette42", + "manufacturer": "monksoffunk", + "url": "http://www.sho-k.co.uk/tech/1246.html", + "maintainer": "monksoffunk", + "usb": { + "vid": "0xFEED", + "pid": "0xCA42", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [{"x":0.5, "y":0.75}, {"x":2.5, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.75}, {"x":2, "y":1.75}, {"x":3, "y":1.75}] diff --git a/keyboards/2key2crawl/config.h b/keyboards/2key2crawl/config.h index 27a94a00ca..f6fc6f8c1e 100644 --- a/keyboards/2key2crawl/config.h +++ b/keyboards/2key2crawl/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6090 -#define DEVICE_VER 0x0002 -#define MANUFACTURER WoodKeys.click -#define PRODUCT 2Key2Crawl - /* key matrix size */ #define MATRIX_ROWS 2 #define MATRIX_COLS 7 diff --git a/keyboards/2key2crawl/info.json b/keyboards/2key2crawl/info.json index cc48e81138..c2cad98470 100644 --- a/keyboards/2key2crawl/info.json +++ b/keyboards/2key2crawl/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "2Key2CrawlPad", + "keyboard_name": "2Key2Crawl", + "manufacturer": "WoodKeys.click", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0xFEED", + "pid": "0x6090", + "device_version": "0.0.2" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/30wer/config.h b/keyboards/30wer/config.h index d4f656edca..65a54cba4a 100644 --- a/keyboards/30wer/config.h +++ b/keyboards/30wer/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x1234 -#define PRODUCT_ID 0x5678 -#define DEVICE_VER 0x0000 -#define MANUFACTURER 8o7wer -#define PRODUCT 30wer - /* key matrix size */ #define MATRIX_ROWS 3 #define MATRIX_COLS 13 diff --git a/keyboards/30wer/info.json b/keyboards/30wer/info.json index 18ea404fd2..62fee361a0 100644 --- a/keyboards/30wer/info.json +++ b/keyboards/30wer/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "30wer", - "url": "", - "maintainer": "qmk", + "keyboard_name": "30wer", + "manufacturer": "8o7wer", + "url": "", + "maintainer": "qmk", + "usb": { + "vid": "0x1234", + "pid": "0x5678", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h index 4ca0e830ee..58010eea55 100644 --- a/keyboards/3keyecosystem/2key2/config.h +++ b/keyboards/3keyecosystem/2key2/config.h @@ -18,13 +18,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x1209 -#define PRODUCT_ID 0x3304 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 3-Key-Ecosystem -#define PRODUCT 2key2 - /* key matrix size */ #define MATRIX_ROWS 1 #define MATRIX_COLS 2 diff --git a/keyboards/3keyecosystem/2key2/info.json b/keyboards/3keyecosystem/2key2/info.json index 49caf91b5a..79e999cc16 100644 --- a/keyboards/3keyecosystem/2key2/info.json +++ b/keyboards/3keyecosystem/2key2/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "3-Key-Ecosystem 2key2: 2x1 macro-keyboard", + "keyboard_name": "2key2", + "manufacturer": "3-Key-Ecosystem", "url": "https://github.com/softplus/3keyecosystem/tree/main/2key2", "maintainer": "softplus", + "usb": { + "vid": "0x1209", + "pid": "0x3304", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h index d478131e95..292854f68f 100644 --- a/keyboards/40percentclub/25/config.h +++ b/keyboards/40percentclub/25/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // 40% -#define PRODUCT_ID 0x0F25 -#define DEVICE_VER 0x0100 -#define MANUFACTURER di0ib -#define PRODUCT The 5x5 Keyboard - #define USE_SERIAL /* serial.c configuration for split keyboard */ #define SOFT_SERIAL_PIN D0 diff --git a/keyboards/40percentclub/25/info.json b/keyboards/40percentclub/25/info.json index 1e86454125..15995f8479 100644 --- a/keyboards/40percentclub/25/info.json +++ b/keyboards/40percentclub/25/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "foobar", + "keyboard_name": "The 5x5 Keyboard", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0F25", + "device_version": "1.0.0" + }, "layouts": { "LAYOUT_ortho_5x5": { "layout": [ diff --git a/keyboards/40percentclub/4pack/config.h b/keyboards/40percentclub/4pack/config.h index 023df5fc4e..305e71e542 100644 --- a/keyboards/40percentclub/4pack/config.h +++ b/keyboards/40percentclub/4pack/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 40percentclub -#define PRODUCT 4pack - /* key matrix size */ #define MATRIX_ROWS 1 #define MATRIX_COLS 4 diff --git a/keyboards/40percentclub/4pack/info.json b/keyboards/40percentclub/4pack/info.json index d328a999c2..e8e0463ab6 100644 --- a/keyboards/40percentclub/4pack/info.json +++ b/keyboards/40percentclub/4pack/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "4pack", - "url": "", - "maintainer": "qmk", + "keyboard_name": "4pack", + "manufacturer": "40percentclub", + "url": "", + "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0000", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}] diff --git a/keyboards/40percentclub/4x4/config.h b/keyboards/40percentclub/4x4/config.h index 439aa1b147..b74eb62c1e 100644 --- a/keyboards/40percentclub/4x4/config.h +++ b/keyboards/40percentclub/4x4/config.h @@ -4,13 +4,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered. -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x4444 -#define MANUFACTURER di0ib -#define PRODUCT The 4x4 Keyboard - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 16 diff --git a/keyboards/40percentclub/4x4/info.json b/keyboards/40percentclub/4x4/info.json index 96a08d3fd5..f0e55b4c23 100644 --- a/keyboards/40percentclub/4x4/info.json +++ b/keyboards/40percentclub/4x4/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "40percent.club 4x4", + "keyboard_name": "The 4x4 Keyboard", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0A0C", + "device_version": "44.4.4" + }, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h index c3bb5d6380..62d63b8afa 100644 --- a/keyboards/40percentclub/5x5/config.h +++ b/keyboards/40percentclub/5x5/config.h @@ -4,13 +4,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // 40% -#define PRODUCT_ID 0x05B5 -#define DEVICE_VER 0x0100 -#define MANUFACTURER di0ib -#define PRODUCT The 5x5 Keyboard - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 15 diff --git a/keyboards/40percentclub/5x5/info.json b/keyboards/40percentclub/5x5/info.json index bb6b836ba9..94ffc2d9d2 100644 --- a/keyboards/40percentclub/5x5/info.json +++ b/keyboards/40percentclub/5x5/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "40percent.club 5x5", + "keyboard_name": "The 5x5 Keyboard", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x05B5", + "device_version": "1.0.0" + }, "layouts": { "LAYOUT_ortho_5x5": { "layout": [ diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h index ae4ee1bad8..e402932b21 100644 --- a/keyboards/40percentclub/6lit/config.h +++ b/keyboards/40percentclub/6lit/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // 40% -#define PRODUCT_ID 0x0F61 -#define DEVICE_VER 0x0100 -#define MANUFACTURER di0ib -#define PRODUCT The 6lit Macropad - #define USE_SERIAL /* serial.c configuration for split keyboard */ diff --git a/keyboards/40percentclub/6lit/info.json b/keyboards/40percentclub/6lit/info.json index 8308847f6c..a844a044e2 100644 --- a/keyboards/40percentclub/6lit/info.json +++ b/keyboards/40percentclub/6lit/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "6lit", + "keyboard_name": "The 6lit Macropad", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0F61", + "device_version": "1.0.0" + }, "layouts": { "LAYOUT_ortho_2x3": { "layout": [ diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h index 1e91d3bd10..3f6cb1f10c 100644 --- a/keyboards/40percentclub/foobar/config.h +++ b/keyboards/40percentclub/foobar/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // 40% -#define PRODUCT_ID 0x0F00 -#define DEVICE_VER 0x0100 -#define MANUFACTURER di0ib -#define PRODUCT The foobar Keyboard - #define USE_SERIAL /* serial.c configuration for split keyboard */ diff --git a/keyboards/40percentclub/foobar/info.json b/keyboards/40percentclub/foobar/info.json index b825ed0267..832e65bfc6 100644 --- a/keyboards/40percentclub/foobar/info.json +++ b/keyboards/40percentclub/foobar/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "foobar", + "keyboard_name": "The foobar Keyboard", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0F00", + "device_version": "1.0.0" + }, "layouts": { "LAYOUT_ortho_3x5": { "layout": [ diff --git a/keyboards/40percentclub/gherkin/config.h b/keyboards/40percentclub/gherkin/config.h index 6373ea2e60..e7062990cb 100644 --- a/keyboards/40percentclub/gherkin/config.h +++ b/keyboards/40percentclub/gherkin/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered. -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER 40 Percent Club -#define PRODUCT Gherkin - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 6 diff --git a/keyboards/40percentclub/gherkin/info.json b/keyboards/40percentclub/gherkin/info.json index b4600eba00..8693875449 100644 --- a/keyboards/40percentclub/gherkin/info.json +++ b/keyboards/40percentclub/gherkin/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Gherkin", + "manufacturer": "40 Percent Club", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x6060", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_3x10": { "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":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}] diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h index 0c819031da..292ac485bd 100644 --- a/keyboards/40percentclub/half_n_half/config.h +++ b/keyboards/40percentclub/half_n_half/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // 40% -#define PRODUCT_ID 0x4A1F -#define DEVICE_VER 0x0100 -#define MANUFACTURER di0ib -#define PRODUCT half_n_half - /* key matrix size */ #define MATRIX_ROWS 4*2 #define MATRIX_COLS 7 diff --git a/keyboards/40percentclub/half_n_half/info.json b/keyboards/40percentclub/half_n_half/info.json index 57a65424f0..1b7f129401 100644 --- a/keyboards/40percentclub/half_n_half/info.json +++ b/keyboards/40percentclub/half_n_half/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "half_n_half", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x4A1F", + "device_version": "1.0.0" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/40percentclub/i75/config.h b/keyboards/40percentclub/i75/config.h index bacf9eb30f..bce564c042 100644 --- a/keyboards/40percentclub/i75/config.h +++ b/keyboards/40percentclub/i75/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x0175 -#define MANUFACTURER di0ib -#define PRODUCT i75 - /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/40percentclub/i75/info.json b/keyboards/40percentclub/i75/info.json index 7e705cdf86..1753d42309 100644 --- a/keyboards/40percentclub/i75/info.json +++ b/keyboards/40percentclub/i75/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "i75", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0A0C", + "device_version": "1.7.5" + }, "layouts": { "LAYOUT_ortho_5x15": { "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}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"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}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/40percentclub/luddite/config.h b/keyboards/40percentclub/luddite/config.h index 3f15523c89..3924841b04 100644 --- a/keyboards/40percentclub/luddite/config.h +++ b/keyboards/40percentclub/luddite/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered -#define PRODUCT_ID 0x4C55 // "LU" -#define DEVICE_VER 0x1001 -#define MANUFACTURER di0ib -#define PRODUCT Luddite - /* key matrix size */ #define MATRIX_ROWS 8 #define MATRIX_COLS 8 diff --git a/keyboards/40percentclub/luddite/info.json b/keyboards/40percentclub/luddite/info.json index 45a446e818..565880a165 100644 --- a/keyboards/40percentclub/luddite/info.json +++ b/keyboards/40percentclub/luddite/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Luddite", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x4C55", + "device_version": "10.0.1" + }, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/40percentclub/mf68/config.h b/keyboards/40percentclub/mf68/config.h index 7ebe5ae1b3..2ed8c87195 100644 --- a/keyboards/40percentclub/mf68/config.h +++ b/keyboards/40percentclub/mf68/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered -#define PRODUCT_ID 0x4D68 // "M68" -#define DEVICE_VER 0x0101 -#define MANUFACTURER di0ib -#define PRODUCT MF68 - /* key matrix size */ #define MATRIX_ROWS 8 #define MATRIX_COLS 9 diff --git a/keyboards/40percentclub/mf68/info.json b/keyboards/40percentclub/mf68/info.json index 873824edb0..5a8164bcb4 100644 --- a/keyboards/40percentclub/mf68/info.json +++ b/keyboards/40percentclub/mf68/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "MF68", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x4D68", + "device_version": "1.0.1" + }, "layouts": { "LAYOUT_68_ansi": { "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15.25, "y":1}, {"x":16.25, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"x":15.25, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}] diff --git a/keyboards/40percentclub/nano/config.h b/keyboards/40percentclub/nano/config.h index c6d66a1bb3..7d789cff04 100644 --- a/keyboards/40percentclub/nano/config.h +++ b/keyboards/40percentclub/nano/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 //"40 %", to make it consistent with other 40percent.club boards. -#define PRODUCT_ID 0x0007 -#define DEVICE_VER 0x0001 -#define MANUFACTURER di0ib -#define PRODUCT Nano - /* key matrix size */ #define MATRIX_ROWS 2 #define MATRIX_COLS 4 diff --git a/keyboards/40percentclub/nano/info.json b/keyboards/40percentclub/nano/info.json index 35eff7e960..914b32aaa4 100644 --- a/keyboards/40percentclub/nano/info.json +++ b/keyboards/40percentclub/nano/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Nano", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0007", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_2x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}] diff --git a/keyboards/40percentclub/nein/config.h b/keyboards/40percentclub/nein/config.h index 87c62673f9..4dfb143e52 100644 --- a/keyboards/40percentclub/nein/config.h +++ b/keyboards/40percentclub/nein/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered -#define PRODUCT_ID 0x9999 -#define DEVICE_VER 0x9999 -#define MANUFACTURER di0ib -#define PRODUCT The nein Keyboard - /* key matrix size */ #define MATRIX_ROWS 3 #define MATRIX_COLS 3 diff --git a/keyboards/40percentclub/nein/info.json b/keyboards/40percentclub/nein/info.json index 6d948877d1..09d25e30de 100644 --- a/keyboards/40percentclub/nein/info.json +++ b/keyboards/40percentclub/nein/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "nein", + "keyboard_name": "The nein Keyboard", + "manufacturer": "di0ib", "url": "http://www.40percent.club/2019/04/nein.html", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x9999", + "device_version": "99.9.9" + }, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/40percentclub/nori/config.h b/keyboards/40percentclub/nori/config.h index 882da633e0..0fed3daf11 100644 --- a/keyboards/40percentclub/nori/config.h +++ b/keyboards/40percentclub/nori/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x0444 -#define MANUFACTURER di0ib -#define PRODUCT The nori Keyboard - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 12 diff --git a/keyboards/40percentclub/nori/info.json b/keyboards/40percentclub/nori/info.json index 9de33d52f0..d6415b73f9 100644 --- a/keyboards/40percentclub/nori/info.json +++ b/keyboards/40percentclub/nori/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "nori", + "keyboard_name": "The nori Keyboard", + "manufacturer": "di0ib", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x0A0C", + "device_version": "4.4.4" + }, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/40percentclub/polyandry/config.h b/keyboards/40percentclub/polyandry/config.h index 6f04d12297..1fd3e22f49 100644 --- a/keyboards/40percentclub/polyandry/config.h +++ b/keyboards/40percentclub/polyandry/config.h @@ -18,13 +18,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER di0ib -#define PRODUCT Polypad - /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/40percentclub/polyandry/info.json b/keyboards/40percentclub/polyandry/info.json index d0d1a00f86..3572b38c23 100644 --- a/keyboards/40percentclub/polyandry/info.json +++ b/keyboards/40percentclub/polyandry/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "Polyandry", + "keyboard_name": "Polypad", + "manufacturer": "di0ib", "url": "", "maintainer": "QMK", + "usb": { + "vid": "0x4025", + "pid": "0x6060", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/40percentclub/sixpack/config.h b/keyboards/40percentclub/sixpack/config.h index edb123c4b9..4ddad2efb7 100644 --- a/keyboards/40percentclub/sixpack/config.h +++ b/keyboards/40percentclub/sixpack/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered. -#define PRODUCT_ID 0x5350 // "SP" -#define DEVICE_VER 0x1001 -#define MANUFACTURER di0ib -#define PRODUCT Six Pack - /* key matrix size */ #define MATRIX_ROWS 2 #define MATRIX_COLS 3 diff --git a/keyboards/40percentclub/sixpack/info.json b/keyboards/40percentclub/sixpack/info.json index 3e02a01bc2..b99c24a617 100644 --- a/keyboards/40percentclub/sixpack/info.json +++ b/keyboards/40percentclub/sixpack/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Six Pack", + "manufacturer": "di0ib", "url": "https://www.40percent.club/2017/05/six-pack-11.html", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x5350", + "device_version": "10.0.1" + }, "layouts": { "LAYOUT_ortho_2x3": { "layout": [ diff --git a/keyboards/40percentclub/tomato/config.h b/keyboards/40percentclub/tomato/config.h index 8f06341aad..b6534622ea 100644 --- a/keyboards/40percentclub/tomato/config.h +++ b/keyboards/40percentclub/tomato/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x546F //"To", was duplicate with polyandry -#define DEVICE_VER 0x0001 -#define MANUFACTURER 40 Percent Club -#define PRODUCT Tomato - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 6 diff --git a/keyboards/40percentclub/tomato/info.json b/keyboards/40percentclub/tomato/info.json index 57bcfd17a3..1ecaa84aff 100644 --- a/keyboards/40percentclub/tomato/info.json +++ b/keyboards/40percentclub/tomato/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Tomato", + "manufacturer": "40 Percent Club", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x546F", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_3x10": { "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":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}] diff --git a/keyboards/40percentclub/ut47/config.h b/keyboards/40percentclub/ut47/config.h index 7ead58e096..3724e4b2d5 100644 --- a/keyboards/40percentclub/ut47/config.h +++ b/keyboards/40percentclub/ut47/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x7574 //"ut" -#define DEVICE_VER 0x0001 -#define MANUFACTURER 40percent.club -#define PRODUCT ut47 - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 12 diff --git a/keyboards/40percentclub/ut47/info.json b/keyboards/40percentclub/ut47/info.json index 4993bebb0f..e0bd0264cb 100644 --- a/keyboards/40percentclub/ut47/info.json +++ b/keyboards/40percentclub/ut47/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "UT47", + "keyboard_name": "ut47", + "manufacturer": "40percent.club", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0x4025", + "pid": "0x7574", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Backspace", "x":11, "y":0, "w":1.5}, {"label":"LT(3) / Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.25}, {"label":"Shift", "x":0, "y":2, "w":1.5}, {"label":"Z", "x":1.5, "y":2}, {"label":"X", "x":2.5, "y":2}, {"label":"C", "x":3.5, "y":2}, {"label":"V", "x":4.5, "y":2}, {"label":"B", "x":5.5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":"<", "x":8.5, "y":2}, {"label":">", "x":9.5, "y":2}, {"label":"?", "x":10.5, "y":2}, {"label":"Shift / Enter", "x":11.5, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Alt", "x":1, "y":3}, {"label":"GUI", "x":2, "y":3}, {"label":"Menu", "x":3, "y":3}, {"label":"MO(2)", "x":4, "y":3, "w":1.25}, {"x":5.25, "y":3, "w":2}, {"label":"MO(1)", "x":7.25, "y":3, "w":1.25}, {"label":"\u2190", "x":8.5, "y":3}, {"label":"\u2193", "x":9.5, "y":3}, {"label":"\u2191", "x":10.5, "y":3}, {"label":"\u2192", "x":11.5, "y":3}] diff --git a/keyboards/40percentclub/ut47/matrix.c b/keyboards/40percentclub/ut47/matrix.c index 89537592c5..97922e2dbe 100644 --- a/keyboards/40percentclub/ut47/matrix.c +++ b/keyboards/40percentclub/ut47/matrix.c @@ -118,15 +118,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - /* Column pin configuration * col: 0 1 2 3 4 5 6 7 8 9 10 11 * pin: D7 E6 B4 B5 B6 B2 B3 B1 F7 F6 F5 F4 diff --git a/keyboards/45_ats/config.h b/keyboards/45_ats/config.h index 4733095bc1..8177f89038 100644 --- a/keyboards/45_ats/config.h +++ b/keyboards/45_ats/config.h @@ -20,13 +20,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xAB13 -#define PRODUCT_ID 0x4511 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Abec13 -#define PRODUCT 45ATS - /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 14 diff --git a/keyboards/45_ats/info.json b/keyboards/45_ats/info.json index 2ea14357ee..268af942fe 100644 --- a/keyboards/45_ats/info.json +++ b/keyboards/45_ats/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "45-ATS", + "keyboard_name": "45ATS", + "manufacturer": "Abec13", "url": "", "maintainer": "The-Royal", + "usb": { + "vid": "0xAB13", + "pid": "0x4511", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_split_space": { "layout": [ diff --git a/keyboards/4by3/config.h b/keyboards/4by3/config.h index daaafb02a6..27ad7441cc 100644 --- a/keyboards/4by3/config.h +++ b/keyboards/4by3/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xEEEE -#define PRODUCT_ID 0x2019 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Elias Sjögreen -#define PRODUCT 4by3 - /* key matrix size */ #define MATRIX_ROWS 3 #define MATRIX_COLS 4 diff --git a/keyboards/4by3/info.json b/keyboards/4by3/info.json index 50f7c44b4f..24a2b3d34a 100644 --- a/keyboards/4by3/info.json +++ b/keyboards/4by3/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "4by3", + "manufacturer": "Elias Sjögreen", "url": "https://github.com/eliassjogreen/4by3", "maintainer": "eliassjogreen", + "usb": { + "vid": "0xEEEE", + "pid": "0x2019", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_horizontal": { "layout": [ diff --git a/keyboards/7c8/framework/config.h b/keyboards/7c8/framework/config.h index 44a69bf4e5..5ed43862cc 100644 --- a/keyboards/7c8/framework/config.h +++ b/keyboards/7c8/framework/config.h @@ -17,12 +17,6 @@ #pragma once #include "config_common.h" -#define VENDOR_ID 0x77C8 -#define PRODUCT_ID 0x0001 -#define DEVICE_VER 0x0000 -#define MANUFACTURER 7c8 -#define PRODUCT Framework - #define MATRIX_ROWS 10 #define MATRIX_COLS 6 diff --git a/keyboards/7c8/framework/info.json b/keyboards/7c8/framework/info.json index f78ea1eb58..1a2c0b300b 100644 --- a/keyboards/7c8/framework/info.json +++ b/keyboards/7c8/framework/info.json @@ -1,7 +1,13 @@ { "keyboard_name": "Framework", + "manufacturer": "7c8", "url": "", "maintainer": "stevennguyen", + "usb": { + "vid": "0x77C8", + "pid": "0x0001", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/9key/config.h b/keyboards/9key/config.h index b0462eb50f..622ccc7ae9 100644 --- a/keyboards/9key/config.h +++ b/keyboards/9key/config.h @@ -19,13 +19,6 @@ along with this program. If not, see . #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0007 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Bishop Keyboards -#define PRODUCT 9Key - /* key matrix size */ #define MATRIX_ROWS 3 #define MATRIX_COLS 3 diff --git a/keyboards/9key/info.json b/keyboards/9key/info.json index 326a63b12c..5508697df6 100644 --- a/keyboards/9key/info.json +++ b/keyboards/9key/info.json @@ -1,7 +1,13 @@ { - "keyboard_name": "9key", + "keyboard_name": "9Key", + "manufacturer": "Bishop Keyboards", "url": "", "maintainer": "qmk", + "usb": { + "vid": "0xFEED", + "pid": "0x0007", + "device_version": "0.0.1" + }, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}] diff --git a/keyboards/acheron/elongate/delta/info.json b/keyboards/acheron/elongate/delta/info.json new file mode 100644 index 0000000000..d96805a66a --- /dev/null +++ b/keyboards/acheron/elongate/delta/info.json @@ -0,0 +1,68 @@ +{ + "keyboard_name": "Elongate", + "url": "http://gondolindrim.github.io/AcheronDocs/elongate/introduction.html", + "maintainer": "Gondolindrim", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"Backspace", "x":11, "y":0}, + {"label":"7", "x":12.5, "y":0}, + {"label":"8", "x":13.5, "y":0}, + {"label":"9", "x":14.5, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"Enter", "x":10.25, "y":1, "w":1.75}, + {"label":"4", "x":12.5, "y":1}, + {"label":"5", "x":13.5, "y":1}, + {"label":"6", "x":14.5, "y":1}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":"Fn", "x":9.75, "y":2, "w":1.25}, + {"label":"\u2191", "x":11.25, "y":2.25}, + {"label":"1", "x":12.5, "y":2}, + {"label":"2", "x":13.5, "y":2}, + {"label":"3", "x":14.5, "y":2}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.25}, + {"label":"GUI", "x":1.25, "y":3}, + {"label":"Alt", "x":2.25, "y":3, "w":1.25}, + {"label":"Space/Fn2", "x":3.5, "y":3, "w":2.25}, + {"label":"Space", "x":6.25, "y":3, "w":2.75}, + {"label":"Alt", "x":9, "y":3}, + {"label":"\u2190", "x":10.25, "y":3.25}, + {"label":"\u2193", "x":11.25, "y":3.25}, + {"label":"\u2192", "x":12.25, "y":3.25}, + {"label":"0", "x":13.5, "y":3}, + {"label":".", "x":14.5, "y":3} + ] + } + } +} diff --git a/keyboards/al1/config.h b/keyboards/al1/config.h index b003a9cd6c..570eb03ae2 100644 --- a/keyboards/al1/config.h +++ b/keyboards/al1/config.h @@ -27,8 +27,13 @@ along with this program. If not, see . #define PRODUCT AL1 /* key matrix size */ -#define MATRIX_ROWS 7 -#define MATRIX_COLS 20 +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { C7, B1, B2, C6, B4, B5 } + +#define SN74X154_ADDRESS_PINS { D4, D5, D6, D7 } +#define SN74X154_E1_PIN D3 #define LED_NUM_LOCK_PIN D0 #define LED_CAPS_LOCK_PIN B7 diff --git a/keyboards/al1/keymaps/via/keymap.c b/keyboards/al1/keymaps/via/keymap.c new file mode 100644 index 0000000000..931755270b --- /dev/null +++ b/keyboards/al1/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2018 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ), + + [1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), +}; diff --git a/keyboards/al1/keymaps/via/readme.md b/keyboards/al1/keymaps/via/readme.md new file mode 100644 index 0000000000..458df9ca13 --- /dev/null +++ b/keyboards/al1/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for al1 diff --git a/keyboards/al1/keymaps/via/rules.mk b/keyboards/al1/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/al1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/al1/matrix.c b/keyboards/al1/matrix.c index 1407cbc089..e3d7971f1c 100644 --- a/keyboards/al1/matrix.c +++ b/keyboards/al1/matrix.c @@ -1,91 +1,101 @@ +/* Copyright 2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "matrix.h" - #include "gpio.h" +#include "sn74x154.h" -static uint8_t read_rows(void) { - return (readPin(C7) ? 0 : 1) | - (readPin(B1) ? 0 : 2) | - (readPin(B2) ? 0 : 4) | - (readPin(C6) ? 0 : 8) | - (readPin(B4) ? 0 : 16) | - (readPin(B5) ? 0 : 32); -} +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +/* All columns use a 74HC154 4-to-16 demultiplexer. + * D3 is the enable pin, must be set high to use it. + * + * A3 A2 A1 A0 + * D7 D6 D5 D4 + * 0: 0 0 0 0 + * 1: 0 0 0 1 + * 2: 0 0 1 0 + * 3: 0 0 1 1 + * 4: 0 1 0 0 + * 5: 0 1 0 1 + * 6: 0 1 1 0 + * 7: 0 1 1 1 + * 8: 1 0 0 0 + * 9: 1 0 0 1 + * 10: 1 0 1 0 + * 11: 1 0 1 1 + * 12: 1 1 0 0 + * 13: 1 1 0 1 + * 14: 1 1 1 0 + * 15: 1 1 1 1 + */ static void select_col(uint8_t col) { - writePinLow(D3); - - writePin(D4, (col & 1)); - writePin(D5, (col & 2)); - writePin(D6, (col & 4)); - writePin(D7, (col & 8)); + sn74x154_set_addr(col); } -static void unselect_cols(void) { - writePinHigh(D3); +static void init_pins(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col and wait for col seleciton to stabilize + select_col(current_col); + matrix_io_delay(); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + + // Check row pin state + if (readPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col); + } else { + // Pin HI, clear col bit + current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) { + matrix_changed = true; + } + } + + return matrix_changed; } void matrix_init_custom(void) { - /* 74HC154 col pin configuration - * pin: D3 D7 D6 D5 D4 - * row: off 0 x x x x - * 0 1 0 0 0 0 - * 1 1 0 0 0 1 - * 2 1 0 0 1 0 - * 3 1 0 0 1 1 - * 4 1 0 1 0 0 - * 5 1 0 1 0 1 - * 6 1 0 1 1 0 - * 7 1 0 1 1 1 - * 8 1 1 0 0 0 - * 9 1 1 0 0 1 - * 10 1 1 0 1 0 - * 11 1 1 0 1 1 - * 12 1 1 1 0 0 - * 13 1 1 1 0 1 - * 14 1 1 1 1 0 - * 15 1 1 1 1 1 - */ - setPinOutput(D3); - writePinHigh(D3); - - setPinOutput(D4); - setPinOutput(D5); - setPinOutput(D6); - setPinOutput(D7); - - - /* Row pin configuration - * - * row: 0 1 2 3 4 5 - * pin: C7 B1 B2 C6 B4 B5 - * - */ - setPinInputHigh(C7); - setPinInputHigh(B1); - setPinInputHigh(B2); - setPinInputHigh(C6); - setPinInputHigh(B4); - setPinInputHigh(B5); + // initialize demultiplexer + sn74x154_init(); + sn74x154_set_enabled(true); + // initialize key pins + init_pins(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { bool changed = false; - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - select_col(col); - matrix_io_delay(); - uint8_t rows = read_rows(); - - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - bool prev_bit = current_matrix[row] & ((matrix_row_t)1 << col); - bool curr_bit = rows & (1 << row); - - if (prev_bit != curr_bit) { - current_matrix[row] ^= ((matrix_row_t)1 << col); - changed = true; - } - } - unselect_cols(); + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); } return changed; diff --git a/keyboards/al1/rules.mk b/keyboards/al1/rules.mk index 670712f661..1f8e81de20 100644 --- a/keyboards/al1/rules.mk +++ b/keyboards/al1/rules.mk @@ -18,4 +18,5 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite -SRC += matrix.c +VPATH += drivers/gpio +SRC += matrix.c sn74x154.c diff --git a/keyboards/amj96/matrix.c b/keyboards/amj96/matrix.c index ffd66d120f..2999c6241b 100644 --- a/keyboards/amj96/matrix.c +++ b/keyboards/amj96/matrix.c @@ -130,15 +130,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - /* Column pin configuration * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 * pin: F7 F6 F5 F4 F1 F0 E6 D7 D6 D5 D1 D0 B7 B6 B0 C7 diff --git a/keyboards/bacca70/bacca70.c b/keyboards/bacca70/bacca70.c new file mode 100644 index 0000000000..174b4d97e7 --- /dev/null +++ b/keyboards/bacca70/bacca70.c @@ -0,0 +1,17 @@ +/* Copyright 2022 keebnewb + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bacca70.h" diff --git a/keyboards/bacca70/bacca70.h b/keyboards/bacca70/bacca70.h new file mode 100644 index 0000000000..0583fd8043 --- /dev/null +++ b/keyboards/bacca70/bacca70.h @@ -0,0 +1,65 @@ +/* Copyright 2022 keebnewb + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #pragma once + + #include "quantum.h" + + #define ___ KC_NO + +#define LAYOUT_default( \ + k00, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k17, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, \ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k67, \ + k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k96, k87, \ + ka0, ka1, ka3, kb5, ka7 \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, ___ }, \ + { ___, k11, k12, k13, k14, k15, k16, k17 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27 }, \ + { k30, k31, k32, k33, k34, k35, k36, ___ }, \ + { k40, k41, k42, k43, k44, k45, k46, k47 }, \ + { k50, k51, k52, k53, k54, k55, ___, ___ }, \ + { k60, k61, k62, k63, k64, k65, ___, k67 }, \ + { k70, k71, k72, k73, k74, k75, ___, ___ }, \ + { k80, k81, k82, k83, k84, k85, ___, k87 }, \ + { ___, k91, k92, k93, k94, k95, k96, ___ }, \ + { ka0, ka1, ___, ka3, ___, ___, ___, ka7 }, \ + { ___, ___, ___, ___, ___, kb5, ___, ___ } \ +} + +#define LAYOUT_debaccabean( \ + k00, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k17, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, \ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, \ + k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, \ + ka0, ka1, ka2, ka3, ka4, kb5, ka7 \ +){ \ + { k00, k01, k02, k03, k04, k05, k06, ___ }, \ + { ___, k11, k12, k13, k14, k15, k16, k17 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27 }, \ + { k30, k31, k32, k33, k34, k35, k36, ___ }, \ + { k40, k41, k42, k43, k44, k45, k46, k47 }, \ + { k50, k51, k52, k53, k54, k55, k56, ___ }, \ + { k60, k61, k62, k63, k64, k65, k66, k67 }, \ + { k70, k71, k72, k73, k74, k75, k76, ___ }, \ + { k80, k81, k82, k83, k84, k85, k86, k87 }, \ + { k90, k91, k92, k93, k94, k95, k96, ___ }, \ + { ka0, ka1, ka2, ka3, ka4, ___, ___, ka7 }, \ + { ___, ___, ___, ___, ___, kb5, ___, ___ } \ +} diff --git a/keyboards/bacca70/chconf.h b/keyboards/bacca70/chconf.h new file mode 100644 index 0000000000..9fee9bb49d --- /dev/null +++ b/keyboards/bacca70/chconf.h @@ -0,0 +1,25 @@ +/* Copyright 2022 keebnewb + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/bacca70/config.h b/keyboards/bacca70/config.h new file mode 100644 index 0000000000..703baaaf3a --- /dev/null +++ b/keyboards/bacca70/config.h @@ -0,0 +1,49 @@ +/* +Copyright 2022 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBACA +#define PRODUCT_ID 0x6970 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Viktus Design LLC +#define PRODUCT Bacca70 + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 8 + +// 0 1 2 3 4 5 6 7 8 9 A B +#define MATRIX_ROW_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, A9, A10 } +#define MATRIX_COL_PINS { A0, A1, A2, B12, B13, B14, B15, A8 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + diff --git a/keyboards/bacca70/info.json b/keyboards/bacca70/info.json new file mode 100644 index 0000000000..ddc2f894ac --- /dev/null +++ b/keyboards/bacca70/info.json @@ -0,0 +1,170 @@ +{ + "keyboard_name": "Bacca70", + "url": "https://3dkeebs.com/", + "maintainer": "keebnewb", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5} + ] + }, + "LAYOUT_debaccabean": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":0, "y":2.25}, + {"x":1, "y":2.25}, + {"x":2, "y":2.25}, + {"x":3, "y":2.25}, + {"x":4, "y":2.25}, + {"x":5, "y":2.25}, + {"x":6, "y":2.25}, + {"x":7, "y":2.25}, + {"x":8, "y":2.25}, + {"x":9, "y":2.25}, + {"x":10, "y":2.25}, + {"x":11, "y":2.25}, + {"x":12, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.25}, + {"x":0, "y":3.25}, + {"x":1, "y":3.25}, + {"x":2, "y":3.25}, + {"x":3, "y":3.25}, + {"x":4, "y":3.25}, + {"x":5, "y":3.25}, + {"x":6, "y":3.25}, + {"x":7, "y":3.25}, + {"x":8, "y":3.25}, + {"x":9, "y":3.25}, + {"x":10, "y":3.25}, + {"x":11, "y":3.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"x":0, "y":4.25}, + {"x":1, "y":4.25}, + {"x":2, "y":4.25}, + {"x":3, "y":4.25}, + {"x":4, "y":4.25}, + {"x":5, "y":4.25}, + {"x":6, "y":4.25}, + {"x":7, "y":4.25}, + {"x":8, "y":4.25}, + {"x":9, "y":4.25}, + {"x":10, "y":4.25}, + {"x":11, "y":4.25}, + {"x":12, "y":4.25}, + {"x":13, "y":4.25}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":3}, + {"x":7, "y":5.25}, + {"x":8, "y":5.25, "w":3}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5} + ] + } + } +} diff --git a/keyboards/bacca70/keymaps/debaccabean/keymap.c b/keyboards/bacca70/keymaps/debaccabean/keymap.c new file mode 100644 index 0000000000..66e3ec0b5f --- /dev/null +++ b/keyboards/bacca70/keymaps/debaccabean/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2022 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +#define CAP_GUI MT(MOD_LGUI, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_debaccabean( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,KC_INS, KC_RBRC,KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + CAP_GUI,KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_ENT, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL + ), + + [1] = LAYOUT_debaccabean( + RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_UP, KC_PGUP,KC_TRNS,KC_TRNS, + KC_TRNS,KC_MPLY,KC_MUTE,KC_VOLD,KC_VOLU,KC_MPRV,KC_MNXT,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_END, KC_PGDN,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/bacca70/keymaps/dede-special/keymap.c b/keyboards/bacca70/keymaps/dede-special/keymap.c new file mode 100644 index 0000000000..1c7514e81b --- /dev/null +++ b/keyboards/bacca70/keymaps/dede-special/keymap.c @@ -0,0 +1,74 @@ +/* +Copyright 2022 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +// Windows mods +#define GRV_CTL MT(MOD_LCTL, KC_GRV) +#define BLS_CTL MT(MOD_RCTL, KC_BSLS) +#define TAB_ALT MT(MOD_LALT, KC_TAB) + +// MacOS mods +#define GRV_GUI MT(MOD_LGUI, KC_GRV) +#define BLS_GUI MT(MOD_RGUI, KC_BSLS) +#define TAB_CTL MT(MOD_LCTL, KC_TAB) + +// mod tap bracket shifts +#define LBR_SFT MT(MOD_LSFT, KC_LBRC) +#define RBR_SFT MT(MOD_RSFT, KC_RBRC) + +// Arrow/TenKey/Media Keys/Reset hold with Backspace tap +#define BSPC_LR LT(3, KC_BSPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_debaccabean( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,KC_GRV, KC_RBRC,KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, + TAB_ALT,KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, + LBR_SFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,RBR_SFT, + KC_LGUI, GRV_CTL, BSPC_LR,MO(2), KC_SPC, BLS_CTL, KC_RGUI + ), + + // MacOS layer + [1] = LAYOUT_debaccabean( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + TAB_CTL,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_LALT, GRV_GUI, KC_TRNS,KC_TRNS,KC_TRNS, BLS_GUI, KC_RALT + ), + + [2] = LAYOUT_debaccabean( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_UNDS,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_DLR, KC_TRNS,KC_TRNS,KC_TRNS,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_PLUS, + KC_MINS,KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,KC_TRNS,KC_TRNS,KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_debaccabean( + RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,TG(1), + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_UP, KC_PGUP,KC_TRNS,KC_TRNS, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MNXT,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS, + KC_MPLY,KC_MUTE,KC_VOLD,KC_VOLU,KC_MPRV,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_END, KC_PGDN,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/bacca70/keymaps/default/keymap.c b/keyboards/bacca70/keymaps/default/keymap.c new file mode 100644 index 0000000000..65f1252ba6 --- /dev/null +++ b/keyboards/bacca70/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2022 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_default( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_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_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_ENT, + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL + ), + + [1] = LAYOUT_default( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS + ) +}; diff --git a/keyboards/bacca70/keymaps/via/keymap.c b/keyboards/bacca70/keymaps/via/keymap.c new file mode 100644 index 0000000000..a4a74b7252 --- /dev/null +++ b/keyboards/bacca70/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* +Copyright 2022 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_default( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_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_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_ENT, + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL + ), + + [1]=LAYOUT_default( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS + ), + + [2] = LAYOUT_default( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS + ), + + [3] = LAYOUT_default( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS + ) +}; diff --git a/keyboards/bacca70/keymaps/via/rules.mk b/keyboards/bacca70/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/bacca70/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/bacca70/readme.md b/keyboards/bacca70/readme.md new file mode 100644 index 0000000000..2141138b8f --- /dev/null +++ b/keyboards/bacca70/readme.md @@ -0,0 +1,23 @@ +# Bacca70 + +![Bacca70](https://imgur.com/TQMALjwh.png) + +The Bacca70 is a winkeyless (WKL) 60% layout that includes a F-row. It's classy, hefty and it was designed by Chewwy (of MechsOnDeck) and BlindAssassin. + +* Keyboard Maintainer: [keebnewb](https://github.com/thompson-ele) +* Hardware Supported: Bacca70 PCB and the ortholinear variant the DeBaccaBean PCB +* Hardware Availability: [3DKeebs](https://3dkeebs.com/) + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key (Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB. The button is next to the MCU. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. For the default keymap it is on the right alt key on the second layer. + +## Make example for this keyboard (after setting up your build environment): + + make bacca70:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bacca70/rules.mk b/keyboards/bacca70/rules.mk new file mode 100644 index 0000000000..a0b213f847 --- /dev/null +++ b/keyboards/bacca70/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# 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 = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bolsa/damapad/config.h b/keyboards/bolsa/damapad/config.h new file mode 100644 index 0000000000..b829a8a998 --- /dev/null +++ b/keyboards/bolsa/damapad/config.h @@ -0,0 +1,59 @@ + +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D64 +#define PRODUCT_ID 0x6470 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Bolsa Keyboard Supply +#define PRODUCT Damapad + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 6 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { E6, F7, C7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, B7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } +#define ENCODER_RESOLUTION 2 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT diff --git a/keyboards/bolsa/damapad/damapad.c b/keyboards/bolsa/damapad/damapad.c new file mode 100644 index 0000000000..d57a60c166 --- /dev/null +++ b/keyboards/bolsa/damapad/damapad.c @@ -0,0 +1,81 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "damapad.h" + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + static const char PROGMEM bolsa_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1e, 0x3e, 0xfe, 0xfe, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfe, 0xfe, 0x3e, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0x3e, 0xfe, 0xfe, 0xff, 0x7f, 0x7f, + 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, + 0x7f, 0xff, 0xfe, 0xfe, 0x3e, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, 0x07, 0x00, 0x00, 0xf8, + 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, + 0x00, 0x00, 0x0f, 0xff, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3f, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x1f, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, + 0x1f, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(bolsa_logo, sizeof(bolsa_logo)); + return false; +} + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/bolsa/damapad/damapad.h b/keyboards/bolsa/damapad/damapad.h new file mode 100644 index 0000000000..9f0d0d4170 --- /dev/null +++ b/keyboards/bolsa/damapad/damapad.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_wkl( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + K20, K21, K23, K25 \ +) { \ + { K00, K01, K02, K03, K04, K05 }, \ + { K10, K11, K12, K13, K14, K15 }, \ + { K20, K21, XXX, K23, XXX, K25 } \ +} + +#define LAYOUT_bar( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + K20, K23, K25 \ +) { \ + { K00, K01, K02, K03, K04, K05 }, \ + { K10, K11, K12, K13, K14, K15 }, \ + { K20, XXX, XXX, K23, XXX, K25 } \ +} diff --git a/keyboards/bolsa/damapad/info.json b/keyboards/bolsa/damapad/info.json new file mode 100644 index 0000000000..28d0c4fc82 --- /dev/null +++ b/keyboards/bolsa/damapad/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "Damapad", + "url": "", + "maintainer": "matthewdias", + "layouts": { + "LAYOUT_wkl": { + "layout": [{ + "x": 5.25, + "y": 0 + }, { + "x": 0, + "y": 0.25 + }, { + "x": 1, + "y": 0.25 + }, { + "x": 2, + "y": 0.25 + }, { + "x": 3, + "y": 0.25 + }, { + "x": 4, + "y": 0.25 + }, { + "x": 0, + "y": 1.25 + }, { + "x": 1, + "y": 1.25 + }, { + "x": 2, + "y": 1.25 + }, { + "x": 3, + "y": 1.25 + }, { + "x": 4, + "y": 1.25 + }, { + "x": 5.25, + "y": 1.25 + }, { + "x": 0, + "y": 2.25 + }, { + "x": 1.75, + "y": 2.25 + }, { + "x": 2.75, + "y": 2.25, + "w": 2.25 + }, { + "x": 5.25, + "y": 2.25 + }] + }, + "LAYOUT_bar": { + "layout": [{ + "x": 5.25, + "y": 0 + }, { + "x": 0, + "y": 0.25 + }, { + "x": 1, + "y": 0.25 + }, { + "x": 2, + "y": 0.25 + }, { + "x": 3, + "y": 0.25 + }, { + "x": 4, + "y": 0.25 + }, { + "x": 0, + "y": 1.25 + }, { + "x": 1, + "y": 1.25 + }, { + "x": 2, + "y": 1.25 + }, { + "x": 3, + "y": 1.25 + }, { + "x": 4, + "y": 1.25 + }, { + "x": 5.25, + "y": 1.25 + }, { + "x": 0, + "y": 2.25, + "w": 2.75 + }, { + "x": 2.75, + "y": 2.25, + "w": 2.25 + }, { + "x": 5.25, + "y": 2.25 + }] + } + } +} diff --git a/keyboards/bolsa/damapad/keymaps/default/keymap.c b/keyboards/bolsa/damapad/keymaps/default/keymap.c new file mode 100644 index 0000000000..00c8e05333 --- /dev/null +++ b/keyboards/bolsa/damapad/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_wkl( + KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_MSEL, KC_MUTE, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PGUP, + KC_NO, KC_COPY, KC_PASTE, KC_PGDN + ) + +}; + diff --git a/keyboards/bolsa/damapad/keymaps/via/keymap.c b/keyboards/bolsa/damapad/keymaps/via/keymap.c new file mode 100644 index 0000000000..18ae315207 --- /dev/null +++ b/keyboards/bolsa/damapad/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_wkl( + KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_MSEL, KC_MUTE, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PGUP, + KC_NO, KC_COPY, KC_PASTE, KC_PGDN + ), + + [1] = LAYOUT_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + diff --git a/keyboards/bolsa/damapad/keymaps/via/rules.mk b/keyboards/bolsa/damapad/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/bolsa/damapad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/bolsa/damapad/readme.md b/keyboards/bolsa/damapad/readme.md new file mode 100644 index 0000000000..1cfa1c06b7 --- /dev/null +++ b/keyboards/bolsa/damapad/readme.md @@ -0,0 +1,22 @@ +# Damapad + +A Macropad by Bolsa Supply + +- Keyboard Maintainer: [matthewdias](https://github.com/matthewdias) +- Hardware Supported: Damapad PCB + +Make example for this keyboard (after setting up your build environment): + + make bolsa/damapad:default + +Flashing example for this keyboard: + + make bolsa/damapad: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: + +- **Physical reset button**: Briefly press the button on the back of the PCB (or short the reset/ground pads, should a tactile button not be installed) diff --git a/keyboards/bolsa/damapad/rules.mk b/keyboards/bolsa/damapad/rules.mk new file mode 100644 index 0000000000..48717046e4 --- /dev/null +++ b/keyboards/bolsa/damapad/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/bpiphany/hid_liber/matrix.c b/keyboards/bpiphany/hid_liber/matrix.c index da73c616d7..90e8a327b5 100755 --- a/keyboards/bpiphany/hid_liber/matrix.c +++ b/keyboards/bpiphany/hid_liber/matrix.c @@ -245,15 +245,3 @@ void matrix_print(void) print("\n"); } } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - for (uint8_t j = 0; j < MATRIX_COLS; j++) { - if (matrix_is_on(i, j)) - count++; - } - } - return count; -} diff --git a/keyboards/bpiphany/kitten_paw/matrix.c b/keyboards/bpiphany/kitten_paw/matrix.c index 56114858f1..6548040c7c 100644 --- a/keyboards/bpiphany/kitten_paw/matrix.c +++ b/keyboards/bpiphany/kitten_paw/matrix.c @@ -132,14 +132,6 @@ void matrix_print(void) { } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop32(matrix[i]); - } - return count; -} - static uint8_t read_rows(void) { return (PINC&(1<<7) ? 0 : (1<<0)) | diff --git a/keyboards/bpiphany/pegasushoof/2013/matrix.c b/keyboards/bpiphany/pegasushoof/2013/matrix.c index 09244982d9..a55cba7afd 100644 --- a/keyboards/bpiphany/pegasushoof/2013/matrix.c +++ b/keyboards/bpiphany/pegasushoof/2013/matrix.c @@ -132,15 +132,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static matrix_row_t read_cols(void) { return diff --git a/keyboards/bpiphany/pegasushoof/2015/matrix.c b/keyboards/bpiphany/pegasushoof/2015/matrix.c index b05869feda..2b142f9fc8 100644 --- a/keyboards/bpiphany/pegasushoof/2015/matrix.c +++ b/keyboards/bpiphany/pegasushoof/2015/matrix.c @@ -111,15 +111,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < matrix_rows(); i++) { - count += bitpop16(matrix_get_row(i)); - } - return count; -} - static matrix_row_t read_cols(void) { return diff --git a/keyboards/bpiphany/tiger_lily/matrix.c b/keyboards/bpiphany/tiger_lily/matrix.c index 47a92268c8..abf6f3f42b 100644 --- a/keyboards/bpiphany/tiger_lily/matrix.c +++ b/keyboards/bpiphany/tiger_lily/matrix.c @@ -146,10 +146,3 @@ void matrix_print(void) { } #endif } - -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t row = 0; row < MATRIX_ROWS; row++) - count += bitpop32(matrix[row]); - return count; -} diff --git a/keyboards/bpiphany/unloved_bastard/matrix.c b/keyboards/bpiphany/unloved_bastard/matrix.c index 328d9015c2..98cdf22f48 100644 --- a/keyboards/bpiphany/unloved_bastard/matrix.c +++ b/keyboards/bpiphany/unloved_bastard/matrix.c @@ -147,10 +147,3 @@ void matrix_print(void) { } #endif } - -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t row = 0; row < MATRIX_ROWS; row++) - count += bitpop32(matrix[row]); - return count; -} diff --git a/keyboards/converter/ibm_terminal/matrix.c b/keyboards/converter/ibm_terminal/matrix.c index caa0a38051..3d6736a0cc 100644 --- a/keyboards/converter/ibm_terminal/matrix.c +++ b/keyboards/converter/ibm_terminal/matrix.c @@ -27,7 +27,6 @@ along with this program. If not, see . #define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) #define print_matrix_header() print("\nr/c 01234567\n") -#define matrix_bitpop(i) bitpop(matrix[i]) #define ROW_SHIFTER ((uint8_t)1) diff --git a/keyboards/converter/palm_usb/matrix.c b/keyboards/converter/palm_usb/matrix.c index 010fd56c79..28d4b87d83 100644 --- a/keyboards/converter/palm_usb/matrix.c +++ b/keyboards/converter/palm_usb/matrix.c @@ -379,12 +379,3 @@ void matrix_print(void) print("\n"); } } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop(matrix[i]); - } - return count; -} diff --git a/keyboards/converter/sun_usb/matrix.c b/keyboards/converter/sun_usb/matrix.c index e28d165d52..35ec391024 100644 --- a/keyboards/converter/sun_usb/matrix.c +++ b/keyboards/converter/sun_usb/matrix.c @@ -179,12 +179,3 @@ void matrix_print(void) print("\n"); } } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop(matrix[i]); - } - return count; -} diff --git a/keyboards/converter/usb_usb/ble/ble.h b/keyboards/converter/usb_usb/ble/ble.h index 3dccc23a41..3351176047 100644 --- a/keyboards/converter/usb_usb/ble/ble.h +++ b/keyboards/converter/usb_usb/ble/ble.h @@ -1,3 +1,3 @@ #pragma once -#include QMK_KEYBOARD_H +#include "usb_usb.h" diff --git a/keyboards/converter/usb_usb/ble/config.h b/keyboards/converter/usb_usb/ble/config.h index 92df24d003..675183f082 100644 --- a/keyboards/converter/usb_usb/ble/config.h +++ b/keyboards/converter/usb_usb/ble/config.h @@ -1,13 +1,6 @@ #pragma once #undef PRODUCT -#define PRODUCT QMK BLE Adapter +#define PRODUCT QMK BLE Adapter -// Turn off the mode leds on the BLE module -#define BLUEFRUIT_LE_ENABLE_MODE_LEDS 0 -#define BLUEFRUIT_LE_ENABLE_POWER_LED 0 - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION #define NO_ACTION_ONESHOT - diff --git a/keyboards/converter/usb_usb/ble/readme.md b/keyboards/converter/usb_usb/ble/readme.md index 0ee7223fd4..05cf437399 100644 --- a/keyboards/converter/usb_usb/ble/readme.md +++ b/keyboards/converter/usb_usb/ble/readme.md @@ -17,14 +17,3 @@ Part list: * [Pololu 5V Step-Up Voltage Regulator U3V12F5](https://www.pololu.com/product/2115) * [Lithium Ion Battery - 3.7v 2000mAh](https://www.adafruit.com/product/2011) * Some sort of switch to be able to turn it off - -Building and Flashing ---------------------- - -``` -make converter-usb_usb-ble -``` - -``` -make converter-usb_usb-ble-avrdude -``` \ No newline at end of file diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk index df5bc36635..86a4e15ffe 100644 --- a/keyboards/converter/usb_usb/ble/rules.mk +++ b/keyboards/converter/usb_usb/ble/rules.mk @@ -1,17 +1,7 @@ # Processor frequency F_CPU = 8000000 -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # 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 - +EXTRAKEY_ENABLE = no BLUETOOTH_ENABLE = yes BLUETOOTH_DRIVER = BluefruitLE - LTO_ENABLE = yes diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h index d2488336a5..5f791eaa34 100644 --- a/keyboards/converter/usb_usb/config.h +++ b/keyboards/converter/usb_usb/config.h @@ -17,6 +17,8 @@ along with this program. If not, see . #pragma once +#include "config_common.h" + /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x005B @@ -43,5 +45,3 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION diff --git a/keyboards/converter/usb_usb/custom_matrix.cpp b/keyboards/converter/usb_usb/custom_matrix.cpp index 265fb2c68d..a92feeb6c1 100644 --- a/keyboards/converter/usb_usb/custom_matrix.cpp +++ b/keyboards/converter/usb_usb/custom_matrix.cpp @@ -58,36 +58,31 @@ extern "C" { */ #define ROW_MASK 0xF0 #define COL_MASK 0x0F -#define CODE(row, col) (((row) << 4) | (col)) -#define ROW(code) (((code) & ROW_MASK) >> 4) -#define COL(code) ((code) & COL_MASK) -#define ROW_BITS(code) (1 << COL(code)) - +#define CODE(row, col) (((row) << 4) | (col)) +#define ROW(code) (((code) & ROW_MASK) >> 4) +#define COL(code) ((code) & COL_MASK) +#define ROW_BITS(code) (1 << COL(code)) // Integrated key state of all keyboards static report_keyboard_t local_keyboard_report; -static bool matrix_is_mod = false; - /* * USB Host Shield HID keyboards * This supports two cascaded hubs and four keyboards */ USB usb_host; -HIDBoot kbd1(&usb_host); -HIDBoot kbd2(&usb_host); -HIDBoot kbd3(&usb_host); -HIDBoot kbd4(&usb_host); +USBHub hub1(&usb_host); +USBHub hub2(&usb_host); +HIDBoot kbd1(&usb_host); +HIDBoot kbd2(&usb_host); +HIDBoot kbd3(&usb_host); +HIDBoot kbd4(&usb_host); KBDReportParser kbd_parser1; KBDReportParser kbd_parser2; KBDReportParser kbd_parser3; KBDReportParser kbd_parser4; -USBHub hub1(&usb_host); -USBHub hub2(&usb_host); - -extern "C" -{ +extern "C" { uint8_t matrix_rows(void) { return MATRIX_ROWS; } uint8_t matrix_cols(void) { return MATRIX_COLS; } bool matrix_has_ghost(void) { return false; } @@ -135,6 +130,7 @@ extern "C" } uint8_t matrix_scan(void) { + bool changed = false; static uint16_t last_time_stamp1 = 0; static uint16_t last_time_stamp2 = 0; static uint16_t last_time_stamp3 = 0; @@ -158,15 +154,13 @@ extern "C" or_report(kbd_parser3.report); or_report(kbd_parser4.report); - matrix_is_mod = true; + changed = true; dprintf("state: %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved); for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { dprintf(" %02X", local_keyboard_report.keys[i]); } dprint("\r\n"); - } else { - matrix_is_mod = false; } uint16_t timer; @@ -189,7 +183,7 @@ extern "C" } } matrix_scan_quantum(); - return 1; + return changed; } bool matrix_is_on(uint8_t row, uint8_t col) { @@ -225,18 +219,6 @@ extern "C" return row_bits; } - uint8_t matrix_key_count(void) { - uint8_t count = 0; - - count += bitpop(local_keyboard_report.mods); - for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { - if (IS_ANY(local_keyboard_report.keys[i])) { - count++; - } - } - return count; - } - void matrix_print(void) { print("\nr/c 0123456789ABCDEF\n"); for (uint8_t row = 0; row < matrix_rows(); row++) { @@ -246,13 +228,11 @@ extern "C" } } - void led_set(uint8_t usb_led) - { + void led_set(uint8_t usb_led) { if (kbd1.isReady()) kbd1.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd2.isReady()) kbd2.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led); led_set_kb(usb_led); } - -}; +} diff --git a/keyboards/converter/usb_usb/hasu/hasu.h b/keyboards/converter/usb_usb/hasu/hasu.h index 3dccc23a41..3351176047 100644 --- a/keyboards/converter/usb_usb/hasu/hasu.h +++ b/keyboards/converter/usb_usb/hasu/hasu.h @@ -1,3 +1,3 @@ #pragma once -#include QMK_KEYBOARD_H +#include "usb_usb.h" diff --git a/keyboards/converter/usb_usb/main.c b/keyboards/converter/usb_usb/main.c deleted file mode 100644 index 76e88922cb..0000000000 --- a/keyboards/converter/usb_usb/main.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -#include -#include - -// LUFA -#include "lufa.h" - -#include "sendchar.h" -#include "debug.h" -#include "keyboard.h" -#include "led.h" - - -/* LED ping configuration */ -#define TMK_LED -//#define LEONARDO_LED -#if defined(TMK_LED) -// For TMK converter and Teensy -#define LED_TX_INIT (DDRD |= (1<<6)) -#define LED_TX_ON (PORTD |= (1<<6)) -#define LED_TX_OFF (PORTD &= ~(1<<6)) -#define LED_TX_TOGGLE (PORTD ^= (1<<6)) -#elif defined(LEONARDO_LED) -// For Leonardo(TX LED) -#define LED_TX_INIT (DDRD |= (1<<5)) -#define LED_TX_ON (PORTD &= ~(1<<5)) -#define LED_TX_OFF (PORTD |= (1<<5)) -#define LED_TX_TOGGLE (PORTD ^= (1<<5)) -#else -#define LED_TX_INIT -#define LED_TX_ON -#define LED_TX_OFF -#define LED_TX_TOGGLE -#endif - - -static void LUFA_setup(void) -{ - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Disable clock division */ -#if (F_CPU == 8000000) - clock_prescale_set(clock_div_2); // 16MHz crystal divided by 2 -#else - clock_prescale_set(clock_div_1); -#endif - - // Leonardo needs. Without this USB device is not recognized. - USB_Disable(); - - USB_Init(); - - // for Console_Task - USB_Device_EnableSOFEvents(); - print_set_sendchar(sendchar); -} - - - -int main(void) -{ - // LED for debug - LED_TX_INIT; - LED_TX_ON; - - debug_enable = true; - debug_keyboard = true; - - host_set_driver(&lufa_driver); - keyboard_init(); - - LUFA_setup(); - - /* NOTE: Don't insert time consuming job here. - * It'll cause unclear initialization failure when DFU reset(worm start). - */ - sei(); - -/* Some keyboards bootup quickly and cannot be initialized with this startup wait. - // wait for startup of sendchar routine - while (USB_DeviceState != DEVICE_STATE_Configured) ; - if (debug_enable) { - _delay_ms(1000); - } -*/ - - debug("init: done\n"); - - for (;;) { - keyboard_task(); - -#if !defined(INTERRUPT_CONTROL_ENDPOINT) - // LUFA Task for control request - USB_USBTask(); -#endif - } - - return 0; -} diff --git a/keyboards/converter/usb_usb/pro_micro/pro_micro.h b/keyboards/converter/usb_usb/pro_micro/pro_micro.h index 3dccc23a41..3351176047 100644 --- a/keyboards/converter/usb_usb/pro_micro/pro_micro.h +++ b/keyboards/converter/usb_usb/pro_micro/pro_micro.h @@ -1,3 +1,3 @@ #pragma once -#include QMK_KEYBOARD_H +#include "usb_usb.h" diff --git a/keyboards/converter/usb_usb/rules.mk b/keyboards/converter/usb_usb/rules.mk index 19903ed331..a33c0aaa54 100644 --- a/keyboards/converter/usb_usb/rules.mk +++ b/keyboards/converter/usb_usb/rules.mk @@ -8,15 +8,17 @@ BOOTLOADER = caterina # change yes to no to disable # BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -#MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -#CONSOLE_ENABLE = yes # Console for debug -#COMMAND_ENABLE = yes # Commands for debug and configuration +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 = yes -USB_HID_ENABLE = yes -CUSTOM_MATRIX = yes +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +USB_HID_ENABLE = yes +CUSTOM_MATRIX = yes -SRC = custom_matrix.cpp +SRC += custom_matrix.cpp DEFAULT_FOLDER = converter/usb_usb/hasu diff --git a/keyboards/converter/usb_usb/usb_usb.h b/keyboards/converter/usb_usb/usb_usb.h index 3acd67634a..4a25cf5d2e 100644 --- a/keyboards/converter/usb_usb/usb_usb.h +++ b/keyboards/converter/usb_usb/usb_usb.h @@ -19,6 +19,14 @@ along with this program. If not, see . #include "quantum.h" +#if defined(KEYBOARD_converter_usb_usb_ble) +# include "ble.h" +#elif defined(KEYBOARD_converter_usb_usb_hasu) +# include "hasu.h" +#elif defined(KEYBOARD_converter_usb_usb_pro_micro) +# include "pro_micro.h" +#endif + #define XXX KC_NO #define ______ KC_TRNS diff --git a/keyboards/crkbd/keymaps/jpe230/config.h b/keyboards/crkbd/keymaps/jpe230/config.h index 3680f7c480..2887b5014c 100644 --- a/keyboards/crkbd/keymaps/jpe230/config.h +++ b/keyboards/crkbd/keymaps/jpe230/config.h @@ -21,4 +21,24 @@ along with this program. If not, see . #pragma once -#define SPLIT_WPM_ENABLE +#ifndef RGB_MATRIX_ENABLE +# define SPLIT_WPM_ENABLE +#endif + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_KEYPRESSES +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128 +# define RGB_MATRIX_STARTUP_HUE 215 +# define RGB_MATRIX_STARTUP_SAT 255 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/crkbd/keymaps/jpe230/keymap.c b/keyboards/crkbd/keymaps/jpe230/keymap.c index 65cb6f73f7..6e812c0e61 100644 --- a/keyboards/crkbd/keymaps/jpe230/keymap.c +++ b/keyboards/crkbd/keymaps/jpe230/keymap.c @@ -46,11 +46,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_split_3x6_3( //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_CAPS, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, KC_UP, _______, RGB_MOD, RGB_HUI, RGB_VAI, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, _______, + KC_LSFT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, RGB_TOG, RGB_SAI, RGB_SPI, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| KC_LGUI, _______, _______, _______, MO(3), KC_RALT //`--------------------------' `--------------------------' @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [2] = LAYOUT_split_3x6_3( //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_CAPS, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -83,7 +83,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return rotation; +#ifdef RGB_MATRIX_ENABLE + if (!is_keyboard_master()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } +#endif + return rotation; } #define L_BASE 0 @@ -163,6 +168,7 @@ void render_bootmagic_status(bool status) { } } +#ifndef RGB_MATRIX_ENABLE // frame 0, 128x32px const char PROGMEM cat_frame_0 [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -282,8 +288,18 @@ static uint32_t frame_timer = 0; static uint32_t anim_sleep = 0; static uint8_t anim_speed = 120; -void oled_render_logo(void) { +#endif +void oled_render_logo(void) { +#ifdef RGB_MATRIX_ENABLE + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +#endif +#ifndef RGB_MATRIX_ENABLE if(get_current_wpm() != 000) { oled_on(); int8_t wpm_speed = (int8_t)(get_current_wpm() / 2); @@ -309,6 +325,7 @@ void oled_render_logo(void) { oled_write_raw_P(cat_frames[current_frame], FRAME_SIZE); } } +#endif } bool oled_task_user(void) { @@ -328,6 +345,9 @@ bool tog_sarcasm = false; bool uppercase = false; uint8_t prev_upper = 0; uint8_t prev_lower = 0; +uint8_t prev_mode = 0; +HSV prev_hsv; + bool process_record_sarcasm(uint16_t keycode, keyrecord_t *record) { if (keycode == KC_ENTER && record->event.pressed) { @@ -379,10 +399,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { tog_sarcasm = !tog_sarcasm; - if (tog_sarcasm) + if (tog_sarcasm) { dprint("Enabling saRCaSm ModE\n"); - else + + #ifdef RGB_MATRIX_ENABLE + prev_hsv = rgb_matrix_get_hsv(); + prev_mode = rgb_matrix_get_mode(); + rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_MULTISPLASH); + rgb_matrix_sethsv_noeeprom(HSV_YELLOW); + #endif + } + else { dprint("Disabling saRCaSm ModE\n"); + #ifdef RGB_MATRIX_ENABLE + rgb_matrix_mode_noeeprom(prev_mode); + rgb_matrix_sethsv_noeeprom(prev_hsv.h, prev_hsv.s, prev_hsv.v); + #endif + } uppercase = false; prev_upper = 0; diff --git a/keyboards/crkbd/keymaps/jpe230/rules.mk b/keyboards/crkbd/keymaps/jpe230/rules.mk index 27a25ddeb3..82d5eb321d 100644 --- a/keyboards/crkbd/keymaps/jpe230/rules.mk +++ b/keyboards/crkbd/keymaps/jpe230/rules.mk @@ -1,6 +1,12 @@ -MOUSEKEY_ENABLE = yes -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -LTO_ENABLE = yes -WPM_ENABLE = yes -VIA_ENABLE = yes +# Shared rules for both of my Corne +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +LTO_ENABLE = yes +VIA_ENABLE = yes + +# Rules for my Corne without RGB +# WPM_ENABLE = yes +# MOUSEKEY_ENABLE = yes + +# Rules for my Corne with RGB +RGB_MATRIX_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/rmeli/config.h b/keyboards/crkbd/keymaps/rmeli/config.h new file mode 100644 index 0000000000..36fb755d00 --- /dev/null +++ b/keyboards/crkbd/keymaps/rmeli/config.h @@ -0,0 +1,80 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2021 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define MASTER_LEFT // Left side is the master +#define SPLIT_LED_STATE_ENABLE + +#define TAPPING_TERM 200 + +#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX + +#define AUTO_SHIFT_REPEAT + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_LIMIT_VAL 120 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +#endif + +#ifdef RGB_MATRIX_ENABLE +// RGB matrix options +# define RGB_MATRIX_KEYPRESSES // enable keypress effects +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# define RGB_DISABLE_WHEN_USB_SUSPENDED +// Disable unwanted R2G effects (from r2g/config.h) +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_HUE_BREATHING +# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +//# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// Enable effects +# define ENABLE_RGB_MATRIX_SOLID_COLOR +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// Default effect +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +# define RGB_MATRIX_STARTUP_HUE 10 +# define RGB_MATRIX_STARTUP_SAT 255 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#endif + +// https://github.com/qmk/qmk_firmware/blob/develop/docs/squeezing_avr.md +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_MUSIC_MODE +#define LAYER_STATE_8BIT // Limit to 8 layers diff --git a/keyboards/crkbd/keymaps/rmeli/keymap.c b/keyboards/crkbd/keymaps/rmeli/keymap.c new file mode 100644 index 0000000000..f7901d1cfd --- /dev/null +++ b/keyboards/crkbd/keymaps/rmeli/keymap.c @@ -0,0 +1,131 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> +Copyright 2021 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#include "rmeli.h" + +// + -------------------- + +// + RGB MATRIX CALLBACKS | +// + -------------------- + + +// LED numbers: +// https://github.com/foostan/crkbd/blob/main/corne-classic/doc/buildguide_en.md + +// Change LED color to red when CAPS LOCK is active +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(26, 255, 0, 0); + // Only works with SPLIT_LED_STATE_ENABLE + rgb_matrix_set_color(53, 255, 0, 0); + } +} + +// + ---- + +// + OLED | +// + ---- + + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_rocco(); + } else { + oled_render_meli(); + } + return false; +} + +// + ------- + +// + KEY MAP | +// + ------- + + +// Layer names +enum layer_names { + _QWERTY, + _COLEMAK_DH, + _DWN, + _UP, + _CONFIG, +}; + +// Layer names shortcuts +#define _QWY 0 +#define _CMK 1 +#define _CFG 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split_3x6_3( + //|-----------------------------------------------------| |-----------------------------------------------------| + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + TD_ED, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + TD_LSPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL + //|--------------------------| |--------------------------| + ), + + [_COLEMAK_DH] = LAYOUT_split_3x6_3( + //|-----------------------------------------------------| |-----------------------------------------------------| + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_SCLN, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + TD_ED, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + TD_LSPC, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL + //|--------------------------| |--------------------------| + ), + + [_DWN] = LAYOUT_split_3x6_3( + //|-----------------------------------------------------| |-----------------------------------------------------| + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, A_GRV, E_GRV, I_GRV, O_GRV, U_GRV, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, A_UML, E_ACT, I_CIR, O_UML, U_UML, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_PGDN, _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, _______, _______,MO(_CFG), _______ + //|--------------------------| |--------------------------| + ), + + [_UP] = LAYOUT_split_3x6_3( + //|-----------------------------------------------------| |-----------------------------------------------------| + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______,MO(_CFG), _______, _______, _______, _______ + //|--------------------------| |--------------------------| + ), + + [_CONFIG] = LAYOUT_split_3x6_3( + //|-----------------------------------------------------| |-----------------------------------------------------| + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_MOD, KC_ASUP, NK_ON, XXXXXXX, XXXXXXX,DF(_QWY), + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, KC_ASTG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, UC_RMOD, KC_ASDN, NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK), + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______ + //|--------------------------| |--------------------------| + ) +}; \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/rmeli/rules.mk b/keyboards/crkbd/keymaps/rmeli/rules.mk new file mode 100644 index 0000000000..8e9dbbf8cf --- /dev/null +++ b/keyboards/crkbd/keymaps/rmeli/rules.mk @@ -0,0 +1,12 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +TAP_DANCE_ENABLE = yes +AUTO_SHIFT_ENABLE = yes + +UNICODEMAP_ENABLE = yes + +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes + +NKRO_ENABLE = yes diff --git a/keyboards/dc01/arrow/matrix.c b/keyboards/dc01/arrow/matrix.c index b69e147914..e7c3bec2b5 100644 --- a/keyboards/dc01/arrow/matrix.c +++ b/keyboards/dc01/arrow/matrix.c @@ -48,17 +48,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -234,17 +231,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) @@ -388,4 +374,4 @@ static void unselect_cols(void) void matrix_setup(void){ i2c_slave_init(SLAVE_I2C_ADDRESS); //setup address of slave i2c sei(); //enable interupts -} \ No newline at end of file +} diff --git a/keyboards/dc01/left/matrix.c b/keyboards/dc01/left/matrix.c index 3eeb2586bc..8b8f89a081 100644 --- a/keyboards/dc01/left/matrix.c +++ b/keyboards/dc01/left/matrix.c @@ -52,17 +52,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -259,17 +256,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) diff --git a/keyboards/dc01/numpad/matrix.c b/keyboards/dc01/numpad/matrix.c index e8e2a1b14a..1dc90a6b84 100644 --- a/keyboards/dc01/numpad/matrix.c +++ b/keyboards/dc01/numpad/matrix.c @@ -48,17 +48,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -234,17 +231,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) @@ -388,4 +374,4 @@ static void unselect_cols(void) void matrix_setup(void){ i2c_slave_init(SLAVE_I2C_ADDRESS); //setup address of slave i2c sei(); //enable interupts -} \ No newline at end of file +} diff --git a/keyboards/dc01/right/matrix.c b/keyboards/dc01/right/matrix.c index 2509bd7d4c..f21dec1d2b 100644 --- a/keyboards/dc01/right/matrix.c +++ b/keyboards/dc01/right/matrix.c @@ -49,17 +49,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -235,17 +232,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) @@ -389,4 +375,4 @@ static void unselect_cols(void) void matrix_setup(void){ i2c_slave_init(SLAVE_I2C_ADDRESS); //setup address of slave i2c sei(); //enable interupts -} \ No newline at end of file +} diff --git a/keyboards/dichotomy/matrix.c b/keyboards/dichotomy/matrix.c index 806b66d498..dc90e7501e 100755 --- a/keyboards/dichotomy/matrix.c +++ b/keyboards/dichotomy/matrix.c @@ -34,17 +34,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -215,12 +212,3 @@ void matrix_print(void) print("\n"); } } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} diff --git a/keyboards/duck/jetfire/matrix.c b/keyboards/duck/jetfire/matrix.c index 729fa6dd14..2b64885842 100644 --- a/keyboards/duck/jetfire/matrix.c +++ b/keyboards/duck/jetfire/matrix.c @@ -136,15 +136,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop32(matrix[i]); - } - return count; -} - static void init_ports(void) { // Rows are inputs (inputs are 0) @@ -268,4 +259,4 @@ static void select_col(uint8_t col) PORTB |= 0b00000001; break; } -} \ No newline at end of file +} diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h index 5985fccea7..5d715a1e0d 100644 --- a/keyboards/dztech/dz60rgb_wkl/v2/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h @@ -69,9 +69,6 @@ # define ENABLE_RGB_MATRIX_HUE_BREATHING # define ENABLE_RGB_MATRIX_HUE_PENDULUM # define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // # define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/keyboards/dztech/dz64rgb/info.json b/keyboards/dztech/dz64rgb/info.json new file mode 100644 index 0000000000..8e602bd7c0 --- /dev/null +++ b/keyboards/dztech/dz64rgb/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "DZ64RGB", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_64_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2}, + {"label":"Z", "x":2, "y":3}, + {"label":"X", "x":3, "y":3}, + {"label":"C", "x":4, "y":3}, + {"label":"V", "x":5, "y":3}, + {"label":"B", "x":6, "y":3}, + {"label":"N", "x":7, "y":3}, + {"label":"M", "x":8, "y":3}, + {"label":",<", "x":9, "y":3}, + {"label":".>", "x":10, "y":3}, + {"label":"/?", "x":11, "y":3}, + {"label":"Shift", "x":12, "y":3}, + {"label":"\u2191", "x":13, "y":3}, + {"label":"Delete", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Ctrl", "x":11, "y":4}, + {"label":"\u2190", "x":12, "y":4}, + {"label":"\u2193", "x":13, "y":4}, + {"label":"\u2192", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/evancookaudio/sleepingdinosaur/config.h b/keyboards/evancookaudio/sleepingdinosaur/config.h index 4412e9eb60..ca1bdbf1c2 100644 --- a/keyboards/evancookaudio/sleepingdinosaur/config.h +++ b/keyboards/evancookaudio/sleepingdinosaur/config.h @@ -37,8 +37,6 @@ /* key matrix pins */ -#define MATRIX_ROW_PINS {D0, D1, D4, C6, D7} -#define MATRIX_COL_PINS {F4, F5, F6, F7, B1, B3} - -#define UNUSED_PINS {B2, B6, B7, D5, C7, F1, F0, B4, E6} - +#define MATRIX_ROW_PINS {D1, D0, D4, C6, D7} +#define MATRIX_COL_PINS {B3, B1, F7, F6, F5, F4} +#define UNUSED_PINS diff --git a/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/keymap.c b/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/keymap.c new file mode 100644 index 0000000000..53edbf1321 --- /dev/null +++ b/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2022 evan cook + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +/* LAYER 0 + * ,-----------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | - | + * |-------+-------+-------|-------|-------|-------| + * | 6 | 7 | 8 | 9 | 0 | R | + * |-------+-------+-------|-------|-------|-------| + * | LT(/) | Q | W | E | U | V | + * -------+-------+-------|-------|-------|-------| + * | ENTER | A | S | D | SPACE | O | + * | |-------+-------+-------| |-------| + * | | Z | X | C | | N | + * ,-----------------------------------------------. + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, + KC_6, KC_7, KC_8, KC_9, KC_0, KC_R, + LT(1,KC_SLSH), KC_Q, KC_W, KC_E, KC_U, KC_V, + KC_ENT, KC_A, KC_S, KC_D, KC_SPC, KC_O, + KC_Z, KC_X, KC_C, KC_N + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/rules.mk b/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/evancookaudio/sleepingdinosaur/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/evancookaudio/sleepingdinosaur/rules.mk b/keyboards/evancookaudio/sleepingdinosaur/rules.mk index 6cf6d9358b..94d6846c6c 100644 --- a/keyboards/evancookaudio/sleepingdinosaur/rules.mk +++ b/keyboards/evancookaudio/sleepingdinosaur/rules.mk @@ -7,9 +7,9 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control +EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Enable N-Key Rollover diff --git a/keyboards/gboards/ergotaco/matrix.c b/keyboards/gboards/ergotaco/matrix.c index 16300a7e4f..7e5d675218 100644 --- a/keyboards/gboards/ergotaco/matrix.c +++ b/keyboards/gboards/ergotaco/matrix.c @@ -221,15 +221,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - // Remember this means ROWS static void init_cols(void) { diff --git a/keyboards/gboards/georgi/matrix.c b/keyboards/gboards/georgi/matrix.c index 7d635ad8d7..24bb2d7acf 100644 --- a/keyboards/gboards/georgi/matrix.c +++ b/keyboards/gboards/georgi/matrix.c @@ -242,15 +242,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - // Remember this means ROWS static void init_cols(void) { diff --git a/keyboards/gboards/gergo/matrix.c b/keyboards/gboards/gergo/matrix.c index 443e97132b..3898246e30 100644 --- a/keyboards/gboards/gergo/matrix.c +++ b/keyboards/gboards/gergo/matrix.c @@ -286,14 +286,6 @@ void matrix_print(void) { } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - // Remember this means ROWS static void init_cols(void) { // init on mcp23018 diff --git a/keyboards/gboards/gergoplex/keymaps/tgrosinger/combos.def b/keyboards/gboards/gergoplex/keymaps/tgrosinger/combos.def new file mode 100644 index 0000000000..ef953d53f5 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/tgrosinger/combos.def @@ -0,0 +1,11 @@ +// List any combo dictionaries you want loaded to your device below! + +// QMK wide includes +//#include "combos/germ-vim-helpers.def" +//#include "combos/germ-mouse-keys.def" + +// User includes +#include "gergoplex.def" + +// Word completion +// #include "combos/eng-combos.def" diff --git a/keyboards/gboards/gergoplex/keymaps/tgrosinger/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/tgrosinger/gergoplex.def new file mode 100644 index 0000000000..c7a93ed294 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/tgrosinger/gergoplex.def @@ -0,0 +1,17 @@ +// Gergoplex specfic combos + +COMB(qwGrav, KC_GRV, KC_W, KC_Q) +COMB(wsEsc, KC_ESC, KC_W, KC_S) +COMB(sdBackspace, KC_BSPC, KC_S, KC_D) +COMB(dfTab, KC_TAB, KC_D, KC_F) +COMB(cvEnter, KC_ENT, KC_C, KC_V) + +COMB(ioMinus, KC_MINS, KC_I, KC_O) +COMB(opBackslash, KC_BSLS, KC_O, KC_P) +COMB(hjLess, KC_LT, KC_H, KC_J) +COMB(klGreat, KC_GT, KC_K, KC_L) +COMB(jkColon, KC_COLN, KC_J, KC_K) +COMB(mcUnder, KC_UNDS, KC_M, KC_COMM) +COMB(nmQuote, KC_QUOT, KC_N, KC_M) + +SUBS(pasta, "I'd just like to interject for a moment.", KC_H, KC_J, KC_K, KC_L) diff --git a/keyboards/gboards/gergoplex/keymaps/tgrosinger/keymap.c b/keyboards/gboards/gergoplex/keymaps/tgrosinger/keymap.c new file mode 100644 index 0000000000..74c0899fdb --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/tgrosinger/keymap.c @@ -0,0 +1,286 @@ +/* Copyright 2022 Tony Grosinger + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "g/keymap_combo.h" + +enum { + _ALPHA, // Default + _SYMB, // Symbols + _NUMB, // Numbers + _ARROWS, // Arrows and OS + _TMUX, // TMUX Nav layer + _POPOS, // Gnome Shell, aka PopOS +}; + + +// Macros +enum custom_keycodes { + TMUX_NEW = SAFE_RANGE, + TMUX_ZOOM, + TMUX_SCROLL, + TMUX_PN_LT, + TMUX_PN_UP, + TMUX_PN_DN, + TMUX_PN_RT, + TMUX_WN_LT, + TMUX_WN_RT, + TMUX_SP_VT, + TMUX_SP_HZ, + VIM_CLIP_CP, + VIM_CLIP_PST, + VIM_MACRO, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TMUX_NEW: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("c"); + } + break; + case TMUX_ZOOM: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("z"); + } + break; + case TMUX_SCROLL: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("["); + } + break; + case TMUX_PN_LT: + if (record->event.pressed) { + tap_code16(C(KC_B)); + tap_code(KC_LEFT); + } + break; + case TMUX_PN_DN: + if (record->event.pressed) { + tap_code16(C(KC_B)); + tap_code(KC_DOWN); + } + break; + case TMUX_PN_UP: + if (record->event.pressed) { + tap_code16(C(KC_B)); + tap_code(KC_UP); + } + break; + case TMUX_PN_RT: + if (record->event.pressed) { + tap_code16(C(KC_B)); + tap_code(KC_RIGHT); + } + break; + case TMUX_WN_LT: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("p"); + } + break; + case TMUX_WN_RT: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("n"); + } + break; + case TMUX_SP_VT: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("%"); + } + break; + case TMUX_SP_HZ: + if (record->event.pressed) { + tap_code16(C(KC_B)); + SEND_STRING("\""); + } + break; + case VIM_CLIP_CP: + if (record->event.pressed) { + tap_code16(S(KC_QUOTE)); + tap_code16(S(KC_EQUAL)); + tap_code(KC_Y); + } + break; + case VIM_CLIP_PST: + if (record->event.pressed) { + tap_code16(S(KC_QUOTE)); + tap_code16(S(KC_EQUAL)); + tap_code(KC_P); + } + break; + case VIM_MACRO: + if (record->event.pressed) { + tap_code16(S(KC_2)); + tap_code(KC_Q); + } + break; + /* + case LAYRMOD: + // Act as a mod key if held, or toggle a layer if tapped + // replace KC_LCTL with desired mod, and _TARGET with desired layer name / number + if (record->event.pressed) { + uint8_t key_timer = timer_read(); + register_mods(MOD_BIT(KC_LCTL)); + } else { + unregister_mods(MOD_BIT(KC_LCTL)); + if (timer_elapsed(key_timer) < 200) { + layer_invert(_TARGET); + } + } + return false; + break; + */ + } + return true; +} + +/* Combos + * + * ,-----------------------------. ,-----------------------------. + * | ` | | | | | | MINS | BSLH | + * |-----+----ESC----+-----+-----| |-----+-----+-----+-----------| + * | | BSPC TAB | | | LES COLN GRT | | + * |-----+-----+-----+--RMB+-LMB-| |-----+-----+-----+-----------| + * | | | ENT | | | QUO UNDR | | | + * `-----+-----+-----+-----+-----' `-----------------------------' + * .-------------------------. .-------------------. + * | | | | | | | | + * '-------------------------' '-------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default layer + * ,------------------------------. ,----------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |------+-----+-----+-----+-----| |-----+-----+-----+-------+--------| + * |CTRL/A| S | D | F | G | | H | J | K | L | CTRL/; | + * |------+-----+-----+-----+-----| |-----+-----+-----+-------+--------| + * |SHFT/Z|ALT/X| C | V | B | | N | M | < | ALT/> | SHFT/? | + * `------+-----+-----+------+----' `----------------------------------' + * .-----------------. .----------------------. + * | |GUI |SPC(NUM)| |SPC(SYM)|TMUX | PopOS | + * '-----------------' '----------------------' + */ + [_ALPHA] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + MT(MOD_LCTL, KC_A),KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MT(MOD_LCTL, KC_SCLN), + MT(MOD_LSFT, KC_Z),MT(MOD_LALT, KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MT(MOD_LALT, KC_DOT), MT(MOD_RSFT, KC_SLSH), + + KC_NO, KC_LGUI, LT(_NUMB, KC_SPC), // Left + LT(_SYMB, KC_SPC), MO(_TMUX), MO(_POPOS) // Right + ), + + /* Keymap 1: Symbols layer + * ,------------------------------. ,-------------------------------. + * | ! | @ | # | $ | % | | ^ | & | * | + | = | + * |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | + * |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | | | | | | | | | | F11 | F12 | + * `------+-----+-----+-----+-----' `-------------------------------' + * .-----------------. .-----------------. + * | | DEL | MO3 | | HLD | SPC | | + * '-----------------' '-----------------' + */ + [_SYMB] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PLUS, KC_EQL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, + KC_NO, KC_DEL, MO(_ARROWS), KC_TRNS, KC_SPC, KC_NO + ), + + /* Keymap 2: Number layer + * ,------------------------------. ,-------------------------------. + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL | | ( | ) | | | | 4 | 7 | 6 | | + * |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT | | [ | ] | | | | 1 | 2 | 3 | . | + * `------+-----+-----+-----+-----' `-------------------------------' + * .-----------------. .-----------------. + * | | | HLD | | MO3 | 0 | | + * '-----------------' '-----------------' + */ + [_NUMB] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LCTL, KC_NO, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO, + KC_LSFT, KC_NO, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_1, KC_2, KC_3, KC_DOT, + KC_NO,KC_NO,KC_TRNS, MO(_ARROWS),KC_0,KC_NO + ), + + /* Keymap 3: Arrows and OS + * ,------------------------------. ,------------------------------------. + * | | | | | | | | | | | | + * |------+-----+-----+-----+-----| |-------+-------+------+-------+-----| + * | CTRL |HOME | PUP | | | | LEFT | DOWN | UP | RIGHT | | + * |------+-----+-----+-----+-----| |-------+-------+------+-------+-----| + * | SHFT |END | PDN | | | | | | | | | + * `------+-----+-----+-----+-----' `------------------------------------' + * .-----------------. .-----------------. + * | | | HLD | | HLD | | | + * '-----------------' '-----------------' + */ + [_ARROWS] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_HOME, KC_PGUP, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, + KC_LSFT, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO,KC_NO,KC_TRNS, KC_TRNS,KC_NO,KC_NO + ), + + /* Keymap 4: Tmux navigation layer + * ,----------------------------------. ,---------------------------------------. + * | Vi Mcr | | | | SP VT | | Vi Ynk| | | | Vi PT | + * |--------+-----+-----+-----+-------| |-------+-------+-------+-------+-------| + * | | SCRL| | | | | PN LT | PN DN | PN UP | PN RT | SP HZ | + * |--------+-----+-----+-----+-------| |-------+-------+-------+-------+-------| + * | ZOOM | KILL| NEW | | | | W LT | | | W RT | | + * `--------+-----+-----+-----+-------' `---------------------------------------' + * .-----------------. .-----------------. + * | | | | | | HLD | | + * '-----------------' '-----------------' + */ + [_TMUX] = LAYOUT_split_3x5_3( + VIM_MACRO, KC_NO, KC_NO, KC_NO, TMUX_SP_VT, VIM_CLIP_CP, KC_NO, KC_NO, KC_NO, VIM_CLIP_PST, + KC_NO, TMUX_SCROLL, KC_NO, KC_NO, KC_NO, TMUX_PN_LT, TMUX_PN_DN, TMUX_PN_UP, TMUX_PN_RT, TMUX_SP_HZ, + TMUX_ZOOM, KC_NO, TMUX_NEW, KC_NO, KC_NO, TMUX_WN_LT, KC_NO, KC_NO, TMUX_WN_RT, KC_NO, + KC_NO,KC_NO,KC_NO, KC_NO,KC_TRNS,KC_NO + ), + + /* Keymap 5: Gnome Shell (PopOS) + * ,------------------------------. ,--------------------------------------. + * | | | | | | | MV-DWN| D-DWN | D-UP | MV-UP | Flip | + * |------+-----+-----+-----+-----| |-------+-------+-------+-------+------| + * | | | | | | | W-L | W-DWN | W-UP | W-R | | + * |------+-----+-----+-----+-----| |-------+-------+-------+-------+------| + * | | | | | | | Scrns | Apps | Close | | | + * `------+-----+-----+-----+-----' `--------------------------------------' + * .-----------------. .-----------------. + * | | | | | | | HLD | + * '-----------------' '-----------------' + */ + [_POPOS] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SGUI(KC_J), LCTL(LGUI(KC_J)), LCTL(LGUI(KC_K)), SGUI(KC_K), LGUI(KC_O), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LGUI(KC_D), LGUI(KC_A), LGUI(KC_Q), KC_NO, KC_NO, + KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_TRNS + ), +}; diff --git a/keyboards/gboards/gergoplex/keymaps/tgrosinger/readme.md b/keyboards/gboards/gergoplex/keymaps/tgrosinger/readme.md new file mode 100644 index 0000000000..0a53aa1cbf --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/tgrosinger/readme.md @@ -0,0 +1,12 @@ +# GergoPlex + +This keymap I created for the GergoPlex with a focus on: + +- Keeping keys close to their normal locations when possible (number/symbol rows) +- Work well for vim, tmux, and Ubuntu default desktop shortcuts +- Work okay for OSx shortcuts + +## Firmware Building + + util/docker_build.sh gboards/gergoplex:tgrosinger + util/docker_build.sh gboards/gergoplex:tgrosinger:flash diff --git a/keyboards/gboards/gergoplex/keymaps/tgrosinger/rules.mk b/keyboards/gboards/gergoplex/keymaps/tgrosinger/rules.mk new file mode 100644 index 0000000000..e882b8008d --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/tgrosinger/rules.mk @@ -0,0 +1,17 @@ +#---------------------------------------------------------------------------- +# make gboards/gergoplex:default:flash +# Make sure you have dfu-programmer installed! +#---------------------------------------------------------------------------- + +#Debug options +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +CONSOLE_ENABLE = no + +#Combos! +VPATH += keyboards/gboards/ + +ifeq ($(strip $(DEBUG_MATRIX)), yes) + OPT_DEFS += -DDEBUG_MATRIX +endif diff --git a/keyboards/gboards/gergoplex/matrix.c b/keyboards/gboards/gergoplex/matrix.c index a075b85725..d5b046fe40 100644 --- a/keyboards/gboards/gergoplex/matrix.c +++ b/keyboards/gboards/gergoplex/matrix.c @@ -164,13 +164,6 @@ void matrix_print(void) { print("\n"); } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} // Remember this means ROWS static void init_cols(void) { diff --git a/keyboards/gmmk/pro/ansi/keymaps/macos/config.h b/keyboards/gmmk/pro/ansi/keymaps/macos/config.h new file mode 100644 index 0000000000..799c5d9593 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/macos/config.h @@ -0,0 +1,80 @@ +/* Copyright 2021 zvuc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// At the time of this, there are 41 effects! That may be a bit too many to cycle through - keeping what I believe is the best. +#ifdef RGB_MATRIX_ENABLE + #define RGB_DISABLE_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms) + +// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR + +// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state + #define RGB_DISABLE_WHEN_USB_SUSPENDED + +// Effects + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain + #define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes + + // Disable effects you don't like. + // Soon, you'll have to explicitly enable effects you want: https://github.com/qmk/qmk_firmware/pull/13758 + // #define DISABLE_RGB_MATRIX_SOLID_COLOR, // Static single hue, no speed support + // #define DISABLE_RGB_MATRIX_ALPHAS_MODS, // Static dual hue, speed is hue for secondary hue + // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN, // Static gradient top to bottom, speed controls how much gradient changes + // #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT, // Static gradient left to right, speed controls how much gradient changes + // #define DISABLE_RGB_MATRIX_BREATHING, // Single hue brightness cycling animation + // #define DISABLE_RGB_MATRIX_BAND_SAT, // Single hue band fading saturation scrolling left to right + // #define DISABLE_RGB_MATRIX_BAND_VAL, // Single hue band fading brightness scrolling left to right + // #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT, // Single hue 3 blade spinning pinwheel fades saturation + // #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL, // Single hue 3 blade spinning pinwheel fades brightness + // #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT, // Single hue spinning spiral fades saturation + // #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL, // Single hue spinning spiral fades brightness + // #define DISABLE_RGB_MATRIX_CYCLE_ALL, // Full keyboard solid hue cycling through full gradient + // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT, // Full gradient scrolling left to right + // #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN, // Full gradient scrolling top to bottom + // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN, // Full gradient scrolling out to in + // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL, // Full dual gradients scrolling out to in + // #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON, // Full gradent Chevron shapped scrolling left to right + // #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL, // Full gradient spinning pinwheel around center of keyboard + // #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL, // Full gradient spinning spiral around center of keyboard + // #define DISABLE_RGB_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard + // #define DISABLE_RGB_MATRIX_RAINBOW_BEACON, // Full tighter gradient spinning around center of keyboard + // #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard + // #define DISABLE_RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue + // #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation + // #define DISABLE_RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back + // #define DISABLE_RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left + // #define DISABLE_RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right + + // Framebuffer effects + // #define DISABLE_RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM! + // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation + + // Reactive effects + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit to hue & value then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE, // Static single hue, pulses keys hit to shifted hue then fades to current hue + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out + // #define DISABLE_RGB_MATRIX_SPLASH, // Full gradient & value pulse away from a single key hit then fades value out + // #define DISABLE_RGB_MATRIX_MULTISPLASH, // Full gradient & value pulse away from multiple key hits then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_SPLASH, // Hue & value pulse away from a single key hit then fades value out + // #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH, // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/macos/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/macos/keymap.c new file mode 100644 index 0000000000..1f8c47306a --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/macos/keymap.c @@ -0,0 +1,448 @@ +/* Copyright 2021 Glorious, LLC + + GMMK Pro Standard keymap for macOS + by zvuc + + with code snippets from + Andre Brait , stickandgum + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum my_keycodes { + KC_MSCTRL = SAFE_RANGE, + KC_LNPD, + LED_TLDE, + LED_1, + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL +}; + +#ifdef RGB_MATRIX_ENABLE + #ifndef RGB_CONFIRMATION_BLINKING_TIME + #define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds + #endif +#endif // RGB_MATRIX_ENABLE + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Eject Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up F13 +// Ct_L Opt_L Cmd_L SPACE Cmd_R Opt_R FN Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MSCTRL, KC_LNPD, RGB_VAD, RGB_VAI, KC_F7, KC_F8, KC_MRWD, KC_MPLY, KC_MFFD, KC_F12, KC_EJCT, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_F13, + KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, + LED_TLDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, _______, KC_PSCR, + _______, RGB_HUI, RGB_VAI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_HUD, RGB_VAD, RGB_SAD, TG(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + // This is an alternative togglable layer to change default function row to standard F keys + [2] = LAYOUT( + _______, 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_F24, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE + bool encoder_update_user(uint8_t index, bool clockwise) { + // https://beta.docs.qmk.fm/using-qmk/simple-keycodes/feature_advanced_keycodes#alt-escape-for-alt-tab-id-alt-escape-for-alt-tab + if (get_mods() & MOD_MASK_CTRL) { // If CTRL is held + uint8_t mod_state = get_mods(); // Store all modifiers that are held + unregister_mods(MOD_MASK_CTRL); // Immediately unregister the CRTL key (don't send CTRL-PgDn) - del_mods doesn't work here (not immediate) + if (clockwise) { + rgblight_increase_hue(); + } else { + rgblight_decrease_hue(); + } + set_mods(mod_state); // Add back in the CTRL key - so ctrl-key will work if ctrl was never released after paging. + } else if (get_mods() & MOD_MASK_ALT) { + uint8_t mod_state = get_mods(); + unregister_mods(MOD_MASK_ALT); + if (clockwise) { + rgblight_increase_sat(); + } else { + rgblight_decrease_sat(); + } + set_mods(mod_state); + } else if (get_mods() & MOD_MASK_GUI) { + uint8_t mod_state = get_mods(); + unregister_mods(MOD_MASK_GUI); + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + set_mods(mod_state); + } else if (get_mods() & MOD_MASK_SHIFT) { + uint8_t mod_state = get_mods(); + unregister_mods(MOD_MASK_SHIFT); + if (clockwise) { + rgblight_increase_speed(); + } else { + rgblight_decrease_speed(); + } + set_mods(mod_state); + } else if (clockwise) { // All else volume. + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; + } +#endif //ENCODER_ENABLE + +#ifdef RGB_MATRIX_ENABLE + + // Called on powerup and is the last _init that is run. + void keyboard_post_init_user(void) { + + int mods[35] = {0,2,3,4,5,11,17,33,49,55,65,95,97,79,94,85,93,96,90,69,92,67,76,80,91,75,86,68,77,81,92,28,34,39,44}; + int j; + + /* output each array element's value */ + for (j = 0; j < 35; j++ ) { + g_led_config.flags[mods[j]] = LED_FLAG_MODIFIER; + } + + if (!rgb_matrix_is_enabled()) { + rgb_matrix_enable(); + #ifdef CONSOLE_ENABLE + uprintf("ERROR! RGB Matrix Enabled and wrote to EEPROM! -How was the RGB Matrix Disabled?"); + #endif + } + } + + /* Renaming those to make the purpose on this keymap clearer */ + #define LED_FLAG_CAPS LED_FLAG_NONE + #define LED_FLAG_EFFECTS LED_FLAG_INDICATOR + + static void set_rgb_caps_leds(void); + + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + static uint16_t effect_started_time = 0; + static uint8_t r_effect = 0x0, g_effect = 0x0, b_effect = 0x0; + static void start_effects(void); + + /* The higher this is, the slower the blinking will be */ + #ifndef TIME_SELECTED_BIT + #define TIME_SELECTED_BIT 8 + #endif + #if TIME_SELECTED_BIT < 0 || TIME_SELECTED_BIT >= 16 + #error "TIME_SELECTED_BIT must be a positive integer smaller than 16" + #endif + #define effect_red() r_effect = 0xFF, g_effect = 0x0, b_effect = 0x0 + #define effect_green() r_effect = 0x0, g_effect = 0xFF, b_effect = 0x0 + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + + bool led_update_user(led_t led_state) { + if (led_state.caps_lock) { + if (!rgb_matrix_is_enabled()) { + /* Turn ON the RGB Matrix for CAPS LOCK */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + rgb_matrix_enable(); + } + } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + /* RGB Matrix was only ON because of CAPS LOCK. Turn it OFF. */ + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_disable(); + } + return true; + } + + bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // https://github.com/qmk/qmk_firmware/issues/10111 + case KC_MSCTRL: + if (record->event.pressed) { + host_consumer_send(0x29F); + } else { + host_consumer_send(0); + } + return false; /* Skip all further processing of this key */ + + case KC_LNPD: + if (record->event.pressed) { + host_consumer_send(0x2A0); + } else { + host_consumer_send(0); + } + return false; /* Skip all further processing of this key */ + + #ifdef NKRO_ENABLE + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + case NK_TOGG: + if (record->event.pressed) { + if (keymap_config.nkro) { + /* Turning NKRO OFF */ + effect_red(); + } else { + /* Turning NKRO ON */ + effect_green(); + } + start_effects(); + } + break; + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + #endif // NKRO_ENABLE + + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + case TG(2): + if (record->event.pressed) { + if (IS_LAYER_OFF(2)) { + effect_red(); + } else { + effect_green(); + } + start_effects(); + } + break; + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + + /* LED quick preset keys assignments */ + case LED_TLDE: + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); // Can use RGB_M_P built-in keycode instead. + break; + case LED_1: + rgb_matrix_mode(RGB_MATRIX_ALPHAS_MODS); + break; + case LED_2: + rgb_matrix_mode(RGB_MATRIX_GRADIENT_UP_DOWN); + break; + case LED_3: + rgb_matrix_mode(RGB_MATRIX_JELLYBEAN_RAINDROPS); + break; + case LED_4: + rgb_matrix_mode(RGB_MATRIX_BAND_SAT); + break; + case LED_5: + rgb_matrix_mode(RGB_MATRIX_BAND_VAL); + break; + case LED_6: + rgb_matrix_mode(RGB_MATRIX_BAND_SPIRAL_VAL); + break; + case LED_7: + rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); // Can use RGB_M_R built-in keycode instead. + break; + case LED_8: + rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); // Can use RGB_M_SW built-in keycode instead. + break; + case LED_9: + rgb_matrix_mode(RGB_MATRIX_BREATHING); // Can use RGB_M_B built-in keycode instead. + break; + + #ifdef RGB_MATRIX_KEYPRESSES // Reactive effects require RGB_MATRIX_KEYPRESSES in config.h + case LED_0: + rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE_WIDE); + break; + #endif //RGB_MATRIX_KEYPRESSES + + #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap and Rain require #define RGB_MATRIX_FRAMEBUFFER_EFFECTS in config.h + case LED_MINS: + rgb_matrix_mode(RGB_MATRIX_DIGITAL_RAIN); + break; + case LED_EQL: + rgb_matrix_mode(RGB_MATRIX_TYPING_HEATMAP); + break; + #endif //RGB_MATRIX_FRAMEBUFFER_EFFECTS + + + // case RGB_MOD: + // case RGB_RMOD: + // case RGB_HUI: + // case RGB_HUD: + // case RGB_SAI: + // case RGB_SAD: + // case RGB_VAI: + // case RGB_VAD: + // case RGB_SPI: + case RGB_SPD: + if (record->event.pressed) { + if (rgb_matrix_get_flags() != LED_FLAG_ALL) { + /* Ignore changes to RGB settings while only it's supposed to be OFF */ + return false; + } + } + break; + + case RGB_TOG: + // if (record->event.pressed) { + // if (rgb_matrix_get_flags() == LED_FLAG_ALL) { + // rgb_matrix_set_flags(LED_FLAG_NONE); + // rgb_matrix_set_color_all(0, 0, 0); + // } else { + // rgb_matrix_set_flags(LED_FLAG_ALL); + // } + // } + // return false; + if (record->event.pressed) { + if (rgb_matrix_is_enabled()) { + switch (rgb_matrix_get_flags()) { + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + case LED_FLAG_EFFECTS: + #endif + case LED_FLAG_CAPS: + /* Turned ON because of EFFECTS or CAPS, is actually OFF */ + /* Change to LED_FLAG_ALL to signal it's really ON */ + rgb_matrix_set_flags(LED_FLAG_ALL); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + break; + case LED_FLAG_ALL: + /* Is actually ON */ + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + if (effect_started_time > 0) { + /* Signal EFFECTS */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + } else + #endif + if (host_keyboard_led_state().caps_lock) { + /* Signal CAPS */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + } + break; + } + } + } + break; + + } + return true; + } + + + void rgb_matrix_indicators_user() { + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + if (effect_started_time > 0) { + /* Render blinking EFFECTS */ + uint16_t deltaTime = sync_timer_elapsed(effect_started_time); + if (deltaTime <= RGB_CONFIRMATION_BLINKING_TIME) { + uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01; + uint8_t val_r = led_state * r_effect; + uint8_t val_g = led_state * g_effect; + uint8_t val_b = led_state * b_effect; + rgb_matrix_set_color_all(val_r, val_g, val_b); + if (host_keyboard_led_state().caps_lock) { + set_rgb_caps_leds(); + } + return; + } else { + /* EFFECTS duration is finished */ + effect_started_time = 0; + if (rgb_matrix_get_flags() == LED_FLAG_EFFECTS) { + /* It was turned ON because of EFFECTS */ + if (host_keyboard_led_state().caps_lock) { + /* CAPS is still ON. Demote to CAPS */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + } else { + /* There is nothing else keeping RGB enabled. Reset flags and turn if off. */ + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_disable_noeeprom(); + } + } + } + } + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + rgb_matrix_set_color_all(0x0, 0x0, 0x0); + } + if (host_keyboard_led_state().caps_lock) { + set_rgb_caps_leds(); + } + } + + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + static void start_effects() { + effect_started_time = sync_timer_read(); + if (!rgb_matrix_is_enabled()) { + /* Turn it ON, signal the cause (EFFECTS) */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + rgb_matrix_enable_noeeprom(); + } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + /* It's already ON, promote the cause from CAPS to EFFECTS */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + } + } + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + + static void set_rgb_caps_leds() { + rgb_matrix_set_color(67, 0xFF, 0x0, 0x0); // Left side LED 1 + rgb_matrix_set_color(68, 0xFF, 0x0, 0x0); // Right side LED 1 + rgb_matrix_set_color(70, 0xFF, 0x0, 0x0); // Left side LED 2 + rgb_matrix_set_color(71, 0xFF, 0x0, 0x0); // Right side LED 2 + rgb_matrix_set_color(73, 0xFF, 0x0, 0x0); // Left side LED 3 + rgb_matrix_set_color(74, 0xFF, 0x0, 0x0); // Right side LED 3 + rgb_matrix_set_color(76, 0xFF, 0x0, 0x0); // Left side LED 4 + rgb_matrix_set_color(77, 0xFF, 0x0, 0x0); // Right side LED 4 + rgb_matrix_set_color(80, 0xFF, 0x0, 0x0); // Left side LED 5 + rgb_matrix_set_color(81, 0xFF, 0x0, 0x0); // Right side LED 5 + rgb_matrix_set_color(83, 0xFF, 0x0, 0x0); // Left side LED 6 + rgb_matrix_set_color(84, 0xFF, 0x0, 0x0); // Right side LED 6 + rgb_matrix_set_color(87, 0xFF, 0x0, 0x0); // Left side LED 7 + rgb_matrix_set_color(88, 0xFF, 0x0, 0x0); // Right side LED 7 + rgb_matrix_set_color(91, 0xFF, 0x0, 0x0); // Left side LED 8 + rgb_matrix_set_color(92, 0xFF, 0x0, 0x0); // Right side LED 8 + rgb_matrix_set_color(3, 0xFF, 0x0, 0x0); // CAPS LED + } + +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/macos/readme.md b/keyboards/gmmk/pro/ansi/keymaps/macos/readme.md new file mode 100644 index 0000000000..8024e77cc1 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/macos/readme.md @@ -0,0 +1,85 @@ +# GMMK Pro Standard Layout for macOS by zvuc + +As you may know, Glorious does not (yet) provide their Glorious Core software for macOS; so with stock firmware, there aren't any ways to customize layouts on the hardware level unless you turn to software-based override solutions such as [Karabiner Elements](https://karabiner-elements.pqrs.org/). This is my attempt to try to create the most macOS-like experience on the GMMK Pro, taking close notes from Apple's Magic Keyboard, also referencing code from other community keymaps. + +## Keymap +Layer 0 +Layer0 + +Layer 1 (Hold Fn) +Layer1 + +Layer 2 (Togglable alternative function row layout by pressing Fn+F) +Layer2 + + +## Notable differences from stock key layout for Windows: +- Delete key placed right next to backspace (under rotary encoder) +- F13 key for the bottommost row (Assign it to a shortcut you like in macOS preferences! [For example: "Emoji & Symbols" to bring up the emoji input popup instantly](https://user-images.githubusercontent.com/2870726/132237211-7e13c156-96a8-4a91-b215-28d310228feb.png)) +- Eject key for the last key in function row: Needed for macOS native global "Sleep" hotkey (Eject) + +## Notable Features +- VIA support +- Rotary Encoder support (Defaults to stock behavior Volume Up/Down) +- Standard order for macOS modifier keys: + * Left: ⌃ Control⌥ Option⌘ Command + * Right: ⌘ Command⌥ OptionFn +- Apple Magic Keyboard-like Function Row Mode (Toggle with Fn+F) + * F1: Decrease display brightness + * F2: Increase display brightness + * F3: Mission Control + * F4: Launchpad + * F5: Decrease keyboard backlight brightness + * F6: Increase keyboard backlight brightness + * F7: (none) + * F8: (none) + * F9: Media Rewind + * F10: Media Play/Pause + * F11: Media Fast Forward + * F12: (none) + +> #### NOTE +> - Media key mappings follow Apple Magic Keyboard except F8 thru F12, where keys have been shifted by one to the right. It's because I wanted to get over the awkward gap between F8 and F9 that the GMMK Pro has—and also because we don't need dedicated keys for volume control when we have the more convenient rotary knob. +> - To access standard F1 - F12 keys, press the Function keys while holding Fn. +> - If you're planning to use Karabiner Elements, use the standard Function row mode (F1 - F12) because Karabiner Elements always overrides function keys even if you want to just use simple or complex modifications, and it doesn't catch custom keys like Mission Control, Launchpad or Eject. (Eject is mapped as F24 so you can replace it with 'Eject' within Karabiner.) + +## RGB Lighting +- Retains Glorious stock firmware key mappings for control + * FnUp / FnDown: Cycle presets + * FnLeft / FnRight: Adjust speed + * FnW / FnS: Adjust brightness +- Quickly switch to popular presets: + * Fn` : Solid color (no animation) + * Fn1 : Solid duotone (no animation) - ShiftKnob to change secondary color. + * Fn2 : Vertical gradient - ShiftKnob to change secondary color. + * Fn3 : "Jellybean Raindrops" + * Fn4 : Horizontal wipe with white backlight + * Fn5 : Horizontal wipe + * Fn6 : Single color pinwheel + * Fn7 : Horizontal rainbow + * Fn8 : Rainbow pinwheel + * Fn9 : Breathing + * Fn0 : Reactive (light up on keypress) + * Fn- : "Digital Rain" + * Fn= : "Heatmap" +- RGB turns off after 20 minutes of inactivity +- RGB turns off when USB is suspended / enters sleep +- Caps Lock toggle indicator (Caps Lock key and side lights will turn red) +- Easy RGB control using Rotary Encoder + - Control+Rotate Knob: Adjust hue + - Option+Rotate Knob: Adjust saturation + - Command+Rotate Knob: Adjust brightness + +> All latest QMK effects [(41 as of now)](https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#rgb-matrix-effects-id-rgb-matrix-effects) are enabled by default and will apply in order when cycling through using FnUp / FnDown. You can disable specific effects by uncommenting (remove the `//` at the beginning of line) respective lines (ex: `#define DISABLE_RGB_MATRIX_BREATHING`) in `qmk_firmware/keyboards/gmmk/pro/ansi/keymaps/zvuc/config.h` then recompiling the firmware. + +## Other Features +- 1000hz polling rate +- Short DEBOUNCE time (5 ms) +- Per-key debounce algorithm (`sym_defer_pk`) +- NKRO toggle (Fn+N) + +## Warning regarding VIA support +When observing this keyboard firmware in VIA, some custom-implemented keys such as Mission Control/Launchpad and RGB preset shortcuts appear as keycodes such as `0x5d62`. **These must not be modified!** There is no way to get their default functionality back unless you re-flash the firmware through QMK Toolbox. + +## Download pre-compiled firmware binary file +[Download BIN file from here](https://github.com/zvuc/qmk_firmware/releases/tag/zvuc-1.0.1) diff --git a/keyboards/gmmk/pro/ansi/keymaps/macos/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/macos/rules.mk new file mode 100644 index 0000000000..e9073d44a0 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/macos/rules.mk @@ -0,0 +1,4 @@ +# Enable additional features. + +DEBOUNCE_TYPE = sym_defer_pk +VIA_ENABLE = yes diff --git a/keyboards/gmmk/pro/iso/keymaps/chofstede/keymap.c b/keyboards/gmmk/pro/iso/keymaps/chofstede/keymap.c new file mode 100644 index 0000000000..84fbcf37ff --- /dev/null +++ b/keyboards/gmmk/pro/iso/keymaps/chofstede/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] PgUp +// Caps A S D F G H J K L ; " # Enter PgDn +// Sh_L / Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_PSCR, _______, + _______, RGB_TOG, RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, + _______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return false; +} +#endif + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + static uint32_t cycle_led_timer = 0; + static uint8_t current_value = 0; + static uint8_t left_side_leds[8] = {68, 71, 74, 77, 81, 84, 88, 92}; + static uint8_t right_side_leds[8] = {69, 72, 75, 78, 82, 85, 89, 93}; + + if (host_keyboard_led_state().caps_lock) { + if (timer_elapsed32(cycle_led_timer) > 500) { + current_value = current_value == 0 ? 255 : 0; + cycle_led_timer = timer_read32(); + } + HSV tempHSV = {.h = 0, .s = 255, .v = current_value}; + RGB tempRGB = hsv_to_rgb(tempHSV); + for (uint8_t i = 0; i < sizeof(left_side_leds) / sizeof(left_side_leds[0]); i++) { + rgb_matrix_set_color(left_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b); + rgb_matrix_set_color(right_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b); + } + } + + static uint8_t l2_functions[26] = {6, 7, 8, 12, 13, 14, 15, 16, 18, 23, 28, 34, 38, 39, 44, 50, 56, 61, 66, 70, 80, 86, 94, 95, 96, 98}; + switch(get_highest_layer(layer_state)){ // special handling per layer + case 2: //layer one + break; + case 1: + for (uint8_t i = 0; i < sizeof(l2_functions) / sizeof(l2_functions[0]); i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(l2_functions[i], 255, 0, 0); + } + break; + default: + break; + break; + } +} diff --git a/keyboards/gmmk/pro/iso/keymaps/chofstede/readme.md b/keyboards/gmmk/pro/iso/keymaps/chofstede/readme.md new file mode 100644 index 0000000000..da66c447ad --- /dev/null +++ b/keyboards/gmmk/pro/iso/keymaps/chofstede/readme.md @@ -0,0 +1,8 @@ +# chofstede GMMK Pro layout + +- Added Print-Screen to FN+POS1 +- Added Insert to FN+# +- The LED bars on the left and right side of the keyboard blink red when CAPS Lock is enabled +- All mapped keys light up red when FN is being pressed + + diff --git a/keyboards/handwired/dactyl/matrix.c b/keyboards/handwired/dactyl/matrix.c index a70e8c5aca..5869b43c1b 100644 --- a/keyboards/handwired/dactyl/matrix.c +++ b/keyboards/handwired/dactyl/matrix.c @@ -307,15 +307,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) { diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c index a043f78538..6dec9c6a74 100644 --- a/keyboards/handwired/frenchdev/matrix.c +++ b/keyboards/handwired/frenchdev/matrix.c @@ -196,15 +196,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - /* Column pin configuration * * Teensy diff --git a/keyboards/handwired/owlet60/matrix.c b/keyboards/handwired/owlet60/matrix.c index 211273d1fa..3b68c08b45 100644 --- a/keyboards/handwired/owlet60/matrix.c +++ b/keyboards/handwired/owlet60/matrix.c @@ -33,17 +33,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -130,15 +127,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - // uses standard row code static void select_row(uint8_t row) { diff --git a/keyboards/handwired/promethium/matrix.c b/keyboards/handwired/promethium/matrix.c index 90dbce14a9..3b03ab8893 100644 --- a/keyboards/handwired/promethium/matrix.c +++ b/keyboards/handwired/promethium/matrix.c @@ -43,17 +43,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -178,16 +175,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - #define ROW_MASK 0b11100000 static const uint8_t row_bit[MATRIX_ROWS] = { diff --git a/keyboards/handwired/pterodactyl/matrix.c b/keyboards/handwired/pterodactyl/matrix.c index d0f74802a0..9d81a64bb4 100644 --- a/keyboards/handwired/pterodactyl/matrix.c +++ b/keyboards/handwired/pterodactyl/matrix.c @@ -308,15 +308,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) { diff --git a/keyboards/helix/rev2/custom/matrix.c b/keyboards/helix/rev2/custom/matrix.c index 699c15358b..5221d7fd4e 100644 --- a/keyboards/helix/rev2/custom/matrix.c +++ b/keyboards/helix/rev2/custom/matrix.c @@ -309,15 +309,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static void init_cols(void) { for(int x = 0; x < MATRIX_COLS; x++) { diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk index 59b7acad5b..6b2d147514 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk +++ b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk @@ -5,6 +5,7 @@ # See TOP/keyboards/helix/rules.mk for a list of options that can be set. # See TOP/docs/config_options.md for more information. # +SPLIT_KEYBOARD = yes LTO_ENABLE = no # if firmware size over limit, try this option TAP_DANCE_ENABLE = yes diff --git a/keyboards/hhkb/ansi/matrix.c b/keyboards/hhkb/ansi/matrix.c index 5dde74cce9..8b0e4606bc 100644 --- a/keyboards/hhkb/ansi/matrix.c +++ b/keyboards/hhkb/ansi/matrix.c @@ -189,14 +189,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { - count += bitpop16(matrix_get_row(r)); - } - return count; -} - void matrix_power_up(void) { KEY_POWER_ON(); } diff --git a/keyboards/hhkb/jp/matrix.c b/keyboards/hhkb/jp/matrix.c index 81db77fca7..9d04d62849 100644 --- a/keyboards/hhkb/jp/matrix.c +++ b/keyboards/hhkb/jp/matrix.c @@ -190,14 +190,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { - count += bitpop16(matrix_get_row(r)); - } - return count; -} - void matrix_power_up(void) { KEY_POWER_ON(); } diff --git a/keyboards/honeycomb/matrix.c b/keyboards/honeycomb/matrix.c index fe1e4ce8ff..9a87ca9a2e 100755 --- a/keyboards/honeycomb/matrix.c +++ b/keyboards/honeycomb/matrix.c @@ -35,17 +35,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -191,12 +188,3 @@ void matrix_print(void) print("\n"); } } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} diff --git a/keyboards/horrortroll/handwired_k552/rules.mk b/keyboards/horrortroll/handwired_k552/rules.mk index 5df510cd44..f29c92f64c 100644 --- a/keyboards/horrortroll/handwired_k552/rules.mk +++ b/keyboards/horrortroll/handwired_k552/rules.mk @@ -20,6 +20,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = yes +LTO_ENABLE = yes # RGB Matrix enabled RGB_MATRIX_ENABLE = yes diff --git a/keyboards/hotdox/matrix.c b/keyboards/hotdox/matrix.c index 5d0b0f6dd5..0da5a3e3a2 100644 --- a/keyboards/hotdox/matrix.c +++ b/keyboards/hotdox/matrix.c @@ -160,15 +160,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static void init_cols(void) { // Pro Micro diff --git a/keyboards/idobao/id87/v2/config.h b/keyboards/idobao/id87/v2/config.h index 8a2c58aa2d..3ef24f0bc5 100644 --- a/keyboards/idobao/id87/v2/config.h +++ b/keyboards/idobao/id87/v2/config.h @@ -79,9 +79,6 @@ # define ENABLE_RGB_MATRIX_HUE_BREATHING # define ENABLE_RGB_MATRIX_HUE_PENDULUM # define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP # define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/keyboards/io_mini1800/config.h b/keyboards/io_mini1800/config.h new file mode 100644 index 0000000000..ea7efd8ff4 --- /dev/null +++ b/keyboards/io_mini1800/config.h @@ -0,0 +1,40 @@ +// Copyright 2022 s8erdude (@jpuerto96) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER jpuerto96 +#define PRODUCT io_mini1800 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D6, D7, B4, B5, D4, E6, B3, D2, D5, D3 } +#define MATRIX_COL_PINS { D1, D0, B7, B2, F0, F1, F7, F6, F4, F5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { B0 } +#define ENCODERS_PAD_B { B1 } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/io_mini1800/info.json b/keyboards/io_mini1800/info.json new file mode 100644 index 0000000000..020a776027 --- /dev/null +++ b/keyboards/io_mini1800/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "io_mini1800", + "url": "https://github.com/jpuerto96", + "maintainer": "jpuerto96 (s8erdude)", + "layouts": { + "LAYOUT_625u": { + "layout": [ + {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Ins", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"Num Lock", "x":17.5, "y":0}, {"label":"/", "x":18.5, "y":0}, {"label":"*", "x":19.5, "y":0}, {"label":"-", "x":20.5, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"End", "x":15.25, "y":1}, {"label":"Del", "x":16.25, "y":1}, {"label":"7", "x":17.5, "y":1}, {"label":"8", "x":18.5, "y":1}, {"label":"9", "x":19.5, "y":1}, {"label":"+", "x":20.5, "y":1, "h":2}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":17.5, "y":2}, {"label":"5", "x":18.5, "y":2}, {"label":"6", "x":19.5, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Up", "x":15.75, "y":3.5}, {"label":"1", "x":17.5, "y":3}, {"label":"2", "x":18.5, "y":3}, {"label":"3", "x":19.5, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Win", "x":11.5, "y":4, "w":1.25}, {"label":"Fn", "x":12.75, "y":4, "w":1.25}, {"label":"Left", "x":14.75, "y":4.5}, {"label":"Down", "x":15.75, "y":4.5}, {"label":"Right", "x":16.75, "y":4.5}, {"label":"0", "x":18.5, "y":4}, {"label":".", "x":19.5, "y":4}, {"label":"Enter", "x":20.5, "y":3, "h":2} + ] + }, + "LAYOUT_2x3u": { + "layout": [ + {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Ins", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"Num Lock", "x":17.5, "y":0}, {"label":"/", "x":18.5, "y":0}, {"label":"*", "x":19.5, "y":0}, {"label":"-", "x":20.5, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"End", "x":15.25, "y":1}, {"label":"Del", "x":16.25, "y":1}, {"label":"7", "x":17.5, "y":1}, {"label":"8", "x":18.5, "y":1}, {"label":"9", "x":19.5, "y":1}, {"label":"+", "x":20.5, "y":1, "h":2}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":17.5, "y":2}, {"label":"5", "x":18.5, "y":2}, {"label":"6", "x":19.5, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Up", "x":15.75, "y":3.5}, {"label":"1", "x":17.5, "y":3}, {"label":"2", "x":18.5, "y":3}, {"label":"3", "x":19.5, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":3}, {"x":6.75, "y":4, "w":3}, {"label":"Alt", "x":9.75, "y":4, "w":1.5}, {"label":"Win", "x":11.25, "y":4, "w":1.5}, {"label":"Fn", "x":12.75, "y":4, "w":1.25}, {"label":"Left", "x":14.75, "y":4.5}, {"label":"Down", "x":15.75, "y":4.5}, {"label":"Right", "x":16.75, "y":4.5}, {"label":"0", "x":18.5, "y":4}, {"label":".", "x":19.5, "y":4}, {"label":"Enter", "x":20.5, "y":3, "h":2}] + } + } +} diff --git a/keyboards/io_mini1800/io_mini1800.c b/keyboards/io_mini1800/io_mini1800.c new file mode 100644 index 0000000000..aa500c469a --- /dev/null +++ b/keyboards/io_mini1800/io_mini1800.c @@ -0,0 +1,18 @@ +// Copyright 2022 s8erdude (@jpuerto96) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "io_mini1800.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 true; +} +#endif diff --git a/keyboards/io_mini1800/io_mini1800.h b/keyboards/io_mini1800/io_mini1800.h new file mode 100644 index 0000000000..634592d62c --- /dev/null +++ b/keyboards/io_mini1800/io_mini1800.h @@ -0,0 +1,52 @@ +// Copyright 2022 s8erdude (@jpuerto96) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_2x3u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k59, k58, k57, k56, k55, k54, k53, k52, k51, k50, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k69, k68, k67, k66, k65, k64, k63, k62, k61, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k79, k78, k77, k73, k72, k71, k70, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k89, k88, k85, k83, k82, k81, \ + k40, k41, k42, k43, k46, k49, k99, k98, k96, k95, k94, k92, k91, k90 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \ + { k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, k49 }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59 }, \ + { KC_NO, k61, k62, k63, k64, k65, k66, k67, k68, k69 }, \ + { k70, k71, k72, k73, KC_NO, KC_NO, KC_NO, k77, k78, k79 }, \ + { KC_NO, k81, k82, k83, KC_NO, k85, KC_NO, KC_NO, k88, k89 }, \ + { k90, k91, k92, KC_NO, k94, k95, k96, KC_NO, k98, k99 } \ +} + +#define LAYOUT_625u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k59, k58, k57, k56, k55, k54, k53, k52, k51, k50, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k69, k68, k67, k66, k65, k64, k63, k62, k61, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k79, k78, k77, k73, k72, k71, k70, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k89, k88, k85, k83, k82, k81, \ + k40, k41, k42, k45, k49, k99, k98, k96, k95, k94, k92, k91, k90 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \ + { k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, k49 }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59 }, \ + { KC_NO, k61, k62, k63, k64, k65, k66, k67, k68, k69 }, \ + { k70, k71, k72, k73, KC_NO, KC_NO, KC_NO, k77, k78, k79 }, \ + { KC_NO, k81, k82, k83, KC_NO, k85, KC_NO, KC_NO, k88, k89 }, \ + { k90, k91, k92, KC_NO, k94, k95, k96, KC_NO, k98, k99 } \ +} diff --git a/keyboards/io_mini1800/keymaps/2x3u/keymap.c b/keyboards/io_mini1800/keymaps/2x3u/keymap.c new file mode 100644 index 0000000000..75e4145207 --- /dev/null +++ b/keyboards/io_mini1800/keymaps/2x3u/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2022 s8erdude (@jpuerto96) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ +[_BASE] = LAYOUT_2x3u( + 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_HOME, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_DEL, KC_P7, KC_P8, KC_P9, + 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_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ) +}; + diff --git a/keyboards/io_mini1800/keymaps/2x3u/readme.md b/keyboards/io_mini1800/keymaps/2x3u/readme.md new file mode 100644 index 0000000000..7e6980f5cd --- /dev/null +++ b/keyboards/io_mini1800/keymaps/2x3u/readme.md @@ -0,0 +1 @@ +# The default Split Spacebar keymap for io_mini1800 diff --git a/keyboards/io_mini1800/keymaps/default/keymap.c b/keyboards/io_mini1800/keymaps/default/keymap.c new file mode 100644 index 0000000000..1a3573fe5f --- /dev/null +++ b/keyboards/io_mini1800/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2022 s8erdude (@jpuerto96) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_625u( + 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_HOME, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_DEL, KC_P7, KC_P8, KC_P9, + 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_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ) +}; + diff --git a/keyboards/io_mini1800/keymaps/default/readme.md b/keyboards/io_mini1800/keymaps/default/readme.md new file mode 100644 index 0000000000..4bcc9ba512 --- /dev/null +++ b/keyboards/io_mini1800/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for io_mini1800 diff --git a/keyboards/io_mini1800/readme.md b/keyboards/io_mini1800/readme.md new file mode 100644 index 0000000000..c6139203bb --- /dev/null +++ b/keyboards/io_mini1800/readme.md @@ -0,0 +1,24 @@ +# io_mini1800 + +This keyboard is a mini 1800 with a minimal navigation cluster, which also offers a rotary encoder option. + +* Keyboard Maintainer: [s8erdude](https://github.com/jpuerto96) +* Hardware Supported: IO-Mini 1800 +* Hardware Availability: [P3D Store](https://p3dstore.com/) + +Make example for this keyboard (after setting up your build environment): + + make io_mini1800:default + +Flashing example for this keyboard: + + make io_mini1800: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 + +To reset the board into bootloader, do one of the following: + +* **Hardware reset**: short the pad labeled RESET on the back, near the microcontroller +* **Bootmagic reset**: hold down the top left key (usually programmed as Escape) while plugging in the keyboard (also resets persistent storage) diff --git a/keyboards/io_mini1800/rules.mk b/keyboards/io_mini1800/rules.mk new file mode 100644 index 0000000000..284ea23e78 --- /dev/null +++ b/keyboards/io_mini1800/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes diff --git a/keyboards/jels/jels60/config.h b/keyboards/jels/jels60/config.h new file mode 100644 index 0000000000..0157da213c --- /dev/null +++ b/keyboards/jels/jels60/config.h @@ -0,0 +1,49 @@ + /* Copyright 2022 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor paramater */ +#define VENDOR_ID 0x006A //Jels (J) +#define PRODUCT_ID 0x0060 //Jels 60 +#define DEVICE_VER 0x0001 +#define MANUFACTURER jels +#define PRODUCT jels60 + +/* Define Matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/*Define Matrix Pins */ +#define MATRIX_ROW_PINS {B3, D1, F0, F4, F1} +#define MATRIX_COL_PINS {E6, C7, B4, D7, D6, D4, D5, D3, F5, F6, F7, C6, B6, B5} + +// Caps lock Pin +#define LED_CAPS_LOCK_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + diff --git a/keyboards/jels/jels60/info.json b/keyboards/jels/jels60/info.json new file mode 100644 index 0000000000..b958bb6905 --- /dev/null +++ b/keyboards/jels/jels60/info.json @@ -0,0 +1,344 @@ +{ + "keyboard_name": "Jels60", + "url": "", + "maintainer": "Jels", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "ESC", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Bksp", "x": 13, "y": 0 }, + { "label": "~", "x": 14, "y": 0 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "|", "x": 1.25, "y": 3 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "x": 14, "y": 3 }, + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 2.75 }, + { "x": 6.5, "y": 4, "w": 1 }, + { "x": 7.5, "y": 4, "w": 2.5 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { "label": "ESC", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_split_space": { + "layout": [ + { "label": "ESC", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Bksp", "x": 13, "y": 0 }, + { "label": "~", "x": 14, "y": 0 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "|", "x": 1.25, "y": 3 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "x": 14, "y": 3 }, + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.5 }, + { "label": "Win", "x": 1.5, "y": 4, "w": 1 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.5 }, + { "x": 4, "y": 4, "w": 2.75 }, + { "x": 6.75, "y": 4, "w": 1.5 }, + { "x": 8.25, "y": 4, "w": 2.75 }, + { "label": "Alt", "x": 11, "y": 4, "w": 1.5 }, + { "label": "Win", "x": 12.5, "y": 4, "w": 1 }, + { "label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5 } + ] + }, + "LAYOUT_tsangan_split_bs": { + "layout": [ + { "label": "ESC", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Bksp", "x": 13, "y": 0 }, + { "label": "~", "x": 14, "y": 0 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "x": 14, "y": 3 }, + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.5 }, + { "label": "Win", "x": 1.5, "y": 4, "w": 1 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.5 }, + { "x": 4, "y": 4, "w": 7 }, + { "label": "Alt", "x": 11, "y": 4, "w": 1.5 }, + { "label": "Win", "x": 12.5, "y": 4, "w": 1 }, + { "label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5 } + ] + }, + "LAYOUT_iso": { + "layout": [ + { "label": "ESC", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h":2 }, + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ":", "x": 10.75, "y": 2 }, + { "label": "\"", "x": 11.75, "y": 2 }, + { "label": "|", "x": 12.75, "y": 2 }, + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "|", "x": 1.25, "y": 3 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } + ] + } + + } +} diff --git a/keyboards/jels/jels60/jels60.c b/keyboards/jels/jels60/jels60.c new file mode 100644 index 0000000000..6e8fd58da8 --- /dev/null +++ b/keyboards/jels/jels60/jels60.c @@ -0,0 +1,21 @@ + /* Copyright 2022 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jels60.h" + + + + diff --git a/keyboards/jels/jels60/jels60.h b/keyboards/jels/jels60/jels60.h new file mode 100644 index 0000000000..f8bc296e1a --- /dev/null +++ b/keyboards/jels/jels60/jels60.h @@ -0,0 +1,95 @@ +/* copyright 2022 Joah Nelson (Jels) +* +* This program is free software: you can 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 +* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + +#define LAYOUT_all( \ + K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13, K1x13, \ + K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K2x13, \ + K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, \ + K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13, \ + K4x0, K4x1, K4x2, K4x4, K4x6, K4x9, K4x10, K4x11, K4x12, K4x13 \ +){ \ + {K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13}, \ + {K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K1x13}, \ + {K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, K2x13}, \ + {K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13}, \ + {K4x0, K4x1, K4x2, ____, K4x4, ____, K4x6, ____, ____, K4x9, K4x10, K4x11, K4x12, K4x13} \ +} + +#define LAYOUT_ansi( \ + K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13, \ + K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K2x13, \ + K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, \ + K3x0, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, \ + K4x0, K4x1, K4x2, K4x6, K4x10, K4x11, K4x12, K4x13 \ +){ \ + {K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13}, \ + {K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, ____ }, \ + {K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, K2x13}, \ + {K3x0, ____, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, ____ }, \ + {K4x0, K4x1, K4x2, ____, ____, ____, K4x6, ____, ____, ____, K4x10, K4x11, K4x12, K4x13} \ +} + +#define LAYOUT_split_space( \ + K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13, K1x13, \ + K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K2x13, \ + K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, \ + K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13, \ + K4x0, K4x1, K4x2, K4x4, K4x6, K4x9, K4x11, K4x12, K4x13 \ +){ \ + {K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13}, \ + {K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K1x13}, \ + {K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, K2x13}, \ + {K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13}, \ + {K4x0, K4x1, K4x2, ____, K4x4, ____, K4x6, ____, ____, K4x9, ____, K4x11, K4x12, K4x13} \ +} + +#define LAYOUT_tsangan_split_bs( \ + K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13, K1x13, \ + K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K2x13, \ + K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, \ + K3x0, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13, \ + K4x0, K4x1, K4x2, K4x6, K4x10, K4x12, K4x13 \ +){ \ + {K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13}, \ + {K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K1x13}, \ + {K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, K2x13}, \ + {K3x0, ____, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13}, \ + {K4x0, K4x1, K4x2, ____, ____, ____, K4x6, ____, ____, ____, K4x10, ____, K4x12, K4x13} \ +} + +#define LAYOUT_iso( \ + K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13, \ + K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, K2x12, \ + K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x13, \ + K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13, \ + K4x0, K4x1, K4x2, K4x6, K4x10, K4x12, K4x13 \ +){ \ + {K0x0, K0x1, K0x2, K0x3, K0x4, K0x5, K0x6, K0x7, K0x8, K0x9, K0x10, K0x11, K0x12, K0x13}, \ + {K1x0, K1x1, K1x2, K1x3, K1x4, K1x5, K1x6, K1x7, K1x8, K1x9, K1x10, K1x11, K1x12, ____ }, \ + {K2x0, K2x1, K2x2, K2x3, K2x4, K2x5, K2x6, K2x7, K2x8, K2x9, K2x10, K2x11, K2x12, K2x13}, \ + {K3x0, K3x1, K3x2, K3x3, K3x4, K3x5, K3x6, K3x7, K3x8, K3x9, K3x10, K3x11, K3x12, K3x13}, \ + {K4x0, K4x1, K4x2, ____, ____, ____, K4x6, ____, ____, ____, K4x10, ____, K4x12, K4x13} \ +} + + + diff --git a/keyboards/jels/jels60/keymaps/default/keymap.c b/keyboards/jels/jels60/keymaps/default/keymap.c new file mode 100644 index 0000000000..072ae3e059 --- /dev/null +++ b/keyboards/jels/jels60/keymaps/default/keymap.c @@ -0,0 +1,50 @@ + /* Copyright 2022 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL +), +[1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +[2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +[3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jels/jels60/keymaps/via/keymap.c b/keyboards/jels/jels60/keymaps/via/keymap.c new file mode 100644 index 0000000000..072ae3e059 --- /dev/null +++ b/keyboards/jels/jels60/keymaps/via/keymap.c @@ -0,0 +1,50 @@ + /* Copyright 2022 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL +), +[1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +[2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +[3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jels/jels60/keymaps/via/rules.mk b/keyboards/jels/jels60/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/jels/jels60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jels/jels60/readme.md b/keyboards/jels/jels60/readme.md new file mode 100644 index 0000000000..0b72d3e346 --- /dev/null +++ b/keyboards/jels/jels60/readme.md @@ -0,0 +1,23 @@ +# Jels60 + +![jels60](https://i.imgur.com/3Ec4YZNh.png) + +A 60% PCB + +* Keyboard Maintainer: [Jels](https://github.com/Jels02) +* Hardware Supported: Jels60 PCB +* Hardware Availabililty: Limited Group buys + +Make example for this keyboard (after setting up your build environment): + + make jels/jels60:default + +Flashing example for this keyboard: + + make jels/jels60: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). + +* **Bootmagic reset**: Hold down the top left key (ESC/Tilde) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/jels/jels60/rules.mk b/keyboards/jels/jels60/rules.mk new file mode 100644 index 0000000000..476cf49f27 --- /dev/null +++ b/keyboards/jels/jels60/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 diff --git a/keyboards/jones/readme.md b/keyboards/jones/readme.md index 180c12e18a..43500d0a1d 100644 --- a/keyboards/jones/readme.md +++ b/keyboards/jones/readme.md @@ -1,23 +1,22 @@ # Jones -![Jones, ANSI style](https://github.com/jpskenn/Jones/raw/master/assets/IMG_2204.jpeg) +![Jones, "Wide" layout](https://raw.githubusercontent.com/jpskenn/Jones/master/assets/_DSF0714.jpeg) -![Jones, JP style](https://github.com/jpskenn/Jones/raw/master/assets/DSC_7189.jpeg) - -A 60% keyboard combined with Ortho-Linear and Row-staggered. It has gapless R2-R3 row. -GH60 case compatible PCB and keyplate. +A symmetrical 60% keyboard combined with Ortho-Linear and Row-staggered. It has gapless Row 2 - Row 3. +GH60 case compatible PCB and keyplate. +[More info](https://github.com/jpskenn/Jones) * Keyboard Maintainer: [jpskenn](https://github.com/jpskenn) -* Hardware Supported: Jones PCB, Keyplate -* Hardware Availability: [GitHub](https://github.com/jpskenn/Jones), [BOOTH](https://jpskenn.booth.pm) +* Hardware Supported: PCB, Key plate, Bottom plate +* Hardware Availability: [GitHub](https://github.com/jpskenn/Jones), [BOOTH](https://jpskenn.booth.pm), [Yushakobo](https://yushakobo.jp) Make example for this keyboard (after setting up your build environment): - make jones/v03_1:default_ansi - + make jones/v1:default + Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): - make jones/v03_1:default_ansi:flash + make jones/v1:default:flash To reset the keyboard into bootloader mode, press the reset switch on the underside. diff --git a/keyboards/jones/rules.mk b/keyboards/jones/rules.mk index 6b49430357..9f0da2abec 100644 --- a/keyboards/jones/rules.mk +++ b/keyboards/jones/rules.mk @@ -1 +1 @@ -DEFAULT_FOLDER = jones/v03_1 +DEFAULT_FOLDER = jones/v1 diff --git a/keyboards/jones/v1/config.h b/keyboards/jones/v1/config.h new file mode 100644 index 0000000000..1f8acc6eb6 --- /dev/null +++ b/keyboards/jones/v1/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2021 Takeshi Nishio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB9DD +#define PRODUCT_ID 0x175A +#define DEVICE_VER 0x0100 +#define MANUFACTURER jpskenn +#define PRODUCT Jones + +/* key matrix size */ +// Same number for Round-Robin matrix. +#define MATRIX_ROWS 10 +#define MATRIX_COLS 10 + +// Same pins for Round-Robin matrix. +#define MATRIX_ROW_PINS { B3, B2, E6, D6, D4, B0, B1, B7, B4, D7 } +#define MATRIX_COL_PINS { B3, B2, E6, D6, D4, B0, B1, B7, B4, D7 } + +#define DIODE_DIRECTION COL2ROW + +/* Rotary Encoder */ +#define ENCODERS_PAD_A { F5, D2 } +#define ENCODERS_PAD_B { F4, D3 } +#define ENCODER_RESOLUTION 4 //the default & suggested is 4 + +/* Audio */ +#ifdef AUDIO_ENABLE + #define AUDIO_PIN C6 + #define AUDIO_CLICKY + #define MUSIC_MAP +#endif + +/* RGBLIGHT */ +#define RGB_DI_PIN F1 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 4 // Left(2) + Right(2) + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + /*== Lighting Layers ==*/ + #define RGBLIGHT_LAYERS + #define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF // Overriding RGB Lighting on/off status +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite trigger key. Left-Top of the layout. */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 9 + +/* External EEPROM */ +// Use 24LC64 EEPROM +#define EEPROM_I2C_24LC64 +// Set MAX_ADDR to specify actual EEPROM size. +// If it's not set, EEPROM size will be set ATmega32u4's 1023. +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 +// How many layers to use with VIA / Remap. +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 // default:4 diff --git a/keyboards/jones/v1/info.json b/keyboards/jones/v1/info.json new file mode 100644 index 0000000000..6aba4fd74b --- /dev/null +++ b/keyboards/jones/v1/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "Jones", + "url": "https://github.com/jpskenn/Jones", + "maintainer": "jpskenn", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0.5, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, + {"x":0.5, "y":1, "w":1.5}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1, "w":1.5}, + {"x":0.5, "y":2, "w":1.5}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2, "w":1.5}, + {"x":0.5, "y":3}, {"x":1.5, "y":3}, {"x":2.5, "y":3}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, + {"x":0.5, "y":4}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4}, {"x":7.5, "y":4}, {"x":8.5, "y":4}, {"x":9.5, "y":4, "w":1.5}, {"x":11, "y":4, "w":1.25}, {"x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, + {"x":0, "y":5}, {"x":1, "y":5}, {"x":14, "y":5}, {"x":15, "y":5} + ] + } + } +} diff --git a/keyboards/jones/v1/keymaps/default/keymap.c b/keyboards/jones/v1/keymaps/default/keymap.c new file mode 100644 index 0000000000..d1f952de66 --- /dev/null +++ b/keyboards/jones/v1/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_number { + _BASE = 0, + _LOWER, + _RAISE, + _ADJUST, +}; + +// Key Macro +#define SP_LOW LT(_LOWER, KC_SPC) +#define SP_RAI LT(_RAISE, KC_SPC) +#define SP_ADJ LT(_ADJUST, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_BSLS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, 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_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_SCLN, KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, + KC_MUTE, KC_LANG2, KC_LGUI, KC_LALT, SP_LOW, SP_RAI, KC_BSPC, SP_RAI,KC_RALT, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, + KC_VOLD, KC_VOLU, KC_VOLD, KC_VOLU + ), + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_TILD, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, _______, _______, _______, _______, _______, _______, SP_ADJ,_______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [_RAISE] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN, KC_QUOT, + _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F11, KC_F12, + _______, _______, _______, _______, SP_ADJ, _______, _______, _______,_______, _______, _______, KC_DOWN, KC_UP, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT( + _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, RGB_RMOD, _______, + _______, AU_TOG, CK_TOGG, MU_TOG, MU_MOD, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, RGB_MOD, _______, + KC_CAPS, KC_CAPS, CK_RST, CK_DOWN, CK_UP, MUV_DE, MUV_IN, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jones/v1/keymaps/default/readme.md b/keyboards/jones/v1/keymaps/default/readme.md new file mode 100644 index 0000000000..453d9e858c --- /dev/null +++ b/keyboards/jones/v1/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# Defalut keymap for Jones + +Simple keymap. + +## Layers + +- Base +- Lower +- Raise +- Adjust diff --git a/keyboards/jones/v1/keymaps/via/config.h b/keyboards/jones/v1/keymaps/via/config.h new file mode 100644 index 0000000000..5d24e1f91a --- /dev/null +++ b/keyboards/jones/v1/keymaps/via/config.h @@ -0,0 +1,34 @@ +/* +Copyright 2021 Takeshi Nishio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//------------------------------------------------------------------------------ +// Rotary Encoder +//------------------------------------------------------------------------------ +// Encoder triggers specific key matrix position, +// when turn knob clockwise or counterclockwise. +// This is handy to assign key codes by VIA. + +// Number of endoder +#define ENCODERS 2 + +// Mappings of encoder rotation to key position in key matrix. +// First encoder, Left side : k85, k86 +// Second encoder, Right side : k95, k96 +#define ENCODERS_CW_KEY { { 6, 8 }, { 6, 9 } } +#define ENCODERS_CCW_KEY { { 5, 8 }, { 5, 9 } } diff --git a/keyboards/jones/v1/keymaps/via/keymap.c b/keyboards/jones/v1/keymaps/via/keymap.c new file mode 100644 index 0000000000..7cd1434bbc --- /dev/null +++ b/keyboards/jones/v1/keymaps/via/keymap.c @@ -0,0 +1,225 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_number { + _BASE1 = 0, + _BASE2, + _BASE3, + _LOWER, + _RAISE, + _ADJUST, +}; + +// Key Macro +#define SP_LOW LT(_LOWER, KC_SPC) +#define SP_RAI LT(_RAISE, KC_SPC) +#define SP_ADJ LT(_ADJUST, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE1] = LAYOUT( + KC_ESC, JP_1, JP_2, JP_3, JP_4, JP_5, JP_CIRC, JP_YEN, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, KC_BSPC, + KC_TAB, JP_Q, JP_W, JP_E, JP_R, JP_T, JP_AT, JP_LBRC, JP_Y, JP_U, JP_I, JP_O, JP_P, KC_BSPC, + KC_LCTL, JP_A, JP_S, JP_D, JP_F, JP_G, JP_COLN, JP_RBRC, JP_H, JP_J, JP_K, JP_L, JP_SCLN, KC_ENT, + KC_LSFT, KC_LSFT, JP_Z, JP_X, JP_C, JP_V, JP_B, JP_SLSH, JP_BSLS, JP_N, JP_M, JP_COMM, JP_DOT, KC_DOWN, KC_UP, + KC_MUTE, KC_LGUI, KC_LALT, JP_MHEN, SP_LOW, SP_RAI, KC_BSPC, SP_RAI,SP_RAI, JP_HENK, JP_KANA, KC_LEFT, KC_RGHT, + KC_VOLD, KC_VOLU, KC_VOLD, KC_VOLU + ), + [_BASE2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______,_______, KC_P0, KC_PDOT, _______, _______, + _______, _______, _______, _______ + ), + [_BASE3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, JP_EXLM, JP_DQUO, JP_HASH, JP_DLR, JP_PERC, JP_TILD, JP_PIPE, JP_AMPR, JP_QUOT, JP_LPRN, JP_RPRN, JP_EQL, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, SP_ADJ, _______, SP_ADJ,SP_ADJ, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [_RAISE] = 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_ESC, JP_1, JP_2, JP_3, JP_4, JP_5, JP_CIRC, JP_YEN, JP_6, JP_7, JP_8, JP_9, JP_0, KC_DEL, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, SP_ADJ, _______, _______, _______,_______, _______, _______, KC_DOWN, KC_UP, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, + _______, DF(_BASE1),DF(_BASE2),DF(_BASE3),_______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, RGB_RMOD, _______, + _______, AU_TOG, CK_TOGG, MU_TOG, MU_MOD, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, RGB_MOD, _______, + KC_CAPS, KC_CAPS, CK_RST, CK_DOWN, CK_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), +}; + + +//------------------------------------------------------------------------------ +// RGB Light settings +//------------------------------------------------------------------------------ +#ifdef RGBLIGHT_LAYERS + +// Indicator LED settings +#define JONES_LED_INDICATOR_INDEX 0 // where to start indicator +#define JONES_LED_INDICATOR_COUNT 4 // how many leds used for indicator +#define JONES_LED_INDICATOR_CHANGE_COUNT 1 // how meny leds to change for temporally layer +#define JONES_LED_DIMMER_LEVEL 200 // brightness dimmer + +// for Default layer (= Base layer) +const rgblight_segment_t PROGMEM my_base1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_COUNT, HSV_WHITE - JONES_LED_DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_base2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_COUNT, HSV_BLUE - JONES_LED_DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_base3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_COUNT, HSV_YELLOW - JONES_LED_DIMMER_LEVEL} +); + +// for temporal layer +const rgblight_segment_t PROGMEM my_caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX + 1 , 1, HSV_MAGENTA - JONES_LED_DIMMER_LEVEL}, + {JONES_LED_INDICATOR_INDEX + 1 + 2 , 1, HSV_MAGENTA - JONES_LED_DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_CHANGE_COUNT, HSV_GREEN - JONES_LED_DIMMER_LEVEL}, + {JONES_LED_INDICATOR_INDEX + 2, JONES_LED_INDICATOR_CHANGE_COUNT, HSV_GREEN - JONES_LED_DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_CHANGE_COUNT, HSV_CYAN - JONES_LED_DIMMER_LEVEL}, + {JONES_LED_INDICATOR_INDEX + 2, JONES_LED_INDICATOR_CHANGE_COUNT, HSV_CYAN - JONES_LED_DIMMER_LEVEL} +); + +const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {JONES_LED_INDICATOR_INDEX , JONES_LED_INDICATOR_CHANGE_COUNT, HSV_RED - JONES_LED_DIMMER_LEVEL}, + {JONES_LED_INDICATOR_INDEX + 2, JONES_LED_INDICATOR_CHANGE_COUNT, HSV_RED - JONES_LED_DIMMER_LEVEL} +); + +// Define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_base1_layer, + my_base2_layer, + my_base3_layer, + my_caps_layer, + my_lower_layer, + my_raise_layer, + my_adjust_layer +); + +// Enabling and disabling lighting layers +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(4, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(5, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(6, layer_state_cmp(state, _ADJUST)); + + return state; +} + +// Enabling and disabling lighting layers for default layer +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, _BASE1)); + rgblight_set_layer_state(1, layer_state_cmp(state, _BASE2)); + rgblight_set_layer_state(2, layer_state_cmp(state, _BASE3)); + + return state; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(3, IS_HOST_LED_ON(USB_LED_CAPS_LOCK)); + + return true; +} +#endif + + +//------------------------------------------------------------------------------ +// Rotary Encoder +//------------------------------------------------------------------------------ +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) { + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) { + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + return true; +}; + + +//------------------------------------------------------------------------------ +// Keyboard Initialization +//------------------------------------------------------------------------------ +void keyboard_post_init_user(void) { +debug_enable=true; +#ifdef RGB_DI_PIN + #ifdef RGBLIGHT_LAYERS + // Enable the LED layers. + rgblight_layers = my_rgb_layers; + + // prevent RGB light overrides layer indicator. + layer_state_set(default_layer_state); + #endif +#endif + +} diff --git a/keyboards/jones/v1/keymaps/via/readme.md b/keyboards/jones/v1/keymaps/via/readme.md new file mode 100644 index 0000000000..95da48228c --- /dev/null +++ b/keyboards/jones/v1/keymaps/via/readme.md @@ -0,0 +1,35 @@ +# Keymap for Jones with VIA support + +VIA supported basic keymap with external EEPROM. + +## Layout + +Japanese style "Wide" layout. + +## Layers + +- Base #1 +- Base #2 +- Base #3 +- Lower +- Raise +- Adjust + +## External EEPROM + +I2C connected external EEPROM. + +## LED lighting + +4 LEDsfor layer indicator. +2 for Left side and 2 for Right side. + +## Rotary encoder + +Supports up to 2 rotary encoders. +Left bottom and Right bottom. + +## Audio + +Supports monophonic audio. +"Music Mode" and "Audio Click" are enabled. diff --git a/keyboards/jones/v1/keymaps/via/rules.mk b/keyboards/jones/v1/keymaps/via/rules.mk new file mode 100644 index 0000000000..e1d2dc0582 --- /dev/null +++ b/keyboards/jones/v1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +# Use VIA +VIA_ENABLE = yes diff --git a/keyboards/jones/v1/readme.md b/keyboards/jones/v1/readme.md new file mode 100644 index 0000000000..43500d0a1d --- /dev/null +++ b/keyboards/jones/v1/readme.md @@ -0,0 +1,23 @@ +# Jones + +![Jones, "Wide" layout](https://raw.githubusercontent.com/jpskenn/Jones/master/assets/_DSF0714.jpeg) + +A symmetrical 60% keyboard combined with Ortho-Linear and Row-staggered. It has gapless Row 2 - Row 3. +GH60 case compatible PCB and keyplate. +[More info](https://github.com/jpskenn/Jones) + +* Keyboard Maintainer: [jpskenn](https://github.com/jpskenn) +* Hardware Supported: PCB, Key plate, Bottom plate +* Hardware Availability: [GitHub](https://github.com/jpskenn/Jones), [BOOTH](https://jpskenn.booth.pm), [Yushakobo](https://yushakobo.jp) + +Make example for this keyboard (after setting up your build environment): + + make jones/v1:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make jones/v1:default:flash + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/jones/v1/rules.mk b/keyboards/jones/v1/rules.mk new file mode 100644 index 0000000000..56d629cfe9 --- /dev/null +++ b/keyboards/jones/v1/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output +ENCODER_ENABLE = yes # Rotary Encoder + +# Use I2C connected External EEPROM +EEPROM_DRIVER = i2c + +LTO_ENABLE = yes diff --git a/keyboards/jones/v1/v1.c b/keyboards/jones/v1/v1.c new file mode 100644 index 0000000000..292a1fbabe --- /dev/null +++ b/keyboards/jones/v1/v1.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v1.h" + +#if defined(AUDIO_ENABLE) && defined(MUSIC_MAP) +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT( + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +); +#endif diff --git a/keyboards/jones/v1/v1.h b/keyboards/jones/v1/v1.h new file mode 100644 index 0000000000..e37c34accc --- /dev/null +++ b/keyboards/jones/v1/v1.h @@ -0,0 +1,57 @@ +/* Copyright 2021 Takeshi Nishio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* +FULL 10x10 ROUND-ROBIN MATRIX for Reference + +{ KC_NO, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ +{ k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19 }, \ +{ k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29 }, \ +{ k30, k31, k32, KC_NO, k34, k35, k36, k37, k38, k39 }, \ +{ k40, k41, k42, k43, KC_NO, k45, k46, k47, k48, k49 }, \ +{ k50, k51, k52, k53, k54, KC_NO, k56, k57, k58, k59 }, \ +{ k60, k61, k62, k63, k64, k65, KC_NO, k67, k68, k69 }, \ +{ k70, k71, k72, k73, k74, k75, k76, KC_NO, k78, k79 }, \ +{ k80, k81, k82, k83, k84, k85, k86, k87, KC_NO, k89 }, \ +{ k90, k91, k92, k93, k94, k95, k96, k97, k98, KC_NO } \ + +*/ + +/* Keys on 6th row are used with rotary encoder. */ +#define LAYOUT( \ + k09, k59, k08, k54, k04, k50, k56, k06, k05, k52, k02, k53, k07, k51, k01, \ + k19, k69, k18, k64, k14, k60, k10, k16, k15, k62, k12, k63, k17, k61, \ + k29, k79, k28, k74, k24, k70, k20, k26, k25, k72, k23, k73, k27, k71, \ + k39, k89, k38, k84, k34, k80, k30, k36, k35, k82, k32, k83, k37, k81, k31, \ + k49, k98, k48, k94, k90, k46, k45, k92, k42, k93, k47, k91, k41, \ + k85, k86, k95, k96 \ +) \ +{ \ + { KC_NO, k01, k02, KC_NO, k04, k05, k06, k07, k08, k09, }, \ + { k10, KC_NO, k12, KC_NO, k14, k15, k16, k17, k18, k19, }, \ + { k20, KC_NO, KC_NO, k23, k24, k25, k26, k27, k28, k29, }, \ + { k30, k31, k32, KC_NO, k34, k35, k36, k37, k38, k39, }, \ + { KC_NO, k41, k42, KC_NO, KC_NO, k45, k46, k47, k48, k49, }, \ + { k50, k51, k52, k53, k54, KC_NO, k56, KC_NO, KC_NO, k59, }, \ + { k60, k61, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, k69, }, \ + { k70, k71, k72, k73, k74, KC_NO, KC_NO, KC_NO, KC_NO, k79, }, \ + { k80, k81, k82, k83, k84, k85, k86, KC_NO, KC_NO, k89, }, \ + { k90, k91, k92, k93, k94, k95, k96, KC_NO, k98, KC_NO } \ +} diff --git a/keyboards/kakunpc/angel64/alpha/matrix.c b/keyboards/kakunpc/angel64/alpha/matrix.c index 2851859cf2..8ca9841e48 100644 --- a/keyboards/kakunpc/angel64/alpha/matrix.c +++ b/keyboards/kakunpc/angel64/alpha/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -119,15 +116,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - static void select_row(uint8_t row) { setPinOutput(row_pins[row]); diff --git a/keyboards/kakunpc/angel64/rev1/matrix.c b/keyboards/kakunpc/angel64/rev1/matrix.c index 2851859cf2..8ca9841e48 100644 --- a/keyboards/kakunpc/angel64/rev1/matrix.c +++ b/keyboards/kakunpc/angel64/rev1/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -119,15 +116,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - static void select_row(uint8_t row) { setPinOutput(row_pins[row]); diff --git a/keyboards/kakunpc/thedogkeyboard/matrix.c b/keyboards/kakunpc/thedogkeyboard/matrix.c index 2851859cf2..8ca9841e48 100644 --- a/keyboards/kakunpc/thedogkeyboard/matrix.c +++ b/keyboards/kakunpc/thedogkeyboard/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -119,15 +116,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - static void select_row(uint8_t row) { setPinOutput(row_pins[row]); diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h index 7de9281d40..9960022a13 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h +++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h @@ -94,9 +94,6 @@ # define ENABLE_RGB_MATRIX_HUE_BREATHING # define ENABLE_RGB_MATRIX_HUE_PENDULUM # define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h index 8806624e24..42f5af8c25 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h +++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h @@ -42,9 +42,7 @@ #define USB_SUSPEND_WAKEUP_DELAY 5000 #define RGB_DI_PIN C7 -#define RGBLED_NUM 68 -#define DRIVER_LED_TOTAL RGBLED_NUM -#define RGBLIGHT_ANIMATIONS +#define DRIVER_LED_TOTAL 68 #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES // reacts to keypresses @@ -85,9 +83,6 @@ # define ENABLE_RGB_MATRIX_HUE_BREATHING # define ENABLE_RGB_MATRIX_HUE_PENDULUM # define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk index 7e5b22ef73..14509a1872 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk +++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk @@ -3,6 +3,7 @@ MCU = atmega32u4 # Bootloader selection BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 # Build Options # change yes to no to disable diff --git a/keyboards/keebio/bamfk1/bamfk1.c b/keyboards/keebio/bamfk1/bamfk1.c new file mode 100644 index 0000000000..eddd7e624e --- /dev/null +++ b/keyboards/keebio/bamfk1/bamfk1.c @@ -0,0 +1,4 @@ +// Copyright 2021 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "bamfk1.h" diff --git a/keyboards/keebio/bamfk1/bamfk1.h b/keyboards/keebio/bamfk1/bamfk1.h new file mode 100644 index 0000000000..be1fd00808 --- /dev/null +++ b/keyboards/keebio/bamfk1/bamfk1.h @@ -0,0 +1,14 @@ +// Copyright 2021 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, e01, e02, \ + e01a, e01b, e02a, e02b \ +) { \ + { k00, e01, e02, KC_NO }, \ + { e01a, e01b, e02a, e02b } \ +} diff --git a/keyboards/keebio/bamfk1/config.h b/keyboards/keebio/bamfk1/config.h new file mode 100644 index 0000000000..5cd86a9d16 --- /dev/null +++ b/keyboards/keebio/bamfk1/config.h @@ -0,0 +1,113 @@ +// Copyright 2021 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x1111 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Keebio +#define PRODUCT BAMFK-1 + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + */ + +#define DIRECT_PINS { \ + { E6, B6, D6, NO_PIN }, \ + { NO_PIN, NO_PIN, NO_PIN, NO_PIN } \ +} +#define AUDIO_PIN C6 +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(STARTUP_SOUND) +#endif + +#define ENCODERS_PAD_A { C7, D7 } +#define ENCODERS_PAD_B { B5, D4 } +#define ENCODERS 2 +#define ENCODERS_CW_KEY { { 1, 1 }, { 3, 1 } } +#define ENCODERS_CCW_KEY { { 0, 1 }, { 2, 1 } } + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +#endif +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2) + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keebio/bamfk1/info.json b/keyboards/keebio/bamfk1/info.json new file mode 100644 index 0000000000..817eb98af0 --- /dev/null +++ b/keyboards/keebio/bamfk1/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "BAMFK-1", + "url": "https://keeb.io", + "maintainer": "nooges", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 1.5, "y": 0, "h":2, "w": 2}, + {"label": "k01", "x": 0.5, "y": 2.25}, + {"label": "k02", "x": 3.5, "y": 2.25}, + + {"label": "k10", "x": 0, "y": 3.5}, + {"label": "k11", "x": 1, "y": 3.5}, + {"label": "k12", "x": 3, "y": 3.5}, + {"label": "k13", "x": 4, "y": 3.5} + ] + } + } +} diff --git a/keyboards/keebio/bamfk1/keymaps/default/keymap.c b/keyboards/keebio/bamfk1/keymaps/default/keymap.c new file mode 100644 index 0000000000..aa0780eafc --- /dev/null +++ b/keyboards/keebio/bamfk1/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +// Copyright 2021 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _MAIN, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT( + KC_A, // Big Switch + MO(1), KC_MUTE, // Encoder presses + KC_DOWN, KC_UP, // Left encoder turns + KC_VOLD, KC_VOLU // Right encoder turns + ), + [_FN1] = LAYOUT( + KC_B, // Big Switch + _______, KC_C, // Encoder presses + KC_PGDN, KC_PGUP, // Left encoder turns + KC_VOLU, KC_VOLD // Right encoder turns + ), + [_FN2] = LAYOUT( + _______, // Big Switch + _______, _______, // Encoder presses + _______, _______, // Left encoder turns + _______, _______ // Right encoder turns + ), + [_FN3] = LAYOUT( + _______, // Big Switch + _______, _______, // Encoder presses + _______, _______, // Left encoder turns + _______, _______ // Right encoder turns + ) +}; diff --git a/keyboards/keebio/bamfk1/keymaps/default/rules.mk b/keyboards/keebio/bamfk1/keymaps/default/rules.mk new file mode 100644 index 0000000000..4da205a168 --- /dev/null +++ b/keyboards/keebio/bamfk1/keymaps/default/rules.mk @@ -0,0 +1 @@ +LTO_ENABLE = yes diff --git a/keyboards/keebio/bamfk1/keymaps/via/keymap.c b/keyboards/keebio/bamfk1/keymaps/via/keymap.c new file mode 100644 index 0000000000..e7cde2d7ee --- /dev/null +++ b/keyboards/keebio/bamfk1/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +// Copyright 2021 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _MAIN, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT( + RGB_MOD, // Big Switch + FN_MO13, KC_MUTE, // Encoder presses + KC_DOWN, KC_UP, // Left encoder turns + KC_VOLD, KC_VOLU // Right encoder turns + ), + [_FN1] = LAYOUT( + KC_B, // Big Switch + _______, KC_C, // Encoder presses + KC_PGDN, KC_PGUP, // Left encoder turns + KC_VOLU, KC_VOLD // Right encoder turns + ), + [_FN2] = LAYOUT( + _______, // Big Switch + _______, _______, // Encoder presses + _______, _______, // Left encoder turns + _______, _______ // Right encoder turns + ), + [_FN3] = LAYOUT( + _______, // Big Switch + _______, _______, // Encoder presses + _______, _______, // Left encoder turns + _______, _______ // Right encoder turns + ) +}; diff --git a/keyboards/keebio/bamfk1/keymaps/via/rules.mk b/keyboards/keebio/bamfk1/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/keebio/bamfk1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keebio/bamfk1/readme.md b/keyboards/keebio/bamfk1/readme.md new file mode 100644 index 0000000000..a90ee8ac8c --- /dev/null +++ b/keyboards/keebio/bamfk1/readme.md @@ -0,0 +1,27 @@ +# BAMFK-1 + +![bamfk1](https://cdn.shopify.com/s/files/1/1851/5125/products/bamfk-1-back_1100x.png?v=1635304218) + +PCB for the Big Switch with support for horizontal rotary encoders. + +* Keyboard Maintainer: [Keebio](https://github.com/nooges) +* Hardware Supported: BAMFK-1 PCB +* Hardware Availability: [Keebio](https://keeb.io/) + +Make example for this keyboard (after setting up your build environment): + + make keebio/bamfk1:default + +Flashing example for this keyboard: + + make keebio/bamfk1: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 `RESET` if it is available diff --git a/keyboards/keebio/bamfk1/rules.mk b/keyboards/keebio/bamfk1/rules.mk new file mode 100644 index 0000000000..abcf10c871 --- /dev/null +++ b/keyboards/keebio/bamfk1/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output +ENCODER_ENABLE = yes + +SRC += encoder_actions.c diff --git a/keyboards/keebio/encoder_actions.c b/keyboards/keebio/encoder_actions.c new file mode 100644 index 0000000000..c4e49813f4 --- /dev/null +++ b/keyboards/keebio/encoder_actions.c @@ -0,0 +1,68 @@ +/* Copyright 2020 Neil Brian Ramirez + * Copyright 2021 drashna jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "encoder_actions.h" + +#if defined(ENCODER_ENABLE) + +# ifdef ENCODERS +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; +# endif + +void encoder_action_unregister(void) { +# ifdef ENCODERS + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +# endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { +# ifdef ENCODERS + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +# endif +} + +void matrix_scan_kb(void) { + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + // don't return user actions, because they are in the keymap + // encoder_update_user(index, clockwise); + return true; +}; + +#endif diff --git a/keyboards/keebio/encoder_actions.h b/keyboards/keebio/encoder_actions.h new file mode 100644 index 0000000000..2484af52ae --- /dev/null +++ b/keyboards/keebio/encoder_actions.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +void encoder_action_unregister(void); + +void encoder_action_register(uint8_t index, bool clockwise); diff --git a/keyboards/keebio/iris/rev3/rev3.c b/keyboards/keebio/iris/rev3/rev3.c index e874b9beae..2b3d6b1d96 100644 --- a/keyboards/keebio/iris/rev3/rev3.c +++ b/keyboards/keebio/iris/rev3/rev3.c @@ -36,6 +36,7 @@ void eeconfig_init_kb(void) { eeconfig_init_user(); } +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { @@ -53,3 +54,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return false; } +#endif diff --git a/keyboards/keebio/iris/rev4/rev4.c b/keyboards/keebio/iris/rev4/rev4.c index 36ef461cd0..112c86f413 100644 --- a/keyboards/keebio/iris/rev4/rev4.c +++ b/keyboards/keebio/iris/rev4/rev4.c @@ -17,6 +17,7 @@ void eeconfig_init_kb(void) { eeconfig_init_user(); } +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { @@ -34,3 +35,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return false; } +#endif diff --git a/keyboards/keebio/iris/rev5/rev5.c b/keyboards/keebio/iris/rev5/rev5.c index 2a89c6923b..b597c05de8 100644 --- a/keyboards/keebio/iris/rev5/rev5.c +++ b/keyboards/keebio/iris/rev5/rev5.c @@ -13,6 +13,7 @@ along with this program. If not, see . */ #include "rev5.h" +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { @@ -30,3 +31,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return false; } +#endif diff --git a/keyboards/keebio/iris/rev6/rev6.c b/keyboards/keebio/iris/rev6/rev6.c index 152df0b2f9..8b612c3555 100644 --- a/keyboards/keebio/iris/rev6/rev6.c +++ b/keyboards/keebio/iris/rev6/rev6.c @@ -64,6 +64,7 @@ led_config_t g_led_config = { { } }; #endif +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { @@ -81,3 +82,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return false; } +#endif diff --git a/keyboards/keyboardio/atreus/keymaps/via/keymap.c b/keyboards/keyboardio/atreus/keymaps/via/keymap.c new file mode 100644 index 0000000000..c649ec1c65 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +// Copyright (C) 2022, Hao Xiang Liew + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P , + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN , + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_BSLS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH , + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_MINS, KC_QUOT, KC_ENT ), + + /* + * ! @ up { } || pgup 7 8 9 * + * # left down right $ || pgdn 4 5 6 + + * [ ] ( ) & || ` 1 2 3 \ + * lower insert super shift bksp ctrl || alt space fn . 0 = + */ + [1] = LAYOUT( /* [> RAISE <] */ + KC_EXLM, KC_AT, KC_UP, KC_DLR, KC_PERC, KC_PGUP, KC_7, KC_8, KC_9, KC_BSPC, + KC_LPRN, KC_LEFT, KC_DOWN, KC_RGHT, KC_RPRN, KC_PGDN, KC_4, KC_5, KC_6, KC_BSLS, + KC_LBRC, KC_RBRC, KC_HASH, KC_LCBR, KC_RCBR, KC_CIRC, KC_AMPR,KC_ASTR, KC_1, KC_2, KC_3, KC_PLUS, + TG(2), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT,KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL ), + /* + * insert home up end pgup || up F7 F8 F9 F10 + * del left down right pgdn || down F4 F5 F6 F11 + * volup reset || F1 F2 F3 F12 + * voldn super shift bksp ctrl || alt space L0 prtsc scroll pause + */ + [2] = LAYOUT( /* [> LOWER <] */ + KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_TRNS, KC_TRNS, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , + TO(0), KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(0), KC_PSCR, KC_SLCK, KC_PAUS ), + + [3] = LAYOUT( /* blank */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; diff --git a/keyboards/keyboardio/atreus/keymaps/via/rules.mk b/keyboards/keyboardio/atreus/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kinesis/alvicstep/matrix.c b/keyboards/kinesis/alvicstep/matrix.c index 9c05374510..5636418849 100644 --- a/keyboards/kinesis/alvicstep/matrix.c +++ b/keyboards/kinesis/alvicstep/matrix.c @@ -158,15 +158,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static matrix_row_t read_row(uint8_t row) { _delay_us(30); // without this wait read unstable value. diff --git a/keyboards/kmac/matrix.c b/keyboards/kmac/matrix.c index 3d5a3081d1..2052a9be71 100644 --- a/keyboards/kmac/matrix.c +++ b/keyboards/kmac/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -79,14 +76,6 @@ void matrix_print(void) { } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - /* Columns 0 - 15 * These columns uses two 74HC237D 3 to 8 bit demultiplexers. * col / pin: PB6 PC6 PC7 PF1 PF0 diff --git a/keyboards/kmini/matrix.c b/keyboards/kmini/matrix.c index eee19054ea..f3e60eb869 100755 --- a/keyboards/kmini/matrix.c +++ b/keyboards/kmini/matrix.c @@ -132,15 +132,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop32(matrix[i]); - } - return count; -} - static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { bool matrix_changed = false; diff --git a/keyboards/kopibeng/mnk65/config.h b/keyboards/kopibeng/mnk65/config.h new file mode 100644 index 0000000000..6059de6ab1 --- /dev/null +++ b/keyboards/kopibeng/mnk65/config.h @@ -0,0 +1,60 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // 'KP' kopibeng +#define PRODUCT_ID 0x0651 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kopibeng +#define PRODUCT MNK65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, B7, B3 } +#define MATRIX_COL_PINS { D0, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5 } +#define UNUSED_PINS + +#define LED_CAPS_LOCK_PIN D1 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/kopibeng/mnk65/info.json b/keyboards/kopibeng/mnk65/info.json new file mode 100644 index 0000000000..e0bd2f7859 --- /dev/null +++ b/keyboards/kopibeng/mnk65/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "MNK65", + "maintainer": "kopibeng", + "url": "https://monokei.co/", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0 }, + { "label": "0,1", "x": 1, "y": 0 }, + { "label": "0,2", "x": 2, "y": 0 }, + { "label": "0,3", "x": 3, "y": 0 }, + { "label": "0,4", "x": 4, "y": 0 }, + { "label": "0,5", "x": 5, "y": 0 }, + { "label": "0,6", "x": 6, "y": 0 }, + { "label": "0,7", "x": 7, "y": 0 }, + { "label": "0,8", "x": 8, "y": 0 }, + { "label": "0,9", "x": 9, "y": 0 }, + { "label": "0,10", "x": 10, "y": 0 }, + { "label": "0,11", "x": 11, "y": 0 }, + { "label": "0,12", "x": 12, "y": 0 }, + { "label": "1,13", "x": 13, "y": 0 }, + { "label": "0,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15, "y": 0 }, + + { "label": "1,0", "w": 1.5, "x": 0, "y": 1 }, + { "label": "1,1", "x": 1.5, "y": 1 }, + { "label": "1,2", "x": 2.5, "y": 1 }, + { "label": "1,3", "x": 3.5, "y": 1 }, + { "label": "1,4", "x": 4.5, "y": 1 }, + { "label": "1,5", "x": 5.5, "y": 1 }, + { "label": "1,6", "x": 6.5, "y": 1 }, + { "label": "1,7", "x": 7.5, "y": 1 }, + { "label": "1,8", "x": 8.5, "y": 1 }, + { "label": "1,9", "x": 9.5, "y": 1 }, + { "label": "1,10", "x": 10.5, "y": 1 }, + { "label": "1,11", "x": 11.5, "y": 1 }, + { "label": "2,12", "x": 12.5, "y": 1 }, + { "label": "1,12", "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "1,14", "x": 15, "y": 1 }, + + { "label": "2,0", "w": 1.75, "x": 0, "y": 2 }, + { "label": "2,1", "x": 1.75, "y": 2 }, + { "label": "2,2", "x": 2.75, "y": 2 }, + { "label": "2,3", "x": 3.75, "y": 2 }, + { "label": "2,4", "x": 4.75, "y": 2 }, + { "label": "2,5", "x": 5.75, "y": 2 }, + { "label": "2,6", "x": 6.75, "y": 2 }, + { "label": "2,7", "x": 7.75, "y": 2 }, + { "label": "2,8", "x": 8.75, "y": 2 }, + { "label": "2,9", "x": 9.75, "y": 2 }, + { "label": "2,10", "x": 10.75, "y": 2 }, + { "label": "2,11", "x": 11.75, "y": 2 }, + { "label": "2,13", "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "2,14", "x": 15, "y": 2 }, + + { "label": "3,0", "w": 1.25, "x": 0, "y": 3 }, + { "label": "3,1", "x": 1.25, "y": 3 }, + { "label": "3,2", "x": 2.25, "y": 3 }, + { "label": "3,3", "x": 3.25, "y": 3 }, + { "label": "3,4", "x": 4.25, "y": 3 }, + { "label": "3,5", "x": 5.25, "y": 3 }, + { "label": "3,6", "x": 6.25, "y": 3 }, + { "label": "3,7", "x": 7.25, "y": 3 }, + { "label": "3,8", "x": 8.25, "y": 3 }, + { "label": "3,9", "x": 9.25, "y": 3 }, + { "label": "3,10", "x": 10.25, "y": 3 }, + { "label": "3,11", "x": 11.25, "y": 3 }, + { "label": "3,12", "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "3,13", "x": 14, "y": 3 }, + { "label": "3,14", "x": 15, "y": 3 }, + + { "label": "4,0", "w": 1.25, "x": 0, "y": 4 }, + { "label": "4,1", "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "4,2", "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "4,6", "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "4,10", "w": 1.25, "x": 10, "y": 4 }, + { "label": "4,11", "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "4,12", "x": 13, "y": 4 }, + { "label": "4,13", "x": 14, "y": 4 }, + { "label": "4,14", "x": 15, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kopibeng/mnk65/keymaps/default/keymap.c b/keyboards/kopibeng/mnk65/keymaps/default/keymap.c new file mode 100644 index 0000000000..f588475516 --- /dev/null +++ b/keyboards/kopibeng/mnk65/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/mnk65/keymaps/via/keymap.c b/keyboards/kopibeng/mnk65/keymaps/via/keymap.c new file mode 100644 index 0000000000..ea2fcff18c --- /dev/null +++ b/keyboards/kopibeng/mnk65/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/mnk65/keymaps/via/rules.mk b/keyboards/kopibeng/mnk65/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/kopibeng/mnk65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kopibeng/mnk65/mnk65.c b/keyboards/kopibeng/mnk65/mnk65.c new file mode 100644 index 0000000000..2ae4eec194 --- /dev/null +++ b/keyboards/kopibeng/mnk65/mnk65.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mnk65.h" \ No newline at end of file diff --git a/keyboards/kopibeng/mnk65/mnk65.h b/keyboards/kopibeng/mnk65/mnk65.h new file mode 100644 index 0000000000..60a92f1a65 --- /dev/null +++ b/keyboards/kopibeng/mnk65/mnk65.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* + * + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │1D │0D │0E │ │0D │ Full Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │2C │1C │1E │ │2D │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌─┴─┐ │ ISO + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ │1C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴───┘ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4A │4B │ │4C │4D │4E │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┐ + * │40 │41 │42 │46 │4B │ 7u Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┘ + * + */ + +// LAYOUT_all: +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K1D, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K2C, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E}, \ + {K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/kopibeng/mnk65/readme.md b/keyboards/kopibeng/mnk65/readme.md new file mode 100644 index 0000000000..80e256e617 --- /dev/null +++ b/keyboards/kopibeng/mnk65/readme.md @@ -0,0 +1,21 @@ +# MNK65 + +![MNK65](https://i.imgur.com/5BzAgPgl.png) + +A QMK-powered, VIA-enabled 65% PCB with support for ANSI/ISO layouts, split Backspace and 6.25U/7U bottom row. + +* Keyboard Maintainer: kopibeng +* Hardware Supported: MONOKEI - Hiro +* Hardware Availability: https://monokei.co/ + +Make example for this keyboard (after setting up your build environment): + + make kopibeng/mnk65: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 + +* Physical reset button: Press the RESET switch on top side of PCB. +* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard. +* Keycode reset: Press the RESET keycode (default: MO(1) + Home keys) in layout if available. diff --git a/keyboards/kopibeng/mnk65/rules.mk b/keyboards/kopibeng/mnk65/rules.mk new file mode 100644 index 0000000000..73ac281e0b --- /dev/null +++ b/keyboards/kopibeng/mnk65/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ktec/ergodone/matrix.c b/keyboards/ktec/ergodone/matrix.c index 3973ff3484..529974532a 100644 --- a/keyboards/ktec/ergodone/matrix.c +++ b/keyboards/ktec/ergodone/matrix.c @@ -158,15 +158,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - /* Column pin configuration * * Pro Micro: 6 5 4 3 2 1 0 diff --git a/keyboards/lily58/glow_enc/config.h b/keyboards/lily58/glow_enc/config.h new file mode 100644 index 0000000000..5e51acea25 --- /dev/null +++ b/keyboards/lily58/glow_enc/config.h @@ -0,0 +1,55 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2017 F_YUUCHI +Copyright 2020 Ben Roesner (keycapsss.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 . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFC51 +#define PRODUCT_ID 0x0059 +#define DEVICE_VER 0x0100 +#define MANUFACTURER ORVISEVANS+ +#define PRODUCT Lily58GlowEnc + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D2 + +#define RGB_DI_PIN F4 + +#define RGBLED_NUM 72 // Number of LEDs + +#define RGBLED_SPLIT { 36, 36 } +#define RGBLIGHT_SPLIT +#define RGBLIGHT_LIMIT_VAL 120 + +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { D4 } +#define ENCODERS_PAD_A_RIGHT { D4 } +#define ENCODERS_PAD_B_RIGHT { F5 } diff --git a/keyboards/lily58/glow_enc/glow_enc.c b/keyboards/lily58/glow_enc/glow_enc.c new file mode 100644 index 0000000000..57a0df93db --- /dev/null +++ b/keyboards/lily58/glow_enc/glow_enc.c @@ -0,0 +1,16 @@ +/* +Copyright 2020 Ben Roesner (keycapsss.com) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "lily58.h" + diff --git a/keyboards/lily58/glow_enc/glow_enc.h b/keyboards/lily58/glow_enc/glow_enc.h new file mode 100644 index 0000000000..f9cc1c26b8 --- /dev/null +++ b/keyboards/lily58/glow_enc/glow_enc.h @@ -0,0 +1,66 @@ +/* Copyright 2022 Liashenko Volodymyr (@LVladymyr) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#include "lily58.h" + +#include "quantum.h" + + +#ifndef FLIP_HALF +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, \ + L41, L42, L43, L44, R41, R42, R43, R44 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { KC_NO, L41, L42, L43, L44, L45 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 }, \ + { KC_NO, R44, R43, R42, R41, R40 } \ + } +#else +// Keymap with right side flipped +// (TRRS jack on both halves are to the right) +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, L45, R30, R31, R32, R33, R34, R35, R45, \ + L41, L42, L43, L44, R41, R42, R43, R44 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { KC_NO, L41, L42, L43, L44, L45 }, \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { KC_NO, R41, R42, R43, R44, R45 } \ + } +#endif diff --git a/keyboards/lily58/glow_enc/info.json b/keyboards/lily58/glow_enc/info.json new file mode 100644 index 0000000000..503cdaae12 --- /dev/null +++ b/keyboards/lily58/glow_enc/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Lily58", + "url": "https://keycapsss.com", + "maintainer": "BenRoe", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5}, + {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5}, + {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5}, + {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5}, + {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.15} + ] + } + } +} diff --git a/keyboards/lily58/glow_enc/rules.mk b/keyboards/lily58/glow_enc/rules.mk new file mode 100644 index 0000000000..3d80190eb2 --- /dev/null +++ b/keyboards/lily58/glow_enc/rules.mk @@ -0,0 +1,8 @@ +ENCODER_ENABLE = yes # ENables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB light +LTO_ENABLE = yes # significantly reduce the compiled size, but disable the legacy TMK Macros and Functions features +BOOTMAGIC_ENABLE = no +RGB_MATRIX_ENABLE = no # Per key rgb leds + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/lily58/lily58.h b/keyboards/lily58/lily58.h index 4f6f262bbc..c082030032 100644 --- a/keyboards/lily58/lily58.h +++ b/keyboards/lily58/lily58.h @@ -4,4 +4,6 @@ #include "rev1.h" #elif KEYBOARD_lily58_light #include "light.h" +#elif KEYBOARD_lily58_glow_enc + #include "glow_enc.h" #endif diff --git a/keyboards/makenova/omega/omega4/config.h b/keyboards/makenova/omega/omega4/config.h new file mode 100644 index 0000000000..acd482324d --- /dev/null +++ b/keyboards/makenova/omega/omega4/config.h @@ -0,0 +1,26 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/makenova/omega/omega4/info.json b/keyboards/makenova/omega/omega4/info.json new file mode 100644 index 0000000000..5e9bf22595 --- /dev/null +++ b/keyboards/makenova/omega/omega4/info.json @@ -0,0 +1,37 @@ +{ + "manufacturer": "makenova", + "keyboard_name": "omega4", + "maintainer": "makenova", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D4", "F4", "B5", "F5", "F6", "B6", "B2", "B3", "B1", "F7"], + "rows": ["C6", "D7", "E6", "B4"] + }, + "processor": "atmega32u4", + "url": "https://github.com/makenova/omega", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"A", "x":0.25, "y":1}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":":", "x":9.25, "y":1}, {"label":"Z", "x":0.5, "y":2}, {"label":"X", "x":1.5, "y":2}, {"label":"C", "x":2.5, "y":2}, {"label":"V", "x":3.5, "y":2}, {"label":"", "x":4.5, "y":2}, {"label":"", "x":5.5, "y":2}, {"label":"B", "x":6.5, "y":2}, {"label":"N", "x":7.5, "y":2}, {"label":"M", "x":8.5, "y":2}, {"label":"<", "x":9.5, "y":2}, {"label":"", "x":0.75, "y":3}, {"label":"", "x":1.75, "y":3}, {"label":"Space", "x":2.75, "y":3, "w":6}, {"label":"", "x":8.75, "y":3}, {"label":"", "x":9.75, "y":3}] + }, + "LAYOUT_6u_bar": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"A", "x":0.25, "y":1}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":":", "x":9.25, "y":1}, {"label":"Z", "x":0.5, "y":2}, {"label":"X", "x":1.5, "y":2}, {"label":"C", "x":2.5, "y":2}, {"label":"V", "x":3.5, "y":2}, {"label":"", "x":4.5, "y":2}, {"label":"", "x":5.5, "y":2}, {"label":"B", "x":6.5, "y":2}, {"label":"N", "x":7.5, "y":2}, {"label":"M", "x":8.5, "y":2}, {"label":"<", "x":9.5, "y":2}, {"label":"", "x":0.75, "y":3}, {"label":"Space", "x":1.75, "y":3, "w":8}, {"label":"", "x":9.75, "y":3}] + }, + "LAYOUT_10u_bar": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"A", "x":0.25, "y":1}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":":", "x":9.25, "y":1}, {"label":"Z", "x":0.5, "y":2}, {"label":"X", "x":1.5, "y":2}, {"label":"C", "x":2.5, "y":2}, {"label":"V", "x":3.5, "y":2}, {"label":"", "x":4.5, "y":2}, {"label":"", "x":5.5, "y":2}, {"label":"B", "x":6.5, "y":2}, {"label":"N", "x":7.5, "y":2}, {"label":"M", "x":8.5, "y":2}, {"label":"<", "x":9.5, "y":2}, {"label":"Space", "x":0.75, "y":3, "w":10}] + } + } +} \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default/config.h b/keyboards/makenova/omega/omega4/keymaps/default/config.h new file mode 100644 index 0000000000..1d2dd05351 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default/config.h @@ -0,0 +1,12 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#ifdef COMBO_ENABLE +# define COMBO_COUNT 4 +# define COMBO_TERM 50 +#endif + +#define TAPPING_TERM 150 +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default/keymap.c b/keyboards/makenova/omega/omega4/keymaps/default/keymap.c new file mode 100644 index 0000000000..26c5ada806 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// ctrl +#define CTRL_S LCTL_T(KC_S) +#define CTRL_L RCTL_T(KC_L) +// alt +#define ALT_D LALT_T(KC_D) +#define ALT_K RALT_T(KC_K) +//gui +#define GUI_F LGUI_T(KC_F) +#define GUI_J RGUI_T(KC_J) +// shift +#define SFT_A LSFT_T(KC_A) +#define SFT_SCLN RSFT_T(KC_SCLN) +// layers +#define OS_SFT OSM(MOD_RSFT) +#define OS_3 OSL(3) +#define OS_4 OSL(4) +#define LT1_SPC LT(1,KC_SPC) +#define LT2_ESC LT(2,KC_ESC) + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {GUI_J, ALT_K, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + COMBO(combo_bspc,KC_BSPC), // 1 + COMBO(combo_ent,KC_ENT), // 2 + COMBO(combo_tab,KC_TAB), // 3 + COMBO(combo_del,KC_DEL), // 4 +}; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + SFT_A, CTRL_S, ALT_D, GUI_F, KC_G, KC_H, GUI_J, ALT_K, CTRL_L, SFT_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + OS_4, LT2_ESC, LT1_SPC, OS_3, OS_SFT + ), + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, + KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_MINS, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + KC_TILDE, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_UNDS, KC_PLUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default/readme.md b/keyboards/makenova/omega/omega4/keymaps/default/readme.md new file mode 100644 index 0000000000..9e5e5aeb1e --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for omega4 diff --git a/keyboards/makenova/omega/omega4/keymaps/default/rules.mk b/keyboards/makenova/omega/omega4/keymaps/default/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/config.h b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/config.h new file mode 100644 index 0000000000..1d2dd05351 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/config.h @@ -0,0 +1,12 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#ifdef COMBO_ENABLE +# define COMBO_COUNT 4 +# define COMBO_TERM 50 +#endif + +#define TAPPING_TERM 150 +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/keymap.c b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/keymap.c new file mode 100644 index 0000000000..b60275d3ab --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/keymap.c @@ -0,0 +1,65 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// ctrl +#define CTRL_S LCTL_T(KC_S) +#define CTRL_L RCTL_T(KC_L) +// alt +#define ALT_D LALT_T(KC_D) +#define ALT_K RALT_T(KC_K) +//gui +#define GUI_F LGUI_T(KC_F) +#define GUI_J RGUI_T(KC_J) +// shift +#define SFT_A LSFT_T(KC_A) +#define SFT_SCLN RSFT_T(KC_SCLN) +// layers +#define OS_SFT OSM(MOD_RSFT) +#define OS_3 OSL(3) +#define OS_4 OSL(4) +#define LT1_SPC LT(1,KC_SPC) +#define LT2_Z LT(2,KC_Z) +#define LT3_SLSH LT(3,KC_SLSH) + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {GUI_J, ALT_K, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + COMBO(combo_bspc,KC_BSPC), // 1 + COMBO(combo_ent,KC_ENT), // 2 + COMBO(combo_tab,KC_TAB), // 3 + COMBO(combo_del,KC_DEL), // 4 +}; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT_10u_bar( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + SFT_A, CTRL_S, ALT_D, GUI_F, KC_G, KC_H, GUI_J, ALT_K, CTRL_L, SFT_SCLN, + LT2_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT3_SLSH, + LT1_SPC + ), + LAYOUT_10u_bar( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, + KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_MINS, KC_EQL, KC_TRNS, + KC_TRNS + ), + LAYOUT_10u_bar( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_UNDS, KC_PLUS, KC_TILDE, + KC_TRNS + ), + LAYOUT_10u_bar( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, + RESET + ) +}; \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/readme.md b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/readme.md new file mode 100644 index 0000000000..3089385415 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/readme.md @@ -0,0 +1 @@ +# The default keymap for 10u spacebar omega4 diff --git a/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/rules.mk b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_10u_bar/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/config.h b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/config.h new file mode 100644 index 0000000000..1d2dd05351 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/config.h @@ -0,0 +1,12 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#ifdef COMBO_ENABLE +# define COMBO_COUNT 4 +# define COMBO_TERM 50 +#endif + +#define TAPPING_TERM 150 +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/keymap.c b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/keymap.c new file mode 100644 index 0000000000..477582613c --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/keymap.c @@ -0,0 +1,64 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// ctrl +#define CTRL_S LCTL_T(KC_S) +#define CTRL_L RCTL_T(KC_L) +// alt +#define ALT_D LALT_T(KC_D) +#define ALT_K RALT_T(KC_K) +//gui +#define GUI_F LGUI_T(KC_F) +#define GUI_J RGUI_T(KC_J) +// shift +#define SFT_A LSFT_T(KC_A) +#define SFT_SCLN RSFT_T(KC_SCLN) +// layers +#define OS_SFT OSM(MOD_RSFT) +#define OS_3 OSL(3) +#define OS_4 OSL(4) +#define LT1_SPC LT(1,KC_SPC) +#define LT2_ESC LT(2,KC_ESC) + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {GUI_J, ALT_K, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + COMBO(combo_bspc,KC_BSPC), // 1 + COMBO(combo_ent,KC_ENT), // 2 + COMBO(combo_tab,KC_TAB), // 3 + COMBO(combo_del,KC_DEL), // 4 +}; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT_6u_bar( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + SFT_A, CTRL_S, ALT_D, GUI_F, KC_G, KC_H, GUI_J, ALT_K, CTRL_L, SFT_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + LT2_ESC, LT1_SPC, OS_3 + ), + LAYOUT_6u_bar( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, + KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_MINS, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + LAYOUT_6u_bar( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + KC_TILDE, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_UNDS, KC_PLUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + LAYOUT_6u_bar( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, + RESET, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/readme.md b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/readme.md new file mode 100644 index 0000000000..31f6b4c019 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/readme.md @@ -0,0 +1 @@ +# The default keymap for 6u spacebar omega4 diff --git a/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/rules.mk b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/makenova/omega/omega4/keymaps/default_6u_bar/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/makenova/omega/omega4/omega4.c b/keyboards/makenova/omega/omega4/omega4.c new file mode 100644 index 0000000000..b64ae638bd --- /dev/null +++ b/keyboards/makenova/omega/omega4/omega4.c @@ -0,0 +1,4 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "omega4.h" diff --git a/keyboards/makenova/omega/omega4/omega4.h b/keyboards/makenova/omega/omega4/omega4.h new file mode 100644 index 0000000000..754b58ee35 --- /dev/null +++ b/keyboards/makenova/omega/omega4/omega4.h @@ -0,0 +1,51 @@ +// Copyright 2022 makenova (@makenova) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ + K30, K31, K35, K38, K39 \ +){ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \ + { K30, K31, KC_NO, KC_NO, KC_NO, K35, KC_NO, KC_NO, K38, K39 } \ +} + +#define LAYOUT_6u_bar( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ + K30, K35, K39 \ +){ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \ + { K30, KC_NO, KC_NO, KC_NO, KC_NO, K35, KC_NO, KC_NO, KC_NO, K39 } \ +} + +#define LAYOUT_10u_bar( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ + K35 \ +){ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K35, KC_NO, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/makenova/omega/omega4/readme.md b/keyboards/makenova/omega/omega4/readme.md new file mode 100644 index 0000000000..0b4db785d5 --- /dev/null +++ b/keyboards/makenova/omega/omega4/readme.md @@ -0,0 +1,23 @@ +# omega4 + +![omega4](https://i.imgur.com/tV4iCoD.png) + +uniform stagger 4 row board. + +- Keyboard Maintainer: [makenova](https://github.com/makenova) +- Hardware Supported: [omega4](https://github.com/makenova/omega) +- Hardware Availability: https://www.cbkbd.com/product/omega4-keyboard-kit + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb makenova/omega/omega4 -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 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 `RESET` if it is available diff --git a/keyboards/makenova/omega/omega4/rules.mk b/keyboards/makenova/omega/omega4/rules.mk new file mode 100644 index 0000000000..515ca5621f --- /dev/null +++ b/keyboards/makenova/omega/omega4/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/infinity875/config.h b/keyboards/mechlovin/infinity875/config.h new file mode 100644 index 0000000000..6b6a8147f6 --- /dev/null +++ b/keyboards/mechlovin/infinity875/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2021 Mechlovin' Studio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C // ML +#define PRODUCT_ID 0x0875 +#define DEVICE_VER 0x0001 +#define PRODUCT Infinity87.5 +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define LED_CAPS_LOCK_PIN D6 +#define LED_SCROLL_LOCK_PIN B4 +#define LED_PIN_ON_STATE 1 + +#ifdef RGB_MATRIX_ENABLE +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 42 +#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +#endif + + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mechlovin/infinity875/infinity875.c b/keyboards/mechlovin/infinity875/infinity875.c new file mode 100644 index 0000000000..43606b6c92 --- /dev/null +++ b/keyboards/mechlovin/infinity875/infinity875.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "infinity875.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + //Key Matrix to LED Index + {0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}, + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED} +}, { + //LED Index to Physical Positon + {0,0}, {14,0}, {28,0}, {42,0}, {56,0}, {67,0}, {70,0}, {84,0}, {98,0}, {112,0}, {126,0}, {140,0}, {154,0}, {168,0}, {182,0}, {196,0}, {210,0}, {224,0}, + {224,13}, {196,13}, {182,13}, {154,13}, {112,13}, {84,13}, {56,13}, {28,13}, {0,13}, + {0,25}, {0,38}, + {0,51}, {0,64}, + {28,64}, {56,64}, + {84,64}, {112,64}, {154,64}, {182,64}, {196,64}, {224,64}, {224,51}, {224,38}, {224,25}, +//{244,64}, {196,64}, {182,64}, {154,64}, {112,64}, {84,64}, {56,64}, {28,64}, {0,64}, +}, { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, + 1, 1, + 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, +} }; +#endif + diff --git a/keyboards/mechlovin/infinity875/infinity875.h b/keyboards/mechlovin/infinity875/infinity875.h new file mode 100644 index 0000000000..2febe0824c --- /dev/null +++ b/keyboards/mechlovin/infinity875/infinity875.h @@ -0,0 +1,99 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + +#define LAYOUT_tkl_f13_ansi_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + +#define LAYOUT_tkl_f13_iso_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \ + 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, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + +#define LAYOUT_tkl_ansi_split_bs_rshift( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + +#define LAYOUT_tkl_iso_split_bs_rshift( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \ + 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, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/mechlovin/infinity875/info.json b/keyboards/mechlovin/infinity875/info.json new file mode 100644 index 0000000000..e24c0d1cc2 --- /dev/null +++ b/keyboards/mechlovin/infinity875/info.json @@ -0,0 +1,23 @@ +{ + "keyboard_name": "Infinity87.5", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT_tkl_ansi_split_bs_rshift": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6.5, "y":0}, {"label":"0,6", "x":7.5, "y":0}, {"label":"0,7", "x":8.5, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"2,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,12", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,13", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_tkl_iso_split_bs_rshift": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6.5, "y":0}, {"label":"0,6", "x":7.5, "y":0}, {"label":"0,7", "x":8.5, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"2,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,13", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_tkl_f13_ansi_split_bs_rshift": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"2,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,12", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,13", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_tkl_f13_iso_split_bs_rshift": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"2,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,13", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_all": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"2,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,12", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,13", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/infinity875/keymaps/default/keymap.c b/keyboards/mechlovin/infinity875/keymaps/default/keymap.c new file mode 100644 index 0000000000..93073a1722 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD + ) +}; diff --git a/keyboards/mechlovin/infinity875/keymaps/default/readme.md b/keyboards/mechlovin/infinity875/keymaps/default/readme.md new file mode 100644 index 0000000000..877e1a6862 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for infinity875 diff --git a/keyboards/mechlovin/infinity875/keymaps/default/rgb_matrix_user.inc b/keyboards/mechlovin/infinity875/keymaps/default/rgb_matrix_user.inc new file mode 100644 index 0000000000..cee6a3f038 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/default/rgb_matrix_user.inc @@ -0,0 +1,764 @@ +/* +Copyright 2020 Evy Dekkers + +This program is free software: you can 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 . +*/ + +RGB_MATRIX_EFFECT(solid_esc) +RGB_MATRIX_EFFECT(solid_f13) +RGB_MATRIX_EFFECT(solid_clus) +RGB_MATRIX_EFFECT(breathing_all) +RGB_MATRIX_EFFECT(breathing_esc) +RGB_MATRIX_EFFECT(breathing_f13) +RGB_MATRIX_EFFECT(breathing_clus) +RGB_MATRIX_EFFECT(band_val_all) +RGB_MATRIX_EFFECT(band_val_esc) +RGB_MATRIX_EFFECT(band_val_f13) +RGB_MATRIX_EFFECT(band_val_clus) +RGB_MATRIX_EFFECT(cycle_up_down_all) +RGB_MATRIX_EFFECT(cycle_up_down_esc) +RGB_MATRIX_EFFECT(cycle_up_down_f13) +RGB_MATRIX_EFFECT(cycle_up_down_clus) +RGB_MATRIX_EFFECT(cycle_out_in_dual_all) +RGB_MATRIX_EFFECT(cycle_out_in_dual_esc) +RGB_MATRIX_EFFECT(cycle_out_in_dual_f13) +RGB_MATRIX_EFFECT(cycle_out_in_dual_clus) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_all) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_esc) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_f13) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_clus) +RGB_MATRIX_EFFECT(cycle_pimwheel_all) +RGB_MATRIX_EFFECT(cycle_pimwheel_esc) +RGB_MATRIX_EFFECT(cycle_pimwheel_f13) +RGB_MATRIX_EFFECT(cycle_pimwheel_clus) +RGB_MATRIX_EFFECT(rainbow_beacon_all) +RGB_MATRIX_EFFECT(rainbow_beacon_esc) +RGB_MATRIX_EFFECT(rainbow_beacon_f13) +RGB_MATRIX_EFFECT(rainbow_beacon_clus) +RGB_MATRIX_EFFECT(raindrops_all) +RGB_MATRIX_EFFECT(raindrops_esc) +RGB_MATRIX_EFFECT(raindrops_f13) +RGB_MATRIX_EFFECT(raindrops_clus) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +bool effect_runner_all(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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 led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_esc(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_f13(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_clus(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_all(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_esc(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_f13(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_clus(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_all(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_esc(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_f13(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_clus(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +static void raindrops_set_color_all(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); +} + +static void raindrops_set_color_esc(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static void raindrops_set_color_f13(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static void raindrops_set_color_clus(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static HSV BAND_VAL_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + int16_t v = hsv.v - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8; + hsv.v = scale8(v < 0 ? 0 : v, hsv.v); + return hsv; +} + +static HSV CYCLE_UP_DOWN_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + hsv.h = g_led_config.point[i].y - time; + return hsv; +} + +static HSV CYCLE_OUT_IN_DUAL_CUSTOM(HSV hsv, int16_t dx, int16_t dy, uint8_t time) { + dx = (k_rgb_matrix_center.x / 2) - abs8(dx); + uint8_t dist = sqrt16(dx * dx + dy * dy); + hsv.h = 3 * dist + time; + return hsv; +} + +static HSV RAINBOW_MOVING_CHEVRON_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + hsv.h += abs8(g_led_config.point[i].y - k_rgb_matrix_center.y) + (g_led_config.point[i].x - time); + return hsv; +} + +static HSV CYCLE_PINWHEEL_CUSTOM(HSV hsv, int16_t dx, int16_t dy, uint8_t time) { + hsv.h = atan2_8(dy, dx) + time; + return hsv; +} + +static HSV RAINBOW_BEACON_CUSTOM(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { + hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 2 * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * 2 * sin) / 128; + return hsv; +} + + + +// Solid ESC +static bool solid_esc(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Solid F13 +static bool solid_f13(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(14, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Solid cluster +static bool solid_clus(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 15 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing all + +bool breathing_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing ESC +static bool breathing_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b); + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing F13 +static bool breathing_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + rgb_matrix_set_color(14, rgb.r, rgb.g, rgb.b); + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing cluster +static bool breathing_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 15; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Band Val all +bool band_val_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &BAND_VAL_CUSTOM); +} + +// Band Val ESC +bool band_val_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &BAND_VAL_CUSTOM); +} + +// Band Val F13 +bool band_val_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &BAND_VAL_CUSTOM); +} + +// Band Val Cluster +bool band_val_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &BAND_VAL_CUSTOM); +} + +// Cycle Up Down All +static bool cycle_up_down_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle Up Down ESC +static bool cycle_up_down_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle up down F13 +static bool cycle_up_down_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle up down cluster +static bool cycle_up_down_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle out in dual All +static bool cycle_out_in_dual_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_all(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual ESC +static bool cycle_out_in_dual_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_esc(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual f13 +static bool cycle_out_in_dual_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_f13(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual cluster +static bool cycle_out_in_dual_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_clus(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Moving chevron all +static bool rainbow_moving_chevron_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} + +// Moving chevron ESC +static bool rainbow_moving_chevron_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} +// Moving chevron F13 +static bool rainbow_moving_chevron_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} +// Moving chevron cluster +static bool rainbow_moving_chevron_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} + +// Moving cycle pimwheel all +static bool cycle_pimwheel_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_all(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel esc +static bool cycle_pimwheel_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_esc(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel f13 +static bool cycle_pimwheel_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_f13(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel cluster +static bool cycle_pimwheel_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_clus(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving rainbow beacon all +static bool rainbow_beacon_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_all(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon esc +static bool rainbow_beacon_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_esc(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon f13 +static bool rainbow_beacon_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_f13(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon cluster +static bool rainbow_beacon_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_clus(params, &RAINBOW_BEACON_CUSTOM); +} + +// Raindrops all +static bool raindrops_all(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_all(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_all(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops ESC +static bool raindrops_esc(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_esc(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_esc(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops F13 +static bool raindrops_f13(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_f13(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_f13(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops Cluster +static bool raindrops_clus(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_clus(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_clus(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/mechlovin/infinity875/keymaps/default/rules.mk b/keyboards/mechlovin/infinity875/keymaps/default/rules.mk new file mode 100644 index 0000000000..64a7fa8664 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/default/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_CUSTOM_USER = no \ No newline at end of file diff --git a/keyboards/mechlovin/infinity875/keymaps/via/config.h b/keyboards/mechlovin/infinity875/keymaps/via/config.h new file mode 100644 index 0000000000..74ee03f3f9 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/via/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2021 Mechlovin' Studio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE + +#define VIA_QMK_RGBLIGHT_ENABLE + +#endif diff --git a/keyboards/mechlovin/infinity875/keymaps/via/keymap.c b/keyboards/mechlovin/infinity875/keymaps/via/keymap.c new file mode 100644 index 0000000000..283104b5b2 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Mechlovin' Studio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI,MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mechlovin/infinity875/keymaps/via/readme.md b/keyboards/mechlovin/infinity875/keymaps/via/readme.md new file mode 100644 index 0000000000..9289e7dbe2 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for infinity87.5 diff --git a/keyboards/mechlovin/infinity875/keymaps/via/rgb_matrix_user.inc b/keyboards/mechlovin/infinity875/keymaps/via/rgb_matrix_user.inc new file mode 100644 index 0000000000..cee6a3f038 --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/via/rgb_matrix_user.inc @@ -0,0 +1,764 @@ +/* +Copyright 2020 Evy Dekkers + +This program is free software: you can 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 . +*/ + +RGB_MATRIX_EFFECT(solid_esc) +RGB_MATRIX_EFFECT(solid_f13) +RGB_MATRIX_EFFECT(solid_clus) +RGB_MATRIX_EFFECT(breathing_all) +RGB_MATRIX_EFFECT(breathing_esc) +RGB_MATRIX_EFFECT(breathing_f13) +RGB_MATRIX_EFFECT(breathing_clus) +RGB_MATRIX_EFFECT(band_val_all) +RGB_MATRIX_EFFECT(band_val_esc) +RGB_MATRIX_EFFECT(band_val_f13) +RGB_MATRIX_EFFECT(band_val_clus) +RGB_MATRIX_EFFECT(cycle_up_down_all) +RGB_MATRIX_EFFECT(cycle_up_down_esc) +RGB_MATRIX_EFFECT(cycle_up_down_f13) +RGB_MATRIX_EFFECT(cycle_up_down_clus) +RGB_MATRIX_EFFECT(cycle_out_in_dual_all) +RGB_MATRIX_EFFECT(cycle_out_in_dual_esc) +RGB_MATRIX_EFFECT(cycle_out_in_dual_f13) +RGB_MATRIX_EFFECT(cycle_out_in_dual_clus) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_all) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_esc) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_f13) +RGB_MATRIX_EFFECT(rainbow_moving_chevron_clus) +RGB_MATRIX_EFFECT(cycle_pimwheel_all) +RGB_MATRIX_EFFECT(cycle_pimwheel_esc) +RGB_MATRIX_EFFECT(cycle_pimwheel_f13) +RGB_MATRIX_EFFECT(cycle_pimwheel_clus) +RGB_MATRIX_EFFECT(rainbow_beacon_all) +RGB_MATRIX_EFFECT(rainbow_beacon_esc) +RGB_MATRIX_EFFECT(rainbow_beacon_f13) +RGB_MATRIX_EFFECT(rainbow_beacon_clus) +RGB_MATRIX_EFFECT(raindrops_all) +RGB_MATRIX_EFFECT(raindrops_esc) +RGB_MATRIX_EFFECT(raindrops_f13) +RGB_MATRIX_EFFECT(raindrops_clus) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +bool effect_runner_all(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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 led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_esc(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_f13(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_clus(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + 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); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_all(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_esc(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_f13(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_dx_dy_clus(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_all(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_esc(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_f13(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + } + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +bool effect_runner_sin_cos_clus(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return led_max < DRIVER_LED_TOTAL; +} + +static void raindrops_set_color_all(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); +} + +static void raindrops_set_color_esc(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + for (uint8_t i = 1; i < 18; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static void raindrops_set_color_f13(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(15, 0x00, 0x00, 0x00); + rgb_matrix_set_color(16, 0x00, 0x00, 0x00); + rgb_matrix_set_color(17, 0x00, 0x00, 0x00); + for (uint8_t i = 0; i < 14; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static void raindrops_set_color_clus(int i, effect_params_t* params) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; + HSV hsv = {0, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v}; + + // Take the shortest path between hues + int16_t deltaH = ((rgb_matrix_config.hsv.h + 180) % 360 - rgb_matrix_config.hsv.h) / 4; + if (deltaH > 127) { + deltaH -= 256; + } else if (deltaH < -127) { + deltaH += 256; + } + + hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03)); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + for (uint8_t i = 0; i < 15; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } +} + +static HSV BAND_VAL_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + int16_t v = hsv.v - abs(scale8(g_led_config.point[i].x, 228) + 28 - time) * 8; + hsv.v = scale8(v < 0 ? 0 : v, hsv.v); + return hsv; +} + +static HSV CYCLE_UP_DOWN_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + hsv.h = g_led_config.point[i].y - time; + return hsv; +} + +static HSV CYCLE_OUT_IN_DUAL_CUSTOM(HSV hsv, int16_t dx, int16_t dy, uint8_t time) { + dx = (k_rgb_matrix_center.x / 2) - abs8(dx); + uint8_t dist = sqrt16(dx * dx + dy * dy); + hsv.h = 3 * dist + time; + return hsv; +} + +static HSV RAINBOW_MOVING_CHEVRON_CUSTOM(HSV hsv, uint8_t i, uint8_t time) { + hsv.h += abs8(g_led_config.point[i].y - k_rgb_matrix_center.y) + (g_led_config.point[i].x - time); + return hsv; +} + +static HSV CYCLE_PINWHEEL_CUSTOM(HSV hsv, int16_t dx, int16_t dy, uint8_t time) { + hsv.h = atan2_8(dy, dx) + time; + return hsv; +} + +static HSV RAINBOW_BEACON_CUSTOM(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { + hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * 2 * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * 2 * sin) / 128; + return hsv; +} + + + +// Solid ESC +static bool solid_esc(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Solid F13 +static bool solid_f13(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(14, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Solid cluster +static bool solid_clus(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 15 ; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing all + +bool breathing_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing ESC +static bool breathing_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b); + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing F13 +static bool breathing_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 18; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + rgb_matrix_set_color(14, rgb.r, rgb.g, rgb.b); + return led_max < DRIVER_LED_TOTAL; +} + +// Breathing cluster +static bool breathing_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + for (uint8_t i = 15; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Band Val all +bool band_val_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &BAND_VAL_CUSTOM); +} + +// Band Val ESC +bool band_val_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &BAND_VAL_CUSTOM); +} + +// Band Val F13 +bool band_val_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &BAND_VAL_CUSTOM); +} + +// Band Val Cluster +bool band_val_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &BAND_VAL_CUSTOM); +} + +// Cycle Up Down All +static bool cycle_up_down_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle Up Down ESC +static bool cycle_up_down_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle up down F13 +static bool cycle_up_down_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle up down cluster +static bool cycle_up_down_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &CYCLE_UP_DOWN_CUSTOM); +} + +// Cycle out in dual All +static bool cycle_out_in_dual_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_all(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual ESC +static bool cycle_out_in_dual_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_esc(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual f13 +static bool cycle_out_in_dual_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_f13(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Cycle out in dual cluster +static bool cycle_out_in_dual_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_clus(params, &CYCLE_OUT_IN_DUAL_CUSTOM); +} + +// Moving chevron all +static bool rainbow_moving_chevron_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_all(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} + +// Moving chevron ESC +static bool rainbow_moving_chevron_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_esc(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} +// Moving chevron F13 +static bool rainbow_moving_chevron_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_f13(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} +// Moving chevron cluster +static bool rainbow_moving_chevron_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_clus(params, &RAINBOW_MOVING_CHEVRON_CUSTOM); +} + +// Moving cycle pimwheel all +static bool cycle_pimwheel_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_all(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel esc +static bool cycle_pimwheel_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_esc(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel f13 +static bool cycle_pimwheel_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_f13(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving cycle pimwheel cluster +static bool cycle_pimwheel_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_dx_dy_clus(params, &CYCLE_PINWHEEL_CUSTOM); +} + +// Moving rainbow beacon all +static bool rainbow_beacon_all(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_all(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon esc +static bool rainbow_beacon_esc(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_esc(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon f13 +static bool rainbow_beacon_f13(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_f13(params, &RAINBOW_BEACON_CUSTOM); +} + +// Moving rainbow beacon cluster +static bool rainbow_beacon_clus(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min ; i < led_max; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0x00); + } + return effect_runner_sin_cos_clus(params, &RAINBOW_BEACON_CUSTOM); +} + +// Raindrops all +static bool raindrops_all(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_all(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_all(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops ESC +static bool raindrops_esc(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_esc(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_esc(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops F13 +static bool raindrops_f13(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_f13(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_f13(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +// Raindrops Cluster +static bool raindrops_clus(effect_params_t* params) { + if (!params->init) { + // Change one LED every tick, make sure speed is not 0 + if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { + raindrops_set_color_clus(rand() % DRIVER_LED_TOTAL, params); + } + return false; + } + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = led_min; i < led_max; i++) { + raindrops_set_color_clus(i, params); + } + return led_max < DRIVER_LED_TOTAL; +} + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/mechlovin/infinity875/keymaps/via/rules.mk b/keyboards/mechlovin/infinity875/keymaps/via/rules.mk new file mode 100644 index 0000000000..0e604ef69a --- /dev/null +++ b/keyboards/mechlovin/infinity875/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +RGB_MATRIX_CUSTOM_USER = yes \ No newline at end of file diff --git a/keyboards/mechlovin/infinity875/matrix.c b/keyboards/mechlovin/infinity875/matrix.c new file mode 100644 index 0000000000..b1b0d20654 --- /dev/null +++ b/keyboards/mechlovin/infinity875/matrix.c @@ -0,0 +1,388 @@ +/* +Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar +Copyright 2019 Evy Dekkers + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include +#include +#include "wait.h" +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" + +#ifdef DIRECT_PINS +static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; +#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +#endif + +// matrix code + +#ifdef DIRECT_PINS + +static void init_pins(void) { + for (int row = 0; row < MATRIX_ROWS; row++) { + for (int col = 0; col < MATRIX_COLS; col++) { + pin_t pin = direct_pins[row][col]; + if (pin != NO_PIN) { + setPinInputHigh(pin); + } + } + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + matrix_row_t last_row_value = current_matrix[current_row]; + current_matrix[current_row] = 0; + + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + pin_t pin = direct_pins[current_row][col_index]; + if (pin != NO_PIN) { + current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + } + + return (last_row_value != current_matrix[current_row]); +} + +#elif (DIODE_DIRECTION == ROW2COL) + +/* Cols 0 - 16 + * These columns use two 74HC138 3 to 8 bit demultiplexer. B0, F1 is the enable pin, must be set high (1) to use it. + * + * col / pin: PB5 PB7 PF0 PB0 PF1 PE6 + * 0: 0 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 1: 0 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 2: 0 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 3: 0 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 4: 1 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 5: 1 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 6: 1 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 7: 1 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 8: 0 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + * 9: 0 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *10: 0 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *11: 0 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *12: 1 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *13: 1 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *14: 1 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *15: 1 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *16: 0 ── 0 ── 0 0 ── 0 1 + * + */ +static void select_col(uint8_t col) { + switch (col) { + case 0: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 1: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 2: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 3: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 4: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 5: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 6: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 7: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 8: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 9: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 10: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 11: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 12: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 13: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 14: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 15: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 16: + writePinLow(E6); + break; + } +} + +static void unselect_col(uint8_t col) { + switch (col) { + case 0: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 1: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 2: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 3: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 4: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 5: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 6: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 7: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 8: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 9: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 10: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 11: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 12: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 13: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 14: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 15: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 16: + writePinHigh(E6); + break; + } +} + +static void unselect_cols(void) { + //Native + writePinHigh(E6); + + //Demultiplexer + writePinLow(B0); + writePinLow(F1); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } + setPinOutput(B5); + setPinOutput(B7); + setPinOutput(F0); + setPinOutput(B0); + setPinOutput(F1); + setPinOutput(E6); +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col and wait for col selecton to stabilize + select_col(current_col); + wait_us(30); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + + // Check row pin state + if (readPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col); + } else { + // Pin HI, clear col bit + current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) { + matrix_changed = true; + } + } + + // Unselect col + unselect_col(current_col); + + return matrix_changed; +} + +#endif + +void matrix_init_custom(void) { + // initialize key pins + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + +#if defined(DIRECT_PINS) || (DIODE_DIRECTION == ROW2COL) + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); + } +#endif + + return changed; +} diff --git a/keyboards/mechlovin/infinity875/readme.md b/keyboards/mechlovin/infinity875/readme.md new file mode 100644 index 0000000000..b3e14a7bb7 --- /dev/null +++ b/keyboards/mechlovin/infinity875/readme.md @@ -0,0 +1,24 @@ +# infinity875 + +![infinity875](https://i.imgur.com/qt4YBwSl.jpeg) + +The Infinity 87.5 is in the popular A87 form factor with Top-sided USB Type-C and supports BOTH the F12 and F13 footprints, so it’s compatible with a number of TKL boards like Geonworks Frog/F1-8x; KFE-CE; Singa Jaguar, among others. + +* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin) +* Hardware Supported: Infinity87.5, Atmega32u4 +* Hardware Availability: [GB](https://geekhack.org/index.php?topic=115251.0), [CBB Planet](https://cbbplanet.com/products/infinity-87-5-pcb), [Mechlovin' Studio](https://mechlovin.studio) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/infinity875:default + +Flashing example for this keyboard: + + make mechlovin/infinity875: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). + +**Reset Key:** 3 ways to put the IF87.5 into bootloader: +- By keycode: Tap RESET keycode. +- By bootmagic: hold ESC key while plugging in. +- By hardware: Push reset button on bottom of the PCB while the PCB is plugged in. \ No newline at end of file diff --git a/keyboards/mechlovin/infinity875/rules.mk b/keyboards/mechlovin/infinity875/rules.mk new file mode 100644 index 0000000000..d16f1ac35b --- /dev/null +++ b/keyboards/mechlovin/infinity875/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 +CUSTOM_MATRIX = lite +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +SRC += matrix.c diff --git a/keyboards/mechlovin/kay65/config.h b/keyboards/mechlovin/kay65/config.h new file mode 100644 index 0000000000..cc1b991672 --- /dev/null +++ b/keyboards/mechlovin/kay65/config.h @@ -0,0 +1,147 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define PRODUCT_ID 0x6502 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Team Mechlovin +#define PRODUCTION Kay65 Rev. 1 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B7, D3, D5, D4, C6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, C7, E6, B0, D2, D1, D0, B3, B2, B1 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN D6 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 24 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +# 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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +//#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mechlovin/kay65/info.json b/keyboards/mechlovin/kay65/info.json new file mode 100644 index 0000000000..9a2f7dc01b --- /dev/null +++ b/keyboards/mechlovin/kay65/info.json @@ -0,0 +1,223 @@ +{ + "keyboard_name": "Kay65", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B5)", "x":0, "y":0}, + {"label":"K01 (B0,B6)", "x":1, "y":0}, + {"label":"K02 (B0,B7)", "x":2, "y":0}, + {"label":"K03 (B0,C0)", "x":3, "y":0}, + {"label":"K04 (B0,C1)", "x":4, "y":0}, + {"label":"K05 (B0,C2)", "x":5, "y":0}, + {"label":"K06 (B0,C3)", "x":6, "y":0}, + {"label":"K07 (B0,C4)", "x":7, "y":0}, + {"label":"K08 (B0,C5)", "x":8, "y":0}, + {"label":"K09 (B0,C6)", "x":9, "y":0}, + {"label":"K0A (B0,C7)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D1)", "x":12, "y":0}, + {"label":"K0D (B0,D2)", "x":13, "y":0}, + {"label":"K1D (B1,D2)", "x":14, "y":0}, + {"label":"K0E (B0,D3)", "x":15, "y":0}, + {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,B6)", "x":1.5, "y":1}, + {"label":"K12 (B1,B7)", "x":2.5, "y":1}, + {"label":"K13 (B1,C0)", "x":3.5, "y":1}, + {"label":"K14 (B1,C1)", "x":4.5, "y":1}, + {"label":"K15 (B1,C2)", "x":5.5, "y":1}, + {"label":"K16 (B1,C3)", "x":6.5, "y":1}, + {"label":"K17 (B1,C4)", "x":7.5, "y":1}, + {"label":"K18 (B1,C5)", "x":8.5, "y":1}, + {"label":"K19 (B1,C6)", "x":9.5, "y":1}, + {"label":"K1A (B1,C7)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D1)", "x":12.5, "y":1}, + {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,D3)", "x":15, "y":1}, + {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,B6)", "x":1.75, "y":2}, + {"label":"K22 (B2,B7)", "x":2.75, "y":2}, + {"label":"K23 (B2,C0)", "x":3.75, "y":2}, + {"label":"K24 (B2,C1)", "x":4.75, "y":2}, + {"label":"K25 (B2,C2)", "x":5.75, "y":2}, + {"label":"K26 (B2,C3)", "x":6.75, "y":2}, + {"label":"K27 (B2,C4)", "x":7.75, "y":2}, + {"label":"K28 (B2,C5)", "x":8.75, "y":2}, + {"label":"K29 (B2,C6)", "x":9.75, "y":2}, + {"label":"K2A (B2,C7)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,D3)", "x":15, "y":2}, + {"label":"K30 (B3,B5)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (B3,B6)", "x":1.25, "y":3}, + {"label":"K32 (B3,B7)", "x":2.25, "y":3}, + {"label":"K33 (B3,C0)", "x":3.25, "y":3}, + {"label":"K34 (B3,C1)", "x":4.25, "y":3}, + {"label":"K35 (B3,C2)", "x":5.25, "y":3}, + {"label":"K36 (B3,C3)", "x":6.25, "y":3}, + {"label":"K37 (B3,C4)", "x":7.25, "y":3}, + {"label":"K38 (B3,C5)", "x":8.25, "y":3}, + {"label":"K39 (B3,C6)", "x":9.25, "y":3}, + {"label":"K3A (B3,C7)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,D2)", "x":14, "y":3}, + {"label":"K3E (B3,D3)", "x":15, "y":3}, + {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (B4,B6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (B4,C3)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (B4,C7)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (B4,D0)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (B4,D1)", "x":13, "y":4}, + {"label":"K4D (B4,D2)", "x":14, "y":4}, + {"label":"K4E (B4,D3)", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"K00 (B0,B5)", "x":0, "y":0}, + {"label":"K01 (B0,B6)", "x":1, "y":0}, + {"label":"K02 (B0,B7)", "x":2, "y":0}, + {"label":"K03 (B0,C0)", "x":3, "y":0}, + {"label":"K04 (B0,C1)", "x":4, "y":0}, + {"label":"K05 (B0,C2)", "x":5, "y":0}, + {"label":"K06 (B0,C3)", "x":6, "y":0}, + {"label":"K07 (B0,C4)", "x":7, "y":0}, + {"label":"K08 (B0,C5)", "x":8, "y":0}, + {"label":"K09 (B0,C6)", "x":9, "y":0}, + {"label":"K0A (B0,C7)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D1)", "x":12, "y":0}, + {"label":"K0D (B0,D2)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,D3)", "x":15, "y":0}, + {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,B6)", "x":1.5, "y":1}, + {"label":"K12 (B1,B7)", "x":2.5, "y":1}, + {"label":"K13 (B1,C0)", "x":3.5, "y":1}, + {"label":"K14 (B1,C1)", "x":4.5, "y":1}, + {"label":"K15 (B1,C2)", "x":5.5, "y":1}, + {"label":"K16 (B1,C3)", "x":6.5, "y":1}, + {"label":"K17 (B1,C4)", "x":7.5, "y":1}, + {"label":"K18 (B1,C5)", "x":8.5, "y":1}, + {"label":"K19 (B1,C6)", "x":9.5, "y":1}, + {"label":"K1A (B1,C7)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D1)", "x":12.5, "y":1}, + {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,D3)", "x":15, "y":1}, + {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,B6)", "x":1.75, "y":2}, + {"label":"K22 (B2,B7)", "x":2.75, "y":2}, + {"label":"K23 (B2,C0)", "x":3.75, "y":2}, + {"label":"K24 (B2,C1)", "x":4.75, "y":2}, + {"label":"K25 (B2,C2)", "x":5.75, "y":2}, + {"label":"K26 (B2,C3)", "x":6.75, "y":2}, + {"label":"K27 (B2,C4)", "x":7.75, "y":2}, + {"label":"K28 (B2,C5)", "x":8.75, "y":2}, + {"label":"K29 (B2,C6)", "x":9.75, "y":2}, + {"label":"K2A (B2,C7)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,D3)", "x":15, "y":2}, + {"label":"K30 (B3,B5)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,B7)", "x":2.25, "y":3}, + {"label":"K33 (B3,C0)", "x":3.25, "y":3}, + {"label":"K34 (B3,C1)", "x":4.25, "y":3}, + {"label":"K35 (B3,C2)", "x":5.25, "y":3}, + {"label":"K36 (B3,C3)", "x":6.25, "y":3}, + {"label":"K37 (B3,C4)", "x":7.25, "y":3}, + {"label":"K38 (B3,C5)", "x":8.25, "y":3}, + {"label":"K39 (B3,C6)", "x":9.25, "y":3}, + {"label":"K3A (B3,C7)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,D2)", "x":14, "y":3}, + {"label":"K3E (B3,D3)", "x":15, "y":3}, + {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (B4,B6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (B4,C3)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (B4,C7)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (B4,D0)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (B4,D1)", "x":13, "y":4}, + {"label":"K4D (B4,D2)", "x":14, "y":4}, + {"label":"K4E (B4,D3)", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label":"K00 (B0,B5)", "x":0, "y":0}, + {"label":"K01 (B0,B6)", "x":1, "y":0}, + {"label":"K02 (B0,B7)", "x":2, "y":0}, + {"label":"K03 (B0,C0)", "x":3, "y":0}, + {"label":"K04 (B0,C1)", "x":4, "y":0}, + {"label":"K05 (B0,C2)", "x":5, "y":0}, + {"label":"K06 (B0,C3)", "x":6, "y":0}, + {"label":"K07 (B0,C4)", "x":7, "y":0}, + {"label":"K08 (B0,C5)", "x":8, "y":0}, + {"label":"K09 (B0,C6)", "x":9, "y":0}, + {"label":"K0A (B0,C7)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D1)", "x":12, "y":0}, + {"label":"K0D (B0,D2)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,D3)", "x":15, "y":0}, + {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,B6)", "x":1.5, "y":1}, + {"label":"K12 (B1,B7)", "x":2.5, "y":1}, + {"label":"K13 (B1,C0)", "x":3.5, "y":1}, + {"label":"K14 (B1,C1)", "x":4.5, "y":1}, + {"label":"K15 (B1,C2)", "x":5.5, "y":1}, + {"label":"K16 (B1,C3)", "x":6.5, "y":1}, + {"label":"K17 (B1,C4)", "x":7.5, "y":1}, + {"label":"K18 (B1,C5)", "x":8.5, "y":1}, + {"label":"K19 (B1,C6)", "x":9.5, "y":1}, + {"label":"K1A (B1,C7)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D1)", "x":12.5, "y":1}, + {"label":"K1E (B1,D3)", "x":15, "y":1}, + {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,B6)", "x":1.75, "y":2}, + {"label":"K22 (B2,B7)", "x":2.75, "y":2}, + {"label":"K23 (B2,C0)", "x":3.75, "y":2}, + {"label":"K24 (B2,C1)", "x":4.75, "y":2}, + {"label":"K25 (B2,C2)", "x":5.75, "y":2}, + {"label":"K26 (B2,C3)", "x":6.75, "y":2}, + {"label":"K27 (B2,C4)", "x":7.75, "y":2}, + {"label":"K28 (B2,C5)", "x":8.75, "y":2}, + {"label":"K29 (B2,C6)", "x":9.75, "y":2}, + {"label":"K2A (B2,C7)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2C (B2,D1)", "x":12.75, "y":2}, + {"label":"K2D (B2,D2)", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"K2E (B2,D3)", "x":15, "y":2}, + {"label":"K30 (B3,B5)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (B3,B6)", "x":1.25, "y":3}, + {"label":"K32 (B3,B7)", "x":2.25, "y":3}, + {"label":"K33 (B3,C0)", "x":3.25, "y":3}, + {"label":"K34 (B3,C1)", "x":4.25, "y":3}, + {"label":"K35 (B3,C2)", "x":5.25, "y":3}, + {"label":"K36 (B3,C3)", "x":6.25, "y":3}, + {"label":"K37 (B3,C4)", "x":7.25, "y":3}, + {"label":"K38 (B3,C5)", "x":8.25, "y":3}, + {"label":"K39 (B3,C6)", "x":9.25, "y":3}, + {"label":"K3A (B3,C7)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,D2)", "x":14, "y":3}, + {"label":"K3E (B3,D3)", "x":15, "y":3}, + {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (B4,B6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (B4,C3)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (B4,C7)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (B4,D0)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (B4,D1)", "x":13, "y":4}, + {"label":"K4D (B4,D2)", "x":14, "y":4}, + {"label":"K4E (B4,D3)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mechlovin/kay65/kay65.c b/keyboards/mechlovin/kay65/kay65.c new file mode 100644 index 0000000000..abc6a7f8d4 --- /dev/null +++ b/keyboards/mechlovin/kay65/kay65.c @@ -0,0 +1,25 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "kay65.h" + +void keyboard_pre_init_user(void) { + // Call the keyboard pre init code. + + // Set our LED pins as output + setPinOutput(D7); +} diff --git a/keyboards/mechlovin/kay65/kay65.h b/keyboards/mechlovin/kay65/kay65.h new file mode 100644 index 0000000000..7da2a74969 --- /dev/null +++ b/keyboards/mechlovin/kay65/kay65.h @@ -0,0 +1,62 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + +#define LAYOUT_65_ansi_blocker( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + +#define LAYOUT_65_iso_blocker( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} diff --git a/keyboards/mechlovin/kay65/keymaps/default/keymap.c b/keyboards/mechlovin/kay65/keymaps/default/keymap.c new file mode 100644 index 0000000000..cc7cdc44fa --- /dev/null +++ b/keyboards/mechlovin/kay65/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum my_keycodes { + LOGO_LED_ON = SAFE_RANGE, + LOGO_LED_OFF +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOGO_LED_ON: + if (record->event.pressed) { + writePinHigh(D7); + } + break; + case LOGO_LED_OFF: + if (record->event.pressed) { + writePinLow(D7); + } + break; + } + return true; +}; + diff --git a/keyboards/mechlovin/kay65/keymaps/default/readme.md b/keyboards/mechlovin/kay65/keymaps/default/readme.md new file mode 100644 index 0000000000..95a00bd46c --- /dev/null +++ b/keyboards/mechlovin/kay65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Kay65 \ No newline at end of file diff --git a/keyboards/mechlovin/kay65/keymaps/via/keymap.c b/keyboards/mechlovin/kay65/keymaps/via/keymap.c new file mode 100644 index 0000000000..02e1b8578d --- /dev/null +++ b/keyboards/mechlovin/kay65/keymaps/via/keymap.c @@ -0,0 +1,72 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum my_keycodes { + LOGO_LED_ON = USER00, + LOGO_LED_OFF = USER01 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOGO_LED_ON: + if (record->event.pressed) { + writePinHigh(D7); + } + break; + case LOGO_LED_OFF: + if (record->event.pressed) { + writePinLow(D7); + } + break; + } + return true; +}; diff --git a/keyboards/mechlovin/kay65/keymaps/via/readme.md b/keyboards/mechlovin/kay65/keymaps/via/readme.md new file mode 100644 index 0000000000..9a13f95f0d --- /dev/null +++ b/keyboards/mechlovin/kay65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for Kay65 \ No newline at end of file diff --git a/keyboards/mechlovin/kay65/keymaps/via/rules.mk b/keyboards/mechlovin/kay65/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/mechlovin/kay65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/kay65/readme.md b/keyboards/mechlovin/kay65/readme.md new file mode 100644 index 0000000000..768ce12aa7 --- /dev/null +++ b/keyboards/mechlovin/kay65/readme.md @@ -0,0 +1,27 @@ +# Kay65 + +![Kay65](https://i.imgur.com/tuu6w1Ul.png) + +A 65% PCB with centered USB, RGB underglow and top right LED. + +* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin) +* Hardware Supported: Kay65 Rev.1, Atmega32u4 +* Hardware Availability: [Mechlovin' Store](https://mechlovin.studio/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/kay65:default + +Flashing example for this keyboard: + + make mechlovin/kay65: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 `RESET` if it is available diff --git a/keyboards/mechlovin/kay65/rules.mk b/keyboards/mechlovin/kay65/rules.mk new file mode 100644 index 0000000000..a9dd139c6b --- /dev/null +++ b/keyboards/mechlovin/kay65/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi_blocker 65_iso_blocker diff --git a/keyboards/mechlovin/olly/jf/config.h b/keyboards/mechlovin/olly/jf/config.h index 66826aafa4..f1c40cb365 100644 --- a/keyboards/mechlovin/olly/jf/config.h +++ b/keyboards/mechlovin/olly/jf/config.h @@ -72,3 +72,7 @@ along with this program. If not, see . /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 14 diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/config.h b/keyboards/mechlovin/olly/jf/keymaps/via/config.h index 82c2e51eb9..01d7e4bc38 100644 --- a/keyboards/mechlovin/olly/jf/keymaps/via/config.h +++ b/keyboards/mechlovin/olly/jf/keymaps/via/config.h @@ -17,4 +17,5 @@ along with this program. If not, see . #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 + diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c index 18ac685abc..947b3b0d35 100644 --- a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c +++ b/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c @@ -32,12 +32,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + }; \ No newline at end of file diff --git a/keyboards/mechlovin/olly/jf/readme.md b/keyboards/mechlovin/olly/jf/readme.md index b45498f849..6a6bbc415a 100644 --- a/keyboards/mechlovin/olly/jf/readme.md +++ b/keyboards/mechlovin/olly/jf/readme.md @@ -18,6 +18,7 @@ Flashing example for this keyboard: 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). -**Reset Key:** 2 ways to put the Olly JF into bootloader: +**Reset Key:** 3 ways to put the Olly JF into bootloader: By keycode: Tap RESET keycode. -By bootloader: hold ESC key while plugging in \ No newline at end of file +By Bootloader: hold ESC key while plugging in (jump to bootloader) +By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file diff --git a/keyboards/moon/matrix.c b/keyboards/moon/matrix.c index 0615b60ad3..977338b2f6 100644 --- a/keyboards/moon/matrix.c +++ b/keyboards/moon/matrix.c @@ -76,17 +76,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -125,14 +122,6 @@ void matrix_print(void) { } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - static void init_i2c(void) { pca9555_init(IC1); pca9555_init(IC2); diff --git a/keyboards/nek_type_a/matrix.c b/keyboards/nek_type_a/matrix.c index b396be9911..2989af5108 100644 --- a/keyboards/nek_type_a/matrix.c +++ b/keyboards/nek_type_a/matrix.c @@ -50,17 +50,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -234,17 +231,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void) diff --git a/keyboards/p3d/glitch/config.h b/keyboards/p3d/glitch/config.h new file mode 100644 index 0000000000..e7f78123d9 --- /dev/null +++ b/keyboards/p3d/glitch/config.h @@ -0,0 +1,84 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x7033 +#define PRODUCT_ID 0x3568 +#define DEVICE_VER 0x0001 +#define MANUFACTURER P3D Store +#define PRODUCT Glitch + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */ +#define MATRIX_ROW_PINS { D5, D6, B6, D7, C7, B4, B5, D3, D4, C6 } +#define MATRIX_COL_PINS { B2, D2, B3, B7, F5, F4, F1, F0 } +#define UNUSED_PINS + +#define RGB_DI_PIN B1 +#define RGBLED_NUM 25 +#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 ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F7 } +#define ENCODER_RESOLUTION 2 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 400 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT diff --git a/keyboards/p3d/glitch/glitch.c b/keyboards/p3d/glitch/glitch.c new file mode 100644 index 0000000000..9957e0c7ad --- /dev/null +++ b/keyboards/p3d/glitch/glitch.c @@ -0,0 +1,59 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "glitch.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + // tap_code(RGB_MOD); + rgblight_step(); + } else { + // tap_code(RGB_RMOD); + rgblight_step_reverse(); + } + + return false; +} +#endif + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_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); + + return false; +} +#endif diff --git a/keyboards/p3d/glitch/glitch.h b/keyboards/p3d/glitch/glitch.h new file mode 100644 index 0000000000..4b4f77396b --- /dev/null +++ b/keyboards/p3d/glitch/glitch.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K11, K12, K13, K14, K15, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \ + K40, K41, K43, K45, K47, K49, K4B, K4C, K4D, K4E, K4F \ +) { \ + { K00, K02, K04, K06, K08, K0A, K0C, K0E }, \ + { K01, K03, K05, K07, K09, K0B, K0D, K0F }, \ + { K10, K12, K14, XXX, K18, K1A, K1C, K1E }, \ + { K11, K13, K15, K17, K19, K1B, K1D, K1F }, \ + { K20, K22, K24, XXX, K28, K2A, K2C, K2E }, \ + { K21, K23, K25, K27, K29, K2B, XXX, K2F }, \ + { K30, K32, K34, K36, K38, K3A, K3C, K3E }, \ + { XXX, K33, K35, K37, K39, K3B, K3D, K3F }, \ + { K40, XXX, XXX, XXX, XXX, XXX, K4C, K4E }, \ + { K41, K43, K45, K47, K49, K4B, K4D, K4F } \ +} diff --git a/keyboards/p3d/glitch/info.json b/keyboards/p3d/glitch/info.json new file mode 100644 index 0000000000..6445e200f8 --- /dev/null +++ b/keyboards/p3d/glitch/info.json @@ -0,0 +1,300 @@ +{ + "keyboard_name": "Glitch", + "url": "https://p3dstore.com/products/p3d-glitch-group-buy", + "maintainer": "matthewdias", + "layouts": { + "LAYOUT_all": { + "layout": [{ + "x": 19.1, + "y": 0.1 + }, { + "label": "ESC", + "x": 0.5, + "y": 0.5 + }, { + "label": "1", + "x": 1.5, + "y": 0.5 + }, { + "label": "_", + "x": 14.5, + "y": 0.6 + }, { + "label": "+", + "x": 15.5, + "y": 0.6 + }, { + "label": "Back", + "x": 16.5, + "y": 0.6 + }, { + "label": "Del", + "x": 17.5, + "y": 0.6 + }, { + "label": "2", + "x": 3.25, + "y": 1.0 + }, { + "label": "3", + "x": 4.25, + "y": 1.0 + }, { + "label": "4", + "x": 5.25, + "y": 1.0 + }, { + "label": "5", + "x": 6.25, + "y": 1.0 + }, { + "label": "6", + "x": 7.25, + "y": 1.0 + }, { + "label": "7", + "x": 10, + "y": 1.0 + }, { + "label": "8", + "x": 11, + "y": 1.0 + }, { + "label": "9", + "x": 12, + "y": 1.0 + }, { + "label": "0", + "x": 13, + "y": 1.0 + }, { + "label": "TAB", + "x": 0.15, + "y": 1.5, + "w": 1.5 + }, { + "label": "Q", + "x": 1.65, + "y": 1.5 + }, { + "label": "P", + "x": 14.35, + "y": 1.6 + }, { + "label": "[", + "x": 15.35, + "y": 1.6 + }, { + "label": "]", + "x": 16.35, + "y": 1.6 + }, { + "label": "\\", + "x": 17.35, + "y": 1.6, + "w": 1.5 + }, { + "x": 19.1, + "y": 1.6 + }, { + "label": "W", + "x": 3.75, + "y": 2.0 + }, { + "label": "E", + "x": 4.75, + "y": 2.0 + }, { + "label": "R", + "x": 5.75, + "y": 2.0 + }, { + "label": "T", + "x": 6.75, + "y": 2.0 + }, { + "label": "Y", + "x": 9.5, + "y": 2.0 + }, { + "label": "U", + "x": 10.5, + "y": 2.0 + }, { + "label": "I", + "x": 11.5, + "y": 2.0 + }, { + "label": "O", + "x": 12.5, + "y": 2.0 + }, { + "label": "CAPS", + "x": 0.15, + "y": 2.5, + "w": 1.75 + }, { + "label": "A", + "x": 1.9, + "y": 2.5 + }, { + "label": ";", + "x": 14.6, + "y": 2.6 + }, { + "label": "'", + "x": 15.6, + "y": 2.6 + }, { + "label": "ENTER", + "x": 16.6, + "y": 2.6, + "w": 2.25 + }, { + "x": 19.1, + "y": 2.6 + }, { + "label": "S", + "x": 4, + "y": 3.0 + }, { + "label": "D", + "x": 5, + "y": 3.0 + }, { + "label": "F", + "x": 6, + "y": 3.0 + }, { + "label": "G", + "x": 7, + "y": 3.0 + }, { + "label": "H", + "x": 9.75, + "y": 3.0 + }, { + "label": "J", + "x": 10.75, + "y": 3.0 + }, { + "label": "K", + "x": 11.75, + "y": 3.0 + }, { + "label": "L", + "x": 12.75, + "y": 3.0 + }, { + "label": "SHIFT", + "x": 0, + "y": 3.5, + "w": 2.25 + }, { + "label": "Z", + "x": 2.25, + "y": 3.5 + }, { + "label": ".", + "x": 14.25, + "y": 3.6 + }, { + "label": "?", + "x": 15.25, + "y": 3.6 + }, { + "label": "SHIFT", + "x": 16.25, + "y": 3.6, + "w": 1.75 + }, { + "x": 19.5, + "y": 3.6 + }, { + "label": "UP", + "x": 18.25, + "y": 3.85 + }, { + "label": "X", + "x": 4.5, + "y": 4.0 + }, { + "label": "C", + "x": 5.5, + "y": 4.0 + }, { + "label": "V", + "x": 6.5, + "y": 4.0 + }, { + "label": "B", + "x": 7.5, + "y": 4.0 + }, { + "label": "BEE", + "x": 9.25, + "y": 4.0 + }, { + "label": "N", + "x": 10.25, + "y": 4.0 + }, { + "label": "M", + "x": 11.25, + "y": 4.0 + }, { + "label": ",", + "x": 12.25, + "y": 4.0 + }, { + "label": "CTRL", + "x": 0, + "y": 4.5, + "w": 1.25 + }, { + "label": "WIN", + "x": 1.25, + "y": 4.5, + "w": 1.25 + }, { + "label": "WIN", + "x": 15, + "y": 4.6 + }, { + "label": "CTRL", + "x": 16, + "y": 4.6 + }, { + "label": "LEFT", + "x": 17.25, + "y": 4.85 + }, { + "label": "DOWN", + "x": 18.25, + "y": 4.85 + }, { + "label": "RIGHT", + "x": 19.25, + "y": 4.85 + }, { + "x": 4.75, + "y": 5.0, + "w": 2.75 + }, { + "label": "ALT", + "x": 7.5, + "y": 5.0, + "w": 1.25 + }, { + "label": "ALT", + "x": 9.5, + "y": 5.0, + "w": 1.25 + }, { + "x": 10.75, + "y": 5.0, + "w": 2.25 + }] + } + } +} diff --git a/keyboards/p3d/glitch/keymaps/default/keymap.c b/keyboards/p3d/glitch/keymaps/default/keymap.c new file mode 100644 index 0000000000..43aa53c9f1 --- /dev/null +++ b/keyboards/p3d/glitch/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This is the ANSI version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +) +}; + diff --git a/keyboards/p3d/glitch/keymaps/default/readme.md b/keyboards/p3d/glitch/keymaps/default/readme.md new file mode 100644 index 0000000000..8661c4b95f --- /dev/null +++ b/keyboards/p3d/glitch/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Glitch diff --git a/keyboards/p3d/glitch/readme.md b/keyboards/p3d/glitch/readme.md new file mode 100644 index 0000000000..b29dc6e930 --- /dev/null +++ b/keyboards/p3d/glitch/readme.md @@ -0,0 +1,24 @@ +# Glitch + +Hotswap RGB Alice-style with OLED and Rotary Knob + +- Keyboard Maintainer: matthewdias +- Hardware Supported: Glitch PCB +- Hardware Availability: https://p3dstore.com + +Make example for this keyboard (after setting up your build environment): + + make p3d/glitch:default + +Flashing example for this keyboard: + + make p3d/glitch:default:flash + +## Bootloader + +Enter the bootloader in one of 2 ways: + +* **Bootmagic reset**: Hold down the top left and plug in the keyboard +* **Physical reset button**: Briefly press the button on the top of the PCB + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/p3d/glitch/rules.mk b/keyboards/p3d/glitch/rules.mk new file mode 100644 index 0000000000..7ec8d5c09a --- /dev/null +++ b/keyboards/p3d/glitch/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +OLED_ENABLE = yes diff --git a/keyboards/papercranekeyboards/gerald65/config.h b/keyboards/papercranekeyboards/gerald65/config.h new file mode 100644 index 0000000000..9e795b1501 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/config.h @@ -0,0 +1,130 @@ +// Copyright 2021 PaperCraneKeyboards (@PaperCraneKeyboards) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5012 // +#define PRODUCT_ID 0x1501 // '21 keyboard 1 +#define DEVICE_VER 0x0001 +#define MANUFACTURER PaperCraneKeyboards +#define PRODUCT gerald65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B7, D6, E6, B4, B5 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D7, D4, D3, D2, D1, D0, B6, C6, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# 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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/papercranekeyboards/gerald65/gerald65.c b/keyboards/papercranekeyboards/gerald65/gerald65.c new file mode 100644 index 0000000000..a33f05d8dc --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/gerald65.c @@ -0,0 +1,4 @@ +// Copyright 2021 PaperCraneKeyboards (@PaperCraneKeyboards) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "gerald65.h" diff --git a/keyboards/papercranekeyboards/gerald65/gerald65.h b/keyboards/papercranekeyboards/gerald65/gerald65.h new file mode 100644 index 0000000000..b433051bb7 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/gerald65.h @@ -0,0 +1,29 @@ +// Copyright 2021 PaperCraneKeyboards (@PaperCraneKeyboards) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, \ + k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, \ + k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, \ + k58, k59, k60, k61, k62, k63, k64, k65, k66 \ +) { \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14}, \ + {k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, KC_NO, k43}, \ + {k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, KC_NO, k56, k57}, \ + {k58, KC_NO, k59, k60, KC_NO, k61, k62, KC_NO, k63, KC_NO, KC_NO, KC_NO, k64, k65, k66} \ +} diff --git a/keyboards/papercranekeyboards/gerald65/info.json b/keyboards/papercranekeyboards/gerald65/info.json new file mode 100644 index 0000000000..c9b08304b3 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "gerald65", + "url": "", + "maintainer": "PaperCraneKeyboards", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"~", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":8.25, "y":0}, + {"label":"*", "x":9.25, "y":0}, + {"label":"(", "x":10.25, "y":0}, + {"label":")", "x":11.25, "y":0}, + {"label":"_", "x":12.25, "y":0}, + {"label":"+", "x":13.25, "y":0}, + {"label":"Backspace", "x":14.25, "y":0, "w":2}, + {"label":"Delete", "x":16.5, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":7.75, "y":1}, + {"label":"U", "x":8.75, "y":1}, + {"label":"I", "x":9.75, "y":1}, + {"label":"O", "x":10.75, "y":1}, + {"label":"P", "x":11.75, "y":1}, + {"label":"{", "x":12.75, "y":1}, + {"label":"}", "x":13.75, "y":1}, + {"label":"|", "x":14.75, "y":1, "w":1.5}, + {"label":"Page Up", "x":16.5, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":8, "y":2}, + {"label":"J", "x":9, "y":2}, + {"label":"K", "x":10, "y":2}, + {"label":"L", "x":11, "y":2}, + {"label":":", "x":12, "y":2}, + {"label":"\"", "x":13, "y":2}, + {"label":"Enter", "x":14, "y":2, "w":2.25}, + {"label":"Page Down", "x":16.5, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":8.5, "y":3}, + {"label":"M", "x":9.5, "y":3}, + {"label":"<", "x":10.5, "y":3}, + {"label":">", "x":11.5, "y":3}, + {"label":"?", "x":12.5, "y":3}, + {"label":"Shift", "x":13.5, "y":3, "w":1.75}, + {"label":"up", "x":15.5, "y":3}, + {"label":"Home", "x":16.5, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Alt", "x":3.25, "y":4, "w":1.25}, + {"label":"space", "x":4.5, "y":4, "w":2}, + {"label":"space", "x":6.5, "y":4}, + {"label":"space", "x":8.25, "y":4, "w":2.75}, + {"label":"Win", "x":11, "y":4, "w":1.25}, + {"label":"left", "x":14.5, "y":4}, + {"label":"down", "x":15.5, "y":4}, + {"label":"right", "x":16.5, "y":4} + ] + } + } +} diff --git a/keyboards/papercranekeyboards/gerald65/keymaps/default/keymap.c b/keyboards/papercranekeyboards/gerald65/keymaps/default/keymap.c new file mode 100644 index 0000000000..b7f54ceb7c --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +// Copyright 2021 PaperCraneKeyboards (@PaperCraneKeyboards) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PAUSE, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT + + ), + [_FN] = 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_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + + ) +}; diff --git a/keyboards/papercranekeyboards/gerald65/keymaps/default/readme.md b/keyboards/papercranekeyboards/gerald65/keymaps/default/readme.md new file mode 100644 index 0000000000..e548f34ac4 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for gerald65 diff --git a/keyboards/papercranekeyboards/gerald65/readme.md b/keyboards/papercranekeyboards/gerald65/readme.md new file mode 100644 index 0000000000..2dafff9e20 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/readme.md @@ -0,0 +1,27 @@ +# Paper Crane Keyboards Gerald65 + +![gerald65](https://i.imgur.com/Qh9cLeEh.jpeg) + +A 65% ergonomic acrylic keyboard emphasizing customizability. + +* Keyboard Maintainer: [PaperCraneKeyboards](https://github.com/PaperCraneKeyboards) +* Hardware Supported: Gerald65 PCB +* Hardware Availability: [Paper Crane Keyboards](https://papercranekeyboards.com/) + +Make example for this keyboard (after setting up your build environment): + + make papercranekeyboards/gerald65:default + +Flashing example for this keyboard: + + make papercranekeyboards/gerald65:default:flash + +## 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 (located in the center) +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. To do this, hold down the key to the right of the left spacebar (1u key in the center of bottom row), and then also press the key in the top right (by default, the delete key). + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/papercranekeyboards/gerald65/rules.mk b/keyboards/papercranekeyboards/gerald65/rules.mk new file mode 100644 index 0000000000..1275531ef6 --- /dev/null +++ b/keyboards/papercranekeyboards/gerald65/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/preonic/keymaps/era1112/config.h b/keyboards/preonic/keymaps/era1112/config.h new file mode 100644 index 0000000000..86cc6135e5 --- /dev/null +++ b/keyboards/preonic/keymaps/era1112/config.h @@ -0,0 +1,60 @@ +// Copyright 2022 Era James(@Era1112) +// SPDX - License - Identifier: GPL - 2.0 - or -later + +#pragma once + + +//----------- Default statements -----------// +//------------------------------------------// +#define MUSIC_MASK (keycode < 0xFF) + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + + +//----------- Added statements -------------// +//------------------------------------------// +#define TAPPING_TERM 200 // For tapdances + +// Commented to see if it helps stalls on clicky mode #define DYNAMIC_MACRO_NO_NESTING // Improve dynamic macro stability +#ifdef AUDIO_ENABLE + #define AUDIO_INIT_DELAY // to make startup audio work + #define STARTUP_SONG SONG(PREONIC_SOUND) + #define AUDIO_CLICKY // enable clicky mode + + // Clicky mode parameters + #define AUDIO_CLICKY_FREQ_MIN 65.0f // Default 65 + #define AUDIO_CLICKY_FREQ_DEFAULT 800.0f // Default 440 + #define AUDIO_CLICKY_FREQ_MAX 1500.0f // Defaul 1500 + #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f // Default 0.05 + #define AUDIO_CLICKY_DELAY_DURATION 0.1f // Default 1 +#endif //AUDIO_ENABLE + +#define RGBLIGHT_SLEEP // RGB lights turn off when host sleeps + +// Firmware minimization + +// Commented to see if it helps stalls on clicky mode +// #define NO_ACTION_ONESHOT +// #undef LOCKING_SUPPORT_ENABLE +// #undef LOCKING_RESYNC_ENABLE +// #define NO_MUSIC_MODE +// #define LAYER_STATE_8BIT // Limits keymap to 8 layers +// #undef RGBLIGHT_ANIMATIONS // Removes rgb animations diff --git a/keyboards/preonic/keymaps/era1112/keymap.c b/keyboards/preonic/keymaps/era1112/keymap.c new file mode 100644 index 0000000000..4031f998db --- /dev/null +++ b/keyboards/preonic/keymaps/era1112/keymap.c @@ -0,0 +1,365 @@ +// Copyright 2022 Era James(@Era1112) +// SPDX - License - Identifier: GPL - 2.0 - or -later + +#include QMK_KEYBOARD_H // Default statement + +#define HSV_RETRO_CONSOLE 36, 150, 255 //HSV_YELLOW = 43, 255, 255 + + +//----------- RGB Default Settings -----------// +//--------------------------------------------// +#ifdef RGBLIGHT_ENABLE + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); // Enables RGB, without saving settings + rgblight_sethsv_noeeprom(HSV_RETRO_CONSOLE); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); +} + +#endif // RGBLIGHT_ENABLE + +//----------- Layer names -----------// +//-----------------------------------// +enum preonic_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + + +//----------- Sounds -----------// +//------------------------------// +#ifdef AUDIO_ENABLE + + float capslockToggleSound[][2] = SONG(STARTUP_SOUND); + float dynamicBufferRecordSound[][2] = SONG(STARTUP_SOUND); + float dynamicBufferFullSound[][2] = SONG(GOODBYE_SOUND); + +#endif // AUDIO_ENABLE + + +//----------- Called when dynamic buffer full -----------// +//-------------------------------------------------------// +void backlight_toggle(void) { +#ifdef AUDIO_ENABLE + + PLAY_SONG(dynamicBufferFullSound); + +#endif // AUDIO_ENABLE +} + + +//----------- Tapdance prelims -----------// +//----------------------------------------// +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_1_TAP, + TD_1_HOLD, + TD_2_TAP, + TD_2_HOLD, +} td_state_t; + +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +td_state_t cur_dance(qk_tap_dance_state_t* state); + +/* Return an integer that corresponds to what kind of tap dance should be executed. + * + * How to figure out tap dance state: interrupted and pressed. + * + * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit + * under the tapping term. This is typically indicitive that you are trying to "tap" the key. + * + * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term + * has ended, but the key is still being pressed down. This generally means the key is being "held". + * + * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold" + * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters. + * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters. + * + * Good places to put an advanced tap dance: + * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon + * + * Criteria for "good placement" of a tap dance key: + * Not a key that is hit frequently in a sentence + * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or + * in a web form. So 'tab' would be a poor choice for a tap dance. + * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the + * letter 'p', the word 'pepper' would be quite frustating to type. + * + * For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested + * + */ +td_state_t cur_dance(qk_tap_dance_state_t* state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return TD_1_TAP; + // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'. + } else { + return TD_1_HOLD; + } + } else if (state->count == 2) { + // TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap + // action when hitting 'pp'. Suggested use case for this return value is when you want to send two + // keystrokes of the key, and not the 'double tap' action/macro. + if (state->pressed) return TD_2_HOLD; + else return TD_2_TAP; + } else { + return TD_UNKNOWN; + } +} + + +//----------- 2tap capslock --------------// +//----------------------------------------// +void twoCapsLock_finished(qk_tap_dance_state_t* state, void* user_data); +void twoCapsLock_reset(qk_tap_dance_state_t* state, void* user_data); + +static td_tap_t twoCapsLock_tap_state = { + .is_press_action = true, + .state = TD_NONE +}; + +void twoCapsLock_finished(qk_tap_dance_state_t* state, void* user_data) { + twoCapsLock_tap_state.state = cur_dance(state); + switch (twoCapsLock_tap_state.state) { + case TD_NONE: register_code(KC_LSFT); break; + case TD_UNKNOWN: register_code(KC_LSFT); break; + case TD_1_TAP: register_code(KC_LSFT); break; + case TD_1_HOLD: register_code(KC_LSFT); break; + case TD_2_TAP: + register_code(KC_CAPS); +#ifdef AUDIO_ENABLE + PLAY_SONG(capslockToggleSound); +#endif // AUDIO_ENABLE + break; + case TD_2_HOLD: register_code(KC_LSFT); break; + } +} + +void twoCapsLock_reset(qk_tap_dance_state_t* state, void* user_data) { + switch (twoCapsLock_tap_state.state) { + case TD_UNKNOWN: unregister_code(KC_LSFT); break; + case TD_NONE: unregister_code(KC_LSFT); break; + case TD_1_TAP: unregister_code(KC_LSFT); break; + case TD_1_HOLD: unregister_code(KC_LSFT); break; + case TD_2_TAP: + unregister_code(KC_CAPS); +#ifdef AUDIO_ENABLE + PLAY_SONG(capslockToggleSound); +#endif // AUDIO_ENABLE + break; + case TD_2_HOLD: unregister_code(KC_LSFT); break; + } + twoCapsLock_tap_state.state = TD_NONE; +} + + +//----------- Rotary Encoder --------------// +//----------------------------------------// +bool encoder_update_user(uint8_t index, bool clockwise) { + if (layer_state_is(_QWERTY)) { + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + else if (layer_state_is(_LOWER)) { + if (clockwise) { + tap_code16(S(KC_F3)); + } else { + tap_code(KC_F3); + } + } else if (layer_state_is(_RAISE)) { + if (clockwise) { + tap_code16(C(KC_Z)); + } else { + tap_code16(C(KC_Y)); + } + } + return false; +} + +//----------- Custom keycodes ------------// +//----------------------------------------// +enum { + TD_2_CAPSLOCK +}; + +enum custom_keycodes { + CU_BLNKON = SAFE_RANGE, + CU_BLNKOFF, + CU_RGBON, + CU_RGBOFF, + ENC_MODE +}; + +static bool blinky = false; // Track blinky behavior on/off for keycode + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_2_CAPSLOCK] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, twoCapsLock_finished, twoCapsLock_reset) +}; + + +//----------- Intercepts and overrides ------------// +//-------------------------------------=-----------// +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + // Turn RGB LEDs off + case CU_RGBOFF: + + // If pressed + if (record->event.pressed) { + rgblight_sethsv_noeeprom(HSV_OFF); + return true; + + // If released + } else { + return true; + } + + // Turn RGB LEDs on + case CU_RGBON: + + // If pressed + if (record->event.pressed) { + rgblight_sethsv_noeeprom(HSV_RETRO_CONSOLE); + return true; + + // If released + } else { + return true; + } + + // Turn blinky LEDs off + case CU_BLNKOFF: + + // If pressed + if (record->event.pressed) { + blinky = false; + return true; + + // If released + } else { + return true; + } + + // Turn blinky LEDs on + case CU_BLNKON: + + // If pressed + if (record->event.pressed) { + blinky = true; + return true; + + // If released + } else { + return true; + } + + // Sound when Dynamic recording started + case DYN_REC_START1: + + // If pressed + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(dynamicBufferRecordSound); + #endif // AUDIO_ENABLE + return true; // Let QMK send the press/release events + + // If released + } else { + return true; // Let QMK send the press/release events + } + + // Sound when Dynamic recording stopped + case DYN_REC_STOP: + + // If pressed + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(dynamicBufferFullSound); + #endif // AUDIO_ENABLE + return true; // Let QMK send the enter press/release events + + // If released + } else { + return true; // Let QMK send the press/release events + } + + // Encoder Click + case ENC_MODE: + if (record->event.pressed) { + if (layer_state_is(_QWERTY)) { + tap_code(KC_BTN1); + return false; + } else if (layer_state_is(_LOWER)) { + return false; + } else if (layer_state_is(_RAISE)) { + return false; + } + } + + + // Adds blinks if blinky is on + default: + if (blinky == true) { + rgblight_toggle(); + } + + return true; // Process all other keycodes normally + + } +} + + +//----------- Keymap ------------// +//-------------------------------// +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // main layer + [_QWERTY] = LAYOUT_ortho_5x12 ( + // (Non-disabled top row), uncomment and replace if you want preonic-style instead of planck-style + // KC_MINS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + 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_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_2_CAPSLOCK), + ENC_MODE, KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + // lower key + [_LOWER] = LAYOUT_ortho_5x12 ( + DYN_MACRO_PLAY1, DYN_REC_START1, DYN_REC_STOP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_QUOT, KC_GRV, KC_LCBR, KC_RCBR, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_EQL, KC_TRNS, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_ADJUST), KC_HOME, KC_PGDN, KC_PGUP, KC_END + ), + + // raise key + [_RAISE] = LAYOUT_ortho_5x12 ( + DYN_MACRO_PLAY1, DYN_REC_START1, DYN_REC_STOP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_DQUO, KC_TILD, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS , KC_TRNS, KC_PIPE, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_ADJUST), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_F24 + ), + + // hardware adjust layer, raise+lower + [_ADJUST] = LAYOUT_ortho_5x12 ( + AU_ON, AU_OFF, CK_ON, CK_OFF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + + CU_RGBON, CU_RGBOFF, CU_BLNKON, CU_BLNKOFF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) + +}; diff --git a/keyboards/preonic/keymaps/era1112/readme.md b/keyboards/preonic/keymaps/era1112/readme.md new file mode 100644 index 0000000000..76775b85aa --- /dev/null +++ b/keyboards/preonic/keymaps/era1112/readme.md @@ -0,0 +1,8 @@ +A preonic keymap that includes: +- doubletap tapdance for caps lock +- rotary encoder +- macro record/playback +- light on/off +- sound on/off +- blink-on-keypress w/ on/off keystroke +- beep-on-keypress w/ on/off keystroke (this has stability issues when typing fast, still trying to remediate) \ No newline at end of file diff --git a/keyboards/preonic/keymaps/era1112/rules.mk b/keyboards/preonic/keymaps/era1112/rules.mk new file mode 100644 index 0000000000..4e83382dad --- /dev/null +++ b/keyboards/preonic/keymaps/era1112/rules.mk @@ -0,0 +1,26 @@ +## Copyright 2022 Era James (@Era1112) +## SPDX-License-Identifier: GPL-2.0-or-later + +# DEFAULT STATEMENTS +# ================== + +SRC += muse.c + + +# ADDED STATEMENTS +# ================ + +AUDIO_ENABLE = yes # Audio output on +TAP_DANCE_ENABLE = yes # For double-tap tapdances +DYNAMIC_MACRO_ENABLE = yes # For dynamuic macros +RGBLIGHT_ENABLE = yes # For RGB lighting functions +ENCODER_ENABLE = yes # For Rotary encoders + + +# Firmware minimization +# Commented to see if it helps stalls on clicky mode +CONSOLE_ENABLE = no +#LTO_ENABLE = yes +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/keyboards/redscarf_iiplus/verb/matrix.c b/keyboards/redscarf_iiplus/verb/matrix.c index 88ecb586b3..930d246434 100755 --- a/keyboards/redscarf_iiplus/verb/matrix.c +++ b/keyboards/redscarf_iiplus/verb/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -123,16 +120,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - #ifdef DIRECT_PINS static void init_pins(void) { diff --git a/keyboards/redscarf_iiplus/verc/matrix.c b/keyboards/redscarf_iiplus/verc/matrix.c index 88ecb586b3..930d246434 100755 --- a/keyboards/redscarf_iiplus/verc/matrix.c +++ b/keyboards/redscarf_iiplus/verc/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -123,16 +120,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - #ifdef DIRECT_PINS static void init_pins(void) { diff --git a/keyboards/redscarf_iiplus/verd/matrix.c b/keyboards/redscarf_iiplus/verd/matrix.c index d9dbb3c0a3..b703932229 100644 --- a/keyboards/redscarf_iiplus/verd/matrix.c +++ b/keyboards/redscarf_iiplus/verd/matrix.c @@ -27,17 +27,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -123,16 +120,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - - #ifdef DIRECT_PINS static void init_pins(void) { diff --git a/keyboards/sirius/unigo66/custom_matrix.cpp b/keyboards/sirius/unigo66/custom_matrix.cpp index 955ce189a8..72e120400f 100644 --- a/keyboards/sirius/unigo66/custom_matrix.cpp +++ b/keyboards/sirius/unigo66/custom_matrix.cpp @@ -205,18 +205,6 @@ extern "C" return row_bits; } - uint8_t matrix_key_count(void) { - uint8_t count = 0; - - count += bitpop(local_keyboard_report.mods); - for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { - if (IS_ANY(local_keyboard_report.keys[i])) { - count++; - } - } - return count; - } - void matrix_print(void) { print("\nr/c 0123456789ABCDEF\n"); for (uint8_t row = 0; row < matrix_rows(); row++) { diff --git a/keyboards/sixkeyboard/matrix.c b/keyboards/sixkeyboard/matrix.c index a6b28f3a12..36ae05fb42 100644 --- a/keyboards/sixkeyboard/matrix.c +++ b/keyboards/sixkeyboard/matrix.c @@ -129,13 +129,3 @@ matrix_row_t matrix_get_row(uint8_t row) void matrix_print(void) { } - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - diff --git a/keyboards/splitkb/kyria/keymaps/maherma-adg/config.h b/keyboards/splitkb/kyria/keymaps/maherma-adg/config.h new file mode 100644 index 0000000000..1a4c64ed13 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/maherma-adg/config.h @@ -0,0 +1,41 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGBLIGHT_ENABLE +#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 RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 +#endif + +// Lets you roll mod-tap keys +#define IGNORE_MOD_TAP_INTERRUPT + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c b/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c new file mode 100644 index 0000000000..240bc6edf5 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c @@ -0,0 +1,420 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_spanish.h" + +enum layers { + _QWERTY = 0, + _DVORAK, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST, + _NUMPAD, + _MOUSE +}; + + +// Aliases for readability +#define QWERTY DF(_QWERTY) +#define COLEMAK DF(_COLEMAK_DH) +#define DVORAK DF(_DVORAK) + +#define NUMPAD DF(_NUMPAD) +#define MOUSE DF(_MOUSE) +#define DNAV DF(_NAV) + +#define SYM MO(_SYM) +#define NAV MO(_NAV) +#define FKEYS MO(_FUNCTION) +#define ADJUST MO(_ADJUST) + +#define CTL_ESC MT(MOD_LCTL, KC_ESC) +#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE) +#define CTL_MINS MT(MOD_RCTL, KC_MINUS) +#define ALT_ENT MT(MOD_LALT, KC_ENT) +#define LGUI_ENT MT(MOD_LGUI, KC_ENT) +#define LALT_SUP MT(MOD_LALT, KC_DEL) +#define RGUI_TAB MT(MOD_RGUI, KC_TAB) +#define RALT_BS MT(MOD_RALT, KC_BSPC) +#define LSFT_LPR MT(MOD_LSFT, ES_LPRN) +#define RSFT_RPR MT(MOD_RSFT, ES_RPRN) + +#define NAV_ESC LT(NAV, KC_ESC) +#define SYM_SPC LT(SYM, KC_SPC) +#define NAV_SPC LT(NAV, KC_SPC) +#define SYM_ENT LT(SYM, KC_ENT) + +#define OSX_TILD ALGR(KC_SCLN) + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released). + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | Ñ |Ctrl/´ ¨| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * |LShift/(| Z | X | C | V | B | `^[ |CapsLk| |F-keys| +*] | N | M | , ; | . : | - _ |RShift/)| + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu | + * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | | + * `----------------------------------' `----------------------------------' + */ + [_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, + CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, CTL_QUOT, + LSFT_LPR , KC_Z , KC_X , KC_C , KC_V , KC_B , ES_GRV , KC_CAPS, FKEYS , ES_PLUS , KC_N , KC_M, KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR, + ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, KC_APP + ), + +/* + * Base Layer: Dvorak + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | ´ ¨ | , ; | . : | P | Y | | F | G | C | R | L | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/' ?| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * |LShift/(| Ñ | Q | J | K | X | `^[ |CapsLk| |F-keys| +*] | B | M | W | V | Z |RShift/)| + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu | + * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | | + * `----------------------------------' `----------------------------------' + */ + [_DVORAK] = LAYOUT( + KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC, + CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS, + LSFT_LPR ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , ES_GRV, KC_CAPS, FKEYS , ES_PLUS, KC_B, KC_M , KC_W , KC_V , KC_Z , RSFT_RPR, + ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, KC_APP + ), + +/* + * Base Layer: Colemak DH + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | F | P | B | | J | L | U | Y | Ñ | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/´ ¨| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * |LShift/(| Z | X | C | D | V | `^[ |CapsLk| |F-keys| +*] | K | H | , ; | . : | - _ |RShift/)| + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu | + * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | | + * `----------------------------------' `----------------------------------' + */ + [_COLEMAK_DH] = LAYOUT( + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J, KC_L , KC_U , KC_Y , KC_SCLN , KC_BSPC, + CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT, + LSFT_LPR , KC_Z , KC_X , KC_C , KC_D , KC_V , ES_GRV, KC_CAPS, FKEYS , ES_PLUS , KC_K , KC_H , KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR, + ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB , RALT_BS , KC_APP + ), + +/* + * Nav Layer: Media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | Shift| Ctrl | Alt | GUI | | | PgDn | ← | ↓ | → | VolDn| Insert | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, + _______, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, + _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | º | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ª | ! | " | · | $ | % | | & | / | ( | ) | = | ? | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | \ | | | @ | # | ~ | € | ¬ | | | | | ¡ | < | > | { | } | ¿ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_SYM] = LAYOUT( + KC_NUBS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , ES_QUOT, + S(KC_NUBS) , ES_EXLM, ES_DQUO , ES_BULT, ES_DLR, ES_PERC, ES_AMPR, ES_SLSH, ES_LPRN, ES_RPRN, ES_EQL, ES_QUES, + A(KC_NUBS), ES_PIPE, ES_AT, ES_HASH , OSX_TILD, A(KC_E), ES_NOT, _______, S(ES_CCED), ES_CCED, ES_IEXL, KC_GRAVE, S(KC_GRAVE), ES_LCBR, ES_RCBR, ES_IQUE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ~ | ! | @ | · | $ | % | | & | / | ( | ) | = | ¿ | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ +// [_SYM] = LAYOUT( +// C(KC_GRV), KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , +// OSX_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, +// ES_PIPE , A(KC_NUHS) , ES_COLN, ES_SCLN, ES_MINS, ES_LBRC, ES_LCBR, _______, _______, ES_RCBR, ES_RBRC, ES_UNDS, ES_COMM, ES_DOT, ES_SLSH, ES_QUOT, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +/* + * Function Layer: Function keys + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F9 | F10 | F11 | F12 | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | F5 | F6 | F7 | F8 | | | | GUI | Alt | Ctrl | Shift| | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_FUNCTION] = LAYOUT( + _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT, _______, + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Default layer settings, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | NumPad | | |QWERTY| | | | | | | | | RESET | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | Mouse | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | DEBUG | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * |Nav Perm| | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | EEP_RST| + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + NUMPAD , _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, RESET , + MOUSE , _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, DEBUG , + DNAV , _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, EEPROM_RESET, + _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Layer NumPad + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NUMPAD] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Layer Mouse + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | |MS LCL| MS ↑ |MS RCL| Whl ↑| | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | Shift| Ctrl | Alt | GUI | | | | MS ← | MS ↓ | MS → | Whl ↓| | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_MOUSE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, + _______, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +/* The default OLED and rotary encoder code can be found at the bottom of qmk_firmware/keyboards/splitkb/kyria/rev1/rev1.c + * These default settings can be overriden by your own settings in your keymap.c + * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications. + * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own. + */ + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_user(void) { + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + // clang-format on + + oled_write_P(qmk_logo, false); + oled_write_P(PSTR("Kyria AdG v0.1\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state|default_layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case _DVORAK: + oled_write_P(PSTR("Dvorak\n"), false); + break; + case _COLEMAK_DH: + oled_write_P(PSTR("Colemak-DH\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _SYM: + oled_write_P(PSTR("Sym\n"), false); + break; + case _FUNCTION: + oled_write_P(PSTR("Function\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _NUMPAD: + oled_write_P(PSTR("NumPad\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("Mouse\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Write host Keyboard LED Status to OLEDs + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + } else { + // clang-format off + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return false; +} +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LSFT_LPR: + if (record->tap.count && record->event.pressed) { + tap_code16(ES_LPRN); // Send KC_DQUO on tap + return false; // Return false to ignore further processing of key + } + break; + case RSFT_RPR: + if (record->tap.count && record->event.pressed) { + tap_code16(ES_RPRN); // Send KC_DQUO on tap + return false; // Return false to ignore further processing of key + } + break; + } + return true; +} \ No newline at end of file diff --git a/keyboards/splitkb/kyria/keymaps/maherma-adg/readme.md b/keyboards/splitkb/kyria/keymaps/maherma-adg/readme.md new file mode 100644 index 0000000000..bf54275d2b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/maherma-adg/readme.md @@ -0,0 +1,17 @@ +# Kyria's Keymap adapted to Spanish MacOS (WIP) + + + +The default keymap contains 7 layers which allows it to include all keys found on spanish Apple keyboard plus media keys. +Hardware features of the Kyria such as OLEDs and underglow are also supported. + +The five different layers are the following: +1. Base layer (QWERTY, Colemak-DH or Dvorak) +2. Navigation layer +3. Symbols/Numbers layer +4. Function layer +5. Adjust layer +6. Numpad layer +7. Mouse layer + +Look into keymap.c to view mappings diff --git a/keyboards/splitkb/kyria/keymaps/maherma-adg/rules.mk b/keyboards/splitkb/kyria/keymaps/maherma-adg/rules.mk new file mode 100644 index 0000000000..f37eabe3d5 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/maherma-adg/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = no # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MOUSEKEY_ENABLE = yes # Enable mouse movements \ No newline at end of file diff --git a/keyboards/sx60/matrix.c b/keyboards/sx60/matrix.c index 231e1c8836..94d581f574 100644 --- a/keyboards/sx60/matrix.c +++ b/keyboards/sx60/matrix.c @@ -42,17 +42,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -201,15 +198,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - static void init_cols(void) { for(uint8_t x = 0; x < ATMEGA_COLS; x++) { diff --git a/keyboards/tkc/portico68v2/config.h b/keyboards/tkc/portico68v2/config.h index af0a162810..b33fa85330 100644 --- a/keyboards/tkc/portico68v2/config.h +++ b/keyboards/tkc/portico68v2/config.h @@ -83,8 +83,8 @@ along with this program. If not, see . # 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_PIXEL_FLOW +//# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined # define ENABLE_RGB_MATRIX_TYPING_HEATMAP # define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/keyboards/uno/config.h b/keyboards/uno/config.h index 1cae17f50a..0128ee2d5d 100644 --- a/keyboards/uno/config.h +++ b/keyboards/uno/config.h @@ -13,57 +13,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once + #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xACC8 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Broekhuijsen -#define PRODUCT Uno - -/* key matrix size */ -#define MATRIX_ROWS 1 -#define MATRIX_COLS 1 - -/* Uno default pinout */ -#define DIRECT_PINS { \ - { B6 } \ -} -#define UNUSED_PINS - -#define RGB_DI_PIN F6 -#ifdef RGB_DI_PIN -#define RGBLED_NUM 1 -// #define RGBLIGHT_HUE_STEP 32 -// #define RGBLIGHT_SAT_STEP 32 -// #define RGBLIGHT_VAL_STEP 32 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -#define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #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 -// /*== customize breathing effect ==*/ -// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -// /*==== use exp() and sin() ====*/ -// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION +// See rev1/config.h and rev2/config.h to configure your uno. diff --git a/keyboards/uno/keymaps/copypasta/keymap.c b/keyboards/uno/keymaps/copypasta/keymap.c new file mode 100644 index 0000000000..74e5f62fc5 --- /dev/null +++ b/keyboards/uno/keymaps/copypasta/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum uno_keycode +{ + UNO = SAFE_RANGE +}; + +static uint16_t pressTimer = 0xFFFF; +#define CUSTOM_LONGPRESS 1000 +#define PASTA_COUNT 4 + +const char *pasta[PASTA_COUNT] = { + "Hey - I'm Uno... V2. This time, I have uno more features: I support a rotary encoder, too. That's it. That's the only difference.", + "Did you ever hear the tragedy of Darth Plagueis the Wise? I thought not. It's not a story the Jedi would tell you. It's a Sith legend. Darth Plagueis was a Dark Lord of the Sith, so powerful and so wise he could use the Force to influence the midichlorians to create life... He had such a knowledge of the dark side that he could even keep the ones he cared about from dying. The dark side of the Force is a pathway to many abilities some consider to be unnatural. He became so powerful... the only thing he was afraid of was losing his power, which eventually, of course, he did. Unfortunately, he taught his apprentice everything he knew, then his apprentice killed him in his sleep. Ironic, he could save others from death, but not himself.", + "The intent is to provide players with a sense of pride and accomplishment for unlocking different heroes. As for cost, we selected initial values based upon data from the Open Beta and other adjustments made to milestone rewards before launch. Among other things, we're looking at average per-player credit earn rates on a daily basis, and we'll be making constant adjustments to ensure that players have challenges that are compelling, rewarding, and of course attainable via gameplay. We appreciate the candid feedback, and the passion the community has put forth around the current topics here on Reddit, our forums and across numerous social media outlets. Our team will continue to make changes and monitor community feedback and update everyone as soon and as often as we can.", + "The FitnessGram Pacer Test is a multistage aerobic capacity test that progressively gets more difficult as it continues. The 20 meter pacer test will begin in 30 seconds. Line up at the start. The running speed starts slowly, but gets faster each minute after you hear this signal. [beep] A single lap should be completed each time you hear this sound. [ding] Remember to run in a straight line, and run as long as possible. The second time you fail to complete a lap before the sound, your test is over. The test will begin on the word start. On your mark, get ready, start.", +}; + +uint8_t pastaIndex = 0; + +enum encoder_names { + _ENCODER, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + UNO + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case UNO: + if (record->event.pressed) { + pressTimer = timer_read(); + } else { + uint16_t timeElapsed = timer_elapsed(pressTimer); + if (timeElapsed < CUSTOM_LONGPRESS) { + send_string(pasta[pastaIndex]); + } else { + reset_keyboard(); + } + } + break; + } + return false; +} + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(0, 255, 255); + rgblight_mode_noeeprom(1); + //rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); +} + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == _ENCODER) { /* First encoder */ + if (clockwise) { + pastaIndex++; + pastaIndex %= PASTA_COUNT; + } else { + pastaIndex += PASTA_COUNT; + pastaIndex--; + pastaIndex %= PASTA_COUNT; + } + rgblight_sethsv_noeeprom((255/PASTA_COUNT)*pastaIndex, 255, 255); + rgblight_mode_noeeprom(1); + } +} diff --git a/keyboards/uno/keymaps/copypasta/readme.md b/keyboards/uno/keymaps/copypasta/readme.md new file mode 100644 index 0000000000..1ad009c16c --- /dev/null +++ b/keyboards/uno/keymaps/copypasta/readme.md @@ -0,0 +1,4 @@ +# A copypasta keymap for uno +![Picture](https://i.imgur.com/OqPyWbbl.jpg) + +[A demo of this keymap can be found here.](https://www.reddit.com/r/MechanicalKeyboards/comments/k7w1j1/qmk_is_a_pathway_to_many_abilities_some_consider/) diff --git a/keyboards/uno/keymaps/default/keymap.c b/keyboards/uno/keymaps/default/keymap.c index bb19ea7ddb..43c885c800 100644 --- a/keyboards/uno/keymaps/default/keymap.c +++ b/keyboards/uno/keymaps/default/keymap.c @@ -13,6 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #include QMK_KEYBOARD_H enum uno_keycode @@ -20,20 +21,9 @@ enum uno_keycode UNO = SAFE_RANGE }; -static uint16_t pressTimer = 0xFFFF; -#define CUSTOM_LONGPRESS 150 -#define CUSTOM_LONGERPRESS 750 -#define CUSTOM_STRING "I can put a whole buncha text in here and type it all with a single keypress." -#define RESET_LENGTH 3000 -const uint8_t PROGMEM RGBLED_RAINBOW_MOOD_INTERVALS[] = { 10, 25, 50 }; - -char stringToSend[2] = "a"; -char maxLetter = 'z'; - -uint8_t presetCounter = 0; - -#define COUNTER X_A - +enum encoder_names { + _ENCODER, +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( @@ -44,59 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case UNO: - if (record->event.pressed) { - pressTimer = timer_read(); - } else { - uint16_t timeElapsed = timer_elapsed(pressTimer); - switch (presetCounter) { - case 0: - SEND_STRING(SS_LCMD("n")); - break; - case 1: - SEND_STRING("Hello!"); - break; - case 2: - SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"I am uno!"); - break; - case 3: - SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"I can do all sorts of useless things!"); - break; - case 4: - SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"And I have a built-in RGB LED!"SS_TAP(X_ENTER)SS_TAP(X_ENTER)SS_TAP(X_ENTER)); - rgblight_sethsv_noeeprom(255, 255, 255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); - break; - default: - if (timeElapsed < CUSTOM_LONGPRESS) { - // Normal press. We're going to send the current letter and increment the counter. - SEND_STRING(SS_TAP(X_BSPACE)); - send_string(stringToSend); - stringToSend[0]++; - if (stringToSend[0] > maxLetter) { - stringToSend[0] = 'a'; - } - } else if (timeElapsed < CUSTOM_LONGERPRESS) { - // Long press, confirm the current letter, reset counter - stringToSend[0] = 'a'; - send_string(stringToSend); - } else if (timeElapsed < RESET_LENGTH) { - // Longer press, display macro. - SEND_STRING(CUSTOM_STRING); - } else { - reset_keyboard(); - } - presetCounter--; - break; - } - presetCounter++; - } - break; + if (record->event.pressed) { + SEND_STRING("Hello!"); + } + break; + return false; } - return false; + return true; } void keyboard_post_init_user(void) { rgblight_enable_noeeprom(); - rgblight_sethsv_noeeprom(0, 0, 0); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_sethsv_noeeprom(255, 255, 255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); } + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == _ENCODER) { /* First encoder */ + if (clockwise) { + tap_code(KC_A); + } else { + tap_code(KC_B); + } + return false; + } + return true; +} + diff --git a/keyboards/uno/keymaps/default/readme.md b/keyboards/uno/keymaps/default/readme.md index 53b762f878..d783a80acc 100644 --- a/keyboards/uno/keymaps/default/readme.md +++ b/keyboards/uno/keymaps/default/readme.md @@ -1,4 +1,5 @@ # The default keymap for uno -![Keymap](https://i.imgur.com/lCPZZpO.png) +![Picture](https://i.imgur.com/OqPyWbbl.jpg) -The 'Macro' key does a few things: If you open up textedit (was made for a mac), it sends "Command+n" for the first press to make a new document. It then types a few different messages, activates the RGB LED, and finally ends in a "scroll through the alphabet with a long press to confirm a certain character" keyboard mode. +This keymap types "Hello!" when pressed and presses 'A' and 'B' when turning the +encoder. diff --git a/keyboards/uno/keymaps/demo/keymap.c b/keyboards/uno/keymaps/demo/keymap.c new file mode 100644 index 0000000000..cd3c3dadef --- /dev/null +++ b/keyboards/uno/keymaps/demo/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum uno_keycode +{ + UNO = SAFE_RANGE +}; + +static uint16_t pressTimer = 0xFFFF; +#define CUSTOM_LONGPRESS 150 +#define CUSTOM_LONGERPRESS 750 +#define CUSTOM_STRING "I can put a whole buncha text in here and type it all with a single keypress." +#define RESET_LENGTH 3000 +const uint8_t PROGMEM RGBLED_RAINBOW_MOOD_INTERVALS[] = { 10, 25, 50 }; + +char stringToSend[2] = "a"; +char maxLetter = 'z'; + +uint8_t presetCounter = 0; + +#define COUNTER X_A + +enum encoder_names { + _ENCODER, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + UNO + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case UNO: + if (record->event.pressed) { + pressTimer = timer_read(); + } else { + uint16_t timeElapsed = timer_elapsed(pressTimer); + switch (presetCounter) { + case 0: + SEND_STRING(SS_LCMD("n")); + break; + case 1: + SEND_STRING("Hello!"); + break; + case 2: + SEND_STRING("\n\nI am uno!"); + break; + case 3: + SEND_STRING("\n\nI can do all sorts of useless things!"); + break; + case 4: + SEND_STRING("\n\nAnd I have a built-in RGB LED!\n\n\n"); + rgblight_sethsv_noeeprom(255, 255, 255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); + break; + default: + if (timeElapsed < CUSTOM_LONGPRESS) { + // Normal press. We're going to send the current letter and increment the counter. + SEND_STRING(SS_TAP(X_BSPACE)); + send_string(stringToSend); + stringToSend[0]++; + if (stringToSend[0] > maxLetter) { + stringToSend[0] = 'a'; + } + } else if (timeElapsed < CUSTOM_LONGERPRESS) { + // Long press, confirm the current letter, reset counter + stringToSend[0] = 'a'; + send_string(stringToSend); + } else if (timeElapsed < RESET_LENGTH) { + // Longer press, display macro. + SEND_STRING(CUSTOM_STRING); + } else { + reset_keyboard(); + } + presetCounter--; + break; + } + presetCounter++; + } + break; + } + return false; +} + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(0, 0, 0); + rgblight_mode(1); + // Uncomment to enable rainbow mode when plugged in. + // Otherwise, the LED will be revealed after a few keypresses. + //rgblight_sethsv_noeeprom(255, 255, 255); + //rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == _ENCODER) { /* First encoder */ + if (clockwise) { + tap_code(KC_A); + } else { + tap_code(KC_B); + } + return false; + } + return true; +} + diff --git a/keyboards/uno/keymaps/demo/readme.md b/keyboards/uno/keymaps/demo/readme.md new file mode 100644 index 0000000000..ec91247861 --- /dev/null +++ b/keyboards/uno/keymaps/demo/readme.md @@ -0,0 +1,4 @@ +# The demo keymap for uno +![Picture](https://i.imgur.com/OqPyWbbl.jpg) + +[You can find a video of this keymap being demoed here](https://imgur.com/a/Z7G5Aam). diff --git a/keyboards/uno/readme.md b/keyboards/uno/readme.md index ce4cccd196..b60ef23e97 100644 --- a/keyboards/uno/readme.md +++ b/keyboards/uno/readme.md @@ -1,19 +1,34 @@ -# uno +# Uno - ![uno](https://i.imgur.com/OqPyWbbl.jpg) +![Uno](https://i.imgur.com/OqPyWbbl.jpg) A 1-key, in-USB "board" for the lulz - * Keyboard Maintainer: [Snipeye](https://github.com/Snipeye) - * Hardware Supported: uno pcb - * Hardware Availability: [GB](https://www.reddit.com/r/mechmarket/comments/gyijm7/gb_uno/) +* Keyboard Maintainer: [Snipeye](https://github.com/Snipeye) +* Hardware Availability: [keyhive.xyz](https://keyhive.xyz/shop/uno-single-key-keyboard) - Make example for this keyboard (after setting up your build environment): +There are two revisions of Uno. If your Uno supports a rotary encoder, use rev2. +If it *does not* support a rotary encoder, use rev1. The following examples use +`rev2` — be sure to change this if you are using `rev1`. - make uno:default +Make example for this keyboard (after setting up your build environment; make +sure to change `rev2` to your Uno's version): - Flashing example for this keyboard: + make uno/rev2:default - make uno:default:flash +Flashing example for this keyboard (change `rev2` to `rev1` if needed): - See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + make uno/rev2:default:flash + +If you prefer to use the `qmk` tool: + + qmk compile -kb uno/rev2 -km default + +Create your own keymap with: + + qmk new-keymap -kb uno/rev2 + +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). + +### Credits ++ Everything by Snipeye diff --git a/keyboards/uno/rev1/config.h b/keyboards/uno/rev1/config.h new file mode 100644 index 0000000000..11c84ad2ab --- /dev/null +++ b/keyboards/uno/rev1/config.h @@ -0,0 +1,74 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xACC8 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Broekhuijsen +#define PRODUCT Uno rev1 + +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_ANIMATIONS + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* Uno default pinout */ +#define DIRECT_PINS { \ + { B6 } \ +} +#define UNUSED_PINS + +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN F6 +#define RGBLED_NUM 1 +#endif + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 32 +// #define RGBLIGHT_SAT_STEP 32 +// #define RGBLIGHT_VAL_STEP 32 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #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 +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/uno/rev1/rev1.h b/keyboards/uno/rev1/rev1.h new file mode 100644 index 0000000000..691bdd1dc3 --- /dev/null +++ b/keyboards/uno/rev1/rev1.h @@ -0,0 +1,25 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00 \ +) { \ + { K00 } \ +} diff --git a/keyboards/uno/rev1/rules.mk b/keyboards/uno/rev1/rules.mk new file mode 100644 index 0000000000..7180be7497 --- /dev/null +++ b/keyboards/uno/rev1/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/uno/rev2/config.h b/keyboards/uno/rev2/config.h new file mode 100644 index 0000000000..37ea08c017 --- /dev/null +++ b/keyboards/uno/rev2/config.h @@ -0,0 +1,49 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xACC8 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Broekhuijsen +#define PRODUCT Uno rev2 + +#define RGBLIGHT_EFFECT_RAINBOW_MOOD + +/* ENCODER */ +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* Uno default pinout */ +#define DIRECT_PINS { \ + { D0 } \ +} +#define UNUSED_PINS + +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN D1 +#define RGBLED_NUM 1 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/uno/rev2/rev2.h b/keyboards/uno/rev2/rev2.h new file mode 100644 index 0000000000..691bdd1dc3 --- /dev/null +++ b/keyboards/uno/rev2/rev2.h @@ -0,0 +1,25 @@ +/* Copyright 2020 Snipeye + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00 \ +) { \ + { K00 } \ +} diff --git a/keyboards/uno/rev2/rules.mk b/keyboards/uno/rev2/rules.mk new file mode 100644 index 0000000000..1ce2738442 --- /dev/null +++ b/keyboards/uno/rev2/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/uno/rules.mk b/keyboards/uno/rules.mk index ebbb7bc613..367faedeaf 100644 --- a/keyboards/uno/rules.mk +++ b/keyboards/uno/rules.mk @@ -1,18 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +DEFAULT_FOLDER = uno/rev1 diff --git a/keyboards/uno/uno.h b/keyboards/uno/uno.h index 91d48d2ad5..bb3248e293 100644 --- a/keyboards/uno/uno.h +++ b/keyboards/uno/uno.h @@ -13,12 +13,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once #include "quantum.h" -#define LAYOUT( \ - K00 \ -) { \ - { K00 } \ -} +#if defined(KEYBOARD_uno_rev1) +# include "rev1.h" +#elif defined(KEYBOARD_uno_rev2) +# include "rev2.h" +#endif diff --git a/keyboards/westm/westm68/config.h b/keyboards/westm/westm68/config.h index ceecbb914c..d1063583d3 100644 --- a/keyboards/westm/westm68/config.h +++ b/keyboards/westm/westm68/config.h @@ -16,10 +16,15 @@ #pragma once +#include "config_common.h" + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + /* USB Device descriptor parameter */ #define VENDOR_ID 0x574D // WM -#define PRODUCT_ID 0x0001 -#define DEVICE_VER 0x0001 // Revision prototype +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 #define MANUFACTURER WestM #define PRODUCT WestM68 @@ -31,23 +36,6 @@ #define MATRIX_COL_PINS { B14, B13, B12, B11, B10, B2, B1, B8, B7, B6, B5, B4, B3, A15, A14 } #define DIODE_DIRECTION COL2ROW -#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 -// The pin connected to the data pin of the LEDs -#define RGB_DI_PIN A8 -#define RGBLED_NUM 19 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 @@ -55,7 +43,3 @@ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - -/* Hold ESC key (first key of first column) to trigger bootloader */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/westm/westm68/halconf.h b/keyboards/westm/westm68/halconf.h index a73f08fb6d..a0a9318360 100644 --- a/keyboards/westm/westm68/halconf.h +++ b/keyboards/westm/westm68/halconf.h @@ -14,7 +14,6 @@ * along with this program. If not, see . */ - #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/westm/westm68/rev1/config.h b/keyboards/westm/westm68/rev1/config.h new file mode 100644 index 0000000000..054b47cca2 --- /dev/null +++ b/keyboards/westm/westm68/rev1/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 WestM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN A8 +#define RGBLED_NUM 16 +#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 diff --git a/keyboards/westm/westm68/rev1/rev1.c b/keyboards/westm/westm68/rev1/rev1.c new file mode 100644 index 0000000000..d198c1447a --- /dev/null +++ b/keyboards/westm/westm68/rev1/rev1.c @@ -0,0 +1,22 @@ +/* Copyright 2021 WestM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" + +void board_init(void) { + rgblight_toggle(); // Fixes if LEDs were off in the first place buggy LED turns on + rgblight_set(); // Need this to fix buggy first LED upon plugging in PCB +} \ No newline at end of file diff --git a/keyboards/westm/westm68/rev1/rev1.h b/keyboards/westm/westm68/rev1/rev1.h new file mode 100644 index 0000000000..e30df949a9 --- /dev/null +++ b/keyboards/westm/westm68/rev1/rev1.h @@ -0,0 +1,17 @@ +/* Copyright 2021 WestM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "westm68.h" \ No newline at end of file diff --git a/keyboards/westm/westm68/rev1/rules.mk b/keyboards/westm/westm68/rev1/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/westm/westm68/rev1/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/westm/westm68/rules.mk b/keyboards/westm/westm68/rules.mk index 0ad5e320fb..a54cc39924 100644 --- a/keyboards/westm/westm68/rules.mk +++ b/keyboards/westm/westm68/rules.mk @@ -17,5 +17,5 @@ CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output \ No newline at end of file +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/westm/westm68/westm68.c b/keyboards/westm/westm68/westm68.c index f5ec496247..e30df949a9 100644 --- a/keyboards/westm/westm68/westm68.c +++ b/keyboards/westm/westm68/westm68.c @@ -14,5 +14,4 @@ * along with this program. If not, see . */ - -#include "westm68.h" +#include "westm68.h" \ No newline at end of file diff --git a/keyboards/westm/westmergo/westmergo.c b/keyboards/westm/westmergo/westmergo.c index d78a8f9d4e..18055d3789 100644 --- a/keyboards/westm/westmergo/westmergo.c +++ b/keyboards/westm/westmergo/westmergo.c @@ -14,4 +14,4 @@ * along with this program. If not, see . */ -#include "westmergo.h" +#include "westmergo.h" \ No newline at end of file diff --git a/keyboards/woodkeys/meira/matrix.c b/keyboards/woodkeys/meira/matrix.c index 8e8e9485b4..4fdc354237 100644 --- a/keyboards/woodkeys/meira/matrix.c +++ b/keyboards/woodkeys/meira/matrix.c @@ -45,17 +45,14 @@ along with this program. If not, see . #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) # define ROW_SHIFTER ((uint8_t)1) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) # define ROW_SHIFTER ((uint16_t)1) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) # define ROW_SHIFTER ((uint32_t)1) #endif @@ -183,16 +180,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - - static void init_rows(void) { for(uint8_t x = 0; x < MATRIX_ROWS; x++) { diff --git a/keyboards/ymdk/sp64/matrix.c b/keyboards/ymdk/sp64/matrix.c index 9a6e37bcdc..69276c7b3c 100644 --- a/keyboards/ymdk/sp64/matrix.c +++ b/keyboards/ymdk/sp64/matrix.c @@ -154,15 +154,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static void matrix_select_row(uint8_t row) { #ifdef RIGHT_HALF diff --git a/keyboards/yosino58/rev1/matrix.c b/keyboards/yosino58/rev1/matrix.c index e2be7113bf..802ce00cc6 100644 --- a/keyboards/yosino58/rev1/matrix.c +++ b/keyboards/yosino58/rev1/matrix.c @@ -311,15 +311,6 @@ void matrix_print(void) } } -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - static void init_cols(void) { for(int x = 0; x < MATRIX_COLS; x++) { diff --git a/lib/python/qmk/cli/cd.py b/lib/python/qmk/cli/cd.py index c62c3f56c6..ef03011f1f 100755 --- a/lib/python/qmk/cli/cd.py +++ b/lib/python/qmk/cli/cd.py @@ -2,6 +2,7 @@ """ import sys import os +import subprocess from milc import cli @@ -41,6 +42,6 @@ def cd(cli): # Set the prompt for the new shell qmk_env['MSYS2_PS1'] = qmk_env['PS1'] # Start the new subshell - cli.run([os.environ.get('SHELL', '/usr/bin/bash')], env=qmk_env) + subprocess.run([os.environ.get('SHELL', '/usr/bin/bash')], env=qmk_env) else: cli.log.info("Already within qmk_firmware directory.") diff --git a/platforms/arm_atsam/pin_defs.h b/platforms/arm_atsam/_pin_defs.h similarity index 100% rename from platforms/arm_atsam/pin_defs.h rename to platforms/arm_atsam/_pin_defs.h diff --git a/platforms/avr/pin_defs.h b/platforms/avr/_pin_defs.h similarity index 100% rename from platforms/avr/pin_defs.h rename to platforms/avr/_pin_defs.h diff --git a/platforms/chibios/pin_defs.h b/platforms/chibios/_pin_defs.h similarity index 98% rename from platforms/chibios/pin_defs.h rename to platforms/chibios/_pin_defs.h index c03f8de0c2..a84d931cc2 100644 --- a/platforms/chibios/pin_defs.h +++ b/platforms/chibios/_pin_defs.h @@ -15,6 +15,12 @@ */ #pragma once +#if defined(MCU_KINETIS) +// TODO: including this avoids "error: expected identifier before '(' token" errors +// here just to please KINETIS builds... +# include +#endif + // Defines mapping for Proton C replacement #ifdef CONVERT_TO_PROTON_C // Left side (front) diff --git a/platforms/pin_defs.h b/platforms/pin_defs.h index ea730138f2..341fe89b6e 100644 --- a/platforms/pin_defs.h +++ b/platforms/pin_defs.h @@ -18,6 +18,6 @@ // useful for direct pin mapping #define NO_PIN (pin_t)(~0) -#if __has_include_next("pin_defs.h") -# include_next "pin_defs.h" /* Include the platforms pin_defs.h */ +#if __has_include("_pin_defs.h") +# include "_pin_defs.h" /* Include the platforms pin defs */ #endif diff --git a/quantum/action.c b/quantum/action.c index 487218777e..ef059f0e2a 100644 --- a/quantum/action.c +++ b/quantum/action.c @@ -15,6 +15,13 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include + +#ifdef DEBUG_ACTION +# include "debug.h" +#else +# include "nodebug.h" +#endif + #include "host.h" #include "keycode.h" #include "keyboard.h" @@ -34,12 +41,6 @@ along with this program. If not, see . # include "backlight.h" #endif -#ifdef DEBUG_ACTION -# include "debug.h" -#else -# include "nodebug.h" -#endif - #ifdef POINTING_DEVICE_ENABLE # include "pointing_device.h" #endif @@ -100,7 +101,7 @@ void action_exec(keyevent_t event) { keyrecord_t record = {.event = event}; #ifndef NO_ACTION_ONESHOT - if (!keymap_config.oneshot_disable) { + if (keymap_config.oneshot_enable) { # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) if (has_oneshot_layer_timed_out()) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); @@ -257,7 +258,7 @@ void process_record(keyrecord_t *record) { if (!process_record_quantum(record)) { #ifndef NO_ACTION_ONESHOT - if (is_oneshot_layer_active() && record->event.pressed && !keymap_config.oneshot_disable) { + if (is_oneshot_layer_active() && record->event.pressed && keymap_config.oneshot_enable) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); } #endif @@ -322,7 +323,7 @@ void process_action(keyrecord_t *record, action_t action) { # ifdef SWAP_HANDS_ENABLE && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT) # endif - && !keymap_config.oneshot_disable) { + && keymap_config.oneshot_enable) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); do_release_oneshot = !is_oneshot_layer_active(); } @@ -366,7 +367,7 @@ void process_action(keyrecord_t *record, action_t action) { # ifndef NO_ACTION_ONESHOT case MODS_ONESHOT: // Oneshot modifier - if (keymap_config.oneshot_disable) { + if (!keymap_config.oneshot_enable) { if (event.pressed) { if (mods) { if (IS_MOD(action.key.code) || action.key.code == KC_NO) { @@ -612,7 +613,7 @@ void process_action(keyrecord_t *record, action_t action) { # ifndef NO_ACTION_ONESHOT case OP_ONESHOT: // Oneshot modifier - if (keymap_config.oneshot_disable) { + if (!keymap_config.oneshot_enable) { if (event.pressed) { layer_on(action.layer_tap.val); } else { diff --git a/quantum/action_layer.c b/quantum/action_layer.c index 4d2921354b..473e0e948d 100644 --- a/quantum/action_layer.c +++ b/quantum/action_layer.c @@ -1,10 +1,5 @@ #include #include -#include "keyboard.h" -#include "keymap.h" -#include "action.h" -#include "util.h" -#include "action_layer.h" #ifdef DEBUG_ACTION # include "debug.h" @@ -12,6 +7,12 @@ # include "nodebug.h" #endif +#include "keyboard.h" +#include "keymap.h" +#include "action.h" +#include "util.h" +#include "action_layer.h" + /** \brief Default Layer State */ layer_state_t default_layer_state = 0; diff --git a/quantum/action_tapping.c b/quantum/action_tapping.c index 6f8b4f8c56..e436619428 100644 --- a/quantum/action_tapping.c +++ b/quantum/action_tapping.c @@ -1,10 +1,5 @@ #include #include -#include "action.h" -#include "action_layer.h" -#include "action_tapping.h" -#include "keycode.h" -#include "timer.h" #ifdef DEBUG_ACTION # include "debug.h" @@ -12,6 +7,12 @@ # include "nodebug.h" #endif +#include "action.h" +#include "action_layer.h" +#include "action_tapping.h" +#include "keycode.h" +#include "timer.h" + #ifndef NO_ACTION_TAPPING # define IS_TAPPING() !IS_NOEVENT(tapping_key.event) diff --git a/quantum/action_util.c b/quantum/action_util.c index 4ea0bf61fb..738410a4ac 100644 --- a/quantum/action_util.c +++ b/quantum/action_util.c @@ -155,7 +155,7 @@ void clear_oneshot_swaphands(void) { * FIXME: needs doc */ void set_oneshot_layer(uint8_t layer, uint8_t state) { - if (!keymap_config.oneshot_disable) { + if (keymap_config.oneshot_enable) { oneshot_layer_data = layer << 3 | state; layer_on(layer); # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) @@ -184,7 +184,7 @@ void reset_oneshot_layer(void) { void clear_oneshot_layer_state(oneshot_fullfillment_t state) { uint8_t start_state = oneshot_layer_data; oneshot_layer_data &= ~state; - if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) && !keymap_config.oneshot_disable) { + if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) && keymap_config.oneshot_enable) { layer_off(get_oneshot_layer()); reset_oneshot_layer(); } @@ -202,8 +202,8 @@ bool is_oneshot_layer_active(void) { * FIXME: needs doc */ void oneshot_set(bool active) { - if (keymap_config.oneshot_disable != active) { - keymap_config.oneshot_disable = active; + if (keymap_config.oneshot_enable != active) { + keymap_config.oneshot_enable = active; eeconfig_update_keymap(keymap_config.raw); clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); dprintf("Oneshot: active: %d\n", active); @@ -215,7 +215,7 @@ void oneshot_set(bool active) { * FIXME: needs doc */ void oneshot_toggle(void) { - oneshot_set(!keymap_config.oneshot_disable); + oneshot_set(!keymap_config.oneshot_enable); } /** \brief enable oneshot @@ -235,7 +235,7 @@ void oneshot_disable(void) { } bool is_oneshot_enabled(void) { - return keymap_config.oneshot_disable; + return keymap_config.oneshot_enable; } #endif @@ -413,7 +413,7 @@ void del_oneshot_mods(uint8_t mods) { * FIXME: needs doc */ void set_oneshot_mods(uint8_t mods) { - if (!keymap_config.oneshot_disable) { + if (keymap_config.oneshot_enable) { if (oneshot_mods != mods) { # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) oneshot_time = timer_read(); diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c index c0859ca35f..fc1c55784d 100644 --- a/quantum/dynamic_keymap.c +++ b/quantum/dynamic_keymap.c @@ -21,6 +21,12 @@ #include "dynamic_keymap.h" #include "via.h" // for default VIA_EEPROM_ADDR_END +#ifdef ENCODER_ENABLE +# include "encoder.h" +#else +# define NUM_ENCODERS 0 +#endif + #ifndef DYNAMIC_KEYMAP_LAYER_COUNT # define DYNAMIC_KEYMAP_LAYER_COUNT 4 #endif @@ -63,20 +69,23 @@ # define DYNAMIC_KEYMAP_ENCODER_EEPROM_ADDR (DYNAMIC_KEYMAP_EEPROM_ADDR + (DYNAMIC_KEYMAP_LAYER_COUNT * MATRIX_ROWS * MATRIX_COLS * 2)) #endif -// Dynamic macro starts after dynamic encoders -#ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR -# define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR (DYNAMIC_KEYMAP_ENCODER_EEPROM_ADDR + (DYNAMIC_KEYMAP_LAYER_COUNT * NUM_ENCODERS * 2 * 2)) -#endif +// Dynamic macro starts after dynamic encoders, but only when using ENCODER_MAP +#ifdef ENCODER_MAP_ENABLE +# ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +# define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR (DYNAMIC_KEYMAP_ENCODER_EEPROM_ADDR + (DYNAMIC_KEYMAP_LAYER_COUNT * NUM_ENCODERS * 2 * 2)) +# endif // DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#else // ENCODER_MAP_ENABLE +# ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +# define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR (DYNAMIC_KEYMAP_ENCODER_EEPROM_ADDR) +# endif // DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#endif // ENCODER_MAP_ENABLE // Sanity check that dynamic keymaps fit in available EEPROM // If there's not 100 bytes available for macros, then something is wrong. // The keyboard should override DYNAMIC_KEYMAP_LAYER_COUNT to reduce it, // or DYNAMIC_KEYMAP_EEPROM_MAX_ADDR to increase it, *only if* the microcontroller has // more than the default. -#if DYNAMIC_KEYMAP_EEPROM_MAX_ADDR - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR < 100 -# pragma message STR(DYNAMIC_KEYMAP_EEPROM_MAX_ADDR - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR) " < 100" -# error Dynamic keymaps are configured to use more EEPROM than is available. -#endif +_Static_assert((DYNAMIC_KEYMAP_EEPROM_MAX_ADDR) - (DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR) >= 100, "Dynamic keymaps are configured to use more EEPROM than is available."); // Dynamic macros are stored after the keymaps and use what is available // up to and including DYNAMIC_KEYMAP_EEPROM_MAX_ADDR. diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index 14cd5887f4..0ff9996ca4 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c @@ -46,7 +46,7 @@ void eeconfig_init_quantum(void) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 0); default_layer_state = 0; eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, 0); - eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, 0); + eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, 0x4); eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0); eeprom_update_byte(EECONFIG_BACKLIGHT, 0); eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h index f3cd1867ab..565a0dbe5b 100644 --- a/quantum/eeconfig.h +++ b/quantum/eeconfig.h @@ -21,7 +21,7 @@ along with this program. If not, see . #include #ifndef EECONFIG_MAGIC_NUMBER -# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE9 // When changing, decrement this value to avoid future re-init issues +# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE8 // When changing, decrement this value to avoid future re-init issues #endif #define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF diff --git a/quantum/keyboard.c b/quantum/keyboard.c index ba5609f0aa..bb6463bf19 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -489,7 +489,7 @@ bool matrix_scan_task(void) { // we can get here with some keys processed now. if (!keys_processed) #endif - action_exec(TICK); + action_exec(TICK_EVENT); MATRIX_LOOP_END: diff --git a/quantum/keyboard.h b/quantum/keyboard.h index 62661596c1..fe0736a515 100644 --- a/quantum/keyboard.h +++ b/quantum/keyboard.h @@ -74,7 +74,7 @@ static inline bool IS_RELEASED(keyevent_t event) { #define MAKE_KEYEVENT(row_num, col_num, press) ((keyevent_t){.key = MAKE_KEYPOS((row_num), (col_num)), .pressed = (press), .time = (timer_read() | 1)}) /* Tick event */ -#define TICK MAKE_KEYEVENT(KEYLOC_TICK, KEYLOC_TICK, false) +#define TICK_EVENT MAKE_KEYEVENT(KEYLOC_TICK, KEYLOC_TICK, false) #ifdef ENCODER_MAP_ENABLE /* Encoder events */ diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index d7e334fdc8..a2cb025ed2 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h @@ -37,7 +37,7 @@ typedef union { bool nkro : 1; bool swap_lctl_lgui : 1; bool swap_rctl_rgui : 1; - bool oneshot_disable : 1; + bool oneshot_enable : 1; }; } keymap_config_t; diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c index 1497ceae71..2cf8484347 100644 --- a/quantum/matrix_common.c +++ b/quantum/matrix_common.c @@ -72,15 +72,12 @@ inline matrix_row_t matrix_get_row(uint8_t row) { #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(row) bitpop(matrix_get_row(row)) #elif (MATRIX_COLS <= 16) # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(row) bitpop16(matrix_get_row(row)) #elif (MATRIX_COLS <= 32) # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(row) bitpop32(matrix_get_row(row)) #endif void matrix_print(void) { @@ -94,14 +91,6 @@ void matrix_print(void) { } } -uint8_t matrix_key_count(void) { - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += matrix_bitpop(i); - } - return count; -} - #ifdef SPLIT_KEYBOARD bool matrix_post_scan(void) { bool changed = false; diff --git a/quantum/mousekey.c b/quantum/mousekey.c index 8bafbf977a..64d0e66682 100644 --- a/quantum/mousekey.c +++ b/quantum/mousekey.c @@ -16,6 +16,7 @@ */ #include +#include #include "keycode.h" #include "host.h" #include "timer.h" @@ -209,7 +210,7 @@ static uint8_t wheel_unit(void) { void mousekey_task(void) { // report cursor and scroll movement independently - report_mouse_t const tmpmr = mouse_report; + report_mouse_t tmpmr = mouse_report; mouse_report.x = 0; mouse_report.y = 0; @@ -251,8 +252,10 @@ void mousekey_task(void) { } } - if (mouse_report.x || mouse_report.y || mouse_report.v || mouse_report.h) mousekey_send(); - mouse_report = tmpmr; + if (has_mouse_report_changed(&mouse_report, &tmpmr)) { + mousekey_send(); + } + memcpy(&mouse_report, &tmpmr, sizeof(tmpmr)); } void mousekey_on(uint8_t code) { @@ -340,11 +343,11 @@ uint16_t w_intervals[mkspd_COUNT] = {MK_W_INTERVAL_UNMOD, MK_W_INTERVAL_0 void mousekey_task(void) { // report cursor and scroll movement independently - report_mouse_t const tmpmr = mouse_report; - mouse_report.x = 0; - mouse_report.y = 0; - mouse_report.v = 0; - mouse_report.h = 0; + report_mouse_t tmpmr = mouse_report; + mouse_report.x = 0; + mouse_report.y = 0; + mouse_report.v = 0; + mouse_report.h = 0; if ((tmpmr.x || tmpmr.y) && timer_elapsed(last_timer_c) > c_intervals[mk_speed]) { mouse_report.x = tmpmr.x; @@ -355,8 +358,10 @@ void mousekey_task(void) { mouse_report.h = tmpmr.h; } - if (mouse_report.x || mouse_report.y || mouse_report.v || mouse_report.h) mousekey_send(); - mouse_report = tmpmr; + if (has_mouse_report_changed(&mouse_report, &tmpmr)) { + mousekey_send(); + } + memcpy(&mouse_report, &tmpmr, sizeof(tmpmr)); } void adjust_speed(void) { diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c index 47a0af45d2..a160647890 100644 --- a/quantum/pointing_device.c +++ b/quantum/pointing_device.c @@ -70,17 +70,6 @@ static report_mouse_t local_mouse_report = {}; extern const pointing_device_driver_t pointing_device_driver; -/** - * @brief Compares 2 mouse reports for difference and returns result - * - * @param[in] new_report report_mouse_t - * @param[in] old_report report_mouse_t - * @return bool result - */ -__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new_report, report_mouse_t old_report) { - return memcmp(&new_report, &old_report, sizeof(new_report)); -} - /** * @brief Keyboard level code pointing device initialisation * @@ -165,7 +154,7 @@ __attribute__((weak)) void pointing_device_send(void) { static report_mouse_t old_report = {}; // If you need to do other things, like debugging, this is the place to do it. - if (has_mouse_report_changed(local_mouse_report, old_report)) { + if (has_mouse_report_changed(&local_mouse_report, &old_report)) { host_mouse_send(&local_mouse_report); } // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device diff --git a/quantum/pointing_device.h b/quantum/pointing_device.h index a6bdbf120c..5c0eaeaf34 100644 --- a/quantum/pointing_device.h +++ b/quantum/pointing_device.h @@ -80,7 +80,6 @@ void pointing_device_task(void); void pointing_device_send(void); report_mouse_t pointing_device_get_report(void); void pointing_device_set_report(report_mouse_t mouse_report); -bool has_mouse_report_changed(report_mouse_t new_report, report_mouse_t old_report); uint16_t pointing_device_get_cpi(void); void pointing_device_set_cpi(uint16_t cpi); diff --git a/tmk_core/protocol/report.c b/tmk_core/protocol/report.c index 854b59ae48..5755098c60 100644 --- a/tmk_core/protocol/report.c +++ b/tmk_core/protocol/report.c @@ -278,3 +278,16 @@ void clear_keys_from_report(report_keyboard_t* keyboard_report) { #endif memset(keyboard_report->keys, 0, sizeof(keyboard_report->keys)); } + +#ifdef MOUSE_ENABLE +/** + * @brief Compares 2 mouse reports for difference and returns result + * + * @param[in] new_report report_mouse_t + * @param[in] old_report report_mouse_t + * @return bool result + */ +__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t* new_report, report_mouse_t* old_report) { + return memcmp(new_report, old_report, sizeof(report_mouse_t)); +} +#endif diff --git a/tmk_core/protocol/report.h b/tmk_core/protocol/report.h index 24886795fc..e71e63d81c 100644 --- a/tmk_core/protocol/report.h +++ b/tmk_core/protocol/report.h @@ -321,6 +321,10 @@ void add_key_to_report(report_keyboard_t* keyboard_report, uint8_t key); void del_key_from_report(report_keyboard_t* keyboard_report, uint8_t key); void clear_keys_from_report(report_keyboard_t* keyboard_report); +#ifdef MOUSE_ENABLE +bool has_mouse_report_changed(report_mouse_t* new_report, report_mouse_t* old_report); +#endif + #ifdef __cplusplus } #endif diff --git a/users/rmeli/keyrecords/tap_dances.c b/users/rmeli/keyrecords/tap_dances.c new file mode 100644 index 0000000000..3b38bf4a33 --- /dev/null +++ b/users/rmeli/keyrecords/tap_dances.c @@ -0,0 +1,139 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "keyrecords/tap_dances.h" + +// + ---------- + +// + TAP DANCES | +// + ---------- + + +// Tap dances definitions +// Need to needs to be defined in a .c file to avoid a linker error (multiple definitions) +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_LSPO_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LSPO_CAPS_finished, LSPO_CAPS_reset), + [TD_RSPC_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, RSPC_CAPS_finished, RSPC_CAPS_reset), + [TD_ESC_DEL] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_DEL), +}; + +// + ------ + +// + DANCES | +// + ------ + + +// https://github.com/qmk/qmk_firmware/blob/9294258c02d3e025e01935a06c4d9f1997535bda/users/gordon/gordon.c#L112-L135 +td_state_t hold_cur_dance(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted) { + if (!state->pressed) + return TD_SINGLE_TAP; + else + return TD_SINGLE_HOLD; + } else { + if (!state->pressed) + return TD_SINGLE_TAP; + else + return TD_SINGLE_HOLD; + } + } else if (state->count == 2) { + if (state->pressed) + return TD_NONE; + else + return TD_DOUBLE_TAP; + } else + return TD_NONE; +} + +// + ------------------------------------------------ + +// + LEFT SHIFT PARENTHESIS OPEN (LSPO) AND CAPS LOCK | +// + ------------------------------------------------ + + +// Create an instance of 'td_tap_t' for the 'LSPO_CAPS' tap dance. +static td_tap_t LSPO_CAPS_state = {.is_press_action = true, .state = TD_NONE}; + +void LSPO_CAPS_finished(qk_tap_dance_state_t *state, void *user_data) { + LSPO_CAPS_state.state = hold_cur_dance(state); + switch (LSPO_CAPS_state.state) { + case TD_SINGLE_TAP: + register_code16(KC_LPRN); + break; + case TD_SINGLE_HOLD: + register_code16(KC_LSFT); + break; + case TD_DOUBLE_TAP: + register_code16(KC_CAPS); + break; + case TD_NONE: + break; + } +} + +void LSPO_CAPS_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (LSPO_CAPS_state.state) { + case TD_SINGLE_TAP: + unregister_code16(KC_LPRN); + break; + case TD_SINGLE_HOLD: + unregister_code16(KC_LSFT); + break; + case TD_DOUBLE_TAP: + unregister_code16(KC_CAPS); + break; + case TD_NONE: + break; + } + LSPO_CAPS_state.state = TD_NONE; +} + +// + -------------------------------------------------- + +// + RIGHT SHIFT PARENTHESIS CLOSE (RSPC) AND CAPS LOCK | +// + -------------------------------------------------- + + +// Create an instance of 'td_tap_t' for the 'RSPC_CAPS' tap dance. +static td_tap_t RSPC_CAPS_state = {.is_press_action = true, .state = TD_NONE}; + +void RSPC_CAPS_finished(qk_tap_dance_state_t *state, void *user_data) { + RSPC_CAPS_state.state = hold_cur_dance(state); + switch (RSPC_CAPS_state.state) { + case TD_SINGLE_TAP: + register_code16(KC_RPRN); + break; + case TD_SINGLE_HOLD: + register_code16(KC_RSFT); + break; + case TD_DOUBLE_TAP: + register_code16(KC_CAPS); + break; + case TD_NONE: + break; + } +} + +void RSPC_CAPS_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (RSPC_CAPS_state.state) { + case TD_SINGLE_TAP: + unregister_code16(KC_RPRN); + break; + case TD_SINGLE_HOLD: + unregister_code16(KC_RSFT); + break; + case TD_DOUBLE_TAP: + unregister_code16(KC_CAPS); + break; + case TD_NONE: + break; + } + RSPC_CAPS_state.state = TD_NONE; +} diff --git a/users/rmeli/keyrecords/tap_dances.h b/users/rmeli/keyrecords/tap_dances.h new file mode 100644 index 0000000000..fa749a17f4 --- /dev/null +++ b/users/rmeli/keyrecords/tap_dances.h @@ -0,0 +1,70 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include QMK_KEYBOARD_H + +// https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance#example-4-quad-function-tap-dance-id-example-4 + +// + ---------- + +// + TAP DANCES | +// + ---------- + + +// Tap dance enums +enum { + TD_LSPO_CAPS, // Tap once for (, hold once for LSFT, tap twice for CAPS + TD_RSPC_CAPS, // Tap once for ), hold once for RSFT, tap twice for CAPS + TD_ESC_DEL, // Tap once for KC_ESC, twice for KC_DEL +}; + +// Rename tap dances for keymap with shortcuts +#define TD_LSPC TD(TD_LSPO_CAPS) +#define TD_RSPC TD(TD_RSPC_CAPS) +#define TD_ED TD(TD_ESC_DEL) + +// + ----------- + +// + KEY PRESSES | +// + ----------- + + +// Different types of key presses +typedef enum { + TD_NONE, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_TAP, +} td_state_t; + +// Key press state +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +// + --------- + +// + FUNCTIONS | +// + --------- + + +// Tap dance for fast modifiers; favors being held over being tapped. +td_state_t hold_cur_dance(qk_tap_dance_state_t *state); + +// Left Shift Parenthesis Open (LSPO) and Caps Lock (CAPS) on DOUBLE_TAP +void LSPO_CAPS_finished(qk_tap_dance_state_t *state, void *user_data); +void LSPO_CAPS_reset(qk_tap_dance_state_t *state, void *user_data); + +// Right Shift Parenthesis Close (RSPC) and Caps Lock (CAPS) on DOUBLE_TAP +void RSPC_CAPS_finished(qk_tap_dance_state_t *state, void *user_data); +void RSPC_CAPS_reset(qk_tap_dance_state_t *state, void *user_data); diff --git a/users/rmeli/keyrecords/unicode.h b/users/rmeli/keyrecords/unicode.h new file mode 100644 index 0000000000..8e0c02d278 --- /dev/null +++ b/users/rmeli/keyrecords/unicode.h @@ -0,0 +1,85 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include QMK_KEYBOARD_H + +// Needs to be active on the OS side as well +// https://docs.qmk.fm/#/feature_unicode?id=input-modes + +enum unicode_names { + aGRV, + AGRV, + aUML, + AUML, + eGRV, + EGRV, + eACT, + EACT, + iGRV, + IGRV, + iCIR, + ICIR, + oGRV, + OGRV, + oUML, + OUML, + uGRV, + UGRV, + uUML, + UUML, +}; + +const uint32_t PROGMEM unicode_map[] = { + // KC_A + [aGRV] = 0x00E0, // à + [AGRV] = 0x00C0, // À + [aUML] = 0x00E4, // ä + [AUML] = 0x00C4, // Ä + // KC_E + [eGRV] = 0x00E8, // è + [EGRV] = 0x00C8, // È + [eACT] = 0x00E9, // é + [EACT] = 0x00C9, // É + // KC_I + [iGRV] = 0x00EC, // ì + [IGRV] = 0x00CC, // Ì + [iCIR] = 0x00EE, // î + [ICIR] = 0x00CE, // Î + // KC_O + [oGRV] = 0x00F2, // ò + [OGRV] = 0x00D2, // Ò + [oUML] = 0x00F6, // ö + [OUML] = 0x00D6, // Ö + // KC_U + [uGRV] = 0x00F9, // ù + [UGRV] = 0x00D9, // Ù + [uUML] = 0x00FC, // ü + [UUML] = 0x00DC, // Ü +}; + +// Accents +#define A_GRV XP(aGRV, AGRV) +#define A_UML XP(aUML, AUML) +#define E_GRV XP(eGRV, EGRV) +#define E_ACT XP(eACT, EACT) +#define I_GRV XP(iGRV, IGRV) +#define I_CIR XP(iCIR, ICIR) +#define O_GRV XP(oGRV, OGRV) +#define O_UML XP(oUML, OUML) +#define U_GRV XP(uGRV, UGRV) +#define U_UML XP(uUML, UUML) diff --git a/users/rmeli/oled/oled.c b/users/rmeli/oled/oled.c new file mode 100644 index 0000000000..d6d4b2c43c --- /dev/null +++ b/users/rmeli/oled/oled.c @@ -0,0 +1,96 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "oled/oled.h" + +void oled_render_rocco(void) { + static const char PROGMEM rocco[] = { + // 'rocco', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0xf8, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x78, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xe0, 0xf0, 0x78, 0x38, 0x1c, 0x1c, 0x1c, 0x0c, 0x1c, 0x1c, 0x1c, 0x38, 0xf8, 0xf0, + 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x78, 0x38, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, + 0xf0, 0xf0, 0x38, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xf8, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0x38, 0x38, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x38, 0x78, 0xf0, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x0f, 0x3f, 0xff, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x81, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x1f, 0x1c, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x1c, 0x18, 0x18, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x0f, 0x07, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x1e, 0x1c, 0x1c, 0x1c, + 0x38, 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x07, 0x0f, 0x0e, 0x1e, 0x1c, 0x1c, 0x18, 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x1c, 0x0e, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + oled_write_raw_P(rocco, sizeof(rocco)); +} + +void oled_render_meli(void) { + static const char PROGMEM meli[] = { + // 'meli', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x38, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x78, 0x78, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x07, 0x1f, 0x3f, 0xfc, 0xf8, 0xf0, 0xf8, + 0x7e, 0x1f, 0x07, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, + 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x0c, 0x1c, 0x1c, 0x1c, 0x38, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x8c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, + 0x0e, 0x1c, 0x1c, 0x18, 0x18, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x1c, 0x18, 0x38, 0x38, 0x18, + 0x1c, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x1f, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + oled_write_raw_P(meli, sizeof(meli)); +} diff --git a/users/rmeli/oled/oled.h b/users/rmeli/oled/oled.h new file mode 100644 index 0000000000..b91fe2d76b --- /dev/null +++ b/users/rmeli/oled/oled.h @@ -0,0 +1,26 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include QMK_KEYBOARD_H + +// + --------- + +// + RENDERERS | +// + --------- + + +void oled_render_rocco(void); +void oled_render_meli(void); diff --git a/users/rmeli/readme.md b/users/rmeli/readme.md new file mode 100644 index 0000000000..ed5561dea7 --- /dev/null +++ b/users/rmeli/readme.md @@ -0,0 +1,14 @@ +Copyright 2022 Rocco Meli @RMeli + +This program is free software: you can 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 . \ No newline at end of file diff --git a/users/rmeli/rmeli.h b/users/rmeli/rmeli.h new file mode 100644 index 0000000000..e6f51d4908 --- /dev/null +++ b/users/rmeli/rmeli.h @@ -0,0 +1,28 @@ +/* +Copyright 2021-2022 Rocco Meli <@RMeli> + +This program is free software: you can 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 . +*/ + +#ifdef UNICODEMAP_ENABLE +# include "keyrecords/unicode.h" +#endif + +#ifdef OLED_ENABLE +# include "oled/oled.h" +#endif + +#ifdef TAP_DANCE_ENABLE +# include "keyrecords/tap_dances.h" +#endif \ No newline at end of file diff --git a/users/rmeli/rules.mk b/users/rmeli/rules.mk new file mode 100644 index 0000000000..293685e08b --- /dev/null +++ b/users/rmeli/rules.mk @@ -0,0 +1,20 @@ +# https://github.com/qmk/qmk_firmware/blob/develop/docs/squeezing_avr.md +CONSOLE_ENABLE = no +COMMAND_ENABLE = no # Needed for Space Cadet Shift +MOUSEKEY_ENABLE = no +SPACE_CADET_ENABLE = no # Implemented with tap dance +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +MUSIC_ENABLE = no + +# VIA only support 4 layers by default +# Use "#define DYNAMIC_KEYMAP_LAYER_COUNT" in config.h to change the limit +VIA_ENABLE = no + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += $(USER_PATH)/oled/oled.c +endif + +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += $(USER_PATH)/keyrecords/tap_dances.c +endif \ No newline at end of file