[Keyboard] Add keymap and settings for dactyl_manuform 6x6_5 thumb (#15526)

* Add dactyl manu 6x6 with stm32 support and 5thumb cluster

* Add review changes

* Add license to new files

* Fix enums for custom keymap

* Readme update

* Fix readme to follow one from template

* Add missing licence to files

* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk

* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk

* Remove readme from onekey keyboard

* Make separate macro for 5thumb
This commit is contained in:
Bartosz Nowak 2022-01-10 11:31:51 +01:00 committed by GitHub
parent f59cbfb75c
commit d7eb09949d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 401 additions and 23 deletions

View File

@ -31,3 +31,26 @@
{ R50, R51, R52, R53, XXX, XXX }, \
{ R60, R61, R62, R63, XXX, XXX } \
}
#define LAYOUT_6x6_5_thumb( \
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, \
L52, L53, R52, R53, \
L54, R51, \
L64, L65, R60, R61, \
L62, L63, R62, R63 \
) 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, \
L52, L53, R52, R53, \
L54, XXX, XXX, R51, \
L64, L65, R60, R61, \
L62, L63, R62, R63 \
)

View File

@ -0,0 +1,22 @@
/* Copyright 2021 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 CH_CFG_ST_FREQUENCY 10000
#include_next <chconf.h>

View File

@ -0,0 +1,54 @@
/* Copyright 2021 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
#include "config_common.h"
#undef SOFT_SERIAL_PIN
#define MATRIX_ROW_PINS { B12, B13, B14, B15, A8 , A9, A10}
#define MATRIX_COL_PINS { B1, B0, A7, A6, A5, A4}
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
#define BOOTMAGIC_LITE_ROW_RIGHT 7
#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
// in col2row col is input, and row is output
// #define SPLIT_HAND_MATRIX_GRID A10, A4
// 68kohm
#define SPLIT_HAND_PIN B10
/* connection */
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SOFT_SERIAL_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
#define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN // USART TX pin
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: 460800 baud
// 1: 230400 baud (default)
// 2: 115200 baud
// 3: 57600 baud
// 4: 38400 baud
// 5: 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20

View File

@ -0,0 +1,24 @@
/* Copyright 2021 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_SERIAL TRUE
#define PAL_USE_CALLBACKS TRUE
#define PAL_USE_WAIT TRUE
#include_next <halconf.h>

View File

@ -0,0 +1,22 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include_next "mcuconf.h"
#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE

View File

@ -0,0 +1,30 @@
# Copyright 2021 Bartosz Nowak (@dumam)
# SPDX-License-Identifier: GPL-2.0-or-later
# MCU name
MCU = STM32F411
# Bootloader selection
BOOTLOADER = tinyuf2
# 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 = yes # 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
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
# Build Options
# change yes to no to disable
#
SPLIT_KEYBOARD = yes
# split settings
# https://beta.docs.qmk.fm/developing-qmk/c-development/hardware_drivers/serial_driver
SERIAL_DRIVER = usart

View File

@ -20,21 +20,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
#define PRODUCT_ID 0x3636
#define DEVICE_VER 0x0001
#define PRODUCT Dactyl-Manuform (6x6)
#define PRODUCT_ID 0x3636
#define DEVICE_VER 0x0001
#define PRODUCT "Dactyl-Manuform (6x6)"
/* USB Device descriptor parameter */
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
#define MATRIX_COLS 6
// wiring of each half
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
#define DIODE_DIRECTION COL2ROW
// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define RGBLED_NUM 12

View File

@ -1,8 +1,13 @@
// Copyright 2021 david@impstyle.com (@zwnk)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
enum custom_layers {
_QWERTY,
_LOWER,
_RAISE,
};
#define RAISE MO(_RAISE)
#define LOWER MO(_LOWER)
@ -15,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH,
KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
RAISE,KC_SPC, KC_ENT, LOWER,
RAISE ,KC_SPC, KC_ENT, LOWER,
KC_TAB,KC_HOME, KC_END, KC_DEL,
KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
),

