From 27801eefc868d80015dbf567440fc1df53d17e14 Mon Sep 17 00:00:00 2001 From: Matthias Fulz Date: Sun, 26 Jun 2022 21:41:19 +0200 Subject: [PATCH 1/3] New master broke compilation --- .../handwired/trenctyl_manuform/6x6/6x6.c | 1 + .../handwired/trenctyl_manuform/6x6/6x6.h | 40 ++ .../handwired/trenctyl_manuform/6x6/config.h | 91 ++++ .../trenctyl_manuform/6x6/f01/config.h | 76 +++ .../trenctyl_manuform/6x6/f01/f401.h | 19 + .../trenctyl_manuform/6x6/f01/halconf.h | 8 + .../trenctyl_manuform/6x6/f01/mcuconf.h | 33 ++ .../trenctyl_manuform/6x6/f01/rules.mk | 6 + .../handwired/trenctyl_manuform/6x6/info.json | 102 ++++ .../6x6/keymaps/default/config.h | 25 + .../6x6/keymaps/default/keymap.c | 462 ++++++++++++++++++ .../handwired/trenctyl_manuform/6x6/rules.mk | 26 + .../handwired/trenctyl_manuform/config.h | 46 ++ .../handwired/trenctyl_manuform/readme.md | 159 ++++++ .../trenctyl_manuform/trenctyl_manuform.c | 1 + .../trenctyl_manuform/trenctyl_manuform.h | 7 + 16 files changed, 1102 insertions(+) create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/6x6.c create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/6x6.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/config.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/f01/config.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/f01/f401.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/f01/halconf.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/f01/mcuconf.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/f01/rules.mk create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/info.json create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/config.h create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/keymap.c create mode 100644 keyboards/handwired/trenctyl_manuform/6x6/rules.mk create mode 100644 keyboards/handwired/trenctyl_manuform/config.h create mode 100644 keyboards/handwired/trenctyl_manuform/readme.md create mode 100644 keyboards/handwired/trenctyl_manuform/trenctyl_manuform.c create mode 100644 keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h diff --git a/keyboards/handwired/trenctyl_manuform/6x6/6x6.c b/keyboards/handwired/trenctyl_manuform/6x6/6x6.c new file mode 100644 index 0000000000..7d3524a571 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/6x6.c @@ -0,0 +1 @@ +#include "6x6.h" diff --git a/keyboards/handwired/trenctyl_manuform/6x6/6x6.h b/keyboards/handwired/trenctyl_manuform/6x6/6x6.h new file mode 100644 index 0000000000..ad7128af64 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/6x6.h @@ -0,0 +1,40 @@ +#pragma once + +#include "trenctyl_manuform.h" + +#if defined(KEYBOARD_handwired_enctyl_manuform_6x6_f401) +# include "f401.h" +#elif defined(KEYBOARD_handwired_enctyl_manuform_6x6_f411) +# include "f411.h" +#endif + + +#define XXX KC_NO + +#define LAYOUT_6x6( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \ + L51, L52, L53, R52, R53, \ + L54, L55, R50, R51, \ + L64, L65, R60, R61, \ + L62, L63 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, L45 }, \ + { XXX, L51, L52, L53, L54, L55 }, \ + { XXX, XXX, L62, L63, L64, L65 }, \ +\ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { R40, R41, R42, R43, R44, R45 }, \ + { R50, R51, R52, R53, XXX, XXX }, \ + { R60, R61, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/handwired/trenctyl_manuform/6x6/config.h b/keyboards/handwired/trenctyl_manuform/6x6/config.h new file mode 100644 index 0000000000..7816fe16b6 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/config.h @@ -0,0 +1,91 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +#define RGB_MATRIX_KEYPRESSES +//#define RGB_MATRIX_KEYRELEASES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_ENC_MODE_ENABLE +#define SPLIT_ENC_FLAGS_ENABLE +#define SPLIT_OLED_ENABLE + +#define POINTING_DEVICE_INVERT_Y TRUE +#define PMW3360_LIFTOFF_DISTANCE 0x03 + +#define ONESHOT_TAP_TOGGLE 3 + +#define OLED_TIMEOUT 0 + +#define ENABLE_RGB_MATRIX_NONE +#define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +#define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +#define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +#define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +#define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time then shifts back +#define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right then back to the left +#define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Single hue fractal filled keys pulsing horizontally out to edges +#define ENABLE_RGB_MATRIX_PIXEL_RAIN // Randomly light keys with random hues +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue pulses keys hit to shifted hue then fades to current hue +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +#define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out +#define ENABLE_RGB_MATRIX_EFFECT_MAX + +#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_VIS_STATUS diff --git a/keyboards/handwired/trenctyl_manuform/6x6/f01/config.h b/keyboards/handwired/trenctyl_manuform/6x6/f01/config.h new file mode 100644 index 0000000000..4322bb5349 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/f01/config.h @@ -0,0 +1,76 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define PRODUCT_ID 0x3836 +#define DEVICE_VER 0x0001 +#define PRODUCT Trenctyl Manuform (6x6) BlackPill F01 + +#define MATRIX_ROW_PINS { A15, B13, B14, B15, A8, B6, B7 } +#define MATRIX_COL_PINS { B10, B0, A1, A0, B4, C14 } + +#define MATRIX_ROW_PINS_RIGHT { A15, B13, B14, B15, A8, B6, B7 } +#define MATRIX_COL_PINS_RIGHT { B10, B0, A1, A0, B4, C14 } + +#define DIODE_DIRECTION ROW2COL + +#define RGB_DI_PIN B3 +#define RGBLED_NUM 74 +#define DRIVER_LED_TOTAL 74 + +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 38, 36 } +#define RGBLIGHT_LIMIT_VAL 200 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS RGBLIGHT_LIMIT_VAL +#define RGB_MATRIX_SPLIT RGBLED_SPLIT +#define RGB_MATRIX_CENTER { 110, 19 } + +#define SERIAL_USART_RX_PIN A2 +#define SELECT_SOFT_SERIAL_SPEED 1 +#define FORCED_SYNC_THROTTLE_MS 200 +#define SERIAL_USART_DRIVER SD2 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_RX_PAL_MODE 7 +#define SERIAL_USART_TIMEOUT 10 +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 + +#define PMW3360_CS_PIN A4 + +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN A5 +#define SPI_SCK_PAL_MODE 5 +#define SPI_MOSI_PIN A7 +#define SPI_MOSI_PAL_MODE 5 +#define SPI_MISO_PIN A6 +#define SPI_MISO_PAL_MODE 5 + +#define ENCODERS_PAD_A { C13 } +#define ENCODERS_PAD_B { C15 } + +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 +#define WS2812_DMA_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 + +// hw rnd generator +//#define ENC_HW_RND_STM32F4 diff --git a/keyboards/handwired/trenctyl_manuform/6x6/f01/f401.h b/keyboards/handwired/trenctyl_manuform/6x6/f01/f401.h new file mode 100644 index 0000000000..c278adc2cf --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/f01/f401.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "6x6.h" diff --git a/keyboards/handwired/trenctyl_manuform/6x6/f01/halconf.h b/keyboards/handwired/trenctyl_manuform/6x6/f01/halconf.h new file mode 100644 index 0000000000..0b4f9cfaae --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/f01/halconf.h @@ -0,0 +1,8 @@ +#pragma once + +#define HAL_USE_SERIAL TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/handwired/trenctyl_manuform/6x6/f01/mcuconf.h b/keyboards/handwired/trenctyl_manuform/6x6/f01/mcuconf.h new file mode 100644 index 0000000000..43b60f8024 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/f01/mcuconf.h @@ -0,0 +1,33 @@ +#pragma once + +#include_next "mcuconf.h" + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 TRUE + +#undef STM32_UART_USART2_RX_DMA_STREAM +#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) +#undef STM32_UART_USART2_TX_DMA_STREAM +#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) + +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 5 + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +#undef STM32_SPI_SPI1_RX_DMA_STREAM +#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) +#undef STM32_SPI_SPI1_TX_DMA_STREAM +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_ADC_USE_ADC0 +#define STM32_ADC_USE_ADC0 TRUE +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/handwired/trenctyl_manuform/6x6/f01/rules.mk b/keyboards/handwired/trenctyl_manuform/6x6/f01/rules.mk new file mode 100644 index 0000000000..1ea282ec68 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/f01/rules.mk @@ -0,0 +1,6 @@ +MCU = STM32F401 + +BOOTLOADER = stm32-dfu + +LTO_ENABLE = no +SERIAL_DRIVER = usart diff --git a/keyboards/handwired/trenctyl_manuform/6x6/info.json b/keyboards/handwired/trenctyl_manuform/6x6/info.json new file mode 100644 index 0000000000..117cd49867 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "Dactyl Manuform 6x6", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_6x6": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4}, + {"x": 16, "y": 4}, + + {"x": 1, "y": 5}, + {"x": 2, "y": 5}, + {"x": 3, "y": 5}, + + {"x": 13, "y": 5}, + {"x": 14, "y": 5}, + + {"x": 4, "y": 6}, + {"x": 5, "y": 6}, + + {"x": 11, "y": 6}, + {"x": 12, "y": 6}, + + {"x": 6, "y": 7}, + {"x": 7, "y": 7}, + + {"x": 9, "y": 7}, + {"x": 10, "y": 7}, + + {"x": 6, "y": 8}, + {"x": 7, "y": 8} + ] + } + } +} diff --git a/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/config.h b/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/config.h new file mode 100644 index 0000000000..c337df3413 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX + +//#define MASTER_LEFT +#define MASTER_RIGHT + +//#define EE_HANDS diff --git a/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/keymap.c b/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/keymap.c new file mode 100644 index 0000000000..898ea6ccb7 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/keymaps/default/keymap.c @@ -0,0 +1,462 @@ +#include QMK_KEYBOARD_H + +#include "pointing_device.h" + +#include "quantum_keycodes.h" +#include "transactions.h" +/*#include "enc.h"*/ + +#define _QWERTZ 0 +#define _CONTROL 1 +#define _I3WM 2 +#define _MOUSE 3 + +#define QWERTZ TO(_QWERTZ) +#define CONTROL TT(_CONTROL) +#define I3WM TT(_I3WM) +#define MOUSE TG(_MOUSE) + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = {{ + { 0, 5, 10, 16, 22, 30, }, + { 1, 6, 11, 17, 23, 31, }, + { 2, 7, 12, 18, 24, 32, }, + { 3, 8, 13, 19, 25, 33, }, + { 4, 9, 14, 20, 26, 34, }, + { NO_LED, NO_LED, 15, 21, 27, 35, }, + { NO_LED, NO_LED, 29, 37, 28, 36, }, + // RIGHT HALF + { 38, 45, 52, 58, 64, 69 }, + { 39, 46, 53, 59, 65, 70 }, + { 40, 47, 54, 60, 66, 71 }, + { 41, 48, 55, 61, 67, 72 }, + { 42, 49, 56, 62, 68, 73 }, + { 43, 50, 57, 63, NO_LED, NO_LED }, + { 44, 51, NO_LED, NO_LED, NO_LED, NO_LED }, +}, { + { 0, 0 }, { 0, 8 }, { 0, 19 }, { 0, 30 }, { 0, 41 }, + { 20, 0 }, { 20, 8 }, { 20, 19 }, { 20, 30 }, { 20, 41 }, + { 40, 0 }, { 40, 8 }, { 40, 19 }, { 40, 30 }, { 40, 41 }, { 40, 52 }, + { 60, 0 }, { 60, 8 }, { 60, 19 }, { 60, 30 }, { 60, 41 }, { 60, 52 }, + { 80, 0 }, { 80, 8 }, { 80, 19 }, { 80, 30 }, { 80, 41 }, { 80, 52 }, { 80, 64 }, + { 40, 64 }, + { 100, 0 }, { 100, 8 }, { 100, 19 }, { 100, 30 }, { 100, 41 }, { 100, 52 }, { 100, 64 }, + { 60, 64 }, + // RIGHT HALF + { 120, 0 }, { 120, 8 }, { 120, 19 }, { 120, 30 }, { 120, 41 }, { 120, 52 }, { 120, 64 }, + { 140, 0 }, { 140, 8 }, { 140, 19 }, { 140, 30 }, { 140, 41 }, { 140, 52 }, { 140, 64 }, + { 160, 0 }, { 160, 8 }, { 160, 19 }, { 160, 30 }, { 160, 41 }, { 160, 52 }, + { 180, 0 }, { 180, 8 }, { 180, 19 }, { 180, 30 }, { 180, 41 }, { 180, 52 }, + { 200, 0 }, { 200, 8 }, { 200, 19 }, { 200, 30 }, { 200, 41 }, + { 224, 0 }, { 224, 8 }, { 224, 19 }, { 224, 30 }, { 224, 41 } + }, { + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, + 4, 4, + 4, 4, + 4, 4, + /*4, 4, 4, 4, 4, 4,*/ + // RIGHT HALF + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, + 4, 4, + 4, 4, + /*4, 4, 4, 4, 4, 4,*/ +}}; +#endif + +enum my_keycodes { + CPI_NEXT = SAFE_RANGE, + CPI_PREV, + VIS_VAD, + VIS_VAI +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTZ] = LAYOUT_6x6( + 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_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_LBRC, + KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + OSM(MOD_LSFT), KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_DOT,KC_COMM ,KC_SLSH,KC_BSLASH, + KC_MUTE,KC_RBRC,KC_MINS, KC_NUBS, KC_EQL, + KC_LALT,KC_ENT, KC_SPC, KC_RALT, + KC_ESC,I3WM, KC_LGUI,MOUSE, + MOUSE,CONTROL + ), + + [_CONTROL] = LAYOUT_6x6( + ENC_INIT,ENC_LOAD,_______,_______,_______,_______, ENC_REQ_ALLOW,ENC_REQ_DENY,_______,_______,_______,EEP_RST, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_DEL, + _______,_______,KC_PGDN,KC_UP,KC_PGUP,_______, _______,KC_7,KC_8,KC_9,_______,_______, + _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______, KC_HOME,KC_4,KC_5,KC_6,KC_END,_______, + _______,_______,_______,_______,_______,_______, _______,KC_1,KC_2,KC_3,VIS_VAD,_______, + _______,VIS_VAI,_______, KC_0,_______, + RGB_MOD,RGB_RMOD, KC_ENT,RGB_VAI, + RGB_SPD,RGB_SPI, RGB_VAD,RGB_TOG, + QWERTZ,_______ + ), + + [_I3WM] = LAYOUT_6x6( + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5), LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0),_______, + _______,SGUI(KC_C),LGUI(KC_W),LGUI(KC_E),_______,_______, LGUI(KC_Y),_______,LGUI(KC_I),_______,LGUI(KC_P),_______, + _______,LGUI(KC_ENT),LGUI(KC_S),LGUI(KC_D),_______,_______, LGUI(KC_H),LGUI(KC_J),LGUI(KC_K),LGUI(KC_L),_______,_______, + _______,_______,_______,LGUI(KC_C),_______,_______, LAG(KC_N),_______,_______,_______,_______,_______, + _______,_______,_______, _______,_______, + _______,_______, LGUI(KC_ENT),_______, + _______,_______, _______,_______, + QWERTZ,_______ + ), + + [_MOUSE] = LAYOUT_6x6( + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,KC_MS_BTN2,KC_MS_BTN3,KC_MS_BTN1,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, _______,KC_MS_BTN1,KC_MS_BTN3,KC_MS_BTN2,_______,_______, + _______,_______,_______, KC_MS_WH_DOWN,KC_MS_WH_UP, + _______,_______, KC_SPC,CPI_NEXT, + _______,_______, CPI_PREV,QWERTZ, + _______,QWERTZ + ), + +}; + +#ifdef OLED_ENABLE + +#include + +int get_val_percent(void) { +#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS + uint8_t maxVal = RGB_MATRIX_MAXIMUM_BRIGHTNESS; +#else + uint8_t maxVal = 255; +#endif + uint8_t actVal = rgb_matrix_get_val(); + + float ret = ((float) 100)/((float) maxVal)*((float)actVal); + + return ((int) ret); +} + +int get_speed_percent(void) { + uint8_t maxVal = 255; + uint8_t actVal = rgb_matrix_get_speed(); + + float ret = ((float) 100)/((float) maxVal)*((float)actVal); + + return ((int) ret); +} + +#ifdef POINTING_DEVICE_ENABLE +static uint16_t _cpi; +#endif + +static uint8_t _vis_timeout_sec; +static uint32_t _vis_timer; +static bool _vis_status; + +bool oled_task_user(void) { + // Host Keyboard Layer Status + if(is_keyboard_master()) { + uint32_t _oled_timeout = ((_vis_timeout_sec * 1000) - timer_elapsed32(_vis_timer)) / 1000; + if (!_vis_status) { + // turn displays off + oled_off(); + return true; + } + + oled_write_P(PSTR("L: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTZ: + oled_write_P(PSTR("Quertz\n"), false); + break; + case _CONTROL: + oled_write_P(PSTR("Control\n"), false); + break; + case _I3WM: + oled_write_P(PSTR("I3WM\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("MOUSE\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + char brightness[100]; + memset(brightness, 0x00, 100); + if (rgb_matrix_is_enabled()) { + snprintf(brightness, 100, "B: %d%% S: %d%%\n", get_val_percent(), get_speed_percent()); + } else { + snprintf(brightness, 100, "B: OFF\n"); + } + oled_write_P(PSTR(brightness), false); + +#ifdef POINTING_DEVICE_ENABLE + switch(_cpi) { + case 150: + oled_write_P(PSTR("M: >\n"), false); + break; + case 250: + oled_write_P(PSTR("M: >>\n"), false); + break; + case 500: + oled_write_P(PSTR("M: >>>\n"), false); + break; + case 800: + oled_write_P(PSTR("M: >>>>\n"), false); + break; + case 1000: + oled_write_P(PSTR("M: >>>>>\n"), false); + break; + } +#endif + + oled_write_P(PSTR("V: "), false); + oled_write_P(get_u8_str(_oled_timeout, ' '), false); + oled_write_P(PSTR("s\n"), false); + } else { +#ifdef ENC_ENABLE + enc_write_oled(false); +#endif + oled_write_P(PSTR("L: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTZ: + oled_write_P(PSTR("Quertz\n"), false); + break; + case _CONTROL: + oled_write_P(PSTR("Control\n"), false); + break; + case _I3WM: + oled_write_P(PSTR("I3WM\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("MOUSE\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + } + + return true; +} +#endif + + +#ifdef POINTING_DEVICE_ENABLE + +void pointing_device_init_user(void) { + _cpi = 500; + + pointing_device_set_cpi(_cpi); +} + +void _cpi_next(void) { + switch(_cpi) { + case 150: + _cpi = 250; + break; + case 250: + _cpi = 500; + break; + case 500: + _cpi = 800; + break; + case 800: + _cpi = 1000; + break; + case 1000: + _cpi = 150; + break; + } + + pointing_device_set_cpi(_cpi); +} + +void _cpi_prev(void) { + switch(_cpi) { + case 150: + _cpi = 1000; + break; + case 250: + _cpi = 150; + break; + case 500: + _cpi = 250; + break; + case 800: + _cpi = 500; + break; + case 1000: + _cpi = 800; + break; + } + + pointing_device_set_cpi(_cpi); +} + +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + if (!layer_state_is(_MOUSE)) { + mouse_report.h = 0; + mouse_report.v = 0; + mouse_report.x = 0; + mouse_report.y = 0; + } + return mouse_report; +} +#endif + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (!_vis_status) { + return; + } + + HSV hsv = (HSV){0, 0, 0}; + HSV hsv_alt = (HSV){0, 0, 0}; + bool led_off = false; + bool led_alt = false; + + switch(get_highest_layer(layer_state)) { // special handling per layer + case _CONTROL: + hsv = (HSV){0, 255, 255}; + break; + case _I3WM: + hsv = (HSV){85, 255, 255}; + break; + case _MOUSE: + hsv = (HSV){170, 255, 255}; + led_off = true; + break; + default: + return; + } + + hsv.v = rgb_matrix_get_val(); + RGB rgb = hsv_to_rgb(hsv); + hsv_alt.v = rgb_matrix_get_val(); + RGB rgb_alt = hsv_to_rgb(hsv_alt); + + for (uint8_t row=0; row= led_min && index <= led_max && index != NO_LED) { + if (keymap_key_to_keycode(get_highest_layer(layer_state), (keypos_t){col, row}) > KC_TRNS) { + rgb_matrix_set_color(index, rgb.r, rgb.g, rgb.b); + } else { + if (led_alt) { + rgb_matrix_set_color(index, rgb_alt.r, rgb_alt.g, rgb_alt.b); + continue; + } + if (led_off) { + rgb_matrix_set_color(index, 0, 0, 0); + } + } + } + } + } +} + +typedef struct _vis_status { + bool m2s_data; +} vis_status_t; + +void user_sync_vis_status_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) { + const vis_status_t *m2s = (const vis_status_t*)in_data; + _vis_status = m2s->m2s_data; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (is_keyboard_master()) { + _vis_timer = timer_read32(); + } + + switch (keycode) { +#ifdef POINTING_DEVICE_ENABLE + case CPI_PREV: + if (record->event.pressed) { + _cpi_prev(); + } + return false; + case CPI_NEXT: + if (record->event.pressed) { + _cpi_next(); + } + return false; +#endif + case VIS_VAD: + if (record->event.pressed) { + _vis_timeout_sec -= 10; + } + return false; + case VIS_VAI: + if (record->event.pressed) { + _vis_timeout_sec += 10; + } + return false; + default: + return true; + } +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch(index) { + case 0: + if(clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + break; + } + return false; +} + +void keyboard_pre_init_user(void) { + _vis_status = true; + _vis_timeout_sec = 120; + _vis_timer = timer_read32(); + pre_init_enc(); +} + +void eeconfig_init_user(void) { + eeconfig_init_enc(); +} + +void keyboard_post_init_user(void) { + transaction_register_rpc(USER_SYNC_VIS_STATUS, user_sync_vis_status_slave_handler); +} + +void housekeeping_task_user(void) { + if (is_keyboard_master()) { + if (timer_elapsed32(_vis_timer) >= (_vis_timeout_sec * 1000)) { + _vis_status = false; + } else { + _vis_status = true; + } + static uint32_t last_sync = 0; + if (timer_elapsed32(last_sync) > 500) { + vis_status_t m2s = {_vis_status}; + if (transaction_rpc_send(USER_SYNC_VIS_STATUS, sizeof(m2s), &m2s)) { + last_sync = timer_read32(); + } + } + } + + if (!_vis_status) { + rgb_matrix_set_color_all(0, 0, 0); + } +} diff --git a/keyboards/handwired/trenctyl_manuform/6x6/rules.mk b/keyboards/handwired/trenctyl_manuform/6x6/rules.mk new file mode 100644 index 0000000000..5a6560be57 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/6x6/rules.mk @@ -0,0 +1,26 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +WS2812_DRIVER = pwm +VIA_ENABLE = yes +RAW_ENABLE = yes +OLED_ENABLE = yes +ENC_ENABLE = yes + +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pmw3360 +#DIP_SWITCH_ENABLE = yes +ENCODER_ENABLE = yes diff --git a/keyboards/handwired/trenctyl_manuform/config.h b/keyboards/handwired/trenctyl_manuform/config.h new file mode 100644 index 0000000000..fbe4618a4a --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x44FD +#define MANUFACTURER mfulz + +/* mouse config */ +//#define MOUSEKEY_INTERVAL 20 +//#define MOUSEKEY_DELAY 0 +//#define MOUSEKEY_TIME_TO_MAX 60 +//#define MOUSEKEY_MAX_SPEED 7 +//#define MOUSEKEY_WHEEL_DELAY 0 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN A3 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Enables This makes it easier for fast typists to use dual-function keys */ +#define PERMISSIVE_HOLD diff --git a/keyboards/handwired/trenctyl_manuform/readme.md b/keyboards/handwired/trenctyl_manuform/readme.md new file mode 100644 index 0000000000..3221da0e9d --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/readme.md @@ -0,0 +1,159 @@ +Dactyl Manuform (4x5, 5x6, 5x7, 6x6) +====== +the [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. all information needed for making one is in the first link. +![Imgur](https://i.imgur.com/7y0Vbyd.jpg) + + +## First Time Setup + +Download or clone the `qmk_firmware` repo and navigate to its top level directory. Once your build environment is setup, you'll be able to generate the default .hex using: + +Depending on your Layout chose one of the follwing commands: + +``` +$ make handwired/dactyl_manuform/YOUR_LAYOUT:YOUR_KEYMAP_NAME +``` + +example: +``` +$ make handwired/dactyl_manuform/4x5:default +``` + +If everything worked correctly you will see a file: + +``` +dactyl_manuform_YOUR_LAYOUT_YOUR_KEYMAP_NAME.hex +``` + +For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/docs/faq_keymap.md) in the main readme.md. + + +## Keymaps + +### [Keymaps 4x5](/keyboards/handwired/dactyl_manuform/4x5/keymaps/) + +#### Default +Simple QWERTY layout with 3 Layers. +#### Dvorak + +### [Keymaps 5x6](/keyboards/handwired/dactyl_manuform/5x6/keymaps/) + +#### Default +Just a copy of the Impstyle keymap. Feel free to adjust it. + +#### Impstyle +A simple QWERTY keymap with 3 Layers. Both sides are connected via serial and the Left ist the master. + +### [Keymaps 5x7 aka almost Ergodox](/keyboards/handwired/dactyl_manuform/5x7/keymaps/) +#### Default +Keymap of Loligagger from geekhack. + +### [Keymaps 6x6](/keyboards/handwired/dactyl_manuform/6x6/keymaps/) + +#### Default +Simple QWERTY layout with 3 Layers. + +## Required Hardware + +Apart from diodes and key switches for the keyboard matrix in each half, you +will need: + +* 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each. +* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable + +Alternatively, you can use any sort of cable and socket that has at least 3 +wires. If you want to use I2C to communicate between halves, you will need a +cable with at least 4 wires and 2x 4.7kΩ pull-up resistors + +## Optional Hardware +A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`. + +## Wiring + +The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and digital pin 3 (i.e. +PD0 on the ATmega32u4) between the two Pro Micros. + +Next, wire your key matrix to any of the remaining 17 IO pins of the pro micro +and modify the `matrix.c` accordingly. + +The wiring for serial: + +![serial wiring](https://i.imgur.com/C3D1GAQ.png) + +The wiring for i2c: + +![i2c wiring](https://i.imgur.com/Hbzhc6E.png) + +The pull-up resistors may be placed on either half. It is also possible +to use 4 resistors and have the pull-ups in both halves, but this is +unnecessary in simple use cases. + +You can change your configuration between serial and i2c by modifying your `config.h` file. + +## Notes on Software Configuration + +the keymaps in here are for the 4x5 layout of the keyboard only. + +## Flashing + +To flash your firmware take a look at: [Flashing Instructions and Bootloader Information](https://docs.qmk.fm/#/flashing) + + +## Choosing which board to plug the USB cable into (choosing Master) + +Because the two boards are identical, the firmware has logic to differentiate the left and right board. + +It uses two strategies to figure things out: looking at the EEPROM (memory on the chip) or looking if the current board has the usb cable. + +The EEPROM approach requires additional setup (flashing the eeprom) but allows you to swap the usb cable to either side. + +The USB cable approach is easier to setup and if you just want the usb cable on the left board, you do not need to do anything extra. + +### Setting the left hand as master + +If you always plug the usb cable into the left board, nothing extra is needed as this is the default. Comment out `EE_HANDS` and comment out `I2C_MASTER_RIGHT` or `MASTER_RIGHT` if for some reason it was set. + +### Setting the right hand as master + +If you always plug the usb cable into the right board, add an extra flag to your `config.h` +``` + #define MASTER_RIGHT +``` + +### Setting EE_hands to use either hands as master + +If you define `EE_HANDS` in your `config.h`, you will need to set the +EEPROM for the left and right halves. + +The EEPROM is used to store whether the +half is left handed or right handed. This makes it so that the same firmware +file will run on both hands instead of having to flash left and right handed +versions of the firmware to each half. To flash the EEPROM file for the left +half run: +``` +make handwired/dactyl_promicro:default:dfu-split-left +make handwired/dactyl_promicro:default:dfu-split-right +``` + +After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash. + +Note that you need to program both halves, but you have the option of using +different keymaps for each half. You could program the left half with a QWERTY +layout and the right half with a Colemak layout using bootmagic's default layout option. +Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the +right half is connected. + + +Notes on Using Pro Micro 3.3V +----------------------------- + +Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects +the frequency on the 3.3V board. + +Also, if the slave board is producing weird characters in certain columns, +update the following line in `matrix.c` to the following: + +``` +// wait_us(30); // without this wait read unstable value. +wait_us(300); // without this wait read unstable value. +``` diff --git a/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.c b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.c new file mode 100644 index 0000000000..1ad040442f --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.c @@ -0,0 +1 @@ +#include "trenctyl_manuform.h" diff --git a/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h new file mode 100644 index 0000000000..53d7996229 --- /dev/null +++ b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h @@ -0,0 +1,7 @@ +#pragma once + +#if defined(KEYBOARD_handwired_enctyl_manuform_6x6) +# include "6x6.h" +#endif + +#include "quantum.h" From b0ff58a23ad850eec8a1e27535b2a87d8f3a959d Mon Sep 17 00:00:00 2001 From: Matthias Fulz Date: Sun, 26 Jun 2022 22:02:01 +0200 Subject: [PATCH 2/3] Fixed renaming --- keyboards/handwired/trenctyl_manuform/6x6/6x6.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/trenctyl_manuform/6x6/6x6.h b/keyboards/handwired/trenctyl_manuform/6x6/6x6.h index ad7128af64..e7378c91e2 100644 --- a/keyboards/handwired/trenctyl_manuform/6x6/6x6.h +++ b/keyboards/handwired/trenctyl_manuform/6x6/6x6.h @@ -2,9 +2,9 @@ #include "trenctyl_manuform.h" -#if defined(KEYBOARD_handwired_enctyl_manuform_6x6_f401) +#if defined(KEYBOARD_handwired_trenctyl_manuform_6x6_f401) # include "f401.h" -#elif defined(KEYBOARD_handwired_enctyl_manuform_6x6_f411) +#elif defined(KEYBOARD_handwired_trenctyl_manuform_6x6_f411) # include "f411.h" #endif From dc5cb40c7223b8e8208d40378ca2d5743b3d2dd0 Mon Sep 17 00:00:00 2001 From: Matthias Fulz Date: Sun, 26 Jun 2022 22:03:17 +0200 Subject: [PATCH 3/3] Fixed renaming --- keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h index 53d7996229..2e405aa60f 100644 --- a/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h +++ b/keyboards/handwired/trenctyl_manuform/trenctyl_manuform.h @@ -1,6 +1,6 @@ #pragma once -#if defined(KEYBOARD_handwired_enctyl_manuform_6x6) +#if defined(KEYBOARD_handwired_trenctyl_manuform_6x6) # include "6x6.h" #endif