Keyboard: dactyl_manuform 5x7 aka Ergodox-ish added (#3691)

* dactyl_manuform 5x7 aka Ergodox added

* LAYOUTS = ergodox removed

* README updated

* README updated again

* zip file removed
pull/3733/head
zwnk 6 years ago committed by Drashna Jaelre
parent 6d1536db1d
commit c6eccb39e0

@ -1,11 +1,8 @@
#pragma once
#include "dactyl_manuform.h"
//void promicro_bootloader_jmp(bool program);
#include "quantum.h"
#ifdef USE_I2C
#include <stddef.h>
#ifdef __AVR__
@ -14,9 +11,6 @@
#endif
#endif
//void promicro_bootloader_jmp(bool program);
#define LAYOUT_5x6(\
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \

@ -0,0 +1,23 @@
#include "5x7.h"
#ifdef SSD1306OLED
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}
#endif
void matrix_init_kb(void) {
// // green led on
// DDRD |= (1<<5);
// PORTD &= ~(1<<5);
// // orange led on
// DDRB |= (1<<0);
// PORTB &= ~(1<<0);
matrix_init_user();
};

@ -0,0 +1,45 @@
#pragma once
#include "dactyl_manuform.h"
#include "quantum.h"
#ifdef USE_I2C
#include <stddef.h>
#ifdef __AVR__
#include <avR/io.h>
#include <avR/inteRRupt.h>
#endif
#endif
#define LAYOUT_5x7( \
L11, L12, L13, L14, L15, L16, L17, \
L21, L22, L23, L24, L25, L26, L27, \
L31, L32, L33, L34, L35, L36, L37, \
L41, L42, L43, L44, L45, L46, \
L51, L52, L53, L54, \
L55, L56, \
L65, L66, \
L63, L64, \
R11, R12, R13, R14, R15, R16, R17, \
R21, R22, R23, R24, R25, R26, R27, \
R31, R32, R33, R34, R35, R36, R37, \
R42, R43, R44, R45, R46, R47, \
R54, R55, R56, R57, \
R52, R53, \
R62, R63, \
R64, R65 \
) \
{ \
{ L11, L12, L13, L14, L15, L16, L17 }, \
{ L21, L22, L23, L24, L25, L26, L27 }, \
{ L31, L32, L33, L34, L35, L36, L37 }, \
{ L41, L42, L43, L44, L45, L46, KC_NO }, \
{ L51, L52, L53, L54, L55, L56, KC_NO }, \
{ KC_NO, KC_NO, L63, L64, L65, L66, KC_NO }, \
{ R11, R12, R13, R14, R15, R16, R17 }, \
{ R21, R22, R23, R24, R25, R26, R27 }, \
{ R31, R32, R33, R34, R35, R36, R37 }, \
{ KC_NO, R42, R43, R44, R45, R46, R47 }, \
{ KC_NO, R52, R53, R54, R55, R56, R57 }, \
{ KC_NO, R62, R63, R64, R65, KC_NO, KC_NO } \
}

@ -0,0 +1,33 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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
#include "config_common.h"
#define PRODUCT Dactyl-Manuform (Ergodox)
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
// wiring of each half
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }

@ -0,0 +1,27 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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_SERIAL
#define MASTER_LEFT
// #define MASTER_RIGHT
//#define EE_HANDS
// Rows are doubled-up

@ -0,0 +1,85 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
#define _FN 1
#define _NUMPAD 2
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Some basic macros
#define TASK LCTL(LSFT(KC_ESC))
#define TAB_R LCTL(KC_TAB)
#define TAB_L LCTL(LSFT(KC_TAB))
#define TAB_RO LCTL(LSFT(KC_T))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_5x7(
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO,
OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B,
KC_CAPS, KC_LGUI, TAB_L, TAB_R,
TT(_FN), KC_SPC,
KC_END, KC_HOME,
KC_PSCR, TASK,
// right hand
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
KC_BSPC, KC_ENT,
KC_PGUP, KC_PGDN,
KC_LCTL, KC_LALT),
[_FN] = LAYOUT_5x7(
// left hand
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
_______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RESET,
_______, _______, _______, _______, _______, _______,
KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT,
_______, _______,
_______, _______,
_______, _______,
// right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______,
KC_DEL, _______,
_______, _______,
_______, _______),
[_NUMPAD] = LAYOUT_5x7(
// left hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______,
_______, _______,
_______, _______,
// right hand
_______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______,
_______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
_______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
_______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______,
KC_P0, KC_PDOT, _______, _______,
_______, KC_PENT,
_______, _______,
_______, _______),
};

@ -0,0 +1,20 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

@ -1,13 +1,13 @@
#pragma once
#ifdef KEYBOARD_handwired_dactyl_manuform_6x6
#include "6x6.h"
#elif KEYBOARD_handwired_dactyl_manuform_5x6
#include "5x6.h"
#elif KEYBOARD_handwired_dactyl_manuform_4x5
#include "4x5.h"
#elif KEYBOARD_handwired_dactyl_manuform_5x7
#include "5x7.h"
#endif
//void promicro_bootloader_jmp(bool program);

@ -1,11 +1,11 @@
Dactyl Manuform (4x5, 5x6, 6x6)
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:
@ -29,7 +29,7 @@ For more information on customizing keymaps, take a look at the primary document
## Keymaps
-----------------
### [Keymaps 4x5](/keyboards/handwired/dactyl_manuform/4x5/keymaps/)
#### Default
@ -44,13 +44,16 @@ 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
-----------------
## Required Hardware
Apart from diodes and key switches for the keyboard matrix in each half, you
will need:
@ -62,12 +65,10 @@ 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
-----------------
## 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
------
## 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.
@ -89,19 +90,17 @@ unnecessary in simple use cases.
You can change your configuration between serial and i2c by modifying your `config.h` file.
##Notes on Software Configuration
-------------------------------
## Notes on Software Configuration
the keymaps in here are for the 4x5 layout of the keyboard only.
##Flashing
-------
## 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)
--------
## 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.
@ -111,15 +110,18 @@ The EEPROM approach requires additional setup (flashing the eeprom) but allows y
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.

Loading…
Cancel
Save