Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Dactyl_Manuform/3x5_3 #16238

Merged
merged 4 commits into from
Apr 22, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
Copyright 2021 @dlford

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 "3x5_3.h"

#ifdef RGB_MATRIX_ENABLE

// LED Layout
// Columns
// 0 1 2 3 4 5 6 7 8 9 10 11
// Physical (Center: 133)
// 20 41 61 81 102 122 143 163 183 204 224 244
// Rows Physical (Center: 54)
// 17 12 11 06 05 23 24 29 30 35 0 21
// 16 13 10 07 04 22 25 28 31 34 1 43
// 15 14 09 08 03 21 26 27 32 33 2 64
// 02 01 00 18 19 20 3 85

led_config_t g_led_config = { {
// Key matrix to LED index
// Left 1-18
{17, 12, 11, 6, 5},
{16, 13, 10, 7, 4},
{15, 14, 9, 8, 3},
{NO_LED, NO_LED, 2, 1, 0},
// Right 1-18
{23, 24, 29, 30, 35},
{22, 25, 28, 31, 34},
{21, 26, 27, 32, 33},
{18, 19, 20, NO_LED, NO_LED},
}, {
// LED index to physical position
// Left 1-18
{122,85},{102,85},{81,85},{102,64},{102,43},{102,21},
{81,21},{81,43},{81,64},{61,64},{61,43},{61,21},
{41,21},{41,43},{41,64},{20,64},{20,43},{20,21},
// Right 1-18
{143,85},{163,85},{183,85},{163,64},{163,43},{163,21},
{183,21},{183,43},{183,64},{204,64},{204,43},{204,21},
{224,21},{224,43},{224,64},{244,64},{244,43},{244,21}
}, {
// LED index to flag
// Left 1-18
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
// Right 1-18
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4
} };

void suspend_power_down_kb(void) {
rgb_matrix_set_suspend_state(true);
suspend_power_down_user();
}

void suspend_wakeup_init_kb(void) {
rgb_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
dlford marked this conversation as resolved.
Show resolved Hide resolved
#endif
46 changes: 46 additions & 0 deletions keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
Copyright 2021 @dlford

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

#include "dactyl_manuform.h"
#include "quantum.h"
dlford marked this conversation as resolved.
Show resolved Hide resolved

#ifdef USE_I2C
#include <stddef.h>
#ifdef __AVR__
#include <avr/io.h>
#include <avr/interrupt.h>
#endif
#endif
dlford marked this conversation as resolved.
Show resolved Hide resolved

#define LAYOUT_split_3x5_3(\
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
L32, L33, L34, R30, R31, R32 \
) \
{ \
{ L00, L01, L02, L03, L04 }, \
{ L10, L11, L12, L13, L14 }, \
{ L20, L21, L22, L23, L24 }, \
{ KC_NO, KC_NO, L32, L33, L34 }, \
\
{ R00, R01, R02, R03, R04 }, \
{ R10, R11, R12, R13, R14 }, \
{ R20, R21, R22, R23, R24 }, \
{ R30, R31, R32, KC_NO, KC_NO }, \
}
69 changes: 69 additions & 0 deletions keyboards/handwired/dactyl_manuform/3x5_3/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
Copyright 2021 @dlford
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

#include "config_common.h"

#define PRODUCT_ID 0x3536
#define DEVICE_VER 0x0003
#ifdef MANUFACTURER
#undef MANUFACTURER
#endif
#define MANUFACTURER DLFord
#define PRODUCT Dactyl Minidox (3x5+3)

// Communication
#define USE_I2C
dlford marked this conversation as resolved.
Show resolved Hide resolved

/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
#define MATRIX_COLS 5

// wiring of each half
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { B1, B3, B2, B6 }

#define DIODE_DIRECTION ROW2COL

// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define DRIVER_LED_TOTAL 36
#define RGB_MATRIX_SPLIT { 18, 18 }
#define RGB_MATRIX_CENTER { 133, 54 }

// Remove upward config options
/* Set 0 if debouncing isn't needed */
#ifdef DEBOUNCE
#undef DEBOUNCE
#endif

