1
0

Compare commits

..

18 Commits

Author SHA1 Message Date
Drashna Jaelre
80c90a6952 [Bug] Fix Underglow keycode processing (#24798)
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-01-08 08:50:54 -08:00
jack
95c74b6276 [Docs] Fix wording in Mod Tap documentation (#24796) 2025-01-07 19:13:04 -08:00
Joel Challis
6facb7a079 Convert stray legacy warn/info docs panels (#24799) 2025-01-07 19:12:54 -08:00
Nick Brassel
bcee1d2f2e Remove preprocessor sanity check for STM32L0/L1 now that it relies on types in C. (#24793) 2025-01-07 08:48:28 +11:00
Tocho Tochev
c9f9475243 Fix durgod k3x0 docs (#24774) 2025-01-04 11:08:26 +00:00
takashicompany
9dba024d76 Add EE_HANDS for KLEC-02 (#24777)
Add #define EE_HANDS
2025-01-04 09:41:32 +01:00
Leo Lou
4da260a49a [Keyboard] Add 3W6HS (#22539)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2025-01-03 16:23:42 -08:00
HorrorTroll
cc3823f767 Update some changes for AT32F415 (#24766)
* Fixed SPI can't compiled issue

* Added solenoid support and use 256KB ldscript for Onekey board
2025-01-03 20:33:22 +00:00
Sylvain Huguet
9a0f4e586a Add shuguet shu89 (#24758)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>
2025-01-02 22:18:38 -08:00
Philip
172c349675 [Keyboard] Add handwired/dactyl_manuform/5x8 (#24726)
* add handwired/dactyl_manuform/5x8 config

* add keymap scheme

* Update keymap.c

* Update keyboard.json

* Update keyboard.json

* fix and compile worked configs

* Update readme.md

* Update readme.md

* Update readme.md

* add dynamic macros support

* change key sets on first workday/add right2left layer

* Update keyboard.json

* Update keymap.c

* move license header to top keymap.c

* Update keyboard.json

* I rewrote the layout so that the halves are not stacked.

* I rewrote the layout so that the halves are not stacked (keymap.c)

* change "serial pin" syntactic

change 
"soft_serial_pin": "D0" 
to         
"serial": {
            "pin": "D0"
        }

* fix KC_BSPC and KC_SPC on right keyboard

* Update readme.md

* Update keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

---------

Co-authored-by: skandiPC <slinkinfs@yandex.ru>
Co-authored-by: iliorik-ph <140731596+iliorik-ph@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-01-02 12:50:43 +01:00
Tocho Tochev
ac140e563c Fix link to TMK magic commands (#24773) 2025-01-02 12:45:26 +01:00
QMK Bot
57f89e5388 [CI] Regenerate Files (#24770)
Regenerate Files
2025-01-01 13:02:16 +11:00
Joel Challis
53680fa6da Fix g_led_config parse warning (#24769) 2025-01-01 01:58:41 +00:00
Joel Challis
fe2200f73a Remove invalid "effect_max" animation from keyboards (#24767) 2024-12-31 12:36:24 +00:00
chillKB
fd0a552fc1 [Keyboard] Ghoul TKL (#24762)
Co-authored-by: jack <jack@pngu.org>
2024-12-30 13:44:51 -08:00
Joel Challis
f549948bbd Skip parsing g_led_config when matrix_size is missing (#24739) 2024-12-28 06:42:54 +11:00
Nick Brassel
5593e73ba7 [bug] Djinn theme fix. (#24754)
Theme fix.
2024-12-28 06:24:53 +11:00
Drashna Jaelre
58323017ff Add ArteryTek AT32 dfu to udev rules (#24747) 2024-12-25 02:57:30 +00:00
115 changed files with 1712 additions and 116 deletions

View File

@@ -129,7 +129,7 @@ needed for older distros.
## Can't Get Message on Console
Check:
- *hid_listen* finds your device. See above.
- Enable debug by pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- Enable debug by pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard/wiki#magic-commands-for-debug).
- Set `debug_enable=true`. See [Debugging](#debugging)
- Try using `print` function instead of debug print. See **common/print.h**.
- Disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).

View File

@@ -117,7 +117,9 @@ If yes, we send the string `"QMK is the best thing ever!"` to the computer via t
We return `true` to indicate to the caller that the key press we just processed should continue to be processed as normal (as we didn't replace or alter the functionality).
Finally, we define the keymap so that the first button activates our macro and the second button is just an escape button.
?>It is recommended to use the SAFE_RANGE macro as per [Customizing Functionality](custom_quantum_functions).
::: tip
It is recommended to use the SAFE_RANGE macro as per [Customizing Functionality](custom_quantum_functions).
:::
You might want to add more than one macro.
You can do that by adding another keycode and adding another case to the switch statement, like so:

View File

@@ -74,8 +74,9 @@ Additionally, `config.h` here will be processed like the same file in your keyma
The reason for this, is that `<name>.h` won't be added in time to add settings (such as `#define TAPPING_TERM 100`), and including the `<name.h>` file in any `config.h` files will result in compile issues.
!>You should use the `config.h` for [configuration options](config_options), and the `<name>.h` file for user or keymap specific settings (such as the enum for layer or keycodes)
::: warning
You should use the `config.h` for [configuration options](config_options), and the `<name>.h` file for user or keymap specific settings (such as the enum for layer or keycodes)
:::
## Readme (`readme.md`)

View File

@@ -214,7 +214,9 @@ When additional overlapping mouse key is pressed, the mouse cursor will continue
|`MOUSEKEY_OVERLAP_WHEEL_DELTA`|`MOUSEKEY_WHEEL_DELTA`|Step size of reset mouse wheel acceleration |
|`MOUSEKEY_OVERLAP_INTERVAL` |`MOUSEKEY_INTERVAL` |Reset time between cursor movements in milliseconds (Kinetic mode only)|
?> This feature will not be applied on Inertial mode
::: tip
This feature will not be applied on Inertial mode
:::
## Use with PS/2 Mouse and Pointing Device

View File

@@ -2,7 +2,7 @@
The Mod-Tap key `MT(mod, kc)` acts like a modifier when held, and a regular keycode when tapped. In other words, you can have a key that sends Escape when you tap it, but functions as a Control or Shift key when you hold it down.
The modifiers this keycode and `OSM()` accept are prefixed with `MOD_`, not `KC_`:
The modifiers (`mod`) argument to the `MT()` macro are prefixed with `MOD_`, not `KC_`:
|Modifier |Description |
|----------|----------------------------------------|

View File

@@ -0,0 +1,22 @@
// Copyright 2023 beekeeb
// Copyright 2021 weteor
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
#define MATRIX_COLS_PER_SIDE (MATRIX_COLS / 2)
#define MATRIX_ROW_PINS_L { GP7, GP8, GP9, GP10}
#define MATRIX_COL_PINS_L { GP11, GP12, GP13, GP14, GP15 }
#define MATRIX_ROW_PINS_R { P10, P11, P12, P05 }
#define MATRIX_COL_PINS_R { P06, P13, P14, P01, P00 }
#define I2C_DRIVER I2CD0
#define I2C1_SDA_PIN GP0
#define I2C1_SCL_PIN GP1

View File

@@ -0,0 +1,22 @@
/* Copyright 2023 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 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 <https://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,69 @@
{
"manufacturer": "beekeeb",
"keyboard_name": "3w6hs",
"maintainer": "beekeeb",
"diode_direction": "COL2ROW",
"usb": {
"device_version": "1.0.0",
"pid": "0x0003",
"vid": "0xBEEB",
"no_startup_check": true
},
"processor": "RP2040",
"bootloader": "rp2040",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true
},
"community_layouts": ["split_3x5_3"],
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.8},
{"matrix": [0, 1], "x": 1, "y": 0.2},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.2},
{"matrix": [0, 4], "x": 4, "y": 0.4},
{"matrix": [4, 0], "x": 8, "y": 0.4},
{"matrix": [4, 1], "x": 9, "y": 0.2},
{"matrix": [4, 2], "x": 10, "y": 0},
{"matrix": [4, 3], "x": 11, "y": 0.2},
{"matrix": [4, 4], "x": 12, "y": 0.8},
{"matrix": [1, 0], "x": 0, "y": 1.8},
{"matrix": [1, 1], "x": 1, "y": 1.2},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.2},
{"matrix": [1, 4], "x": 4, "y": 1.4},
{"matrix": [5, 0], "x": 8, "y": 1.4},
{"matrix": [5, 1], "x": 9, "y": 1.2},
{"matrix": [5, 2], "x": 10, "y": 1},
{"matrix": [5, 3], "x": 11, "y": 1.2},
{"matrix": [5, 4], "x": 12, "y": 1.8},
{"matrix": [2, 0], "x": 0, "y": 2.8},
{"matrix": [2, 1], "x": 1, "y": 2.2},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.2},
{"matrix": [2, 4], "x": 4, "y": 2.4},
{"matrix": [6, 0], "x": 8, "y": 2.4},
{"matrix": [6, 1], "x": 9, "y": 2.2},
{"matrix": [6, 2], "x": 10, "y": 2},
{"matrix": [6, 3], "x": 11, "y": 2.2},
{"matrix": [6, 4], "x": 12, "y": 2.8},
{"matrix": [3, 2], "x": 3.2, "y": 3.6},
{"matrix": [3, 3], "x": 4.2, "y": 3.6},
{"matrix": [3, 4], "x": 5.2, "y": 3.8},
{"matrix": [7, 0], "x": 6.8, "y": 3.8},
{"matrix": [7, 1], "x": 7.8, "y": 3.6},
{"matrix": [7, 2], "x": 8.8, "y": 3.6}
]
}
}
}

View File

@@ -0,0 +1,68 @@
/* Copyright 2021 weteor
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers {
_ALPHA_QWERTY,
_ALPHA_COLEMAK,
_SYM,
_NAV,
_NUM,
_CFG,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ALPHA_QWERTY] = LAYOUT_split_3x5_3(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
LCTL_T(KC_ESC), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL)
),
[_ALPHA_COLEMAK] = LAYOUT_split_3x5_3(
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SCLN),
LCTL_T(KC_ENT), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL)
),
[_SYM] = LAYOUT_split_3x5_3(
KC_GRV , KC_CIRC, KC_AT, KC_DLR, KC_TILD, KC_AMPR, KC_EXLM, KC_PIPE, KC_UNDS, KC_HASH,
KC_SLSH, KC_LBRC, KC_LCBR, KC_LPRN, KC_EQL, KC_ASTR, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS,
_______, KC_QUES, KC_PLUS, KC_PERC, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, _______,
XXXXXXX, MO(_CFG), XXXXXXX, _______, XXXXXXX, XXXXXXX
),
[_NAV] = LAYOUT_split_3x5_3(
XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP, KC_PGUP, KC_DEL,
KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, _______, XXXXXXX, MO(_CFG), XXXXXXX
),
[_NUM] = LAYOUT_split_3x5_3(
XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PSLS,
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_P0, KC_P4, KC_P5, KC_P6, KC_PDOT,
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_PAST,
XXXXXXX, _______, XXXXXXX, KC_PEQL, KC_PENT, XXXXXXX
),
[_CFG] = LAYOUT_split_3x5_3(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,DF(_ALPHA_QWERTY), DF(_ALPHA_COLEMAK),
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX
),
};

View File

@@ -0,0 +1,248 @@
/*
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
2020 Pierre Chevalier <pierrechevalier83@gmail.com>
2021 weteor
2023 beekeeb
*/
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* This code was heavily inspired by the ergodox_ez keymap, and modernized
* to take advantage of the quantum.h microcontroller agnostics gpio control
* abstractions and use the macros defined in config.h for the wiring as opposed
* to repeating that information all over the place.
*/
#include "matrix.h"
#include "debug.h"
#include "wait.h"
#include "i2c_master.h"
extern i2c_status_t tca9555_status;
//#define I2C_TIMEOUT 1000
// I2C address:
// All address pins of the tca9555 are connected to the ground
// | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
// | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
#define I2C_ADDR (0b0100000 << 1)
// Register addresses
#define IODIRA 0x06 // i/o direction register
#define IODIRB 0x07
#define IREGP0 0x00 // GPIO pull-up resistor register
#define IREGP1 0x01
#define OREGP0 0x02 // general purpose i/o port register (write modifies OLAT)
#define OREGP1 0x03
bool i2c_initialized = 0;
i2c_status_t tca9555_status = I2C_ADDR;
uint8_t init_tca9555(void) {
dprint("starting init\n");
tca9555_status = I2C_ADDR;
// I2C subsystem
if (i2c_initialized == 0) {
i2c_init(); // on pins D(1,0)
i2c_initialized = true;
wait_ms(I2C_TIMEOUT);
}
// set pin direction
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
uint8_t conf[2] = {
// This means: read all pins of port 0
0b11111111,
// This means: we will write on pins 0 to 3 on port 1. read rest
0b11110000,
};
tca9555_status = i2c_write_register(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT);
return tca9555_status;
}
/* matrix state(1:on, 0:off) */
static matrix_row_t matrix[MATRIX_ROWS]; // debounced values
static matrix_row_t read_cols(uint8_t row);
static void init_cols(void);
static void unselect_rows(void);
static void select_row(uint8_t row);
static uint8_t tca9555_reset_loop;
void matrix_init_custom(void) {
// initialize row and col
tca9555_status = init_tca9555();
unselect_rows();
init_cols();
// initialize matrix state: all keys off
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
}
void matrix_power_up(void) {
tca9555_status = init_tca9555();
unselect_rows();
init_cols();
// initialize matrix state: all keys off
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
}
// Reads and stores a row, returning
// whether a change occurred.
static inline bool store_matrix_row(matrix_row_t current_matrix[], uint8_t index) {
matrix_row_t temp = read_cols(index);
if (current_matrix[index] != temp) {
current_matrix[index] = temp;
return true;
}
return false;
}
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
if (tca9555_status) { // if there was an error
if (++tca9555_reset_loop == 0) {
// since tca9555_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
// this will be approx bit more frequent than once per second
dprint("trying to reset tca9555\n");
tca9555_status = init_tca9555();
if (tca9555_status) {
dprint("right side not responding\n");
} else {
dprint("right side attached\n");
}
}
}
bool changed = false;
for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
// select rows from left and right hands
uint8_t left_index = i;
uint8_t right_index = i + MATRIX_ROWS_PER_SIDE;
select_row(left_index);
select_row(right_index);
// we don't need a 30us delay anymore, because selecting a
// left-hand row requires more than 30us for i2c.
changed |= store_matrix_row(current_matrix, left_index);
changed |= store_matrix_row(current_matrix, right_index);
unselect_rows();
}
return changed;
}
static void init_cols(void) {
// init on tca9555
// not needed, already done as part of init_tca9555()
// init on mcu
pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L;
for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) {
pin_t pin = matrix_col_pins_mcu[pin_index];
gpio_set_pin_input_high(pin);
gpio_write_pin_high(pin);
}
}
static matrix_row_t read_cols(uint8_t row) {
if (row < MATRIX_ROWS_PER_SIDE) {
pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L;
matrix_row_t current_row_value = 0;
// For each col...
for (uint8_t col_index = 0; col_index < MATRIX_COLS_PER_SIDE; col_index++) {
// Select the col pin to read (active low)
uint8_t pin_state = gpio_read_pin(matrix_col_pins_mcu[col_index]);
// Populate the matrix row with the state of the col pin
current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
}
return current_row_value;
} else {
if (tca9555_status) { // if there was an error
return 0;
} else {
uint8_t data = 0;
uint8_t port0 = 0;
tca9555_status = i2c_read_register(I2C_ADDR, IREGP0, &port0, 1, I2C_TIMEOUT);
if (tca9555_status) { // if there was an error
// do nothing
return 0;
} else {
port0 = ~port0;
// We read all the pins on GPIOA.
// The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero.
// The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys.
// the pins connected to eact columns are sequential, but in reverse order, and counting from zero down (col 5 -> GPIO04, col6 -> GPIO03 and so on).
data |= (port0 & 0x01) << 4;
data |= (port0 & 0x02) << 2;
data |= (port0 & 0x04);
data |= (port0 & 0x08) >> 2;
data |= (port0 & 0x10) >> 4;
tca9555_status = I2C_STATUS_SUCCESS;
return data;
}
}
}
}
static void unselect_rows(void) {
// no need to unselect on tca9555, because the select step sets all
// the other row bits high, and it's not changing to a different
// direction
// unselect rows on microcontroller
pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L;
for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) {
pin_t pin = matrix_row_pins_mcu[pin_index];
gpio_set_pin_input_high(pin);
gpio_write_pin_low(pin);
}
}
static void select_row(uint8_t row) {
uint8_t port1 = 0xff;
if (row < MATRIX_ROWS_PER_SIDE) {
// select on atmega32u4
pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L;
pin_t pin = matrix_row_pins_mcu[row];
gpio_set_pin_output(pin);
gpio_write_pin_low(pin);
} else {
// select on tca9555
if (tca9555_status) { // if there was an error
// do nothing
} else {
switch(row) {
case 4: port1 &= ~(1 << 0); break;
case 5: port1 &= ~(1 << 1); break;
case 6: port1 &= ~(1 << 2); break;
case 7:
port1 &= ~(1 << 3);
break;
default: break;
}
tca9555_status = i2c_write_register(I2C_ADDR, OREGP1, &port1, 1, I2C_TIMEOUT);
// Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
// Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
}
}
}

View File

@@ -0,0 +1,24 @@
/* Copyright 2023 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 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 <https://www.gnu.org/licenses/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef RP_I2C_USE_I2C0
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C0 TRUE
#define RP_I2C_USE_I2C1 FALSE

View File

@@ -0,0 +1,26 @@
# 3W6HS
![3W6HS](https://i.imgur.com/CPxwGSt.jpeg)
The 3W6HS is a hotswap, RP2040, low profile, split keyboard with 36 keys, modified from 3W6 by weteor.
* Keyboard Maintainer: [beekeeb](https://github.com/beekeeb)
* Hardware Supported: RP2040
* Hardware Availability: [https://shop.beekeeb.com/](https://shop.beekeeb.com)
Make example for this keyboard (after setting up your build environment):
make beekeeb/3w6hs:default
Flashing example for this keyboard:
make beekeeb/3w6hs: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 enter the bootloader, follow these steps:
* Disconnect the keyboard from the computer.
* Locate the BOOT button, which is the top button on the left side of the keyboard.
* While holding down the BOOT button, connect the keyboard back to the computer.

View File

@@ -0,0 +1,3 @@
CUSTOM_MATRIX = lite
SRC += matrix.c
I2C_DRIVER_REQUIRED = yes

View File

@@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define CH_CFG_ST_RESOLUTION 16
#define CH_CFG_ST_FREQUENCY 10000
#include_next <chconf.h>

View File

@@ -0,0 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD2
#define BACKLIGHT_PWM_CHANNEL 2
#define BACKLIGHT_PAL_MODE 2

View File

@@ -0,0 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,408 @@
{
"manufacturer": "Chill",
"keyboard_name": "Ghoul",
"maintainer": "chillKB",
"url": "https://github.com/chillKB/ghoulTKL",
"backlight": {
"driver": "pwm",
"pin": "B3"
},
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"features": {
"backlight": true,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"indicators": {
"caps_lock": "B4",
"on_state": 0,
"scroll_lock": "B6"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "A6", "A5", "A15", "A1", "A0"],
"rows": ["B7", "B9", "B8", "A7", "A4", "A3"]
},
"processor": "STM32F072",
"usb": {
"device_version": "1.0.0",
"pid": "0xFC87",
"vid": "0xC01D"
},
"community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift", "tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift"],
"layout_aliases": {
"LAYOUT_all": "LAYOUT_tkl_ansi_split_bs_rshift"
},
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6.5, "y": 0},
{"matrix": [0, 7], "x": 7.5, "y": 0},
{"matrix": [0, 8], "x": 8.5, "y": 0},
{"matrix": [0, 9], "x": 9.5, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.25, "y": 0},
{"matrix": [0, 16], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.5},
{"matrix": [1, 2], "x": 2, "y": 1.5},
{"matrix": [1, 3], "x": 3, "y": 1.5},
{"matrix": [1, 4], "x": 4, "y": 1.5},
{"matrix": [1, 5], "x": 5, "y": 1.5},
{"matrix": [1, 6], "x": 6, "y": 1.5},
{"matrix": [1, 7], "x": 7, "y": 1.5},
{"matrix": [1, 8], "x": 8, "y": 1.5},
{"matrix": [1, 9], "x": 9, "y": 1.5},
{"matrix": [1, 10], "x": 10, "y": 1.5},
{"matrix": [1, 11], "x": 11, "y": 1.5},
{"matrix": [1, 12], "x": 12, "y": 1.5},
{"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
{"matrix": [1, 15], "x": 16.25, "y": 1.5},
{"matrix": [1, 16], "x": 17.25, "y": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.5},
{"matrix": [2, 2], "x": 2.5, "y": 2.5},
{"matrix": [2, 3], "x": 3.5, "y": 2.5},
{"matrix": [2, 4], "x": 4.5, "y": 2.5},
{"matrix": [2, 5], "x": 5.5, "y": 2.5},
{"matrix": [2, 6], "x": 6.5, "y": 2.5},
{"matrix": [2, 7], "x": 7.5, "y": 2.5},
{"matrix": [2, 8], "x": 8.5, "y": 2.5},
{"matrix": [2, 9], "x": 9.5, "y": 2.5},
{"matrix": [2, 10], "x": 10.5, "y": 2.5},
{"matrix": [2, 11], "x": 11.5, "y": 2.5},
{"matrix": [2, 12], "x": 12.5, "y": 2.5},
{"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
{"matrix": [2, 15], "x": 16.25, "y": 2.5},
{"matrix": [2, 16], "x": 17.25, "y": 2.5},
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.5},
{"matrix": [3, 2], "x": 2.75, "y": 3.5},
{"matrix": [3, 3], "x": 3.75, "y": 3.5},
{"matrix": [3, 4], "x": 4.75, "y": 3.5},
{"matrix": [3, 5], "x": 5.75, "y": 3.5},
{"matrix": [3, 6], "x": 6.75, "y": 3.5},
{"matrix": [3, 7], "x": 7.75, "y": 3.5},
{"matrix": [3, 8], "x": 8.75, "y": 3.5},
{"matrix": [3, 9], "x": 9.75, "y": 3.5},
{"matrix": [3, 10], "x": 10.75, "y": 3.5},
{"matrix": [3, 11], "x": 11.75, "y": 3.5},
{"matrix": [3, 12], "x": 12.75, "y": 3.5, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.5},
{"matrix": [4, 3], "x": 3.25, "y": 4.5},
{"matrix": [4, 4], "x": 4.25, "y": 4.5},
{"matrix": [4, 5], "x": 5.25, "y": 4.5},
{"matrix": [4, 6], "x": 6.25, "y": 4.5},
{"matrix": [4, 7], "x": 7.25, "y": 4.5},
{"matrix": [4, 8], "x": 8.25, "y": 4.5},
{"matrix": [4, 9], "x": 9.25, "y": 4.5},
{"matrix": [4, 10], "x": 10.25, "y": 4.5},
{"matrix": [4, 11], "x": 11.25, "y": 4.5},
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
{"matrix": [4, 15], "x": 16.25, "y": 4.5},
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25},
{"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25},
{"matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25},
{"matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25},
{"matrix": [5, 12], "x": 12.5, "y": 5.5, "w": 1.25},
{"matrix": [5, 13], "x": 13.75, "y": 5.5, "w": 1.25},
{"matrix": [5, 14], "x": 15.25, "y": 5.5},
{"matrix": [5, 15], "x": 16.25, "y": 5.5},
{"matrix": [5, 16], "x": 17.25, "y": 5.5}
]
},
"LAYOUT_tkl_ansi_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6.5, "y": 0},
{"matrix": [0, 7], "x": 7.5, "y": 0},
{"matrix": [0, 8], "x": 8.5, "y": 0},
{"matrix": [0, 9], "x": 9.5, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.25, "y": 0},
{"matrix": [0, 16], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.5},
{"matrix": [1, 2], "x": 2, "y": 1.5},
{"matrix": [1, 3], "x": 3, "y": 1.5},
{"matrix": [1, 4], "x": 4, "y": 1.5},
{"matrix": [1, 5], "x": 5, "y": 1.5},
{"matrix": [1, 6], "x": 6, "y": 1.5},
{"matrix": [1, 7], "x": 7, "y": 1.5},
{"matrix": [1, 8], "x": 8, "y": 1.5},
{"matrix": [1, 9], "x": 9, "y": 1.5},
{"matrix": [1, 10], "x": 10, "y": 1.5},
{"matrix": [1, 11], "x": 11, "y": 1.5},
{"matrix": [1, 12], "x": 12, "y": 1.5},
{"matrix": [1, 13], "x": 13, "y": 1.5},
{"matrix": [3, 13], "x": 14, "y": 1.5},
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
{"matrix": [1, 15], "x": 16.25, "y": 1.5},
{"matrix": [1, 16], "x": 17.25, "y": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.5},
{"matrix": [2, 2], "x": 2.5, "y": 2.5},
{"matrix": [2, 3], "x": 3.5, "y": 2.5},
{"matrix": [2, 4], "x": 4.5, "y": 2.5},
{"matrix": [2, 5], "x": 5.5, "y": 2.5},
{"matrix": [2, 6], "x": 6.5, "y": 2.5},
{"matrix": [2, 7], "x": 7.5, "y": 2.5},
{"matrix": [2, 8], "x": 8.5, "y": 2.5},
{"matrix": [2, 9], "x": 9.5, "y": 2.5},
{"matrix": [2, 10], "x": 10.5, "y": 2.5},
{"matrix": [2, 11], "x": 11.5, "y": 2.5},
{"matrix": [2, 12], "x": 12.5, "y": 2.5},
{"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
{"matrix": [2, 15], "x": 16.25, "y": 2.5},
{"matrix": [2, 16], "x": 17.25, "y": 2.5},
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.5},
{"matrix": [3, 2], "x": 2.75, "y": 3.5},
{"matrix": [3, 3], "x": 3.75, "y": 3.5},
{"matrix": [3, 4], "x": 4.75, "y": 3.5},
{"matrix": [3, 5], "x": 5.75, "y": 3.5},
{"matrix": [3, 6], "x": 6.75, "y": 3.5},
{"matrix": [3, 7], "x": 7.75, "y": 3.5},
{"matrix": [3, 8], "x": 8.75, "y": 3.5},
{"matrix": [3, 9], "x": 9.75, "y": 3.5},
{"matrix": [3, 10], "x": 10.75, "y": 3.5},
{"matrix": [3, 11], "x": 11.75, "y": 3.5},
{"matrix": [3, 12], "x": 12.75, "y": 3.5, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.5},
{"matrix": [4, 3], "x": 3.25, "y": 4.5},
{"matrix": [4, 4], "x": 4.25, "y": 4.5},
{"matrix": [4, 5], "x": 5.25, "y": 4.5},
{"matrix": [4, 6], "x": 6.25, "y": 4.5},
{"matrix": [4, 7], "x": 7.25, "y": 4.5},
{"matrix": [4, 8], "x": 8.25, "y": 4.5},
{"matrix": [4, 9], "x": 9.25, "y": 4.5},
{"matrix": [4, 10], "x": 10.25, "y": 4.5},
{"matrix": [4, 11], "x": 11.25, "y": 4.5},
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
{"matrix": [4, 13], "x": 14, "y": 4.5},
{"matrix": [4, 15], "x": 16.25, "y": 4.5},
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25},
{"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25},
{"matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25},
{"matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25},
{"matrix": [5, 12], "x": 12.5, "y": 5.5, "w": 1.25},
{"matrix": [5, 13], "x": 13.75, "y": 5.5, "w": 1.25},
{"matrix": [5, 14], "x": 15.25, "y": 5.5},
{"matrix": [5, 15], "x": 16.25, "y": 5.5},
{"matrix": [5, 16], "x": 17.25, "y": 5.5}
]
},
"LAYOUT_tkl_ansi_tsangan": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6.5, "y": 0},
{"matrix": [0, 7], "x": 7.5, "y": 0},
{"matrix": [0, 8], "x": 8.5, "y": 0},
{"matrix": [0, 9], "x": 9.5, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.25, "y": 0},
{"matrix": [0, 16], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.5},
{"matrix": [1, 2], "x": 2, "y": 1.5},
{"matrix": [1, 3], "x": 3, "y": 1.5},
{"matrix": [1, 4], "x": 4, "y": 1.5},
{"matrix": [1, 5], "x": 5, "y": 1.5},
{"matrix": [1, 6], "x": 6, "y": 1.5},
{"matrix": [1, 7], "x": 7, "y": 1.5},
{"matrix": [1, 8], "x": 8, "y": 1.5},
{"matrix": [1, 9], "x": 9, "y": 1.5},
{"matrix": [1, 10], "x": 10, "y": 1.5},
{"matrix": [1, 11], "x": 11, "y": 1.5},
{"matrix": [1, 12], "x": 12, "y": 1.5},
{"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
{"matrix": [1, 15], "x": 16.25, "y": 1.5},
{"matrix": [1, 16], "x": 17.25, "y": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.5},
{"matrix": [2, 2], "x": 2.5, "y": 2.5},
{"matrix": [2, 3], "x": 3.5, "y": 2.5},
{"matrix": [2, 4], "x": 4.5, "y": 2.5},
{"matrix": [2, 5], "x": 5.5, "y": 2.5},
{"matrix": [2, 6], "x": 6.5, "y": 2.5},
{"matrix": [2, 7], "x": 7.5, "y": 2.5},
{"matrix": [2, 8], "x": 8.5, "y": 2.5},
{"matrix": [2, 9], "x": 9.5, "y": 2.5},
{"matrix": [2, 10], "x": 10.5, "y": 2.5},
{"matrix": [2, 11], "x": 11.5, "y": 2.5},
{"matrix": [2, 12], "x": 12.5, "y": 2.5},
{"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
{"matrix": [2, 15], "x": 16.25, "y": 2.5},
{"matrix": [2, 16], "x": 17.25, "y": 2.5},
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.5},
{"matrix": [3, 2], "x": 2.75, "y": 3.5},
{"matrix": [3, 3], "x": 3.75, "y": 3.5},
{"matrix": [3, 4], "x": 4.75, "y": 3.5},
{"matrix": [3, 5], "x": 5.75, "y": 3.5},
{"matrix": [3, 6], "x": 6.75, "y": 3.5},
{"matrix": [3, 7], "x": 7.75, "y": 3.5},
{"matrix": [3, 8], "x": 8.75, "y": 3.5},
{"matrix": [3, 9], "x": 9.75, "y": 3.5},
{"matrix": [3, 10], "x": 10.75, "y": 3.5},
{"matrix": [3, 11], "x": 11.75, "y": 3.5},
{"matrix": [3, 12], "x": 12.75, "y": 3.5, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.5},
{"matrix": [4, 3], "x": 3.25, "y": 4.5},
{"matrix": [4, 4], "x": 4.25, "y": 4.5},
{"matrix": [4, 5], "x": 5.25, "y": 4.5},
{"matrix": [4, 6], "x": 6.25, "y": 4.5},
{"matrix": [4, 7], "x": 7.25, "y": 4.5},
{"matrix": [4, 8], "x": 8.25, "y": 4.5},
{"matrix": [4, 9], "x": 9.25, "y": 4.5},
{"matrix": [4, 10], "x": 10.25, "y": 4.5},
{"matrix": [4, 11], "x": 11.25, "y": 4.5},
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
{"matrix": [4, 15], "x": 16.25, "y": 4.5},
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
{"matrix": [5, 1], "x": 1.5, "y": 5.5},
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5},
{"matrix": [5, 6], "x": 4, "y": 5.5, "w": 7},
{"matrix": [5, 11], "x": 11, "y": 5.5, "w": 1.5},
{"matrix": [5, 12], "x": 12.5, "y": 5.5},
{"matrix": [5, 13], "x": 13.5, "y": 5.5, "w": 1.5},
{"matrix": [5, 14], "x": 15.25, "y": 5.5},
{"matrix": [5, 15], "x": 16.25, "y": 5.5},
{"matrix": [5, 16], "x": 17.25, "y": 5.5}
]
},
"LAYOUT_tkl_ansi_tsangan_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6.5, "y": 0},
{"matrix": [0, 7], "x": 7.5, "y": 0},
{"matrix": [0, 8], "x": 8.5, "y": 0},
{"matrix": [0, 9], "x": 9.5, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.25, "y": 0},
{"matrix": [0, 16], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.5},
{"matrix": [1, 2], "x": 2, "y": 1.5},
{"matrix": [1, 3], "x": 3, "y": 1.5},
{"matrix": [1, 4], "x": 4, "y": 1.5},
{"matrix": [1, 5], "x": 5, "y": 1.5},
{"matrix": [1, 6], "x": 6, "y": 1.5},
{"matrix": [1, 7], "x": 7, "y": 1.5},
{"matrix": [1, 8], "x": 8, "y": 1.5},
{"matrix": [1, 9], "x": 9, "y": 1.5},
{"matrix": [1, 10], "x": 10, "y": 1.5},
{"matrix": [1, 11], "x": 11, "y": 1.5},
{"matrix": [1, 12], "x": 12, "y": 1.5},
{"matrix": [1, 13], "x": 13, "y": 1.5},
{"matrix": [3, 13], "x": 14, "y": 1.5},
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
{"matrix": [1, 15], "x": 16.25, "y": 1.5},
{"matrix": [1, 16], "x": 17.25, "y": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.5},
{"matrix": [2, 2], "x": 2.5, "y": 2.5},
{"matrix": [2, 3], "x": 3.5, "y": 2.5},
{"matrix": [2, 4], "x": 4.5, "y": 2.5},
{"matrix": [2, 5], "x": 5.5, "y": 2.5},
{"matrix": [2, 6], "x": 6.5, "y": 2.5},
{"matrix": [2, 7], "x": 7.5, "y": 2.5},
{"matrix": [2, 8], "x": 8.5, "y": 2.5},
{"matrix": [2, 9], "x": 9.5, "y": 2.5},
{"matrix": [2, 10], "x": 10.5, "y": 2.5},
{"matrix": [2, 11], "x": 11.5, "y": 2.5},
{"matrix": [2, 12], "x": 12.5, "y": 2.5},
{"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
{"matrix": [2, 15], "x": 16.25, "y": 2.5},
{"matrix": [2, 16], "x": 17.25, "y": 2.5},
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.5},
{"matrix": [3, 2], "x": 2.75, "y": 3.5},
{"matrix": [3, 3], "x": 3.75, "y": 3.5},
{"matrix": [3, 4], "x": 4.75, "y": 3.5},
{"matrix": [3, 5], "x": 5.75, "y": 3.5},
{"matrix": [3, 6], "x": 6.75, "y": 3.5},
{"matrix": [3, 7], "x": 7.75, "y": 3.5},
{"matrix": [3, 8], "x": 8.75, "y": 3.5},
{"matrix": [3, 9], "x": 9.75, "y": 3.5},
{"matrix": [3, 10], "x": 10.75, "y": 3.5},
{"matrix": [3, 11], "x": 11.75, "y": 3.5},
{"matrix": [3, 12], "x": 12.75, "y": 3.5, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.5},
{"matrix": [4, 3], "x": 3.25, "y": 4.5},
{"matrix": [4, 4], "x": 4.25, "y": 4.5},
{"matrix": [4, 5], "x": 5.25, "y": 4.5},
{"matrix": [4, 6], "x": 6.25, "y": 4.5},
{"matrix": [4, 7], "x": 7.25, "y": 4.5},
{"matrix": [4, 8], "x": 8.25, "y": 4.5},
{"matrix": [4, 9], "x": 9.25, "y": 4.5},
{"matrix": [4, 10], "x": 10.25, "y": 4.5},
{"matrix": [4, 11], "x": 11.25, "y": 4.5},
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
{"matrix": [4, 13], "x": 14, "y": 4.5},
{"matrix": [4, 15], "x": 16.25, "y": 4.5},
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
{"matrix": [5, 1], "x": 1.5, "y": 5.5},
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5},
{"matrix": [5, 6], "x": 4, "y": 5.5, "w": 7},
{"matrix": [5, 11], "x": 11, "y": 5.5, "w": 1.5},
{"matrix": [5, 12], "x": 12.5, "y": 5.5},
{"matrix": [5, 13], "x": 13.5, "y": 5.5, "w": 1.5},
{"matrix": [5, 14], "x": 15.25, "y": 5.5},
{"matrix": [5, 15], "x": 16.25, "y": 5.5},
{"matrix": [5, 16], "x": 17.25, "y": 5.5}
]
}
}
}

View File

@@ -0,0 +1,24 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
_______, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, _______, _______, _______, KC_SLEP, _______, _______, _______,
BL_TOGG, BL_UP, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE
#undef STM32_ST_USE_TIMER
#define STM32_ST_USE_TIMER 14

View File

@@ -0,0 +1,27 @@
# Ghoul TKL
![image](https://i.imgur.com/Y39mNA4.jpeg)
A modern replacement PCB for Filco TKLs, adding support for PCB-mount stabilizers and popular alternate layouts. In-switch backlight LEDs are also supported.
* Keyboard Maintainer: [chillKB](https://github.com/chillKB)
* Hardware Supported: Ghoul TKL PCB
* Hardware Availability: [Open source on GitHub](https://github.com/chillKB/ghoulTKL)
Make example for this keyboard (after setting up your build environment):
make chill/ghoul:default
Flashing example for this keyboard:
make chill/ghoul:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key (usually Escape) and plug in the keyboard
* **Physical reset button**: Hold the boot button and tap the reset button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -6,7 +6,7 @@ This is a standard off-the-shelf Durgod Taurus K310 full-sized 104/105-key
keyboard without backlight. This supports both the ANSI and ISO variants.
* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
* Hardware Supported: [Durgod Taurus K310 board with STM32F070RBT6](https://www.durgod.com/page9?product_id=53&_l=en "Durgod.com Product Page")
* Hardware Supported: [Durgod Taurus K310 board with STM32F070RBT6](https://www.durgod.com/product/k310-space-gray/)
* Hardware Availability: [Amazon.com](https://www.amazon.com/Durgod-Taurus-K310-Mechanical-Keyboard/dp/B07TXB4XF3)
## Instructions

View File

@@ -6,7 +6,7 @@ This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key)
keyboard without backlight. This supports both the ANSI and ISO variants.
* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
* Hardware Supported: [Durgod Taurus K320 board with STM32F070RBT6](https://www.durgod.com/page9?product_id=47&_l=en "Durgod.com Product Page")
* Hardware Supported: [Durgod Taurus K320 board with STM32F070RBT6](https://www.durgod.com/product/k320-space-gray/)
* Hardware Availability: [Amazon.com](https://www.amazon.com/Durgod-Taurus-Corona-Mechanical-Keyboard/dp/B078H3WPHM)
## Instructions
@@ -15,11 +15,11 @@ keyboard without backlight. This supports both the ANSI and ISO variants.
Make command example for this keyboard (after setting up your build environment):
make durgod/k3x0/k320/base:default
make durgod/k320/base:default
Flashing example for this keyboard:
make durgod/k3x0/k320/base:default:flash
make durgod/k320/base: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).

View File

@@ -5,8 +5,8 @@ K310 full-sized 104/105-key and K320 TKL 87/88-key keyboards.
* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
* Hardware Supported:
* [Durgod Taurus K310 with STM32F070RBT6](https://www.durgod.com/page9?product_id=53&_l=en "Taurus K310 Product Page | Durgod.com")
* [Durgod Taurus K320 with STM32F070RBT6](https://www.durgod.com/page9?product_id=47&_l=en "Taurus K320 Product Page | Durgod.com")
* [Durgod Taurus K310 with STM32F070RBT6](https://www.durgod.com/product/k310-space-gray/)
* [Durgod Taurus K320 with STM32F070RBT6](https://www.durgod.com/product/k320-space-gray/)
* Hardware Availability:
* [K310 on Amazon.com](https://www.amazon.com/Durgod-Taurus-K310-Mechanical-Keyboard/dp/B07TXB4XF3)
* [K320 on Amazon.com](https://www.amazon.com/Durgod-Taurus-Corona-Mechanical-Keyboard/dp/B078H3WPHM)
@@ -16,8 +16,8 @@ K310 full-sized 104/105-key and K320 TKL 87/88-key keyboards.
### Build
Instructions for building the K310 and K320 firmware can be found here:
* [K310](k310/readme.md)
* [K320](k320/readme.md)
* [K310](../k310/readme.md)
* [K320](../k320/readme.md)
### Initial Flash
@@ -67,10 +67,10 @@ dfu-util -a 0 -d 0483:DF11 -s 0x08000000 -U k3x0_original.bin
```bash
# k310
qmk flash -kb durgod/k3x0/k310 -km default
qmk flash -kb durgod/k310 -km default
# k320
qmk flash -kb durgod/k3x0/k320 -km default
qmk flash -kb durgod/k320 -km default
```
### Subsequent Flashing

View File

@@ -0,0 +1,137 @@
{
"keyboard_name": "Dactyl-Manuform (5x8)",
"manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
"usb": {
"vid": "0x444D",
"pid": "0x3537",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
},
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"matrix_pins": {
"cols": ["B6", "B2", "B3", "B1", "F7", "F6", "F5", "F4"],
"rows": ["D4", "C6", "D7", "E6", "B4", "B5"]
},
"diode_direction": "COL2ROW",
"split": {
"enabled": true,
"serial": {
"pin": "D0"
}
},
"development_board": "promicro",
"layouts": {
"LAYOUT_5x8": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.5},
{"matrix": [0, 1], "x": 1, "y": 0.5},
{"matrix": [0, 2], "x": 2, "y": 0.5},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [6, 7], "x": 17, "y": 0.5},
{"matrix": [6, 6], "x": 16, "y": 0.5},
{"matrix": [6, 5], "x": 15, "y": 0.5},
{"matrix": [6, 4], "x": 14, "y": 0},
{"matrix": [6, 3], "x": 13, "y": 0},
{"matrix": [6, 2], "x": 12, "y": 0},
{"matrix": [6, 1], "x": 11, "y": 0},
{"matrix": [6, 0], "x": 10, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1.5},
{"matrix": [1, 2], "x": 2, "y": 1.5},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1},
{"matrix": [1, 5], "x": 5, "y": 1},
{"matrix": [1, 6], "x": 6, "y": 1},
{"matrix": [1, 7], "x": 7, "y": 1},
{"matrix": [7, 7], "x": 17, "y": 1.5},
{"matrix": [7, 6], "x": 16, "y": 1.5},
{"matrix": [7, 5], "x": 15, "y": 1.5},
{"matrix": [7, 4], "x": 14, "y": 1},
{"matrix": [7, 3], "x": 13, "y": 1},
{"matrix": [7, 2], "x": 12, "y": 1},
{"matrix": [7, 1], "x": 11, "y": 1},
{"matrix": [7, 0], "x": 10, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2.5},
{"matrix": [2, 1], "x": 1, "y": 2.5},
{"matrix": [2, 2], "x": 2, "y": 2.5},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2},
{"matrix": [2, 5], "x": 5, "y": 2},
{"matrix": [2, 6], "x": 6, "y": 2},
{"matrix": [2, 7], "x": 7, "y": 2},
{"matrix": [8, 7], "x": 17, "y": 2.5},
{"matrix": [8, 6], "x": 16, "y": 2.5},
{"matrix": [8, 5], "x": 15, "y": 2.5},
{"matrix": [8, 4], "x": 14, "y": 2},
{"matrix": [8, 3], "x": 13, "y": 2},
{"matrix": [8, 2], "x": 12, "y": 2},
{"matrix": [8, 1], "x": 11, "y": 2},
{"matrix": [8, 0], "x": 10, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3.5},
{"matrix": [3, 1], "x": 1, "y": 3.5},
{"matrix": [3, 2], "x": 2, "y": 3.5},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3},
{"matrix": [3, 5], "x": 5, "y": 3},
{"matrix": [3, 6], "x": 6, "y": 3},
{"matrix": [9, 6], "x": 17, "y": 3.5},
{"matrix": [9, 5], "x": 16, "y": 3.5},
{"matrix": [9, 4], "x": 15, "y": 3.5},
{"matrix": [9, 3], "x": 14, "y": 3},
{"matrix": [9, 2], "x": 13, "y": 3},
{"matrix": [9, 1], "x": 12, "y": 3},
{"matrix": [9, 0], "x": 11, "y": 3},
{"matrix": [4, 1], "x": 1, "y": 4.5},
{"matrix": [4, 2], "x": 2, "y": 4.5},
{"matrix": [4, 3], "x": 3, "y": 4},
{"matrix": [4, 4], "x": 4, "y": 4},
{"matrix": [10, 4], "x": 14, "y": 4},
{"matrix": [10, 3], "x": 13, "y": 4},
{"matrix": [10, 2], "x": 12, "y": 5},
{"matrix": [10, 1], "x": 11, "y": 5},
{"matrix": [4, 5], "x": 4.5, "y": 5},
{"matrix": [4, 6], "x": 5.5, "y": 5},
{"matrix": [10, 6], "x": 14.5, "y": 4.5},
{"matrix": [10, 5], "x": 15.5, "y": 4.5},
{"matrix": [5, 5], "x": 5, "y": 6},
{"matrix": [5, 6], "x": 6, "y": 6},
{"matrix": [11, 6], "x": 12, "y": 6},
{"matrix": [11, 5], "x": 11, "y": 6},
{"matrix": [5, 3], "x": 5, "y": 7},
{"matrix": [5, 4], "x": 6, "y": 7},
{"matrix": [11, 4], "x": 12, "y": 7},
{"matrix": [11, 3], "x": 11, "y": 7}
]
}
}
}

View File

@@ -0,0 +1,84 @@
/* Copyright 2024 Philip Slinkin (s.philya@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers {
_QWERTY,
_RIGHT2LEFT
};
/* Base (qwerty)
* ,-------------------------------------------------------, ,-------------------------------------------------------,
* | Esc | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | \ | BS |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
* |M_RSTP| Tab | q | w | e | r | t |QKBOOT| | F8 | y | u | i | o | p | [ | ] |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
* |M_REC1| Caps | a | s | d | f | g | F7 | | F9 | h | j | k | l | ; | " |ENTER |
* |------+------+------+------+------+------+------+------' '------+------+------+------+------+------+------+------|
* |M_REC2| Shift| z | x | c | v | b | | n | m | , | . | / |Shift | Ctrl |
* '------+------+------+------+------+------+------' '------+------+------+------+------+------+------'
* | Ctrl | Wint | Alt | INS | | Up | Down | Left | Right|
* '------+------+------+------+------, ,------+------+------+------+------'
* | TT(1)|SPACE | | SPACE| BS |
* '------+------+------' ,------+------+------'
* | ESC |ENTER | | HOME | END |
* '------+------' '------+------'
* | DEL | F2 | | PGUP | PGDN |
* '------+------' '------+------'
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_5x8(
KC_ESC, 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,
DM_RSTP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, QK_BOOT, KC_F8, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
DM_REC1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F7, KC_F9, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
DM_REC2, 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_RCTL,
KC_LCTL, KC_LGUI, KC_LALT, KC_INS, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT,
TT(1), KC_SPC, KC_SPC, KC_BSPC,
KC_ESC, KC_ENT, KC_HOME, KC_END,
KC_DEL, KC_F2, KC_PGUP, KC_PGDN
),
/* Base (right to left on hold button)
* ,-------------------------------------------------------, ,-------------------------------------------------------,
* | BS | \ | = | - | 0 | 9 | 8 | 7 | | | | | | | | | |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
* | [ | ] | p | o | i | u | y |QKBOOT| | | | | | | | | |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
* |M_PLY1| " | ; | l | k | j | h |PRSCRN| | | | Left | Down | Up | Right| |ENTER |
* |------+------+------+------+------+------+------+------' '------+------+------+------+------+------+------+------|
* |M_PLY2|MShift| / | . | , | m | n | | | | | | | | |
* |------+------+------+------+------+------+------' '------+------+------+------+------+------+------'
* |MCtrl | MAlt | DEL | BS | | | | | |
* '------+------+------+------+------, ,------+------+------+------+------'
* | |SPACE | | SPACE| BS |
* '------+------+------' ,------+------+------'
* | END |ENTER | | HOME | END |
* '------+------' '------+------'
* | PGDN | PGUP | | PGUP | PGDN |
* '------+------' '------+------'
*/
[_RIGHT2LEFT] = LAYOUT_5x8(
KC_BSPC, KC_BSLS, KC_EQL, KC_MINS, KC_0, KC_9, KC_8, KC_7, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC,
KC_RBRC, KC_LBRC, KC_P, KC_O, KC_I, KC_U, KC_Y, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
DM_PLY1, KC_QUOT, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_PSCR, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_SCLN, KC_NO, KC_ENT,
DM_PLY2, OSM(MOD_LSFT), KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
OSM(MOD_LCTL), OSM(MOD_LALT), KC_DEL, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_SPC, KC_SPC, KC_BSPC,
KC_ESC, KC_ENT, KC_HOME, KC_END,
KC_DEL, KC_F2, KC_PGUP, KC_PGDN
),
};

View File

@@ -0,0 +1 @@
DYNAMIC_MACRO_ENABLE = yes

View File

@@ -0,0 +1,25 @@
# handwired/dactyl_manuform/5x8
![Dactyl_manuform 5x8](https://i.imgur.com/DtawD9r.jpeg)
* Keyboard Maintainer: [iliorik](https://github.com/iliorik)
I made this keyboard so that the buttons on the right side of the right half would replicate the standard keyboard.
I put macros on the left buttons of the left side keyboard for rec and play keypresses
Make example for this keyboard (after setting up your build environment):
make handwired/dactyl_manuform/5x8:default
Flashing example for this keyboard:
make handwired/dactyl_manuform/5x8:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 2 ways:
* **Keycode in layout**: Press the key mapped to `QK_BOOT`
* **Reset pro micro**: Connect RST and GND pins on plate

View File

@@ -8,3 +8,7 @@
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
#define SOLENOID_PIN B12
#define SOLENOID_PINS { B12, B13, B14, B15 }
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }

View File

@@ -0,0 +1 @@
MCU_LDSCRIPT = AT32F415xC

View File

@@ -119,8 +119,7 @@
"solid_reactive_multinexus": true,
"solid_splash": true,
"wave_left_right": true,
"wave_up_down": true,
"effect_max": true
"wave_up_down": true
},
"layout": [
{"matrix":[0, 0], "flags":1, "x":0, "y":0},

View File

@@ -136,8 +136,7 @@
"solid_reactive_multinexus": true,
"solid_splash": true,
"wave_left_right": true,
"wave_up_down": true,
"effect_max": true
"wave_up_down": true
},
"layout": [
{"matrix":[0, 0], "flags":1, "x":0, "y":0},

View File

@@ -0,0 +1,315 @@
{
"keyboard_name": "shu89",
"manufacturer": "shuguet",
"url": "https://github.com/shuguet/split89",
"maintainer": "shuguet",
"usb": {
"vid": "0x5348",
"pid": "0x0001",
"device_version": "0.0.1"
},
"features": {
"rgb_matrix": true,
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["GP19", "GP20", "GP18", "GP17", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10"],
"rows": ["GP1", "GP2", "GP3", "GP4", "GP5", "GP6"]
},
"ws2812": {
"driver": "vendor",
"pin": "GP7"
},
"diode_direction": "COL2ROW",
"split": {
"enabled": true,
"serial": {
"driver": "vendor",
"pin": "GP9"
},
"handedness": {
"pin": "GP0"
},
"matrix_pins": {
"right": {
"cols": ["GP19", "GP20", "GP18", "GP17", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10"],
"rows": ["GP6", "GP5", "GP4", "GP3", "GP2", "GP1"]
}
}
},
"processor": "RP2040",
"bootloader": "rp2040",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "Esc", "matrix": [0, 4], "x": 0, "y": 0},
{"label": "F1", "matrix": [0, 5], "x": 2, "y": 0},
{"label": "F2", "matrix": [0, 6], "x": 3, "y": 0},
{"label": "F3", "matrix": [0, 7], "x": 4, "y": 0},
{"label": "F4", "matrix": [0, 8], "x": 5, "y": 0},
{"label": "F5", "matrix": [0, 9], "x": 6, "y": 0},
{"label": "F6", "matrix": [6, 0], "x": 10, "y": 0},
{"label": "F7", "matrix": [6, 1], "x": 11, "y": 0},
{"label": "F8", "matrix": [6, 2], "x": 12, "y": 0},
{"label": "F9", "matrix": [6, 3], "x": 13.5, "y": 0},
{"label": "F10", "matrix": [6, 4], "x": 14.5, "y": 0},
{"label": "F11", "matrix": [6, 5], "x": 15.5, "y": 0},
{"label": "F12", "matrix": [6, 6], "x": 16.5, "y": 0},
{"label": "PrtSc", "matrix": [6, 7], "x": 17.75, "y": 0},
{"label": "Scroll Lock", "matrix": [6, 8], "x": 18.75, "y": 0},
{"label": "Pause", "matrix": [6, 9], "x": 19.75, "y": 0},
{"label": "~", "matrix": [2, 4], "x": 0, "y": 1.5},
{"label": "1!", "matrix": [1, 4], "x": 1, "y": 1.5},
{"label": "2@", "matrix": [1, 5], "x": 2, "y": 1.5},
{"label": "3#", "matrix": [1, 6], "x": 3, "y": 1.5},
{"label": "4$", "matrix": [1, 7], "x": 4, "y": 1.5},
{"label": "5%", "matrix": [1, 8], "x": 5, "y": 1.5},
{"label": "6^", "matrix": [1, 9], "x": 6, "y": 1.5},
{"label": "7&", "matrix": [7, 0], "x": 9.5, "y": 1.5},
{"label": "8*", "matrix": [7, 1], "x": 10.5, "y": 1.5},
{"label": "9(", "matrix": [7, 2], "x": 11.5, "y": 1.5},
{"label": "0)", "matrix": [7, 3], "x": 12.5, "y": 1.5},
{"label": "-_", "matrix": [7, 4], "x": 13.5, "y": 1.5},
{"label": "=+", "matrix": [7, 5], "x": 14.5, "y": 1.5},
{"label": "Backspace", "matrix": [7, 6], "x": 15.5, "y": 1.5, "w": 2},
{"label": "Insert", "matrix": [7, 7], "x": 17.75, "y": 1.5},
{"label": "Home", "matrix": [7, 8], "x": 18.75, "y": 1.5},
{"label": "PgUp", "matrix": [7, 9], "x": 19.75, "y": 1.5},
{"label": "Tab", "matrix": [3, 4], "x": 0, "y": 2.5, "w": 1.5},
{"label": "Q", "matrix": [2, 5], "x": 1.5, "y": 2.5},
{"label": "W", "matrix": [2, 6], "x": 2.5, "y": 2.5},
{"label": "E", "matrix": [2, 7], "x": 3.5, "y": 2.5},
{"label": "R", "matrix": [2, 8], "x": 4.5, "y": 2.5},
{"label": "T", "matrix": [2, 9], "x": 5.5, "y": 2.5},
{"label": "Y", "matrix": [9, 0], "x": 9, "y": 2.5},
{"label": "U", "matrix": [8, 0], "x": 10, "y": 2.5},
{"label": "I", "matrix": [8, 1], "x": 11, "y": 2.5},
{"label": "O", "matrix": [8, 2], "x": 12, "y": 2.5},
{"label": "P", "matrix": [8, 3], "x": 13, "y": 2.5},
{"label": "{", "matrix": [8, 4], "x": 14, "y": 2.5},
{"label": "}", "matrix": [8, 5], "x": 15, "y": 2.5},
{"label": "|", "matrix": [8, 6], "x": 16, "y": 2.5, "w": 1.5},
{"label": "Delete", "matrix": [8, 7], "x": 17.75, "y": 2.5},
{"label": "End", "matrix": [8, 8], "x": 18.75, "y": 2.5},
{"label": "PgDn", "matrix": [8, 9], "x": 19.75, "y": 2.5},
{"label": "Caps Lock", "matrix": [4, 4], "x": 0, "y": 3.5, "w": 1.75},
{"label": "A", "matrix": [3, 5], "x": 1.75, "y": 3.5},
{"label": "S", "matrix": [3, 6], "x": 2.75, "y": 3.5},
{"label": "D", "matrix": [3, 7], "x": 3.75, "y": 3.5},
{"label": "F", "matrix": [3, 8], "x": 4.75, "y": 3.5},
{"label": "G", "matrix": [3, 9], "x": 5.75, "y": 3.5},
{"label": "H", "matrix": [10, 0], "x": 9.25, "y": 3.5},
{"label": "J", "matrix": [9, 1], "x": 10.25, "y": 3.5},
{"label": "K", "matrix": [9, 2], "x": 11.25, "y": 3.5},
{"label": "L", "matrix": [9, 3], "x": 12.25, "y": 3.5},
{"label": ":", "matrix": [9, 4], "x": 13.25, "y": 3.5},
{"label": "\"", "matrix": [9, 5], "x": 14.25, "y": 3.5},
{"label": "Enter", "matrix": [9, 6], "x": 15.25, "y": 3.5, "w": 2.25},
{"label": "Left Shift", "matrix": [5, 4], "x": 0, "y": 4.5, "w": 2.25},
{"label": "Z", "matrix": [4, 5], "x": 2.25, "y": 4.5},
{"label": "X", "matrix": [4, 6], "x": 3.25, "y": 4.5},
{"label": "C", "matrix": [4, 7], "x": 4.25, "y": 4.5},
{"label": "V", "matrix": [4, 8], "x": 5.25, "y": 4.5},
{"label": "B", "matrix": [4, 9], "x": 6.25, "y": 4.5},
{"label": "N", "matrix": [11, 0], "x": 9.75, "y": 4.5},
{"label": "M", "matrix": [10, 1], "x": 10.75, "y": 4.5},
{"label": "<", "matrix": [10, 2], "x": 11.75, "y": 4.5},
{"label": ">", "matrix": [10, 3], "x": 12.75, "y": 4.5},
{"label": "?", "matrix": [10, 4], "x": 13.75, "y": 4.5},
{"label": "Right Shift", "matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 2.75},
{"label": "Up", "matrix": [10, 8], "x": 18.75, "y": 4.5},
{"label": "Left Ctrl", "matrix": [5, 5], "x": 0, "y": 5.5, "w": 1.25},
{"label": "Fn", "matrix": [5, 6], "x": 1.25, "y": 5.5, "w": 1.25},
{"label": "Left Alt", "matrix": [5, 7], "x": 2.5, "y": 5.5, "w": 1.25},
{"label": "Left Win", "matrix": [5, 8], "x": 3.75, "y": 5.5, "w": 1.25},
{"label": "Left Space", "matrix": [5, 9], "x": 5, "y": 5.5, "w": 2.25},
{"label": "Right Space", "matrix": [11, 1], "x": 9.75, "y": 5.5, "w": 2.75},
{"label": "Right Alt", "matrix": [11, 3], "x": 12.5, "y": 5.5, "w": 1.25},
{"label": "Right Win", "matrix": [11, 4], "x": 13.75, "y": 5.5, "w": 1.25},
{"label": "Menu", "matrix": [11, 5], "x": 15, "y": 5.5, "w": 1.25},
{"label": "Right Ctrl", "matrix": [11, 6], "x": 16.25, "y": 5.5, "w": 1.25},
{"label": "Left", "matrix": [11, 7], "x": 17.75, "y": 5.5},
{"label": "Down", "matrix": [11, 8], "x": 18.75, "y": 5.5},
{"label": "Right", "matrix": [11, 9], "x": 19.75, "y": 5.5}
]
}
},
"rgb_matrix": {
"driver": "ws2812",
"split_count": [ 36, 53 ],
"default": {
"hue": 85,
"val": 128
},
"animations": {
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"rainbow_moving_chevron": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"rainbow_pinwheels": true,
"flower_blooming": true,
"raindrops": true,
"jellybean_raindrops": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"pixel_fractal": true,
"pixel_flow": true,
"pixel_rain": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
"solid_reactive_multiwide": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_nexus": true,
"solid_reactive_multinexus": true,
"splash": true,
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true,
"starlight": true,
"starlight_dual_hue": true,
"starlight_dual_sat": true,
"riverflow": true
},
"layout": [
{"matrix": [0, 4], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 32, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 48, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 64, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 80, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 104, "y": 0, "flags": 4},
{"matrix": [1, 4], "x": 16, "y": 13, "flags": 4},
{"matrix": [1, 5], "x": 32, "y": 13, "flags": 4},
{"matrix": [1, 6], "x": 48, "y": 13, "flags": 4},
{"matrix": [1, 7], "x": 64, "y": 13, "flags": 4},
{"matrix": [1, 8], "x": 80, "y": 13, "flags": 4},
{"matrix": [1, 9], "x": 96, "y": 13, "flags": 4},
{"matrix": [2, 4], "x": 0, "y": 13, "flags": 4},
{"matrix": [2, 5], "x": 20, "y": 26, "flags": 4},
{"matrix": [2, 6], "x": 36, "y": 26, "flags": 4},
{"matrix": [2, 7], "x": 52, "y": 26, "flags": 4},
{"matrix": [2, 8], "x": 68, "y": 26, "flags": 4},
{"matrix": [2, 9], "x": 84, "y": 26, "flags": 4},
{"matrix": [3, 4], "x": 0, "y": 26, "flags": 4},
{"matrix": [3, 5], "x": 24, "y": 39, "flags": 4},
{"matrix": [3, 6], "x": 40, "y": 39, "flags": 4},
{"matrix": [3, 7], "x": 56, "y": 39, "flags": 4},
{"matrix": [3, 8], "x": 72, "y": 39, "flags": 4},
{"matrix": [3, 9], "x": 88, "y": 39, "flags": 4},
{"matrix": [4, 4], "x": 0, "y": 39, "flags": 5},
{"matrix": [4, 5], "x": 28, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 44, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 60, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 76, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 92, "y": 51, "flags": 4},
{"matrix": [5, 4], "x": 0, "y": 51, "flags": 5},
{"matrix": [5, 5], "x": 0, "y": 64, "flags": 5},
{"matrix": [5, 6], "x": 20, "y": 64, "flags": 5},
{"matrix": [5, 7], "x": 40, "y": 64, "flags": 5},
{"matrix": [5, 8], "x": 60, "y": 64, "flags": 5},
{"matrix": [5, 9], "x": 92, "y": 64, "flags": 4},
{"matrix": [6, 0], "x": 120, "y": 0, "flags": 4},
{"matrix": [6, 1], "x": 136, "y": 0, "flags": 4},
{"matrix": [6, 2], "x": 152, "y": 0, "flags": 4},
{"matrix": [6, 3], "x": 168, "y": 0, "flags": 4},
{"matrix": [6, 4], "x": 184, "y": 0, "flags": 4},
{"matrix": [6, 5], "x": 200, "y": 0, "flags": 4},
{"matrix": [6, 6], "x": 208, "y": 0, "flags": 4},
{"matrix": [6, 7], "x": 216, "y": 0, "flags": 4},
{"matrix": [6, 8], "x": 220, "y": 0, "flags": 4},
{"matrix": [6, 9], "x": 224, "y": 0, "flags": 4},
{"matrix": [7, 0], "x": 112, "y": 13, "flags": 4},
{"matrix": [7, 1], "x": 128, "y": 13, "flags": 4},
{"matrix": [7, 2], "x": 144, "y": 13, "flags": 4},
{"matrix": [7, 3], "x": 160, "y": 13, "flags": 4},
{"matrix": [7, 4], "x": 176, "y": 13, "flags": 4},
{"matrix": [7, 5], "x": 192, "y": 13, "flags": 4},
{"matrix": [7, 6], "x": 208, "y": 13, "flags": 4},
{"matrix": [7, 7], "x": 216, "y": 13, "flags": 4},
{"matrix": [7, 8], "x": 220, "y": 13, "flags": 4},
{"matrix": [7, 9], "x": 224, "y": 13, "flags": 4},
{"matrix": [8, 0], "x": 116, "y": 26, "flags": 4},
{"matrix": [8, 1], "x": 132, "y": 26, "flags": 4},
{"matrix": [8, 2], "x": 148, "y": 26, "flags": 4},
{"matrix": [8, 3], "x": 164, "y": 26, "flags": 4},
{"matrix": [8, 4], "x": 180, "y": 26, "flags": 4},
{"matrix": [8, 5], "x": 196, "y": 26, "flags": 4},
{"matrix": [8, 6], "x": 208, "y": 26, "flags": 4},
{"matrix": [8, 7], "x": 216, "y": 26, "flags": 4},
{"matrix": [8, 8], "x": 220, "y": 26, "flags": 4},
{"matrix": [8, 9], "x": 224, "y": 26, "flags": 4},
{"matrix": [9, 0], "x": 100, "y": 26, "flags": 4},
{"matrix": [9, 1], "x": 120, "y": 39, "flags": 4},
{"matrix": [9, 2], "x": 136, "y": 39, "flags": 4},
{"matrix": [9, 3], "x": 152, "y": 39, "flags": 4},
{"matrix": [9, 4], "x": 168, "y": 39, "flags": 4},
{"matrix": [9, 5], "x": 184, "y": 39, "flags": 4},
{"matrix": [9, 6], "x": 200, "y": 39, "flags": 4},
{"matrix": [10, 0], "x": 104, "y": 39, "flags": 4},
{"matrix": [10, 1], "x": 124, "y": 51, "flags": 4},
{"matrix": [10, 2], "x": 140, "y": 51, "flags": 4},
{"matrix": [10, 3], "x": 156, "y": 51, "flags": 4},
{"matrix": [10, 4], "x": 172, "y": 51, "flags": 4},
{"matrix": [10, 6], "x": 188, "y": 51, "flags": 5},
{"matrix": [10, 8], "x": 216, "y": 51, "flags": 4},
{"matrix": [11, 0], "x": 108, "y": 51, "flags": 4},
{"matrix": [11, 1], "x": 118, "y": 64, "flags": 4},
{"matrix": [11, 3], "x": 144, "y": 64, "flags": 5},
{"matrix": [11, 4], "x": 164, "y": 64, "flags": 5},
{"matrix": [11, 5], "x": 184, "y": 64, "flags": 5},
{"matrix": [11, 6], "x": 204, "y": 64, "flags": 5},
{"matrix": [11, 7], "x": 216, "y": 64, "flags": 4},
{"matrix": [11, 8], "x": 220, "y": 64, "flags": 4},
{"matrix": [11, 9], "x": 224, "y": 64, "flags": 4}
]
}
}

View File

@@ -0,0 +1,23 @@
{
"keyboard": "shuguet/shu89",
"keymap": "default",
"layout": "LAYOUT",
"layers": [
[
"KC_ESC" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_SCRL", "KC_PAUS",
"KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_MINS", "KC_EQL" , "KC_BSPC", "KC_INS" , "KC_HOME", "KC_PGUP",
"KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL" , "KC_END" , "KC_PGDN",
"KC_CAPS", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN", "KC_QUOT", "KC_ENT" ,
"KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT", "KC_UP" ,
"KC_LCTL", "MO(1)" , "KC_LALT", "KC_LGUI", "KC_SPACE" , "KC_SPACE" , "KC_RALT", "KC_RGUI", "KC_APP" , "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
],
[
"QK_BOOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
"KC_TRNS", "RGB_VAI", "RGB_VAD", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "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", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MPLY", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPRV", "KC_VOLD", "KC_MNXT"
]
]
}

View File

@@ -0,0 +1,20 @@
# SHU98
An 89-key split TKL with PCBs, 3D printed cases, powered by a pair of RP2040.
* Keyboard Maintainer: [shuguet](https://github.com/shuguet)
* Based on handwiewd original Keyboard from [jurassic73](https://github.com/jurassic73/split89)
* Hardware Supported: RP2040
Make example for this keyboard (after setting up your build environment):
make shuguet/shu89:default
Flashing example for this keyboard:
make shuguet/shu89: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).

View File

@@ -0,0 +1,6 @@
// Copyright 2024 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define EE_HANDS

View File

@@ -43,13 +43,13 @@ static painter_font_handle_t thintel;
enum {
RGB_MATRIX_EFFECT_NONE,
# include "rgb_matrix_effects.inc"
# undef RGB_MATRIX_EFFECT
# ifdef RGB_MATRIX_CUSTOM_KB
# include "rgb_matrix_kb.inc"
# endif
# ifdef RGB_MATRIX_CUSTOM_USER
# include "rgb_matrix_user.inc"
# endif
# undef RGB_MATRIX_EFFECT
};
# define RGB_MATRIX_EFFECT(x) \
@@ -60,13 +60,13 @@ const char *rgb_matrix_name(uint8_t effect) {
case RGB_MATRIX_EFFECT_NONE:
return "NONE";
# include "rgb_matrix_effects.inc"
# undef RGB_MATRIX_EFFECT
# ifdef RGB_MATRIX_CUSTOM_KB
# include "rgb_matrix_kb.inc"
# endif
# ifdef RGB_MATRIX_CUSTOM_USER
# include "rgb_matrix_user.inc"
# endif
# undef RGB_MATRIX_EFFECT
default:
return "UNKNOWN";
}

View File

@@ -773,23 +773,24 @@ def find_keyboard_c(keyboard):
def _extract_led_config(info_data, keyboard):
"""Scan all <keyboard>.c files for led config
"""
cols = info_data['matrix_size']['cols']
rows = info_data['matrix_size']['rows']
for feature in ['rgb_matrix', 'led_matrix']:
if info_data.get('features', {}).get(feature, False) or feature in info_data:
# Only attempt search if dd led config is missing
if 'layout' not in info_data.get(feature, {}):
# Process
for file in find_keyboard_c(keyboard):
try:
ret = find_led_config(file, cols, rows)
if ret:
info_data[feature] = info_data.get(feature, {})
info_data[feature]['layout'] = ret
except Exception as e:
_log_warning(info_data, f'led_config: {file.name}: {e}')
cols = info_data.get('matrix_size', {}).get('cols')
rows = info_data.get('matrix_size', {}).get('rows')
if cols and rows:
# Process
for file in find_keyboard_c(keyboard):
try:
ret = find_led_config(file, cols, rows)
if ret:
info_data[feature] = info_data.get(feature, {})
info_data[feature]['layout'] = ret
except Exception as e:
_log_warning(info_data, f'led_config: {file.name}: {e}')
else:
_log_warning(info_data, 'led_config: matrix size required to parse g_led_config')
if info_data[feature].get('layout', None) and not info_data[feature].get('led_count', None):
info_data[feature]['led_count'] = len(info_data[feature]['layout'])

View File

@@ -27,7 +27,3 @@
# define STM32_ONBOARD_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO and EEPROM page sizing
# endif
#endif
#if STM32_ONBOARD_EEPROM_SIZE > 128
# pragma message("Please note: resetting EEPROM using an STM32L0/L1 device takes up to 1 second for every 1kB of internal EEPROM used.")
#endif

View File

@@ -249,11 +249,11 @@ bool spi_start_extended(spi_start_config_t *start_config) {
#elif defined(AT32F415)
spiConfig.ctrl1 = 0;
if (lsbFirst) {
if (start_config->lsb_first) {
spiConfig.ctrl1 |= SPI_CTRL1_LTF;
}
switch (mode) {
switch (start_config->mode) {
case 0:
break;
case 1:

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

View File

@@ -1,4 +1,4 @@
// Copyright 2024 QMK
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************

Some files were not shown because too many files have changed in this diff Show More