View File

@ -0,0 +1,51 @@
// Copyright 2021 Bartosz Nowak (@dumam)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum custom_layers {
_QWERTY,
_LOWER,
_RAISE,
};
#define RAISE LT(_RAISE, KC_SPC)
#define LOWER LT(_LOWER, KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_6x6_5_thumb(
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_ESC ,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_MINS,
KC_LSFT,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
KC_LCTL,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH,
KC_LBRC,KC_RBRC, KC_PLUS,KC_EQL ,
RAISE , LOWER ,
KC_TAB ,KC_HOME, KC_END ,KC_DEL,
KC_BSPC,KC_GRV , KC_LGUI ,KC_LALT
),
[_LOWER] = LAYOUT_6x6_5_thumb(
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_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,KC_P7 ,KC_P8 ,KC_P9 ,_______,KC_PLUS,
_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN,KC_P4 ,KC_P5 ,KC_P6 ,KC_MINS,KC_PIPE,
_______,_______,_______,_______,_______,_______, _______,KC_P1 ,KC_P2 ,KC_P3 ,KC_EQL ,KC_UNDS,
_______,KC_PSCR, _______,KC_P0 ,
_______, _______,
_______,_______, _______,_______,
_______,_______, _______,_______
),
[_RAISE] = LAYOUT_6x6_5_thumb(
KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE,
_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
_______,_______, KC_EQL ,_______,
_______, _______,
_______,_______, _______,_______,
_______,_______, _______,_______
)
};

View File

@ -0,0 +1,59 @@
// Copyright 2021 Bartosz Nowak (@dumam)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum custom_layers {
_QWERTY, // daily use and coding
_MOVE, // mouse, arrows, browsing useful keys
_CONF, // machine settings, keyboard settings, backlight
};
#define _KC_SPC LT(_CONF, KC_SPC)
#define _KC_ENT LT(_MOVE, KC_ENT)
#define KC_SPEC KC_SFTENT //KC_SFTENT - Right Shift when held, Enter when tapped
#define KC_INS_ KC_INS
#define KC_TAB_ KC_TAB
#define RESET__ RESET
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_6x6_5_thumb(
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_MINS,
KC_BSLS,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
KC_SLSH,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_LBRC,KC_RBRC,
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SCLN,KC_QUOT,
KC_LGUI,KC_ESC , KC_HOME,KC_END ,
_KC_SPC, _KC_ENT,
KC_TAB_,KC_BSPC, KC_DEL ,KC_RSFT,
KC_LCTL,KC_LALT, KC_RALT,KC_RCTL
),
[_CONF] = LAYOUT_6x6_5_thumb(
RESET__,XXXXXXX,XXXXXXX,XXXXXXX,KC_SLEP,KC_WAKE, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RESET__,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_PGUP,XXXXXXX, XXXXXXX,KC_PGUP,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,KC_CAPS,KC_MENU,XXXXXXX,KC_PGDN,KC_LGUI, KC_LGUI,KC_PGDN,XXXXXXX,KC_INS_,KC_PSCR,XXXXXXX,
_______,_______, _______,_______,
_______, _______,
_______,_______, _______,_______,
_______,_______, _______,_______
),
[_MOVE] = LAYOUT_6x6_5_thumb(
RESET__,XXXXXXX,XXXXXXX,KC_MPRV,KC_MPLY,KC_MPLY, KC_MUTE,KC_VOLD,KC_VOLU,XXXXXXX,XXXXXXX,RESET__,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,KC_UP ,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX, XXXXXXX,KC_LEFT,KC_DOWN,KC_RGHT,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,KC_BTN1,KC_BTN3,KC_BTN2,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
_______,_______, _______,_______,
_______, _______,
_______,_______, _______,_______,
_______,_______, _______,_______
),
};

