diff options
Diffstat (limited to 'keyboards/handwired')
61 files changed, 1143 insertions, 330 deletions
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk index cd02f80200..195edabcae 100644 --- a/keyboards/handwired/dygma/raise/rules.mk +++ b/keyboards/handwired/dygma/raise/rules.mk @@ -7,5 +7,3 @@ CUSTOM_MATRIX = lite I2C_DRIVER_REQUIRED = yes SRC += matrix.c - -DEFAULT_FOLDER = handwired/dygma/raise/ansi diff --git a/keyboards/handwired/franky36/keyboard.json b/keyboards/handwired/franky36/keyboard.json index 038fc1eb67..871e6abf9d 100644 --- a/keyboards/handwired/franky36/keyboard.json +++ b/keyboards/handwired/franky36/keyboard.json @@ -23,8 +23,8 @@ "url": "https://github.com/avdyushin/franky36", "usb": { "device_version": "0.2.0", - "pid": "0x0001", - "vid": "0xFEED" + "pid": "0x3336", + "vid": "0x1209" }, "community_layouts": ["split_3x5_3"], "layouts": { diff --git a/keyboards/handwired/hen_des/epssp75/keyboard.json b/keyboards/handwired/hen_des/epssp75/keyboard.json index 4d0739b800..1917fd87cc 100644 --- a/keyboards/handwired/hen_des/epssp75/keyboard.json +++ b/keyboards/handwired/hen_des/epssp75/keyboard.json @@ -6,8 +6,6 @@ "diode_direction": "COL2ROW", "features": { "bootmagic": true, - "command": false, - "console": false, "extrakey": true, "mousekey": true, "nkro": true diff --git a/keyboards/handwired/lumawing/keyboard.json b/keyboards/handwired/lumawing/keyboard.json index a99d6d2a2e..8af89134aa 100644 --- a/keyboards/handwired/lumawing/keyboard.json +++ b/keyboards/handwired/lumawing/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "LuMaWing", "manufacturer": "Lucas Mateijsen", - "url": "", "maintainer": "qmk", "usb": { "vid": "0xBB80", @@ -11,7 +10,6 @@ "features": { "bootmagic": true, "command": true, - "console": false, "extrakey": true, "mousekey": true, "nkro": false diff --git a/keyboards/handwired/onekey/at_start_f415/config.h b/keyboards/handwired/onekey/at_start_f415/config.h index 41aece900c..7e41e7da89 100644 --- a/keyboards/handwired/onekey/at_start_f415/config.h +++ b/keyboards/handwired/onekey/at_start_f415/config.h @@ -4,11 +4,25 @@ #pragma once +/* ADC pin */ #define ADC_PIN A0 +/* Backlight configs */ #define BACKLIGHT_PWM_DRIVER PWMD5 #define BACKLIGHT_PWM_CHANNEL 1 +/* LCD configs */ +#define LCD_RST_PIN A2 +#define LCD_DC_PIN A3 +#define LCD_CS_PIN A4 + +/* SPI pins */ +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A7 +#define SPI_MISO_PIN A6 + +/* Haptic configs */ #define SOLENOID_PIN B12 #define SOLENOID_PINS { B12, B13, B14, B15 } #define SOLENOID_PINS_ACTIVE_STATE { high, high, low } diff --git a/keyboards/handwired/onekey/at_start_f415/halconf.h b/keyboards/handwired/onekey/at_start_f415/halconf.h index e3c075936d..3c3ba3812a 100644 --- a/keyboards/handwired/onekey/at_start_f415/halconf.h +++ b/keyboards/handwired/onekey/at_start_f415/halconf.h @@ -10,4 +10,6 @@ #define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + #include_next <halconf.h> diff --git a/keyboards/handwired/onekey/at_start_f415/keyboard.json b/keyboards/handwired/onekey/at_start_f415/keyboard.json index 6e5683a474..8024e776a8 100644 --- a/keyboards/handwired/onekey/at_start_f415/keyboard.json +++ b/keyboards/handwired/onekey/at_start_f415/keyboard.json @@ -16,7 +16,7 @@ }, "ws2812": { "pin": "B0" - } + }, "apa102": { "data_pin": "B0", "clock_pin": "B1" diff --git a/keyboards/handwired/onekey/at_start_f415/mcuconf.h b/keyboards/handwired/onekey/at_start_f415/mcuconf.h index 246f6762d3..8f6333ca01 100644 --- a/keyboards/handwired/onekey/at_start_f415/mcuconf.h +++ b/keyboards/handwired/onekey/at_start_f415/mcuconf.h @@ -14,3 +14,6 @@ #undef AT32_PWM_USE_TMR5 #define AT32_PWM_USE_TMR5 TRUE + +#undef AT32_SPI_USE_SPI1 +#define AT32_SPI_USE_SPI1 TRUE diff --git a/keyboards/handwired/onekey/info.json b/keyboards/handwired/onekey/info.json index 7b6b7ddab8..d5f650f1bd 100644 --- a/keyboards/handwired/onekey/info.json +++ b/keyboards/handwired/onekey/info.json @@ -26,5 +26,17 @@ {"x": 0, "y": 0, "matrix": [0, 0]} ] } + }, + "led_matrix": { + "driver": "snled27351", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1} + ] + }, + "rgb_matrix": { + "driver": "snled27351", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1} + ] } } diff --git a/keyboards/handwired/onekey/kb2040/config.h b/keyboards/handwired/onekey/kb2040/config.h index e9c4eef273..a9508bc4cc 100644 --- a/keyboards/handwired/onekey/kb2040/config.h +++ b/keyboards/handwired/onekey/kb2040/config.h @@ -16,3 +16,13 @@ #define I2C1_SDA_PIN GP12 #define I2C1_SCL_PIN GP13 +/* LCD configs */ +#define LCD_RST_PIN GP0 +#define LCD_DC_PIN GP1 +#define LCD_CS_PIN GP2 + +/* SPI pins */ +#define SPI_DRIVER SPID0 +#define SPI_SCK_PIN GP18 +#define SPI_MOSI_PIN GP19 +#define SPI_MISO_PIN GP20 diff --git a/keyboards/handwired/onekey/kb2040/halconf.h b/keyboards/handwired/onekey/kb2040/halconf.h new file mode 100644 index 0000000000..96d14ae85c --- /dev/null +++ b/keyboards/handwired/onekey/kb2040/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next <halconf.h> diff --git a/keyboards/handwired/onekey/kb2040/mcuconf.h b/keyboards/handwired/onekey/kb2040/mcuconf.h index 57e58e14d7..cc44ce77c3 100644 --- a/keyboards/handwired/onekey/kb2040/mcuconf.h +++ b/keyboards/handwired/onekey/kb2040/mcuconf.h @@ -22,3 +22,6 @@ #undef RP_I2C_USE_I2C1 #define RP_I2C_USE_I2C1 TRUE + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/config.h b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/config.h new file mode 100644 index 0000000000..aed1e4ac6f --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/config.h @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#pragma once + +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.c b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.c new file mode 100644 index 0000000000..0bd835ff25 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// This keymap serves as a test for modules/qmk/flow_led_matrix_effect. + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(LM_TOGG)}; + +const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = { + {0, CB6_CA1}, +}; + +void keyboard_post_init_user(void) { + led_matrix_mode_noeeprom(LED_MATRIX_COMMUNITY_MODULE_FLOW); +} diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.json b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.json new file mode 100644 index 0000000000..0ff6bf5a4d --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_led_matrix_effect/keymap.json @@ -0,0 +1,3 @@ +{ + "modules": ["qmk/flow_led_matrix_effect"] +} diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/config.h b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/config.h new file mode 100644 index 0000000000..aed1e4ac6f --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/config.h @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#pragma once + +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.c b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.c new file mode 100644 index 0000000000..72ef2d3f80 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// This keymap serves as a test for modules/qmk/flow_rgb_matrix_effect. + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(RM_TOGG)}; + +const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = { + {0, CB6_CA1}, +}; + +void keyboard_post_init_user(void) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_COMMUNITY_MODULE_FLOW); +} diff --git a/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.json b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.json new file mode 100644 index 0000000000..56d2342867 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/cm_flow_rgb_matrix_effect/keymap.json @@ -0,0 +1,3 @@ +{ + "modules": ["qmk/flow_rgb_matrix_effect"] +} diff --git a/keyboards/handwired/onekey/keymaps/lvgl/config.h b/keyboards/handwired/onekey/keymaps/lvgl/config.h deleted file mode 100644 index 38bb5d0cf3..0000000000 --- a/keyboards/handwired/onekey/keymaps/lvgl/config.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2022 Jose Pablo Ramirez (@jpe230) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -/* SPI pins */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP18 -#define SPI_MOSI_PIN GP19 -#define SPI_MISO_PIN GP20 - -/* LCD Configuration */ -#define LCD_RST_PIN GP0 -#define LCD_DC_PIN GP1 -#define LCD_CS_PIN GP2 diff --git a/keyboards/handwired/onekey/keymaps/lvgl/halconf.h b/keyboards/handwired/onekey/keymaps/lvgl/halconf.h deleted file mode 100644 index 27646bb3f5..0000000000 --- a/keyboards/handwired/onekey/keymaps/lvgl/halconf.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2022 Jose Pablo Ramirez (@jpe230) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include_next <halconf.h> - -#undef HAL_USE_SPI -#define HAL_USE_SPI TRUE - -#undef SPI_USE_WAIT -#define SPI_USE_WAIT TRUE diff --git a/keyboards/handwired/onekey/keymaps/lvgl/mcuconf.h b/keyboards/handwired/onekey/keymaps/lvgl/mcuconf.h deleted file mode 100644 index bff74867ff..0000000000 --- a/keyboards/handwired/onekey/keymaps/lvgl/mcuconf.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2022 Jose Pablo Ramirez (@jpe230) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include_next <mcuconf.h> - -#undef RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/handwired/onekey/rp2040/config.h b/keyboards/handwired/onekey/rp2040/config.h index 0030e97b0f..974fc688d3 100644 --- a/keyboards/handwired/onekey/rp2040/config.h +++ b/keyboards/handwired/onekey/rp2040/config.h @@ -17,3 +17,14 @@ #define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A #define ADC_PIN GP26 + +/* LCD configs */ +#define LCD_RST_PIN GP0 +#define LCD_DC_PIN GP1 +#define LCD_CS_PIN GP2 + +/* SPI pins */ +#define SPI_DRIVER SPID0 +#define SPI_SCK_PIN GP18 +#define SPI_MOSI_PIN GP19 +#define SPI_MISO_PIN GP20 diff --git a/keyboards/handwired/onekey/rp2040/halconf.h b/keyboards/handwired/onekey/rp2040/halconf.h index ec56be2263..6310808d9a 100644 --- a/keyboards/handwired/onekey/rp2040/halconf.h +++ b/keyboards/handwired/onekey/rp2040/halconf.h @@ -4,7 +4,11 @@ #pragma once #define HAL_USE_I2C TRUE + #define HAL_USE_PWM TRUE + #define HAL_USE_ADC TRUE +#define HAL_USE_SPI TRUE + #include_next <halconf.h> diff --git a/keyboards/handwired/onekey/rp2040/mcuconf.h b/keyboards/handwired/onekey/rp2040/mcuconf.h index e24a0d4f24..c1d22657ca 100644 --- a/keyboards/handwired/onekey/rp2040/mcuconf.h +++ b/keyboards/handwired/onekey/rp2040/mcuconf.h @@ -10,3 +10,6 @@ #undef RP_PWM_USE_PWM4 #define RP_PWM_USE_PWM4 TRUE + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/handwired/onekey/weact_g0b1cb/config.h b/keyboards/handwired/onekey/weact_g0b1cb/config.h new file mode 100644 index 0000000000..b4550b15f4 --- /dev/null +++ b/keyboards/handwired/onekey/weact_g0b1cb/config.h @@ -0,0 +1,28 @@ +// Copyright 2025 Stefan Kerkmann (@karlk90) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define ADC_PIN A0 + +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PWM_DRIVER PWMD3 + +#define I2C1_SCL_PAL_MODE 6 +#define I2C1_SDA_PAL_MODE 6 + +#define LCD_RST_PIN B12 +#define LCD_DC_PIN B11 +#define LCD_CS_PIN B10 + +#define SPI_MOSI_PAL_MODE 0 +#define SPI_MISO_PAL_MODE 0 +#define SPI_SCK_PAL_MODE 0 + +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_DMA_CHANNEL 2 +#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_PWM_DMAMUX_ID STM32_DMAMUX1_TIM3_UP +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_PAL_MODE 1 diff --git a/keyboards/handwired/onekey/weact_g0b1cb/halconf.h b/keyboards/handwired/onekey/weact_g0b1cb/halconf.h new file mode 100644 index 0000000000..2d6f87eba2 --- /dev/null +++ b/keyboards/handwired/onekey/weact_g0b1cb/halconf.h @@ -0,0 +1,11 @@ +// Copyright 2025 Stefan Kerkmann (@karlk90) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_ADC TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + +#include_next <halconf.h> diff --git a/keyboards/handwired/onekey/weact_g0b1cb/keyboard.json b/keyboards/handwired/onekey/weact_g0b1cb/keyboard.json new file mode 100644 index 0000000000..bb1ce7d5ca --- /dev/null +++ b/keyboards/handwired/onekey/weact_g0b1cb/keyboard.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Onekey WeAct G0B1CB", + "processor": "STM32G0B1", + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["B4"], + "rows": ["B5"] + }, + "backlight": { + "pin": "C6" + }, + "ws2812": { + "driver": "pwm", + "pin": "B0" + }, + "apa102": { + "data_pin": "B15", + "clock_pin": "B13" + } +} diff --git a/keyboards/handwired/onekey/weact_g0b1cb/mcuconf.h b/keyboards/handwired/onekey/weact_g0b1cb/mcuconf.h new file mode 100644 index 0000000000..50f2bcf627 --- /dev/null +++ b/keyboards/handwired/onekey/weact_g0b1cb/mcuconf.h @@ -0,0 +1,18 @@ +// Copyright 2025 Stefan Kerkmann (@karlk90) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next <mcuconf.h> + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/handwired/onekey/weact_g0b1cb/readme.md b/keyboards/handwired/onekey/weact_g0b1cb/readme.md new file mode 100644 index 0000000000..4119ffa2ed --- /dev/null +++ b/keyboards/handwired/onekey/weact_g0b1cb/readme.md @@ -0,0 +1,5 @@ +# WeAct Studio STM32G0B1CB onekey + +Supported Hardware: <https://github.com/WeActStudio/WeActStudio.STM32G0B1CoreBoard> + +To trigger keypress, short together pins *B4* and *B5*. diff --git a/keyboards/handwired/riblee_split/keyboard.json b/keyboards/handwired/riblee_split/keyboard.json index 6006f0e4c3..2bf78f96f1 100644 --- a/keyboards/handwired/riblee_split/keyboard.json +++ b/keyboards/handwired/riblee_split/keyboard.json @@ -29,7 +29,9 @@ "driver": "usart" }, "transport": { - "sync_matrix_state": true + "sync": { + "matrix_state": true + } } }, "community_layouts": ["ortho_5x12"], diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk index 0f3d0657aa..fab9162dc6 100644 --- a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk +++ b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk @@ -1,2 +1 @@ POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = yes diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/config.h index 194874b5cf..686cb30fc2 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/config.h @@ -21,13 +21,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define ROTATIONAL_TRANSFORM_ANGLE -25 #define POINTING_DEVICE_INVERT_X -#define DYNAMIC_KEYMAP_LAYER_COUNT 16 -#define LAYER_STATE_16BIT - - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - #define POINTING_DEVICE_RIGHT diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h index 62f56e4d2b..b06f52b7df 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h @@ -21,7 +21,5 @@ #define HAL_USE_SPI TRUE #define HAL_USE_GPT TRUE #define HAL_USE_DAC TRUE -#define SPI_USE_WAIT TRUE -#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD #include_next <halconf.h> diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h new file mode 100644 index 0000000000..9be86942d6 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h @@ -0,0 +1,23 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + * This program is free software: you can 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 <board.h> + +#undef STM32_HSECLK +#define STM32_HSECLK 8000000U +#undef STM32_LSECLK +#define STM32_LSECLK 32768U diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h new file mode 100644 index 0000000000..3878d9c671 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h @@ -0,0 +1,89 @@ +/* +Copyright 2012 Jun Wako <[email protected]> +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#define USER_BUTTON_PIN C13 +#define DEBUG_LED_PIN B2 +#define USB_VBUS_PIN B10 + +#ifdef USE_USB_OTG_HS_PORT +# define USB_DRIVER USBD2 +#endif + +// WS2812 RGB LED strip input and number of LEDs +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_PWM_DMA_CHANNEL 5 +#define WS2812_EXTERNAL_PULLUP + +#define BACKLIGHT_PWM_DRIVER PWMD8 +#define BACKLIGHT_PWM_CHANNEL 2 +#define BACKLIGHT_PAL_MODE 3 + +/* Audio config */ +#define AUDIO_PIN A4 +#define AUDIO_PIN_ALT A5 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +/* serial.c configuration for split keyboard */ +#define SERIAL_USART_DRIVER SD1 +#define SERIAL_USART_TX_PIN A10 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_RX_PIN A9 +#define SERIAL_USART_RX_PAL_MODE 7 +#define SERIAL_USART_TIMEOUT 10 +#define SERIAL_USART_SPEED (1 * 1024 * 1024) +#define SERIAL_USART_FULL_DUPLEX + + +/* i2c config for oleds */ +#define I2C_DRIVER I2CD1 +#define I2C1_CLOCK_SPEED 400000 +#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9 + +/* spi config for eeprom and pmw3360 sensor */ +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN B3 +#define SPI_SCK_PAL_MODE 5 +#define SPI_MOSI_PIN B5 +#define SPI_MOSI_PAL_MODE 5 +#define SPI_MISO_PIN B4 +#define SPI_MISO_PAL_MODE 5 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B13 +#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 4 +#define EXTERNAL_FLASH_SIZE (8 * 1024 * 1024) + +/* pmw3360 config */ +#define POINTING_DEVICE_CS_PIN B8 +#define POINTING_DEVICE_ROTATION_270 +#undef ROTATIONAL_TRANSFORM_ANGLE +#define PMW33XX_SPI_DIVISOR 16 + +// lcd +#define DISPLAY_RST_PIN NO_PIN +#define DISPLAY_DC_PIN B12 +#define DISPLAY_CS_PIN B9 +#define DISPLAY_SPI_DIVIDER 1 + +#define DRV2605L_FB_ERM_LRA 0 +#define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100 +#define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_BUZZ_1_100 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c b/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c new file mode 100644 index 0000000000..5aabc70dca --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c @@ -0,0 +1,52 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <[email protected]> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "tractyl_manuform.h" + +#ifdef USB_VBUS_PIN +bool usb_vbus_state(void) { + gpio_set_pin_input_low(USB_VBUS_PIN); + wait_us(5); + return gpio_read_pin(USB_VBUS_PIN); +} +#endif + +#ifdef USER_BUTTON_PIN +void user_button_init(void) { + // Pin needs to be configured as input low + gpio_set_pin_input_low(USER_BUTTON_PIN); +} + +bool check_user_button_state(void) { + return gpio_read_pin(USER_BUTTON_PIN); +} +#endif // USER_BUTTON_PIN + +void board_init(void) { + // Board setup sets these pins as SPI, but we aren't using them as such. + // So to prevent them from misbehaving, we need to set them to a different, non-spi mode. + // This is a bit of a hack, but nothing else runs soon enough, without re-implementing spi_init(). + gpio_set_pin_input(A5); + gpio_set_pin_input(A6); + gpio_set_pin_input(A7); + + // If using USB_OTG_HS, we need to set the data pins since they're set wrong for our needs by default. + // We set it here by default, in case it's bridged with A11/A12, as to reduce the chance of issues. + palSetLineMode( + B14, PAL_MODE_ALTERNATE(12) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING); + palSetLineMode( + B15, PAL_MODE_ALTERNATE(12) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING); +} diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h new file mode 100644 index 0000000000..3cf07b9be0 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h @@ -0,0 +1,30 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + * This program is free software: you can 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_SERIAL TRUE +#define SERIAL_BUFFERS_SIZE 256 + +#if defined(WS2812_PWM) || defined(BACKLIGHT_PWM) +# define HAL_USE_PWM TRUE +#endif // defined(WS2812_PWM) || defined(BACKLIGHT_PWM) + +#ifdef AUDIO_DRIVER_DAC +# define HAL_USE_GPT TRUE +# define HAL_USE_DAC TRUE +#endif + +#include_next <halconf.h> diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json b/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json new file mode 100644 index 0000000000..b56e2d31c2 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json @@ -0,0 +1,66 @@ +{ + "keyboard_name": "Tractyl Manuform (5x6) WeAct STM32F405", + "audio": { + "driver": "dac_additive", + "power_control": { + "pin": "A3" + } + }, + "backlight": { + "levels": 16, + "pin": "C7" + }, + "bootloader": "stm32-dfu", + "build": { + "debounce_type": "asym_eager_defer_pk" + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C0", "pin_b": "A15"} + ] + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 16384, + "logical_size": 4096 + } + }, + "features": { + "console": true, + "haptic": true + }, + "haptic": { + "driver": "drv2605l" + }, + "matrix_pins": { + "cols": ["C1", "C2", "C3", "A0", "A1", "A2"], + "rows": ["A6", "A7", "C4", "C5", "B0", "B1"] + }, + "processor": "STM32F405", + "rgblight": { + "led_count": 24, + "split": true + }, + "split": { + "handedness": { + "pin": "B11" + }, + "serial": { + "driver": "usart" + }, + "transport": { + "sync": { + "activity": true, + "haptic": true, + "matrix_state": true + } + } + }, + "ws2812": { + "driver": "pwm", + "pin": "C6" + } +} diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h new file mode 100644 index 0000000000..46920b17b3 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h @@ -0,0 +1,82 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + * This program is free software: you can 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 STM32_LSE_ENABLED +#define STM32_LSE_ENABLED TRUE + +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 8 + +#undef STM32_RTCSEL +#define STM32_RTCSEL STM32_RTCSEL_LSE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +#if HAL_USE_WDG == TRUE +# undef STM32_WDG_USE_IWDG +# define STM32_WDG_USE_IWDG TRUE +#endif + +#if HAL_USE_I2C == TRUE +# undef STM32_I2C_USE_I2C1 +# define STM32_I2C_USE_I2C1 TRUE + +# undef STM32_I2C_BUSY_TIMEOUT +# define STM32_I2C_BUSY_TIMEOUT 10 + +# undef STM32_I2C_I2C1_RX_DMA_STREAM +# define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) +# undef STM32_I2C_I2C1_TX_DMA_STREAM +# define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) +#endif // HAL_USE_I2C + +#ifdef WS2812_PWM +# undef STM32_PWM_USE_TIM3 +# define STM32_PWM_USE_TIM3 TRUE +#endif // WS2812_PWM + +#ifdef BACKLIGHT_PWM +# undef STM32_PWM_USE_TIM8 +# define STM32_PWM_USE_TIM8 TRUE +#endif + +#if HAL_USE_SPI == TRUE +# undef STM32_SPI_USE_SPI1 +# define STM32_SPI_USE_SPI1 TRUE +#endif + +#ifdef AUDIO_DRIVER_DAC +# undef STM32_DAC_USE_DAC1_CH1 +# define STM32_DAC_USE_DAC1_CH1 TRUE +# undef STM32_DAC_USE_DAC1_CH2 +# define STM32_DAC_USE_DAC1_CH2 TRUE + +# undef STM32_GPT_USE_TIM6 +# define STM32_GPT_USE_TIM6 TRUE +#endif // AUDIO_DRIVER_DAC + + +#ifdef USE_USB_OTG_HS_PORT +# undef STM32_USB_USE_OTG1 +# define STM32_USB_USE_OTG1 FALSE +# undef STM32_USB_USE_OTG2 +# define STM32_USB_USE_OTG2 TRUE +#endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h index 28acc1e69b..bbbc16e3ea 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h @@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #pragma once // #define USB_VBUS_PIN B10 // doesn't seem to work for me on one of my controllers... */ +#define USER_BUTTON_PIN A0 // WS2812 RGB LED strip input and number of LEDs #define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 @@ -70,7 +71,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* eeprom config */ #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 -#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64 +#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 /* pmw3360 config */ #define PMW33XX_CS_PIN B0 +#define PMW33XX_SPI_DIVISOR 8 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c index dbacb1685c..cfe97d6318 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c @@ -16,41 +16,6 @@ #include "tractyl_manuform.h" -void keyboard_pre_init_sub(void) { gpio_set_pin_input_high(A0); } - -void matrix_scan_sub_kb(void) { - if (!gpio_read_pin(A0)) { - reset_keyboard(); - } -} - -__attribute__((weak)) void bootmagic_scan(void) { - // We need multiple scans because debouncing can't be turned off. - matrix_scan(); -#if defined(DEBOUNCE) && DEBOUNCE > 0 - wait_ms(DEBOUNCE * 2); -#else - wait_ms(30); -#endif - matrix_scan(); - - uint8_t row = BOOTMAGIC_ROW; - uint8_t col = BOOTMAGIC_COLUMN; - -#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_ROW_RIGHT) && defined(BOOTMAGIC_COLUMN_RIGHT) - if (!is_keyboard_left()) { - row = BOOTMAGIC_ROW_RIGHT; - col = BOOTMAGIC_COLUMN_RIGHT; - } -#endif - - if (matrix_get_row(row) & (1 << col) || !gpio_read_pin(A0)) { - eeconfig_disable(); - bootloader_jump(); - } -} - - #ifdef USB_VBUS_PIN bool usb_vbus_state(void) { gpio_set_pin_input_low(USB_VBUS_PIN); @@ -58,9 +23,3 @@ bool usb_vbus_state(void) { return gpio_read_pin(USB_VBUS_PIN); } #endif - -void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { - for (int32_t i = 0; i < 40; i++) { - __asm__ volatile("nop" ::: "memory"); - } -} diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h index bc07c10527..296119b080 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h @@ -19,7 +19,5 @@ #define HAL_USE_SERIAL TRUE #define HAL_USE_I2C TRUE #define HAL_USE_SPI TRUE -#define SPI_USE_WAIT TRUE -#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD #include_next <halconf.h> diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk deleted file mode 100644 index 4aa582e7a2..0000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -KEYBOARD_SHARED_EP = yes -MOUSE_SHARED_EP = yes diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/info.json index fe3f2432ca..0264000b20 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/info.json +++ b/keyboards/handwired/tractyl_manuform/5x6_right/info.json @@ -98,6 +98,209 @@ {"matrix": [11, 2], "x": 9, "y": 7}, {"matrix": [11, 3], "x": 10, "y": 7} ] + }, + "LAYOUT_5x6_full_right": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + {"matrix": [6, 4], "x": 15, "y": 0}, + {"matrix": [6, 5], "x": 16, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [7, 0], "x": 11, "y": 1}, + {"matrix": [7, 1], "x": 12, "y": 1}, + {"matrix": [7, 2], "x": 13, "y": 1}, + {"matrix": [7, 3], "x": 14, "y": 1}, + {"matrix": [7, 4], "x": 15, "y": 1}, + {"matrix": [7, 5], "x": 16, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [8, 0], "x": 11, "y": 2}, + {"matrix": [8, 1], "x": 12, "y": 2}, + {"matrix": [8, 2], "x": 13, "y": 2}, + {"matrix": [8, 3], "x": 14, "y": 2}, + {"matrix": [8, 4], "x": 15, "y": 2}, + {"matrix": [8, 5], "x": 16, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [9, 0], "x": 11, "y": 3}, + {"matrix": [9, 1], "x": 12, "y": 3}, + {"matrix": [9, 2], "x": 13, "y": 3}, + {"matrix": [9, 3], "x": 14, "y": 3}, + {"matrix": [9, 4], "x": 15, "y": 3}, + {"matrix": [9, 5], "x": 16, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + + {"matrix": [10, 2], "x": 13, "y": 4}, + {"matrix": [10, 3], "x": 14, "y": 4}, + {"matrix": [10, 4], "x": 15, "y": 4}, + {"matrix": [10, 5], "x": 16, "y": 4}, + + {"matrix": [4, 4], "x": 4, "y": 5}, + {"matrix": [4, 5], "x": 5, "y": 5}, + + {"matrix": [10, 1], "x": 12, "y": 5}, + + {"matrix": [5, 4], "x": 6, "y": 6}, + {"matrix": [5, 5], "x": 7, "y": 6}, + + {"matrix": [11, 1], "x": 10, "y": 6}, + + {"matrix": [5, 2], "x": 6, "y": 7}, + {"matrix": [5, 3], "x": 7, "y": 7}, + + {"matrix": [11, 2], "x": 9, "y": 7}, + {"matrix": [11, 3], "x": 10, "y": 7} + ] } + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "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 + }, + "driver": "ws2812", + "led_count": 64, + "max_brightness": 100, + "split_count": [33, 31], + "sleep": true, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 10, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 20, "flags": 1}, + {"matrix": [3, 0], "x": 0, "y": 30, "flags": 1}, + {"matrix": [3, 1], "x": 12, "y": 30, "flags": 4}, + {"matrix": [2, 1], "x": 12, "y": 20, "flags": 4}, + {"matrix": [1, 1], "x": 12, "y": 10, "flags": 4}, + {"matrix": [0, 1], "x": 12, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 24, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 24, "y": 10, "flags": 4}, + {"matrix": [2, 2], "x": 24, "y": 20, "flags": 4}, + {"matrix": [3, 2], "x": 24, "y": 30, "flags": 4}, + {"matrix": [4, 2], "x": 24, "y": 40, "flags": 1}, + {"matrix": [4, 3], "x": 36, "y": 40, "flags": 1}, + {"matrix": [3, 3], "x": 36, "y": 30, "flags": 4}, + {"matrix": [2, 3], "x": 36, "y": 20, "flags": 4}, + {"matrix": [1, 3], "x": 36, "y": 10, "flags": 4}, + {"matrix": [0, 3], "x": 36, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 48, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 48, "y": 10, "flags": 4}, + {"matrix": [2, 4], "x": 48, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 48, "y": 30, "flags": 4}, + {"matrix": [3, 5], "x": 60, "y": 30, "flags": 4}, + {"matrix": [2, 5], "x": 60, "y": 20, "flags": 4}, + {"matrix": [1, 5], "x": 60, "y": 10, "flags": 4}, + {"matrix": [0, 5], "x": 60, "y": 0, "flags": 4}, + {"matrix": [4, 4], "x": 48, "y": 50, "flags": 1}, + {"matrix": [5, 4], "x": 65, "y": 56, "flags": 1}, + {"matrix": [5, 5], "x": 70, "y": 60, "flags": 1}, + {"matrix": [5, 3], "x": 65, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 60, "y": 60, "flags": 1}, + {"matrix": [4, 1], "x": 0, "y": 40, "flags": 1}, + {"matrix": [4, 0], "x": 12, "y": 40, "flags": 1}, + {"matrix": [6, 5], "x": 224, "y": 0, "flags": 1}, + {"matrix": [7, 5], "x": 224, "y": 10, "flags": 1}, + {"matrix": [8, 5], "x": 224, "y": 20, "flags": 1}, + {"matrix": [9, 5], "x": 224, "y": 30, "flags": 1}, + {"matrix": [9, 4], "x": 212, "y": 30, "flags": 4}, + {"matrix": [8, 4], "x": 212, "y": 20, "flags": 4}, + {"matrix": [7, 4], "x": 212, "y": 10, "flags": 4}, + {"matrix": [6, 4], "x": 212, "y": 0, "flags": 4}, + {"matrix": [6, 3], "x": 200, "y": 0, "flags": 4}, + {"matrix": [7, 3], "x": 200, "y": 10, "flags": 4}, + {"matrix": [8, 3], "x": 200, "y": 20, "flags": 4}, + {"matrix": [9, 3], "x": 200, "y": 30, "flags": 4}, + {"matrix": [10, 3], "x": 200, "y": 40, "flags": 1}, + {"matrix": [10, 2], "x": 188, "y": 40, "flags": 1}, + {"matrix": [9, 2], "x": 188, "y": 30, "flags": 4}, + {"matrix": [8, 2], "x": 188, "y": 20, "flags": 4}, + {"matrix": [7, 2], "x": 188, "y": 10, "flags": 4}, + {"matrix": [6, 2], "x": 188, "y": 0, "flags": 4}, + {"matrix": [6, 1], "x": 176, "y": 0, "flags": 4}, + {"matrix": [7, 1], "x": 176, "y": 10, "flags": 4}, + {"matrix": [8, 1], "x": 176, "y": 20, "flags": 4}, + {"matrix": [9, 1], "x": 176, "y": 30, "flags": 4}, + {"matrix": [9, 0], "x": 164, "y": 30, "flags": 4}, + {"matrix": [8, 0], "x": 164, "y": 20, "flags": 4}, + {"matrix": [7, 0], "x": 164, "y": 10, "flags": 4}, + {"matrix": [6, 0], "x": 164, "y": 0, "flags": 4}, + {"matrix": [11, 1], "x": 164, "y": 60, "flags": 1}, + {"matrix": [11, 3], "x": 152, "y": 70, "flags": 1}, + {"matrix": [11, 2], "x": 140, "y": 70, "flags": 1}, + {"matrix": [10, 4], "x": 224, "y": 40, "flags": 1}, + {"matrix": [10, 5], "x": 208, "y": 40, "flags": 1} + ] } } diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/post_rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/post_rules.mk new file mode 100644 index 0000000000..fab9162dc6 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/post_rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = pmw3360 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk deleted file mode 100644 index b7f7c949ec..0000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = yes - -DEFAULT_FOLDER = handwired/tractyl_manuform/5x6_right/teensy2pp diff --git a/keyboards/handwired/tractyl_manuform/config.h b/keyboards/handwired/tractyl_manuform/config.h index 9f4dd8651b..5a8091a098 100644 --- a/keyboards/handwired/tractyl_manuform/config.h +++ b/keyboards/handwired/tractyl_manuform/config.h @@ -18,18 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #pragma once - -/* 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 - #define SPLIT_POINTING_ENABLE #define POINTING_DEVICE_TASK_THROTTLE_MS 1 diff --git a/keyboards/handwired/tractyl_manuform/info.json b/keyboards/handwired/tractyl_manuform/info.json index c84d008e15..fb50c8d359 100644 --- a/keyboards/handwired/tractyl_manuform/info.json +++ b/keyboards/handwired/tractyl_manuform/info.json @@ -2,6 +2,10 @@ "manufacturer": "QMK Community", "maintainer": "Drashna Jael're", "usb": { - "vid": "0x44DD" + "vid": "0x44DD", + "shared_endpoint": { + "keyboard": true, + "mouse": true + } } } diff --git a/keyboards/handwired/tractyl_manuform/post_config.h b/keyboards/handwired/tractyl_manuform/post_config.h deleted file mode 100644 index b5d67132b2..0000000000 --- a/keyboards/handwired/tractyl_manuform/post_config.h +++ /dev/null @@ -1,112 +0,0 @@ -/* -Copyright 2012 Jun Wako <[email protected]> -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -// mouse config -#ifdef MOUSEKEY_ENABLE -# ifndef MOUSEKEY_MOVE_DELTA -# ifndef MK_KINETIC_SPEED -# define MOUSEKEY_MOVE_DELTA 5 -# else -# define MOUSEKEY_MOVE_DELTA 25 -# endif -# endif -# ifndef MOUSEKEY_DELAY -# ifndef MK_KINETIC_SPEED -# define MOUSEKEY_DELAY 300 -# else -# define MOUSEKEY_DELAY 8 -# endif -# endif -# ifndef MOUSEKEY_INTERVAL -# ifndef MK_KINETIC_SPEED -# define MOUSEKEY_INTERVAL 50 -# else -# define MOUSEKEY_INTERVAL 20 -# endif -# endif -# ifndef MOUSEKEY_MAX_SPEED -# define MOUSEKEY_MAX_SPEED 7 -# endif -# ifndef MOUSEKEY_TIME_TO_MAX -# define MOUSEKEY_TIME_TO_MAX 60 -# endif -# ifndef MOUSEKEY_INITIAL_SPEED -# define MOUSEKEY_INITIAL_SPEED 100 -# endif -# ifndef MOUSEKEY_BASE_SPEED -# define MOUSEKEY_BASE_SPEED 1000 -# endif -# ifndef MOUSEKEY_DECELERATED_SPEED -# define MOUSEKEY_DECELERATED_SPEED 400 -# endif -# ifndef MOUSEKEY_ACCELERATED_SPEED -# define MOUSEKEY_ACCELERATED_SPEED 3000 -# endif - -// mouse scroll config -# ifndef MOUSEKEY_WHEEL_DELAY -# define MOUSEKEY_WHEEL_DELAY 15 -# endif -# ifndef MOUSEKEY_WHEEL_DELTA -# define MOUSEKEY_WHEEL_DELTA 1 -# endif -# ifndef MOUSEKEY_WHEEL_INTERVAL -# define MOUSEKEY_WHEEL_INTERVAL 50 -# endif -# ifndef MOUSEKEY_WHEEL_MAX_SPEED -# define MOUSEKEY_WHEEL_MAX_SPEED 8 -# endif -# ifndef MOUSEKEY_WHEEL_TIME_TO_MAX -# define MOUSEKEY_WHEEL_TIME_TO_MAX 80 -# endif - -# ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS -# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8 -# endif -# ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS -# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48 -# endif -# ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS -# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 -# endif -# ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS -# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 -# endif -#endif - -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif - -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_LIMIT_VAL) -# if defined(OLED_ENABLE) -# define RGBLIGHT_LIMIT_VAL 100 -# else -# define RGBLIGHT_LIMIT_VAL 150 -# endif -#endif - -#if !defined(OLED_BRIGHTNESS) -# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) -# define OLED_BRIGHTNESS 80 -# else -# define OLED_BRIGHTNESS 150 -# endif -#endif diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c index 7ded835a6e..3ae74be47f 100644 --- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c @@ -15,48 +15,47 @@ */ #include "tractyl_manuform.h" +#ifdef POINTING_DEVICE_ENABLE +# include "pointing_device.h" +#endif #include "transactions.h" #include <string.h> #ifdef CONSOLE_ENABLE # include "print.h" -#endif // CONSOLE_ENABLE +#endif // CONSOLE_ENABLE #ifdef POINTING_DEVICE_ENABLE # ifndef CHARYBDIS_MINIMUM_DEFAULT_DPI # define CHARYBDIS_MINIMUM_DEFAULT_DPI 400 -# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI +# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI # ifndef CHARYBDIS_DEFAULT_DPI_CONFIG_STEP # define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200 -# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP +# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP # ifndef CHARYBDIS_MINIMUM_SNIPING_DPI # define CHARYBDIS_MINIMUM_SNIPING_DPI 200 -# endif // CHARYBDIS_MINIMUM_SNIPER_MODE_DPI +# endif // CHARYBDIS_MINIMUM_SNIPER_MODE_DPI # ifndef CHARYBDIS_SNIPING_DPI_CONFIG_STEP # define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100 -# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP +# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP // Fixed DPI for drag-scroll. # ifndef CHARYBDIS_DRAGSCROLL_DPI # define CHARYBDIS_DRAGSCROLL_DPI 100 -# endif // CHARYBDIS_DRAGSCROLL_DPI +# endif // CHARYBDIS_DRAGSCROLL_DPI # ifndef CHARYBDIS_DRAGSCROLL_BUFFER_SIZE # define CHARYBDIS_DRAGSCROLL_BUFFER_SIZE 6 -# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE - -# ifndef CHARYBDIS_POINTER_ACCELERATION_FACTOR -# define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24 -# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR +# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE typedef union { uint8_t raw; struct { - uint8_t pointer_default_dpi : 4; // 16 steps available. - uint8_t pointer_sniping_dpi : 2; // 4 steps available. + uint8_t pointer_default_dpi : 4; // 16 steps available. + uint8_t pointer_sniping_dpi : 2; // 4 steps available. bool is_dragscroll_enabled : 1; bool is_sniping_enabled : 1; } __attribute__((packed)); @@ -86,13 +85,19 @@ static void read_charybdis_config_from_eeprom(charybdis_config_t* config) { * resets these 2 values to `false` since it does not make sense to persist * these across reboots of the board. */ -static void write_charybdis_config_to_eeprom(charybdis_config_t* config) { eeconfig_update_kb(config->raw); } +static void write_charybdis_config_to_eeprom(charybdis_config_t* config) { + eeconfig_update_kb(config->raw); +} /** \brief Return the current value of the pointer's default DPI. */ -static uint16_t get_pointer_default_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_default_dpi * CHARYBDIS_DEFAULT_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_DEFAULT_DPI; } +static uint16_t get_pointer_default_dpi(charybdis_config_t* config) { + return (uint16_t)config->pointer_default_dpi * CHARYBDIS_DEFAULT_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_DEFAULT_DPI; +} /** \brief Return the current value of the pointer's sniper-mode DPI. */ -static uint16_t get_pointer_sniping_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_sniping_dpi * CHARYBDIS_SNIPING_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_SNIPING_DPI; } +static uint16_t get_pointer_sniping_dpi(charybdis_config_t* config) { + return (uint16_t)config->pointer_sniping_dpi * CHARYBDIS_SNIPING_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_SNIPING_DPI; +} /** \brief Set the appropriate DPI for the input config. */ static void maybe_update_pointing_device_cpi(charybdis_config_t* config) { @@ -127,64 +132,54 @@ static void step_pointer_sniping_dpi(charybdis_config_t* config, bool forward) { maybe_update_pointing_device_cpi(config); } -uint16_t charybdis_get_pointer_default_dpi(void) { return get_pointer_default_dpi(&g_charybdis_config); } +uint16_t charybdis_get_pointer_default_dpi(void) { + return get_pointer_default_dpi(&g_charybdis_config); +} -uint16_t charybdis_get_pointer_sniping_dpi(void) { return get_pointer_sniping_dpi(&g_charybdis_config); } +uint16_t charybdis_get_pointer_sniping_dpi(void) { + return get_pointer_sniping_dpi(&g_charybdis_config); +} -void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward) { step_pointer_default_dpi(&g_charybdis_config, forward); } +void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward) { + step_pointer_default_dpi(&g_charybdis_config, forward); +} void charybdis_cycle_pointer_default_dpi(bool forward) { step_pointer_default_dpi(&g_charybdis_config, forward); write_charybdis_config_to_eeprom(&g_charybdis_config); } -void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward) { step_pointer_sniping_dpi(&g_charybdis_config, forward); } +void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward) { + step_pointer_sniping_dpi(&g_charybdis_config, forward); +} void charybdis_cycle_pointer_sniping_dpi(bool forward) { step_pointer_sniping_dpi(&g_charybdis_config, forward); write_charybdis_config_to_eeprom(&g_charybdis_config); } -bool charybdis_get_pointer_sniping_enabled(void) { return g_charybdis_config.is_sniping_enabled; } +bool charybdis_get_pointer_sniping_enabled(void) { + return g_charybdis_config.is_sniping_enabled; +} void charybdis_set_pointer_sniping_enabled(bool enable) { g_charybdis_config.is_sniping_enabled = enable; maybe_update_pointing_device_cpi(&g_charybdis_config); } -bool charybdis_get_pointer_dragscroll_enabled(void) { return g_charybdis_config.is_dragscroll_enabled; } +bool charybdis_get_pointer_dragscroll_enabled(void) { + return g_charybdis_config.is_dragscroll_enabled; +} void charybdis_set_pointer_dragscroll_enabled(bool enable) { g_charybdis_config.is_dragscroll_enabled = enable; maybe_update_pointing_device_cpi(&g_charybdis_config); } -# ifndef CONSTRAIN_HID -# define CONSTRAIN_HID(value) ((value) < XY_REPORT_MIN ? XY_REPORT_MIN : ((value) > XY_REPORT_MAX ? XY_REPORT_MAX : (value))) -# endif // !CONSTRAIN_HID - -/** - * \brief Add optional acceleration effect. - * - * If `CHARYBDIS_ENABLE_POINTER_ACCELERATION` is defined, add a simple and naive - * acceleration effect to the provided value. Return the value unchanged - * otherwise. - */ -# ifndef DISPLACEMENT_WITH_ACCELERATION -# ifdef CHARYBDIS_POINTER_ACCELERATION_ENABLE -# define DISPLACEMENT_WITH_ACCELERATION(d) (CONSTRAIN_HID(d > 0 ? d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d : -d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d)) -# else // !CHARYBDIS_POINTER_ACCELERATION_ENABLE -# define DISPLACEMENT_WITH_ACCELERATION(d) (d) -# endif // CHARYBDIS_POINTER_ACCELERATION_ENABLE -# endif // !DISPLACEMENT_WITH_ACCELERATION - /** * \brief Augment the pointing device behavior. * - * Implement the Charybdis-specific features for pointing devices: - * - Drag-scroll - * - Sniping - * - Acceleration + * Implement drag-scroll. */ static void pointing_device_task_charybdis(report_mouse_t* mouse_report) { static int16_t scroll_buffer_x = 0; @@ -194,12 +189,12 @@ static void pointing_device_task_charybdis(report_mouse_t* mouse_report) { scroll_buffer_x -= mouse_report->x; # else scroll_buffer_x += mouse_report->x; -# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X +# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X # ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y scroll_buffer_y -= mouse_report->y; # else scroll_buffer_y += mouse_report->y; -# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y +# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y mouse_report->x = 0; mouse_report->y = 0; if (abs(scroll_buffer_x) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) { @@ -210,16 +205,14 @@ static void pointing_device_task_charybdis(report_mouse_t* mouse_report) { mouse_report->v = scroll_buffer_y > 0 ? 1 : -1; scroll_buffer_y = 0; } - } else if (!g_charybdis_config.is_sniping_enabled) { - mouse_report->x = DISPLACEMENT_WITH_ACCELERATION(mouse_report->x); - mouse_report->y = DISPLACEMENT_WITH_ACCELERATION(mouse_report->y); } } report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { - pointing_device_task_charybdis(&mouse_report); - mouse_report = pointing_device_task_user(mouse_report); - + if (is_keyboard_master()) { + pointing_device_task_charybdis(&mouse_report); + mouse_report = pointing_device_task_user(mouse_report); + } return mouse_report; } @@ -230,9 +223,9 @@ static bool has_shift_mod(void) { return mod_config(get_mods()) & MOD_MASK_SHIFT; # else return mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT; -# endif // NO_ACTION_ONESHOT +# endif // NO_ACTION_ONESHOT } -# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES +# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES /** * \brief Outputs the Charybdis configuration to console. @@ -247,16 +240,16 @@ static bool has_shift_mod(void) { */ __attribute__((unused)) static void debug_charybdis_config_to_console(charybdis_config_t* config) { # ifdef CONSOLE_ENABLE - IGNORE_FORMAT_WARNING(dprintf("(charybdis) process_record_kb: config = {\n" - "\traw = 0x%04X,\n" - "\t{\n" - "\t\tis_dragscroll_enabled=%b\n" - "\t\tis_sniping_enabled=%b\n" - "\t\tdefault_dpi=0x%02X (%ld)\n" - "\t\tsniping_dpi=0x%01X (%ld)\n" - "\t}\n" - "}\n", - config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config))); + dprintf("(charybdis) process_record_kb: config = {\n" + "\traw = 0x%X,\n" + "\t{\n" + "\t\tis_dragscroll_enabled=%u\n" + "\t\tis_sniping_enabled=%u\n" + "\t\tdefault_dpi=0x%X (%u)\n" + "\t\tsniping_dpi=0x%X (%u)\n" + "\t}\n" + "}\n", + config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config)); # endif // CONSOLE_ENABLE } @@ -307,7 +300,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { } break; } -# endif // !NO_CHARYBDIS_KEYCODES +# endif // !NO_CHARYBDIS_KEYCODES return true; } @@ -318,22 +311,70 @@ void eeconfig_init_kb(void) { eeconfig_init_user(); } -void matrix_power_up(void) { pointing_device_task(); } +void matrix_power_up(void) { + pointing_device_task(); +} void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { if (initiator2target_buffer_size == sizeof(g_charybdis_config)) { memcpy(&g_charybdis_config, initiator2target_buffer, sizeof(g_charybdis_config)); } } +#endif // POINTING_DEVICE_ENABLE + +__attribute__((weak)) void user_button_init(void) { +#ifdef USER_BUTTON_PIN + gpio_set_pin_input_high(USER_BUTTON_PIN); +#endif // USER_BUTTON_PIN +} + +__attribute__((weak)) bool check_user_button_state(void) { +#ifdef USER_BUTTON_PIN + return !gpio_read_pin(USER_BUTTON_PIN); +#endif // USER_BUTTON_PIN + return false; +} void keyboard_post_init_kb(void) { +#ifdef DEBUG_LED_PIN + gpio_set_pin_output(DEBUG_LED_PIN); + gpio_write_pin_low(DEBUG_LED_PIN); +#endif // DEBUG_LED_PIN + +#ifdef POINTING_DEVICE_ENABLE maybe_update_pointing_device_cpi(&g_charybdis_config); transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler); - +#endif // POINTING_DEVICE_ENABLE keyboard_post_init_user(); } +void keyboard_pre_init_kb(void) { + user_button_init(); +#ifdef POINTING_DEVICE_ENABLE + read_charybdis_config_from_eeprom(&g_charybdis_config); +#endif // POINTING_DEVICE_ENAcBLE + keyboard_pre_init_user(); +} + +__attribute__((weak)) void execute_user_button_action(bool state) { + if (state) { + if (is_keyboard_master()) { + reset_keyboard(); + } else { + soft_reset_keyboard(); + } + } +} + void housekeeping_task_kb(void) { + static bool last_state = false; + bool state = check_user_button_state(); + if (state != last_state) { + last_state = state; + execute_user_button_action(state); + } + +#ifdef POINTING_DEVICE_ENABLE if (is_keyboard_master()) { // Keep track of the last state, so that we can tell if we need to propagate to slave static charybdis_config_t last_charybdis_config = {0}; @@ -357,22 +398,50 @@ void housekeeping_task_kb(void) { } } } - // no need for user function, is called already +#endif // POINTING_DEVICE_ENABLE + // no need for user function, is called already } -#endif // POINTING_DEVICE_ENABLE +#ifdef USER_BUTTON_PIN +/** + * @brief Replace and add upon the default bootmagic reset function. + * In this case, we also check the user button. + * + * @return true if the user button is pressed, or normal bootmagic key position. + * @return false if the user button is not pressed and normal bootmagic key position is not pressed. + */ +__attribute__((weak)) bool bootmagic_should_reset(void) { + uint8_t row = BOOTMAGIC_ROW; + uint8_t col = BOOTMAGIC_COLUMN; + +# if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_ROW_RIGHT) && defined(BOOTMAGIC_COLUMN_RIGHT) + if (!is_keyboard_left()) { + row = BOOTMAGIC_ROW_RIGHT; + col = BOOTMAGIC_COLUMN_RIGHT; + } +# endif -__attribute__((weak)) void matrix_init_sub_kb(void) {} -void matrix_init_kb(void) { -#ifdef POINTING_DEVICE_ENABLE - read_charybdis_config_from_eeprom(&g_charybdis_config); -#endif // POINTING_DEVICE_ENABLE - matrix_init_sub_kb(); - matrix_init_user(); + return matrix_get_row(row) & (1 << col) || check_user_button_state(); } +#endif // USER_BUTTON_PIN -__attribute__((weak)) void matrix_scan_sub_kb(void) {} -void matrix_scan_kb(void) { - matrix_scan_sub_kb(); - matrix_scan_user(); +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } +#ifdef RGB_MATRIX_ENABLE + void rgb_matrix_update_pwm_buffers(void); + rgb_matrix_set_color_all(RGB_RED); + rgb_matrix_update_pwm_buffers(); +#endif // RGB_MATRIX_ENABLE + return true; +} + +#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE +bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) { + if (IS_KB_KEYCODE(keycode)) { + return true; + } + return is_mouse_record_user(keycode, record); } +#endif // POINTING_DEVICE_AUTO_MOUSE_ENABLE diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.h b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h index 48020c89bd..0c473517c7 100644 --- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.h +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h @@ -28,14 +28,15 @@ enum charybdis_keycodes { DRAGSCROLL_MODE, DRAGSCROLL_MODE_TOGGLE, }; -# define DPI_MOD POINTER_DEFAULT_DPI_FORWARD -# define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE -# define S_D_MOD POINTER_SNIPING_DPI_FORWARD -# define S_D_RMOD POINTER_SNIPING_DPI_REVERSE -# define SNIPING SNIPING_MODE -# define SNP_TOG SNIPING_MODE_TOGGLE -# define DRGSCRL DRAGSCROLL_MODE -# define DRG_TOG DRAGSCROLL_MODE_TOGGLE + +#define DPI_MOD POINTER_DEFAULT_DPI_FORWARD +#define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE +#define S_D_MOD POINTER_SNIPING_DPI_FORWARD +#define S_D_RMOD POINTER_SNIPING_DPI_REVERSE +#define SNIPING SNIPING_MODE +#define SNP_TOG SNIPING_MODE_TOGGLE +#define DRGSCRL DRAGSCROLL_MODE +#define DRG_TOG DRAGSCROLL_MODE_TOGGLE #ifdef POINTING_DEVICE_ENABLE /** \brief Return the current DPI value for the pointer's default mode. */ @@ -103,7 +104,4 @@ bool charybdis_get_pointer_dragscroll_enabled(void); * are translated into horizontal and vertical scroll movements. */ void charybdis_set_pointer_dragscroll_enabled(bool enable); -#endif // POINTING_DEVICE_ENABLE - -void matrix_init_sub_kb(void); -void matrix_scan_sub_kb(void); +#endif // POINTING_DEVICE_ENABLE diff --git a/keyboards/handwired/wwa/soyuz/keyboard.json b/keyboards/handwired/wwa/soyuz/keyboard.json index 4b3a015a35..b922af10a2 100644 --- a/keyboards/handwired/wwa/soyuz/keyboard.json +++ b/keyboards/handwired/wwa/soyuz/keyboard.json @@ -8,7 +8,8 @@ "bootmagic": true, "extrakey": true, "mousekey": true, - "nkro": true + "nkro": true, + "encoder" : true }, "matrix_pins": { "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6"], @@ -20,6 +21,13 @@ "pid": "0x0004", "vid": "0x5757" }, + "encoder": { + "rotary": [ + {"pin_a": "GP16", "pin_b": "GP17"}, + {"pin_a": "GP18", "pin_b": "GP19"}, + {"pin_a": "GP20", "pin_b": "GP21"} + ] + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/wwa/soyuz/keymaps/default/keymap.c b/keyboards/handwired/wwa/soyuz/keymaps/default/keymap.c index af0eb592dc..c1d75ffc54 100644 --- a/keyboards/handwired/wwa/soyuz/keymaps/default/keymap.c +++ b/keyboards/handwired/wwa/soyuz/keymaps/default/keymap.c @@ -3,11 +3,17 @@ #include QMK_KEYBOARD_H - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 ) -};
\ No newline at end of file +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, +}; +#endif diff --git a/keyboards/handwired/wwa/soyuz/keymaps/default/rules.mk b/keyboards/handwired/wwa/soyuz/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/handwired/wwa/soyuz/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/handwired/wwa/soyuz/readme.md b/keyboards/handwired/wwa/soyuz/readme.md index 69f8ef9d76..01a3b60dfe 100644 --- a/keyboards/handwired/wwa/soyuz/readme.md +++ b/keyboards/handwired/wwa/soyuz/readme.md @@ -2,7 +2,7 @@  -21 Key and 3 MIDI Potentiometers Macro Keyboard +21 Key, 3 Encoder * Keyboard Maintainer: [spacehangover](https://github.com/spacehangover) * Hardware Supported: RP2040 Handwired diff --git a/keyboards/handwired/yodadistro/macro/keyboard.json b/keyboards/handwired/yodadistro/macro/keyboard.json new file mode 100644 index 0000000000..f0a03453b4 --- /dev/null +++ b/keyboards/handwired/yodadistro/macro/keyboard.json @@ -0,0 +1,33 @@ +{ + "manufacturer": "Raspberry Pi", + "keyboard_name": "KBP 8-Key Macro Pad", + "maintainer": "yodadistro", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "matrix_pins": { + "direct": [ + ["GP3", "GP5", "GP7", "GP9"], + ["GP2", "GP4", "GP6", "GP8"] + ] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x2044", + "vid": "0x1209" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1} + ] + } + } +} diff --git a/keyboards/handwired/yodadistro/macro/keymaps/default/keymap.json b/keyboards/handwired/yodadistro/macro/keymaps/default/keymap.json new file mode 100644 index 0000000000..5f5ccb88b0 --- /dev/null +++ b/keyboards/handwired/yodadistro/macro/keymaps/default/keymap.json @@ -0,0 +1,11 @@ +{ + "keyboard": "handwired/yodadistro/macro", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_A", "KC_B", "KC_C", "KC_D", + "KC_E", "KC_F", "KC_G", "KC_H" + ] + ] +} diff --git a/keyboards/handwired/yodadistro/macro/readme.md b/keyboards/handwired/yodadistro/macro/readme.md new file mode 100644 index 0000000000..ceda19acba --- /dev/null +++ b/keyboards/handwired/yodadistro/macro/readme.md @@ -0,0 +1,25 @@ +# Yoda Distro + + + +Scratch made direct wire pin 8-Key (4x2) Macro Pad using a Raspberry Pi Pico (2040). + +* Keyboard Maintainer: [YodaDistro](https://github.com/YodaDistro) +* Hardware Supported: Raspberry Pi Pico (2040) +* Hardware Availability: 3D Printed Design (https://github.com/YodaDistro/MacroPad) + +Make example for this keyboard (after setting up your build environment): + + make handwired/yodadistro/macro:default + +Flashing example for this keyboard: + + make handwired/yodadistro/macro: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 + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
\ No newline at end of file diff --git a/keyboards/handwired/zeropad/keyboard.json b/keyboards/handwired/zeropad/keyboard.json new file mode 100644 index 0000000000..40bf6c8c2a --- /dev/null +++ b/keyboards/handwired/zeropad/keyboard.json @@ -0,0 +1,38 @@ +{ + "manufacturer": "Leon Sieber", + "keyboard_name": "ZeroPad", + "maintainer": "diffrentGuesser", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D1", "D0", "D4"], + "rows": ["C6", "D7", "E6"], + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x5A50" + }, + "community_layouts": [ "ortho_3x3" ], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/handwired/zeropad/keymaps/default/keymap.c b/keyboards/handwired/zeropad/keymaps/default/keymap.c new file mode 100644 index 0000000000..aa674bcbda --- /dev/null +++ b/keyboards/handwired/zeropad/keymaps/default/keymap.c @@ -0,0 +1,13 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/handwired/zeropad/readme.md b/keyboards/handwired/zeropad/readme.md new file mode 100644 index 0000000000..c021d7dc05 --- /dev/null +++ b/keyboards/handwired/zeropad/readme.md @@ -0,0 +1,27 @@ +# ZeroPad + + + +This keyboard is inspired by the scotto9 from Joe Scotto. This keyboard is compatible with via and has 4 layers of keybinds (24 keybinds - 4x8 + 1 per layer for changing the layer). + +* Keyboard Maintainer: [Leon Sieber](https://github.com/diffrentGuesser) +* Hardware Supported: Pro Micro, 3 pin switches +* Hardware Availability: [Pro Micro](https://de.aliexpress.com/item/32846843498.html?spm=a2g0o.cart.0.0.146d4ae4kCjqDY&mp=1&gatewayAdapt=glo2deu), [switches](https://de.aliexpress.com/item/1005007135709029.html?spm=a2g0o.cart.0.0.146d4ae4kCjqDY&mp=1&gatewayAdapt=glo2deu) + +Make example for this keyboard (after setting up your build environment): + + make handwired/zeropad:default + +Flashing example for this keyboard: + + make handwired/zeropad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard +* **Physical reset**: Short the GND and the RST pins on the Pro Micro. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available |