/* serial.c configuration for split keyboard */
#ifdef USE_SERIAL
#undef USE_SERIAL
#endif
#ifdef SOFT_SERIAL_PIN
#undef SOFT_SERIAL_PIN
#endif
dlford marked this conversation as resolved.
Show resolved Hide resolved

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#undef LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#undef LOCKING_RESYNC_ENABLE

/* Enables This makes it easier for fast typists to use dual-function keys */
#undef PERMISSIVE_HOLD
48 changes: 48 additions & 0 deletions keyboards/handwired/dactyl_manuform/3x5_3/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"keyboard_name": "Dactyl Manuform 3x5_3",
"url": "https://github.com/dlford/qmk_firmware",
"maintainer": "dlford",
"layouts": {
"LAYOUT": {
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },

{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 12, "y": 0 },
{ "x": 13, "y": 0 },
{ "x": 14, "y": 0 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 12, "y": 1 },
{ "x": 13, "y": 1 },
{ "x": 14, "y": 1 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 12, "y": 2 },
{ "x": 13, "y": 2 },
{ "x": 14, "y": 2 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 },
{ "x": 12, "y": 3 }
]
}
}
}
126 changes: 126 additions & 0 deletions keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2021 @dlford
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 USE_MATRIX_I2C

/* Select hand configuration */

// #define MASTER_LEFT
// #define MASTER_RIGHT
#define EE_HANDS // ./util/docker_build.sh crkbd:dlford:dfu-split-[left|right] (or avrdude-split[left|right])

#define TAPPING_TOGGLE 2 // number of taps to toggle TT
#define TAPPING_TERM_PER_KEY // milliseconds from tap to hold for mod tap per key
#define IGNORE_MOD_TAP_INTERRUPT // ignore hold mod if another tap occurs within tapping term
#define PERMISSIVE_HOLD_PER_KEY // activate mod top hold earlier if another key is pressed AND released per key
#define TAPPING_FORCE_HOLD_PER_KEY // disable double tap hold key repeat per key
#ifdef MOUSEKEY_INTERVAL
#undef MOUSEKEY_INTERVAL
#endif
#ifdef MOUSEKEY_DELAY
#undef MOUSEKEY_DELAY
#endif
#ifdef MOUSEKEY_TIME_TO_MAX
#undef MOUSEKEY_TIME_TO_MAX
#endif
#ifdef MOUSEKEY_MAX_SPEED
#undef MOUSEKEY_MAX_SPEED
#endif
#ifdef MOUSEKEY_WHEEL_DELAY
#undef MOUSEKEY_WHEEL_DELAY
#endif
dlford marked this conversation as resolved.
Show resolved Hide resolved
#define MK_KINETIC_SPEED
#define MOUSEKEY_DELAY 100
#define MOUSEKEY_INTERVAL 35
#define MOUSEKEY_MOVE_DELTA 5
#define MOUSEKEY_INITIAL_SPEED 1
#define MOUSEKEY_DECELERATED_SPEED 10
#define MOUSEKEY_BASE_SPEED 1200
#define MOUSEKEY_ACCELERATED_SPEED 4800

#ifdef RGB_MATRIX_ENABLE
// # define RGB_DISABLE_TIMEOUT 300000 // number of milliseconds to wait until disabling effects
// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_HUE_STEP 8
# define RGB_MATRIX_SAT_STEP 8
# define RGB_MATRIX_VAL_STEP 8
# define RGB_MATRIX_SPD_STEP 10

// Enable animations
// # 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 RGB_MATRIX_FRAMEBUFFER_EFFECTS // Required for the following two effects
// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
// # define RGB_MATRIX_KEYPRESSES // reacts to keypresses, required for the remaining effects
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # 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
#endif

// Features I don't want, remove to save space
// #define NO_ACTION_ONESHOT // Used by caps word
#define NO_ACTION_FUNCTION
#define NO_ACTION_MACRO
#define NO_USB_STARTUP_CHECK
#ifdef NKRO_ENABLE
# undef NKRO_ENABLE
#endif

#ifndef NO_DEBUG
# define NO_DEBUG
#endif // !NO_DEBUG
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
# define NO_PRINT
#endif // !NO_PRINT
dlford marked this conversation as resolved.
Show resolved Hide resolved
Loading