From 0f1bb982e97f0779e2885970f5e4677dbb555926 Mon Sep 17 00:00:00 2001 From: Marko Skakun Date: Sun, 14 Aug 2022 02:46:35 +0200 Subject: [PATCH] [Keyboard] Added different wiring of dactyl (#17997) --- keyboards/handwired/skakunm_dactyl/config.h | 60 +++++++++++++++++++ keyboards/handwired/skakunm_dactyl/info.json | 57 ++++++++++++++++++ .../skakunm_dactyl/keymaps/default/keymap.c | 41 +++++++++++++ keyboards/handwired/skakunm_dactyl/readme.md | 15 +++++ keyboards/handwired/skakunm_dactyl/rules.mk | 20 +++++++ .../handwired/skakunm_dactyl/skakunm_dactyl.c | 4 ++ .../handwired/skakunm_dactyl/skakunm_dactyl.h | 25 ++++++++ 7 files changed, 222 insertions(+) create mode 100644 keyboards/handwired/skakunm_dactyl/config.h create mode 100644 keyboards/handwired/skakunm_dactyl/info.json create mode 100644 keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c create mode 100644 keyboards/handwired/skakunm_dactyl/readme.md create mode 100644 keyboards/handwired/skakunm_dactyl/rules.mk create mode 100644 keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c create mode 100644 keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h diff --git a/keyboards/handwired/skakunm_dactyl/config.h b/keyboards/handwired/skakunm_dactyl/config.h new file mode 100644 index 0000000000..1fb0cc6b2a --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/config.h @@ -0,0 +1,60 @@ +// Copyright 2022 Marko Skakun +// SPDX-License-Identifier: GPL-2.0-or-later + + +#pragma once + +#include "config_common.h" + +/* 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 COL2ROW + +/* 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 D0 + +/* 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 + +/* ws2812 RGB LED */ +//#define RGB_DI_PIN D3 + +//#define RGBLED_NUM 12 // Number of LEDs + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/handwired/skakunm_dactyl/info.json b/keyboards/handwired/skakunm_dactyl/info.json new file mode 100644 index 0000000000..2eed23d809 --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/info.json @@ -0,0 +1,57 @@ +{ + "keyboard_name": "Dactyl Min (3x5_5)", + "manufacturer": "skakunm", + "url": "", + "maintainer": "qmk", + "usb": { + "vid": "0xFEED", + "pid": "0x3060", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT_3x5_5": { + "layout": [ + {"label":"L10", "x":0, "y":0}, + {"label":"L11", "x":1, "y":0}, + {"label":"L12", "x":2, "y":0}, + {"label":"L13", "x":3, "y":0}, + {"label":"L14", "x":4, "y":0}, + {"label":"R13", "x":9, "y":0}, + {"label":"R13", "x":10, "y":0}, + {"label":"R12", "x":11, "y":0}, + {"label":"R11", "x":12, "y":0}, + {"label":"R10", "x":13, "y":0}, + {"label":"L20", "x":0, "y":1}, + {"label":"L21", "x":1, "y":1}, + {"label":"L22", "x":2, "y":1}, + {"label":"L23", "x":3, "y":1}, + {"label":"L24", "x":4, "y":1}, + {"label":"R23", "x":9, "y":1}, + {"label":"R23", "x":10, "y":1}, + {"label":"R22", "x":11, "y":1}, + {"label":"R21", "x":12, "y":1}, + {"label":"R20", "x":13, "y":1}, + {"label":"L30", "x":0, "y":2}, + {"label":"L31", "x":1, "y":2}, + {"label":"L32", "x":2, "y":2}, + {"label":"L33", "x":3, "y":2}, + {"label":"L34", "x":4, "y":2}, + {"label":"R33", "x":9, "y":2}, + {"label":"R33", "x":10, "y":2}, + {"label":"R32", "x":11, "y":2}, + {"label":"R31", "x":12, "y":2}, + {"label":"R30", "x":13, "y":2}, + {"label":"L00", "x":4, "y":3}, + {"label":"L01", "x":5, "y":3}, + {"label":"R01", "x":8, "y":3}, + {"label":"R00", "x":9, "y":3}, + {"label":"L02", "x":4, "y":4}, + {"label":"L03", "x":5, "y":4}, + {"label":"L04", "x":6, "y":4}, + {"label":"R04", "x":7, "y":4}, + {"label":"R03", "x":8, "y":4}, + {"label":"R02", "x":9, "y":4} + ] + } + } +} diff --git a/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c b/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c new file mode 100644 index 0000000000..0109b18c6c --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2022 Marko Skakun +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum custom_layers { + _LAYER0, + _LAYER1, + _LAYER2, +}; + +enum custom_keycodes { + LAYER0 = SAFE_RANGE, + LAYER1, + LAYER2, +}; + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_3x5_5( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, + KC_BSPC, LT(2,KC_ESC), KC_DEL, KC_TAB, LT(1,KC_ENT), KC_SPC), + +[_LAYER1] = LAYOUT_3x5_5( + KC_BSLS, KC_HOME, KC_UP, KC_END, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_LGUI, + KC_PSLS, KC_LEFT, KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_ENT, + KC_LSFT, KC_SCLN, KC_QUOT, KC_MINS, KC_EQL, KC_P0, KC_P1, KC_P2, KC_P3, KC_RSFT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[_LAYER2] = LAYOUT_3x5_5( + KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_F1, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_QUES, KC_TRNS, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; \ No newline at end of file diff --git a/keyboards/handwired/skakunm_dactyl/readme.md b/keyboards/handwired/skakunm_dactyl/readme.md new file mode 100644 index 0000000000..73174fbd1b --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/readme.md @@ -0,0 +1,15 @@ +# skakunm dactyl + +![SkakunM-Dactyl](https://cdn.thingiverse.com/assets/98/52/da/e2/15/featured_preview_41db84f8-1ffb-4198-bd3f-ae2e5d112ec6.jpg) + +This is a variation of Dactyl, main idea is to have 3x5 + 5 keys arrangement, 5 keys for thumb and a minimal set of keys for other fingers. Also having 20 keys enables easy wiring of 4 rows (1 for thumb and 3 for other fingers) and 5 columns (5 buttons for thumb and 5 columns for other fingers). Hardware form factor is somewhat similar to the Moonlander, but smaller. It is designed to be 3D printed using a SLA resin 3D printer. + +* Keyboard Maintainer: [Marko Skakun](https://github.com/skakunm) +* Hardware Supported: Arduino Pro Micro +* Hardware Availability: [Files to print](https://www.thingiverse.com/thing:5461125) + +Make example for this keyboard (after setting up your build environment): + + make handwired/skakunm_dactyl:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/handwired/skakunm_dactyl/rules.mk b/keyboards/handwired/skakunm_dactyl/rules.mk new file mode 100644 index 0000000000..bd53948797 --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. + +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c new file mode 100644 index 0000000000..4105eea751 --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c @@ -0,0 +1,4 @@ +// Copyright 2022 Marko Skakun +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "skakunm_dactyl.h" \ No newline at end of file diff --git a/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h new file mode 100644 index 0000000000..fa08dd3bb0 --- /dev/null +++ b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h @@ -0,0 +1,25 @@ +// Copyright 2022 Marko Skakun +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +#define LAYOUT_3x5_5(\ + L10, L11, L12, L13, L14, R14, R13, R12, R11, R10, \ + L20, L21, L22, L23, L24, R24, R23, R22, R21, R20, \ + L30, L31, L32, L33, L34, R34, R33, R32, R31, R30, \ + L00, L01, R01, R00, \ + L04, L03, L02, R02, R03, R04 \ + )\ + {\ + { L34, L33, L32, L31, L30 }, \ + { L24, L23, L22, L21, L20 }, \ + { L14, L13, L12, L11, L10 }, \ + { L04, L03, L02, L01, L00 }, \ +\ + { R34, R33, R32, R31, R30 }, \ + { R24, R23, R22, R21, R20 }, \ + { R14, R13, R12, R11, R10 }, \ + { R04, R03, R02, R01, R00 }, \ +}