View File

@ -0,0 +1,29 @@
/* Copyright 2019
*
* 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"
// wiring of each half
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
#define DIODE_DIRECTION COL2ROW
// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define RGBLED_NUM 12

View File

@ -0,0 +1,8 @@
# Copyright 2021 Bartosz Nowak (@dumam)
# SPDX-License-Identifier: GPL-2.0-or-later
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina

View File

@ -0,0 +1,63 @@
# Dactyl Manuform (6x6) optional 5thumb cluster
## Dactyl Manufrom 6x6
![Dactyl Manufrom 6x6](https://i.imgur.com/j8dsBgs.jpeg)
## Dactyl Manufrom 6x6 with 5 key thumb cluster
![Dactyl Manufrom 6x6 with thumb](https://i.imgur.com/C7FRiwd.jpeg)
## Description
* Keyboard Maintainer: [dumam for 5thumb](https://github.com/DuMaM) and others
* Hardware Supported: STM32F4BlackPill, Promicro and clones
Basic guide how to build 6x6 board is in root keyboard dir. This will help you to to create your own board with 6key based cluster with promicro. [For more click here](../readme.md).
If you want to use 5thumb cluster or stm32, you also should read base guide, but please came back here after you finish 😉.
For my build I used stm32f411 black pill. It's pretty cheap board and I highly recommend you to buy one from official distributors, to support board creators. [To buy it, please go into designer site](https://github.com/WeActTC/MiniSTM32F4x1).
I recommend using stm32 boards for this project, because QMK recently added support for [tinyuf2 bootloader](https://github.com/adafruit/tinyuf2). This bootloader is great for cases where you are going to use QMK Configurator and don't want to use any command line interface. This way when you need change keyboard layout, you only need an UF2 file. Setting up board in boot mode will allow you to drag and drop it on to created STM32F flash drive.
![BlackPill Schematic](blackpill_f411/STM32F4x1_PinoutDiagram_RichardBalint.png "Schematic of stm32f4 blackpill")
For case I used 3D models form here. Big thanks to creators.
- [dactyl-manuform-mini-keyboard](https://github.com/l4u/dactyl-manuform-mini-keyboard)
- [dactyl-manuform](https://github.com/carbonfet/dactyl-manuform)
- [Good build guide](https://medium.com/swlh/complete-idiot-guide-for-building-a-dactyl-manuform-keyboard-53454845b065)
## STM32 Usage
![BlackPill](https://raw.githubusercontent.com/WeActTC/MiniSTM32F4x1/master/images/STM32F4x1_PinoutDiagram_RichardBalint.png)
My fixes allows for using STM32 with all keymaps located in this dir. Please note that you need to pull down and up B10 pin. I used here 68kohm resistor. Don't use bigger one then 100kohm and lower then 10kohm. Pin you should use for this it B10. [More can be found here](https://beta.docs.qmk.fm/using-qmk/hardware-features/feature_split_keyboard#setting-handedness).
### Features
- any board could be master one, and they can be used separately from each other
- it's using full usart (4 cables), mostly due to some stability and half detection problems
- easy keymaps update -> drag and drop file
- pin used for rows (B12, B13, B14, B15, A8 , A9, A10) and for cols (B1, B0, A7, A6, A5, A4)
## Build
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).
After setting up your build environment you can try to build it with those commands.
Make Promicro based img:
qmk compile -kb keyboards/handwired/dactyl_manuform/6x6 -km default
Make BlackPill one:
qmk compile -kb keyboards/handwired/dactyl_manuform/6x6/blackpill_f411 -km default
## Bootloader for BlackPill
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at F1 for left side, and F7 for right side.
* **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 `RESET`, in dumam keymap it's assigned to F1 and F12 keys on mod layers.

View File

@ -1,9 +1,3 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
@ -17,3 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = handwired/dactyl_manuform/6x6/promicro