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
daktil_manuform
zwnk 2018-08-23 15:48:30 -03:00 committed by Drashna Jaelre
parent 6d1536db1d
commit c6eccb39e0
9 changed files with 252 additions and 23 deletions

View File

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

View File

@ -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();
};

View File

@ -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 } \
}

View File

@ -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 }

View File

@ -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

View File

@ -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,
_______, _______,
_______, _______),
};

View File

@ -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

View File

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

View File

@ -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. 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) ![Imgur](https://i.imgur.com/7y0Vbyd.jpg)
## First Time Setup ## 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: 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: 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
-----------------
### [Keymaps 4x5](/keyboards/handwired/dactyl_manuform/4x5/keymaps/) ### [Keymaps 4x5](/keyboards/handwired/dactyl_manuform/4x5/keymaps/)
#### Default #### Default
@ -44,13 +44,16 @@ Just a copy of the Impstyle keymap. Feel free to adjust it.
#### Impstyle #### Impstyle
A simple QWERTY keymap with 3 Layers. Both sides are connected via serial and the Left ist the master. 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/) ### [Keymaps 6x6](/keyboards/handwired/dactyl_manuform/6x6/keymaps/)
#### Default #### Default
Simple QWERTY layout with 3 Layers. Simple QWERTY layout with 3 Layers.
##Required Hardware ## Required Hardware
-----------------
Apart from diodes and key switches for the keyboard matrix in each half, you Apart from diodes and key switches for the keyboard matrix in each half, you
will need: 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 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 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`. 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. 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. 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. 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. 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) 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. 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. 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. 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 ### 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. 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 ### 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` If you always plug the usb cable into the right board, add an extra flag to your `config.h`
``` ```
#define MASTER_RIGHT #define MASTER_RIGHT
``` ```
### Setting EE_hands to use either hands as master ### Setting EE_hands to use either hands as master
If you define `EE_HANDS` in your `config.h`, you will need to set the If you define `EE_HANDS` in your `config.h`, you will need to set the
EEPROM for the left and right halves. EEPROM for the left and right halves.