]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Keyboard: Dactyl manuform 5x6 added and working (#3627)
authorzwnk <david@impstyle.com>
Tue, 14 Aug 2018 03:23:11 +0000 (00:23 -0300)
committerDrashna Jaelre <drashna@live.com>
Tue, 14 Aug 2018 03:23:11 +0000 (20:23 -0700)
* mouse layer keys shifted

* mouse layer keys shifted

* manuform 5x6 added

* mouse layer keys shifted

* manuform 5x6 added

* dactyl_manuform 5x6 keymap added

* reorg. dactyl manuform folder

* removed LAYOUTS = ortho_4x12 for 4x5

* Rows and Cols in config.h fixed

* MASTER_LEFT

* 5x6 matrix fixed

* keymap updated

* removed the i2c, serial, split_util and matrix files and inserted SPLIT_KEYBOARD

39 files changed:
keyboards/handwired/dactyl_manuform/4x5/config.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.c [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/readme.md [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/4x5/rules.mk [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/config.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.c [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/config.h [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/keymap.c [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/readme.md [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/5x6/rules.mk [new file with mode: 0644]
keyboards/handwired/dactyl_manuform/config.h [deleted file]
keyboards/handwired/dactyl_manuform/dactyl_manuform.c [deleted file]
keyboards/handwired/dactyl_manuform/dactyl_manuform.h [deleted file]
keyboards/handwired/dactyl_manuform/eeprom-lefthand.eep [deleted file]
keyboards/handwired/dactyl_manuform/eeprom-righthand.eep [deleted file]
keyboards/handwired/dactyl_manuform/i2c.c [deleted file]
keyboards/handwired/dactyl_manuform/i2c.h [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/default/config.h [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/default/keymap.c [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/default/rules.mk [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/dvorak/config.h [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/dvorak/keymap.c [deleted file]
keyboards/handwired/dactyl_manuform/keymaps/dvorak/rules.mk [deleted file]
keyboards/handwired/dactyl_manuform/matrix.c [deleted file]
keyboards/handwired/dactyl_manuform/readme.md [deleted file]
keyboards/handwired/dactyl_manuform/rules.mk [deleted file]
keyboards/handwired/dactyl_manuform/serial.c [deleted file]
keyboards/handwired/dactyl_manuform/serial.h [deleted file]
keyboards/handwired/dactyl_manuform/split_util.c [deleted file]
keyboards/handwired/dactyl_manuform/split_util.h [deleted file]
keyboards/iris/keymaps/impstyle/keymap.c

diff --git a/keyboards/handwired/dactyl_manuform/4x5/config.h b/keyboards/handwired/dactyl_manuform/4x5/config.h
new file mode 100644 (file)
index 0000000..8917630
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    tshort
+#define PRODUCT         Dactyl-Manuform
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+// wiring of each half
+#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
+// #define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
+#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* 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 DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* 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 RGBLIGHT_TIMER
+#define RGBLED_NUM 12    // Number of LEDs
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+
+/*
+ * 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
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.c b/keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.c
new file mode 100644 (file)
index 0000000..17caecb
--- /dev/null
@@ -0,0 +1,23 @@
+#include "dactyl_manuform.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();
+};
+
diff --git a/keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/4x5/dactyl_manuform.h
new file mode 100644 (file)
index 0000000..7e126d3
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef REV2_H
+#define REV2_H
+
+#include "dactyl_manuform.h"
+
+//void promicro_bootloader_jmp(bool program);
+#include "quantum.h"
+
+
+#ifdef USE_I2C
+#include <stddef.h>
+#ifdef __AVR__
+       #include <avr/io.h>
+       #include <avr/interrupt.h>
+#endif
+#endif
+
+//void promicro_bootloader_jmp(bool program);
+
+#ifndef FLIP_HALF
+#define LAYOUT( \
+       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, \
+            L31, L32,                                         R32, R33,      \
+                       L33, L34,                     R30, R31,                \
+                                 L44, L43, R41, R40,                          \
+                                 L42, L41, R43, R42                           \
+       ) \
+       { \
+               { L00, L01, L02, L03, L04 }, \
+               { L10, L11, L12, L13, L14 }, \
+               { L20, L21, L22, L23, L24 }, \
+               { KC_NO, L31, L32, L33, L34 }, \
+               { KC_NO, L41, L42, L43, L44 }, \
+\
+               { R04, R03, R02, R01, R00 },    \
+               { R14, R13, R12, R11, R10 },    \
+               { R24, R23, R22, R21, R20 },    \
+               { KC_NO, R33, R32, R31, R30 },  \
+               { KC_NO, R43, R42, R41, R40 }  \
+       }
+#else
+
+
+
+#define LAYOUT( \
+       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, \
+            L31, L32,                                         R32, R33,      \
+                       L33, L34,                     R30, R31,                \
+                                 L44, L43, R41, R40,                          \
+                                 L42, L41, R43, R42                           \
+       ) \
+       { \
+               { R04, R03, R02, R01, R00 },    \
+               { R14, R13, R12, R11, R10 },    \
+               { R24, R23, R22, R21, R20 },    \
+               { KC_NO, R33, R32, R31, R30 },  \
+               { KC_NO, R43, R42, R41, R40 },  \
+\
+               { L00, L01, L02, L03, L04 }, \
+               { L10, L11, L12, L13, L14 }, \
+               { L20, L21, L22, L23, L24 }, \
+               { KC_NO, L31, L32, L33, L34 }, \
+               { KC_NO, L41, L42, L43, L44 }  \
+\
+       }
+#endif
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..216917e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+This is the c configuration file for the keymap
+
+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/>.
+*/
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..24c0221
--- /dev/null
@@ -0,0 +1,129 @@
+#include "dactyl_manuform.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+// Fillers to make layering more clear
+
+#define ____ KC_TRNS
+
+#define SFT_ESC  SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC  ALT_T(KC_SPC)
+#define SFT_ENT  SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN1
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Base (qwerty)
+ * ,----------------------------------,                             ,----------------------------------,
+ * |   q  |   w  |   e  |   r  |   t  |                             |   y  |   u  |   i  |   o  |   p  |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |   a  |   s  |   d  |   f  |   g  |                             |   h  |   j  |   k  |   l  |   ;  |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |   z  |   x  |   c  |   v  |   b  |                             |   n  |   m  |   ,  |   .  |   '  |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        |  [   |   ]  |                                                         |   -  |   =  |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      | ESC  |  BS  |                             | SPACE|ENTER |
+ *                      |  +   |   +  |                             |  +   |  +   |
+ *                      | SHIFT| CTRL |                             | ALT  |SHIFT |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    | TAB  | HOME | | END  | DEL  |
+ *                                    '------+------' '------+------'
+ *                                    | Lower|  ~   | | GUI  | Raise|
+ *                                    '------+------' '------+------'
+ */
+
+[_BASE] = LAYOUT( \
+  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_SCLN, \
+  KC_Z, KC_X, KC_C,    KC_V,    KC_B,                                       KC_N, KC_M,    KC_COMM, KC_DOT, KC_QUOT, \
+              KC_LBRC, KC_RBRC,                                                   KC_MINS, KC_EQL,                   \
+                                      SFT_ESC, CTL_BSPC,  ALT_SPC, SFT_ENT,                                          \
+                                      KC_TAB,  KC_HOME,   KC_END,  KC_DEL,                                           \
+                                      RAISE,   KC_GRV,    KC_LGUI, LOWER
+),
+
+/* Raise
+ * ,----------------------------------,                             ,----------------------------------,
+ * |      |      |  mup |      |      |                             | VOL+ |      |  up  |      | PgUp |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |      | mleft| mdown|mright|      |                             | MUTE | left | down |right | PgDn |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |      |      |      |      |      |                             | VOL- |  /   |  \   |  ?   |  |   |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        |      |      |                                                         | mbtn |mbtn2 |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ */
+
+[_RAISE] = LAYOUT( \
+  ____, ____,  KC_MU, ____,  ____,                          KC_VOLU, ____,    KC_UP,   ____,     KC_PGUP,   \
+  ____, KC_ML, KC_MD, KC_MR, ____,                          KC_MUTE, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDOWN, \
+  ____, ____,  ____,  ____,  ____,                          KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES,  KC_PIPE,   \
+        ____,  ____,                                                          KC_MB1,  KC_MB2,              \
+                                   ____, ____,  ____, ____,                                                 \
+                                   ____, ____,  ____, ____,                                                 \
+                                   ____, ____,  ____, ____                                                  \
+),
+/* Lower
+ * ,----------------------------------,                             ,----------------------------------,
+ * | F1   | F2   | F3   | F4   | F5   |                             |  F6  | F7   |  F8  |  F9  |  F10 |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |  1   |  2   |  3   |  4   |  5   |                             |  6   |  7   |  8   |  9   |  10  |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |  !   |  @   |  #   |  $   |  %   |                             |  ^   |  &   |  *   |  (   |  )   |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        | F11  | F12  |                                                         |  -   |  =   |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ */
+
+[_LOWER] = LAYOUT( \
+  KC_F1,   KC_F2,  KC_F3,   KC_F4,  KC_F5,                            KC_F6,   KC_F7,    KC_F8,   KC_F9,   KC_F10,  \
+  KC_1,    KC_2,   KC_3,    KC_4,   KC_5,                             KC_6,    KC_7,     KC_8,    KC_9,    KC_0,    \
+  KC_EXLM, KC_AT,  KC_HASH, KC_DLR, KC_PERC,                          KC_CIRC, KC_AMPR,  KC_ASTR, KC_LPRN, KC_RPRN, \
+           KC_F11, KC_F12,                                                               ____,    ____,             \
+                                             ____, ____,  ____, ____,                                               \
+                                             ____, ____,  ____, ____,                                               \
+                                             ____, ____,  ____, ____                                                \
+)
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..457a3d0
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h
new file mode 100644 (file)
index 0000000..216917e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+This is the c configuration file for the keymap
+
+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/>.
+*/
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c
new file mode 100644 (file)
index 0000000..0a1c90b
--- /dev/null
@@ -0,0 +1,129 @@
+#include "dactyl_manuform.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+// Fillers to make layering more clear
+
+#define ____ KC_TRNS
+
+#define SFT_ESC  SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC  ALT_T(KC_SPC)
+#define SFT_ENT  SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN1
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Base (dvorak)
+ * ,----------------------------------,                             ,----------------------------------,
+ * |   '  |   ,  |   .  |   p  |   y  |                             |   f  |   g  |   c  |   r  |   l  |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |   a  |   o  |   e  |   u  |   i  |                             |   d  |   h  |   t  |   n  |   s  |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |   ;  |   q  |   j  |   k  |   x  |                             |   b  |   m  |   w  |   v  |   z  |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        |  [   |   ]  |                                                         |   -  |   =  |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      | ESC  |  BS  |                             | SPACE|ENTER |
+ *                      |  +   |   +  |                             |  +   |  +   |
+ *                      | SHIFT| CTRL |                             | ALT  |SHIFT |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    | TAB  | HOME | | END  | DEL  |
+ *                                    '------+------' '------+------'
+ *                                    | Lower|  ~   | | GUI  | Raise|
+ *                                    '------+------' '------+------'
+ */
+
+[_BASE] = LAYOUT( \
+  KC_QUOT, KC_COMM, KC_DOT,  KC_P, KC_Y,                                     KC_F, KC_G, KC_C,    KC_R,   KC_L, \
+  KC_A,    KC_O,    KC_E,    KC_U, KC_I,                                     KC_D, KC_H, KC_T,    KC_N,   KC_S, \
+  KC_SCLN, KC_Q,    KC_J,    KC_K, KC_X,                                     KC_B, KC_M, KC_W,    KC_V,   KC_Z, \
+           KC_LBRC, KC_RBRC,                                                             KC_MINS, KC_EQL,       \
+                                         SFT_ESC, CTL_BSPC,  ALT_SPC, SFT_ENT,                                  \
+                                         KC_TAB,  KC_HOME,   KC_END,  KC_DEL,                                   \
+                                         RAISE,   KC_GRV,    KC_LGUI, LOWER
+),
+
+/* Raise
+ * ,----------------------------------,                             ,----------------------------------,
+ * |      |      |  mup |      |      |                             | VOL+ |      |  up  |      | PgUp |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |      | mleft| mdown|mright|      |                             | MUTE | left | down |right | PgDn |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |      |      |      |      |      |                             | VOL- |  /   |  \   |  ?   |  |   |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        |      |      |                                                         | mbtn |mbtn2 |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ */
+
+[_RAISE] = LAYOUT( \
+  ____, ____,  KC_MU, ____,  ____,                          KC_VOLU, ____,    KC_UP,   ____,     KC_PGUP,   \
+  ____, KC_ML, KC_MD, KC_MR, ____,                          KC_MUTE, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDOWN, \
+  ____, ____,  ____,  ____,  ____,                          KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES,  KC_PIPE,   \
+        ____,  ____,                                                          KC_MB1,  KC_MB2,              \
+                                   ____, ____,  ____, ____,                                                 \
+                                   ____, ____,  ____, ____,                                                 \
+                                   ____, ____,  ____, ____                                                  \
+),
+/* Lower
+ * ,----------------------------------,                             ,----------------------------------,
+ * | F1   | F2   | F3   | F4   | F5   |                             |  F6  | F7   |  F8  |  F9  |  F10 |
+ * |------+------+------+------+------|                             |-------------+------+------+------|
+ * |  1   |  2   |  3   |  4   |  5   |                             |  6   |  7   |  8   |  9   |  10  |
+ * |------+------+------+------+------|                             |------|------+------+------+------|
+ * |  !   |  @   |  #   |  $   |  %   |                             |  ^   |  &   |  *   |  (   |  )   |
+ * |------+------+------+-------------,                             ,-------------+------+------+------,
+ *        | F11  | F12  |                                                         |  -   |  =   |
+ *        '------+------'-------------'                             '-------------'------+------'
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      |      |      |                             |      |      |
+ *                      '------+------'                             '------+------'
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ *                                    |      |      | |      |      |
+ *                                    '------+------' '------+------'
+ */
+
+[_LOWER] = LAYOUT( \
+  KC_F1,   KC_F2,  KC_F3,   KC_F4,  KC_F5,                            KC_F6,   KC_F7,    KC_F8,   KC_F9,   KC_F10,  \
+  KC_1,    KC_2,   KC_3,    KC_4,   KC_5,                             KC_6,    KC_7,     KC_8,    KC_9,    KC_0,    \
+  KC_EXLM, KC_AT,  KC_HASH, KC_DLR, KC_PERC,                          KC_CIRC, KC_AMPR,  KC_ASTR, KC_LPRN, KC_RPRN, \
+           KC_F11, KC_F12,                                                               ____,    ____,             \
+                                             ____, ____,  ____, ____,                                               \
+                                             ____, ____,  ____, ____,                                               \
+                                             ____, ____,  ____, ____                                                \
+)
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk
new file mode 100644 (file)
index 0000000..457a3d0
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/readme.md b/keyboards/handwired/dactyl_manuform/4x5/readme.md
new file mode 100644 (file)
index 0000000..aab792f
--- /dev/null
@@ -0,0 +1,161 @@
+Dactyl Manuform 4x5
+======
+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:
+
+```
+$ make handwired/dactyl_manuform/4x5:dvorak
+```
+
+You will see a lot of output and if everything worked correctly you will see the built hex file:
+
+```
+dactyl_manuform_4x5_dvorak.hex
+```
+
+If you would like to use one of the alternative keymaps, or create your own, copy one of the existing [keymaps](keymaps/) and run make like so:
+
+```
+$ make handwired/dactyl_manuform/4x5:YOUR_KEYMAP_NAME
+```
+
+If everything worked correctly you will see a file:
+
+```
+dactyl_manuform_4x5_YOUR_KEYMAP_NAME.hex
+```
+
+For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/docs/faq_keymap.md) in the main readme.md.
+
+## Keymaps
+Currently there are only two keymaps: Qwerty and Dvorak, feel free to make changes and contribute your keymap.
+### Qwerty and Dvorak
+Qwerty base layer:
+![Imgur](https://i.imgur.com/Yb5e7dS.png)
+Dvorak base layer:
+![Imgur](https://i.imgur.com/CpuZptB.png)
+Both keymaps have the same Raise and Lower layers:
+Raise Layer
+![Imgur](https://i.imgur.com/nOqePK5.png)
+Lower Layer
+![Imgur](https://i.imgur.com/WSshkYc.png)
+
+Required Hardware
+-----------------
+
+Apart from diodes and key switches for the keyboard matrix in each half, you
+will need:
+
+* 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each.
+* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
+
+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
+-----------------
+A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`.
+
+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.
+
+Next, wire your key matrix to any of the remaining 17 IO pins of the pro micro
+and modify the `matrix.c` accordingly.
+
+The wiring for serial:
+
+![serial wiring](https://i.imgur.com/C3D1GAQ.png)
+
+The wiring for i2c:
+
+![i2c wiring](https://i.imgur.com/Hbzhc6E.png)
+
+The pull-up resistors may be placed on either half. It is also possible
+to use 4 resistors and have the pull-ups in both halves, but this is
+unnecessary in simple use cases.
+
+You can change your configuration between serial and i2c by modifying your `config.h` file.
+
+Notes on Software Configuration
+-------------------------------
+
+the keymaps in here are for the 4x5 layout of the keyboard only.
+
+Flashing
+-------
+From the top level `qmk_firmware` directory run `make KEYBOARD:KEYMAP:avrdude` for automatic serial port resolution and flashing.
+Example: `make lets_split/rev2:default:avrdude`
+
+
+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.
+
+The EEPROM approach requires additional setup (flashing the eeprom) but allows you to swap the usb cable to either side.
+
+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.
+
+The EEPROM is used to store whether the
+half is left handed or right handed. This makes it so that the same firmware
+file will run on both hands instead of having to flash left and right handed
+versions of the firmware to each half. To flash the EEPROM file for the left
+half run:
+```
+avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-lefthand.eep
+// or the equivalent in dfu-programmer
+
+```
+and similarly for right half
+```
+avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-righhand.eep
+// or the equivalent in dfu-programmer
+```
+
+NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`)
+
+After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash.
+
+Note that you need to program both halves, but you have the option of using
+different keymaps for each half. You could program the left half with a QWERTY
+layout and the right half with a Colemak layout using bootmagic's default layout option.
+Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the
+right half is connected.
+
+
+Notes on Using Pro Micro 3.3V
+-----------------------------
+
+Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects
+the frequency on the 3.3V board.
+
+Also, if the slave board is producing weird characters in certain columns,
+update the following line in `matrix.c` to the following:
+
+```
+// _delay_us(30);  // without this wait read unstable value.
+_delay_us(300);  // without this wait read unstable value.
+```
diff --git a/keyboards/handwired/dactyl_manuform/4x5/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/rules.mk
new file mode 100644 (file)
index 0000000..99ac288
--- /dev/null
@@ -0,0 +1,68 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+#     This definition is optional, and if your keyboard supports multiple bootloaders of
+#     different sizes, comment this out, and the correct address will be loaded 
+#     automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = caterina
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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.
+SUBPROJECT_rev1 = yes
+USE_I2C = yes
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+SPLIT_KEYBOARD = yes
+
diff --git a/keyboards/handwired/dactyl_manuform/5x6/config.h b/keyboards/handwired/dactyl_manuform/5x6/config.h
new file mode 100644 (file)
index 0000000..97495e9
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x3060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    tshort
+#define PRODUCT         Dactyl-Manuform
+#define DESCRIPTION     A split keyboard for the cheap makers
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 }
+
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* 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 DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* 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 RGBLIGHT_TIMER
+#define RGBLED_NUM 12    // Number of LEDs
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+
+/*
+ * 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
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.c b/keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.c
new file mode 100644 (file)
index 0000000..17caecb
--- /dev/null
@@ -0,0 +1,23 @@
+#include "dactyl_manuform.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();
+};
+
diff --git a/keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/5x6/dactyl_manuform.h
new file mode 100644 (file)
index 0000000..5c1a433
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef REV2_H
+#define REV2_H
+
+#include "dactyl_manuform.h"
+
+//void promicro_bootloader_jmp(bool program);
+#include "quantum.h"
+
+
+#ifdef USE_I2C
+#include <stddef.h>
+#ifdef __AVR__
+       #include <avr/io.h>
+       #include <avr/interrupt.h>
+#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, \
+       L20, L21, L22, L23, L24, L25,                    R20, R21, R22, R23, R24, R25, \
+       L30, L31, L32, L33, L34, L35,                    R30, R31, R32, R33, R34, R35, \
+                 L42, L43,                                        R42, R43,      \
+                        L44, L45,                    R40, R41,                \
+                        L54, L55,                    R50, R51,                          \
+              L52, L53,                                        R52, R53       \
+       ) \
+       { \
+               { L00, L01, L02, L03, L04, L05 }, \
+               { L10, L11, L12, L13, L14, L15 }, \
+               { L20, L21, L22, L23, L24, L25 }, \
+               { L30, L31, L32, L33, L34, L35 }, \
+               { KC_NO, KC_NO, L42, L43, L44, L45 }, \
+               { KC_NO, KC_NO, L52, L53, L54, L55 }, \
+\
+               { R00, R01, R02, R03, R04, R05 },    \
+               { R10, R11, R12, R13, R14, R15 },    \
+               { R20, R21, R22, R23, R24, R25 },    \
+               { R30, R31, R32, R33, R34, R35 },    \
+               { R40, R41, R42, R43, KC_NO, KC_NO },\
+               { R50, R51, R52, R53, KC_NO, KC_NO }, \
+   }
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/config.h
new file mode 100644 (file)
index 0000000..1a7d1e0
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+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/>.
+*/
+
+
+#define USE_SERIAL
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+//#define EE_HANDS
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#include "../../config.h"
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/impstyle/keymap.c
new file mode 100644 (file)
index 0000000..7dd9f7c
--- /dev/null
@@ -0,0 +1,75 @@
+#include "dactyl_manuform.h"
+#include "action_layer.h"
+#include "eeconfig.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 _LOWER 1
+#define _RAISE 2
+
+#define SFT_ESC  SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC  ALT_T(KC_SPC)
+#define SFT_ENT  SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN1
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define _______ KC_TRNS
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+  [_QWERTY] = LAYOUT_5x6( 
+     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,KC_SPC,                        KC_ENT, LOWER,                                          
+                                      KC_TAB,KC_HOME,                         KC_END,  KC_DEL,                                            
+                                      KC_BSPC, KC_GRV,                        KC_LGUI, KC_LALT 
+  ),   
+
+  [_LOWER] = LAYOUT_5x6( 
+     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_5x6(
+       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 ,_______,
+                                               _______,_______,            _______,_______,
+                                               _______,_______,            _______,_______,
+                                               _______,_______,            _______,_______
+  ),
+
+  };
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/dactyl_manuform/5x6/readme.md b/keyboards/handwired/dactyl_manuform/5x6/readme.md
new file mode 100644 (file)
index 0000000..eb76a71
--- /dev/null
@@ -0,0 +1,142 @@
+Dactyl Manuform 5x6
+======
+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:
+
+```
+$ make handwired/dactyl_manuform/5x6:YOUR_KEYMAP_NAME
+```
+
+If everything worked correctly you will see a file:
+
+```
+dactyl_manuform_5x6_YOUR_KEYMAP_NAME.hex
+```
+
+For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/docs/faq_keymap.md) in the main readme.md.
+
+## Keymaps
+Currently there are only two keymaps: Qwerty and Dvorak, feel free to make changes and contribute your keymap.
+### Impstyle
+
+
+
+Required Hardware
+-----------------
+
+Apart from diodes and key switches for the keyboard matrix in each half, you
+will need:
+
+* 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each.
+* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
+
+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
+-----------------
+A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`.
+
+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.
+
+Next, wire your key matrix to any of the remaining 17 IO pins of the pro micro
+and modify the `matrix.c` accordingly.
+
+The wiring for serial:
+
+![serial wiring](https://i.imgur.com/C3D1GAQ.png)
+
+The wiring for i2c:
+
+![i2c wiring](https://i.imgur.com/Hbzhc6E.png)
+
+The pull-up resistors may be placed on either half. It is also possible
+to use 4 resistors and have the pull-ups in both halves, but this is
+unnecessary in simple use cases.
+
+You can change your configuration between serial and i2c by modifying your `config.h` file.
+
+Notes on Software Configuration
+-------------------------------
+
+the keymaps in here are for the 4x5 layout of the keyboard only.
+
+Flashing
+-------
+From the top level `qmk_firmware` directory run `make KEYBOARD:KEYMAP:avrdude` for automatic serial port resolution and flashing.
+Example: `make lets_split/rev2:default:avrdude`
+
+
+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.
+
+The EEPROM approach requires additional setup (flashing the eeprom) but allows you to swap the usb cable to either side.
+
+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.
+
+The EEPROM is used to store whether the
+half is left handed or right handed. This makes it so that the same firmware
+file will run on both hands instead of having to flash left and right handed
+versions of the firmware to each half. To flash the EEPROM file for the left
+half run:
+```
+avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-lefthand.eep
+// or the equivalent in dfu-programmer
+
+```
+and similarly for right half
+```
+avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-righhand.eep
+// or the equivalent in dfu-programmer
+```
+
+NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`)
+
+After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash.
+
+Note that you need to program both halves, but you have the option of using
+different keymaps for each half. You could program the left half with a QWERTY
+layout and the right half with a Colemak layout using bootmagic's default layout option.
+Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the
+right half is connected.
+
+
+Notes on Using Pro Micro 3.3V
+-----------------------------
+
+Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects
+the frequency on the 3.3V board.
+
+Also, if the slave board is producing weird characters in certain columns,
+update the following line in `matrix.c` to the following:
+
+```
+// _delay_us(30);  // without this wait read unstable value.
+_delay_us(300);  // without this wait read unstable value.
+```
diff --git a/keyboards/handwired/dactyl_manuform/5x6/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/rules.mk
new file mode 100644 (file)
index 0000000..6b12017
--- /dev/null
@@ -0,0 +1,67 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+#     This definition is optional, and if your keyboard supports multiple bootloaders of
+#     different sizes, comment this out, and the correct address will be loaded 
+#     automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = caterina
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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.
+SUBPROJECT_rev1 = yes
+USE_I2C = yes
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+SPLIT_KEYBOARD = yes
\ No newline at end of file
diff --git a/keyboards/handwired/dactyl_manuform/config.h b/keyboards/handwired/dactyl_manuform/config.h
deleted file mode 100644 (file)
index 8917630..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-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/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x3060
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    tshort
-#define PRODUCT         Dactyl-Manuform
-#define DESCRIPTION     A split keyboard for the cheap makers
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 10
-#define MATRIX_COLS 5
-
-// wiring of each half
-#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
-// #define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
-
-/* 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 DEBOUNCING_DELAY 5
-
-/* 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
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* 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 RGBLIGHT_TIMER
-#define RGBLED_NUM 12    // Number of LEDs
-#define ws2812_PORTREG  PORTD
-#define ws2812_DDRREG   DDRD
-
-/*
- * 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
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.c b/keyboards/handwired/dactyl_manuform/dactyl_manuform.c
deleted file mode 100644 (file)
index 17caecb..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "dactyl_manuform.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();
-};
-
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
deleted file mode 100644 (file)
index 3dc8405..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef REV2_H
-#define REV2_H
-
-#include "dactyl_manuform.h"
-
-//void promicro_bootloader_jmp(bool program);
-#include "quantum.h"
-
-
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
-       #include <avr/io.h>
-       #include <avr/interrupt.h>
-#endif
-#endif
-
-//void promicro_bootloader_jmp(bool program);
-
-#ifndef FLIP_HALF
-#define LAYOUT( \
-       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, \
-            L31, L32,                                         R32, R33,      \
-                       L33, L34,                     R30, R31,                \
-                                 L44, L43, R41, R40,                          \
-                                 L42, L41, R43, R42                           \
-       ) \
-       { \
-               { L00, L01, L02, L03, L04 }, \
-               { L10, L11, L12, L13, L14 }, \
-               { L20, L21, L22, L23, L24 }, \
-               { KC_NO, L31, L32, L33, L34 }, \
-               { KC_NO, L41, L42, L43, L44 }, \
-\
-               { R04, R03, R02, R01, R00 },    \
-               { R14, R13, R12, R11, R10 },    \
-               { R24, R23, R22, R21, R20 },    \
-               { KC_NO, R33, R32, R31, R30 },  \
-               { KC_NO, R43, R42, R41, R40 }  \
-       }
-#else
-#define LAYOUT( \
-       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, \
-            L31, L32,                                         R32, R33,      \
-                       L33, L34,                     R30, R31,                \
-                                 L44, L43, R41, R40,                          \
-                                 L42, L41, R43, R42                           \
-       ) \
-       { \
-               { R04, R03, R02, R01, R00 },    \
-               { R14, R13, R12, R11, R10 },    \
-               { R24, R23, R22, R21, R20 },    \
-               { KC_NO, R33, R32, R31, R30 },  \
-               { KC_NO, R43, R42, R41, R40 },  \
-\
-               { L00, L01, L02, L03, L04 }, \
-               { L10, L11, L12, L13, L14 }, \
-               { L20, L21, L22, L23, L24 }, \
-               { KC_NO, L31, L32, L33, L34 }, \
-               { KC_NO, L41, L42, L43, L44  }  \
-\
-       }
-#endif
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/eeprom-lefthand.eep b/keyboards/handwired/dactyl_manuform/eeprom-lefthand.eep
deleted file mode 100644 (file)
index bda23cd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-:0F000000000000000000000000000000000001F0
-:00000001FF
diff --git a/keyboards/handwired/dactyl_manuform/eeprom-righthand.eep b/keyboards/handwired/dactyl_manuform/eeprom-righthand.eep
deleted file mode 100644 (file)
index 549cd1e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-:0F000000000000000000000000000000000000F1
-:00000001FF
diff --git a/keyboards/handwired/dactyl_manuform/i2c.c b/keyboards/handwired/dactyl_manuform/i2c.c
deleted file mode 100644 (file)
index 084c890..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK)  =>  # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
-  uint16_t lim = 0;
-  while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
-    lim++;
-
-  // easier way, but will wait slightly longer
-  // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz
-void i2c_master_init(void) {
-  // no prescaler
-  TWSR = 0;
-  // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
-  // Check datasheets for more info.
-  TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-//          1 => error
-uint8_t i2c_master_start(uint8_t address) {
-  TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
-
-  i2c_delay();
-
-  // check that we started successfully
-  if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
-    return 1;
-
-  TWDR = address;
-  TWCR = (1<<TWINT) | (1<<TWEN);
-
-  i2c_delay();
-
-  if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
-    return 1; // slave did not acknowledge
-  else
-    return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
-  TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
-  uint16_t lim = 0;
-  while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
-    lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-//         1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
-  TWDR = data;
-  TWCR = (1<<TWINT) | (1<<TWEN);
-
-  i2c_delay();
-
-  // check if the slave acknowledged us
-  return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
-  TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
-  i2c_delay();
-  return TWDR;
-}
-
-void i2c_reset_state(void) {
-  TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
-  TWAR = address << 0; // slave i2c address
-  // TWEN  - twi enable
-  // TWEA  - enable address acknowledgement
-  // TWINT - twi interrupt flag
-  // TWIE  - enable the twi interrupt
-  TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
-  uint8_t ack = 1;
-  switch(TW_STATUS) {
-    case TW_SR_SLA_ACK:
-      // this device has been addressed as a slave receiver
-      slave_has_register_set = false;
-      break;
-
-    case TW_SR_DATA_ACK:
-      // this device has received data as a slave receiver
-      // The first byte that we receive in this transaction sets the location
-      // of the read/write location of the slaves memory that it exposes over
-      // i2c.  After that, bytes will be written at slave_buffer_pos, incrementing
-      // slave_buffer_pos after each write.
-      if(!slave_has_register_set) {
-        slave_buffer_pos = TWDR;
-        // don't acknowledge the master if this memory loctaion is out of bounds
-        if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
-          ack = 0;
-          slave_buffer_pos = 0;
-        }
-        slave_has_register_set = true;
-      } else {
-        i2c_slave_buffer[slave_buffer_pos] = TWDR;
-        BUFFER_POS_INC();
-      }
-      break;
-
-    case TW_ST_SLA_ACK:
-    case TW_ST_DATA_ACK:
-      // master has addressed this device as a slave transmitter and is
-      // requesting data.
-      TWDR = i2c_slave_buffer[slave_buffer_pos];
-      BUFFER_POS_INC();
-      break;
-
-    case TW_BUS_ERROR: // something went wrong, reset twi state
-      TWCR = 0;
-    default:
-      break;
-  }
-  // Reset everything, so we are ready for the next TWI interrupt
-  TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/i2c.h b/keyboards/handwired/dactyl_manuform/i2c.h
deleted file mode 100644 (file)
index c15b6bc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef I2C_H
-#define I2C_H
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency
-#define SCL_CLOCK  400000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
-  return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
-  return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack)  (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/keymaps/default/config.h
deleted file mode 100644 (file)
index 216917e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-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/>.
-*/
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
-
-/* Select hand configuration */
-
-// #define MASTER_LEFT
-// #define MASTER_RIGHT
-#define EE_HANDS
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/keymaps/default/keymap.c
deleted file mode 100644 (file)
index 24c0221..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "dactyl_manuform.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-
-extern keymap_config_t keymap_config;
-
-#define _BASE 0
-#define _RAISE 1
-#define _LOWER 2
-
-// Fillers to make layering more clear
-
-#define ____ KC_TRNS
-
-#define SFT_ESC  SFT_T(KC_ESC)
-#define CTL_BSPC CTL_T(KC_BSPC)
-#define ALT_SPC  ALT_T(KC_SPC)
-#define SFT_ENT  SFT_T(KC_ENT)
-
-#define KC_ML KC_MS_LEFT
-#define KC_MR KC_MS_RIGHT
-#define KC_MU KC_MS_UP
-#define KC_MD KC_MS_DOWN
-#define KC_MB1 KC_MS_BTN1
-#define KC_MB2 KC_MS_BTN1
-
-#define RAISE MO(_RAISE)
-#define LOWER MO(_LOWER)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Base (qwerty)
- * ,----------------------------------,                             ,----------------------------------,
- * |   q  |   w  |   e  |   r  |   t  |                             |   y  |   u  |   i  |   o  |   p  |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |   a  |   s  |   d  |   f  |   g  |                             |   h  |   j  |   k  |   l  |   ;  |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |   z  |   x  |   c  |   v  |   b  |                             |   n  |   m  |   ,  |   .  |   '  |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        |  [   |   ]  |                                                         |   -  |   =  |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      | ESC  |  BS  |                             | SPACE|ENTER |
- *                      |  +   |   +  |                             |  +   |  +   |
- *                      | SHIFT| CTRL |                             | ALT  |SHIFT |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    | TAB  | HOME | | END  | DEL  |
- *                                    '------+------' '------+------'
- *                                    | Lower|  ~   | | GUI  | Raise|
- *                                    '------+------' '------+------'
- */
-
-[_BASE] = LAYOUT( \
-  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_SCLN, \
-  KC_Z, KC_X, KC_C,    KC_V,    KC_B,                                       KC_N, KC_M,    KC_COMM, KC_DOT, KC_QUOT, \
-              KC_LBRC, KC_RBRC,                                                   KC_MINS, KC_EQL,                   \
-                                      SFT_ESC, CTL_BSPC,  ALT_SPC, SFT_ENT,                                          \
-                                      KC_TAB,  KC_HOME,   KC_END,  KC_DEL,                                           \
-                                      RAISE,   KC_GRV,    KC_LGUI, LOWER
-),
-
-/* Raise
- * ,----------------------------------,                             ,----------------------------------,
- * |      |      |  mup |      |      |                             | VOL+ |      |  up  |      | PgUp |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |      | mleft| mdown|mright|      |                             | MUTE | left | down |right | PgDn |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |      |      |      |      |      |                             | VOL- |  /   |  \   |  ?   |  |   |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        |      |      |                                                         | mbtn |mbtn2 |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- */
-
-[_RAISE] = LAYOUT( \
-  ____, ____,  KC_MU, ____,  ____,                          KC_VOLU, ____,    KC_UP,   ____,     KC_PGUP,   \
-  ____, KC_ML, KC_MD, KC_MR, ____,                          KC_MUTE, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDOWN, \
-  ____, ____,  ____,  ____,  ____,                          KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES,  KC_PIPE,   \
-        ____,  ____,                                                          KC_MB1,  KC_MB2,              \
-                                   ____, ____,  ____, ____,                                                 \
-                                   ____, ____,  ____, ____,                                                 \
-                                   ____, ____,  ____, ____                                                  \
-),
-/* Lower
- * ,----------------------------------,                             ,----------------------------------,
- * | F1   | F2   | F3   | F4   | F5   |                             |  F6  | F7   |  F8  |  F9  |  F10 |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |  1   |  2   |  3   |  4   |  5   |                             |  6   |  7   |  8   |  9   |  10  |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |  !   |  @   |  #   |  $   |  %   |                             |  ^   |  &   |  *   |  (   |  )   |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        | F11  | F12  |                                                         |  -   |  =   |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- */
-
-[_LOWER] = LAYOUT( \
-  KC_F1,   KC_F2,  KC_F3,   KC_F4,  KC_F5,                            KC_F6,   KC_F7,    KC_F8,   KC_F9,   KC_F10,  \
-  KC_1,    KC_2,   KC_3,    KC_4,   KC_5,                             KC_6,    KC_7,     KC_8,    KC_9,    KC_0,    \
-  KC_EXLM, KC_AT,  KC_HASH, KC_DLR, KC_PERC,                          KC_CIRC, KC_AMPR,  KC_ASTR, KC_LPRN, KC_RPRN, \
-           KC_F11, KC_F12,                                                               ____,    ____,             \
-                                             ____, ____,  ____, ____,                                               \
-                                             ____, ____,  ____, ____,                                               \
-                                             ____, ____,  ____, ____                                                \
-)
-};
-
-void persistent_default_layer_set(uint16_t default_layer) {
-  eeconfig_update_default_layer(default_layer);
-  default_layer_set(default_layer);
-}
-
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/keymaps/default/rules.mk
deleted file mode 100644 (file)
index 457a3d0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/dvorak/config.h b/keyboards/handwired/dactyl_manuform/keymaps/dvorak/config.h
deleted file mode 100644 (file)
index 216917e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-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/>.
-*/
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
-
-/* Select hand configuration */
-
-// #define MASTER_LEFT
-// #define MASTER_RIGHT
-#define EE_HANDS
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl_manuform/keymaps/dvorak/keymap.c
deleted file mode 100644 (file)
index 0a1c90b..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "dactyl_manuform.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-
-extern keymap_config_t keymap_config;
-
-#define _BASE 0
-#define _RAISE 1
-#define _LOWER 2
-
-// Fillers to make layering more clear
-
-#define ____ KC_TRNS
-
-#define SFT_ESC  SFT_T(KC_ESC)
-#define CTL_BSPC CTL_T(KC_BSPC)
-#define ALT_SPC  ALT_T(KC_SPC)
-#define SFT_ENT  SFT_T(KC_ENT)
-
-#define KC_ML KC_MS_LEFT
-#define KC_MR KC_MS_RIGHT
-#define KC_MU KC_MS_UP
-#define KC_MD KC_MS_DOWN
-#define KC_MB1 KC_MS_BTN1
-#define KC_MB2 KC_MS_BTN1
-
-#define RAISE MO(_RAISE)
-#define LOWER MO(_LOWER)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Base (dvorak)
- * ,----------------------------------,                             ,----------------------------------,
- * |   '  |   ,  |   .  |   p  |   y  |                             |   f  |   g  |   c  |   r  |   l  |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |   a  |   o  |   e  |   u  |   i  |                             |   d  |   h  |   t  |   n  |   s  |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |   ;  |   q  |   j  |   k  |   x  |                             |   b  |   m  |   w  |   v  |   z  |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        |  [   |   ]  |                                                         |   -  |   =  |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      | ESC  |  BS  |                             | SPACE|ENTER |
- *                      |  +   |   +  |                             |  +   |  +   |
- *                      | SHIFT| CTRL |                             | ALT  |SHIFT |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    | TAB  | HOME | | END  | DEL  |
- *                                    '------+------' '------+------'
- *                                    | Lower|  ~   | | GUI  | Raise|
- *                                    '------+------' '------+------'
- */
-
-[_BASE] = LAYOUT( \
-  KC_QUOT, KC_COMM, KC_DOT,  KC_P, KC_Y,                                     KC_F, KC_G, KC_C,    KC_R,   KC_L, \
-  KC_A,    KC_O,    KC_E,    KC_U, KC_I,                                     KC_D, KC_H, KC_T,    KC_N,   KC_S, \
-  KC_SCLN, KC_Q,    KC_J,    KC_K, KC_X,                                     KC_B, KC_M, KC_W,    KC_V,   KC_Z, \
-           KC_LBRC, KC_RBRC,                                                             KC_MINS, KC_EQL,       \
-                                         SFT_ESC, CTL_BSPC,  ALT_SPC, SFT_ENT,                                  \
-                                         KC_TAB,  KC_HOME,   KC_END,  KC_DEL,                                   \
-                                         RAISE,   KC_GRV,    KC_LGUI, LOWER
-),
-
-/* Raise
- * ,----------------------------------,                             ,----------------------------------,
- * |      |      |  mup |      |      |                             | VOL+ |      |  up  |      | PgUp |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |      | mleft| mdown|mright|      |                             | MUTE | left | down |right | PgDn |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |      |      |      |      |      |                             | VOL- |  /   |  \   |  ?   |  |   |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        |      |      |                                                         | mbtn |mbtn2 |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- */
-
-[_RAISE] = LAYOUT( \
-  ____, ____,  KC_MU, ____,  ____,                          KC_VOLU, ____,    KC_UP,   ____,     KC_PGUP,   \
-  ____, KC_ML, KC_MD, KC_MR, ____,                          KC_MUTE, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDOWN, \
-  ____, ____,  ____,  ____,  ____,                          KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES,  KC_PIPE,   \
-        ____,  ____,                                                          KC_MB1,  KC_MB2,              \
-                                   ____, ____,  ____, ____,                                                 \
-                                   ____, ____,  ____, ____,                                                 \
-                                   ____, ____,  ____, ____                                                  \
-),
-/* Lower
- * ,----------------------------------,                             ,----------------------------------,
- * | F1   | F2   | F3   | F4   | F5   |                             |  F6  | F7   |  F8  |  F9  |  F10 |
- * |------+------+------+------+------|                             |-------------+------+------+------|
- * |  1   |  2   |  3   |  4   |  5   |                             |  6   |  7   |  8   |  9   |  10  |
- * |------+------+------+------+------|                             |------|------+------+------+------|
- * |  !   |  @   |  #   |  $   |  %   |                             |  ^   |  &   |  *   |  (   |  )   |
- * |------+------+------+-------------,                             ,-------------+------+------+------,
- *        | F11  | F12  |                                                         |  -   |  =   |
- *        '------+------'-------------'                             '-------------'------+------'
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      |      |      |                             |      |      |
- *                      '------+------'                             '------+------'
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- *                                    |      |      | |      |      |
- *                                    '------+------' '------+------'
- */
-
-[_LOWER] = LAYOUT( \
-  KC_F1,   KC_F2,  KC_F3,   KC_F4,  KC_F5,                            KC_F6,   KC_F7,    KC_F8,   KC_F9,   KC_F10,  \
-  KC_1,    KC_2,   KC_3,    KC_4,   KC_5,                             KC_6,    KC_7,     KC_8,    KC_9,    KC_0,    \
-  KC_EXLM, KC_AT,  KC_HASH, KC_DLR, KC_PERC,                          KC_CIRC, KC_AMPR,  KC_ASTR, KC_LPRN, KC_RPRN, \
-           KC_F11, KC_F12,                                                               ____,    ____,             \
-                                             ____, ____,  ____, ____,                                               \
-                                             ____, ____,  ____, ____,                                               \
-                                             ____, ____,  ____, ____                                                \
-)
-};
-
-void persistent_default_layer_set(uint16_t default_layer) {
-  eeconfig_update_default_layer(default_layer);
-  default_layer_set(default_layer);
-}
-
diff --git a/keyboards/handwired/dactyl_manuform/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl_manuform/keymaps/dvorak/rules.mk
deleted file mode 100644 (file)
index 457a3d0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/handwired/dactyl_manuform/matrix.c b/keyboards/handwired/dactyl_manuform/matrix.c
deleted file mode 100644 (file)
index 904850d..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
-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/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "pro_micro.h"
-#include "config.h"
-#include "timer.h"
-
-#ifdef USE_I2C
-#  include "i2c.h"
-#else // USE_SERIAL
-#  include "serial.h"
-#endif
-
-#ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
-#endif
-
-#if (DEBOUNCING_DELAY > 0)
-    static uint16_t debouncing_time;
-    static bool debouncing = false;
-#endif
-
-#if (MATRIX_COLS <= 8)
-#    define print_matrix_header()  print("\nr/c 01234567\n")
-#    define print_matrix_row(row)  print_bin_reverse8(matrix_get_row(row))
-#    define matrix_bitpop(i)       bitpop(matrix[i])
-#    define ROW_SHIFTER ((uint8_t)1)
-#else
-#    error "Currently only supports 8 COLS"
-#endif
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#define ERROR_DISCONNECT_COUNT 5
-
-#define ROWS_PER_HAND (MATRIX_ROWS/2)
-
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#if (DIODE_DIRECTION == COL2ROW)
-    static void init_cols(void);
-    static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
-    static void unselect_rows(void);
-    static void select_row(uint8_t row);
-    static void unselect_row(uint8_t row);
-#elif (DIODE_DIRECTION == ROW2COL)
-    static void init_rows(void);
-    static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
-    static void unselect_cols(void);
-    static void unselect_col(uint8_t col);
-    static void select_col(uint8_t col);
-#endif
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
-    matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
-    matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-inline
-uint8_t matrix_rows(void)
-{
-    return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
-    return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
-#ifdef DISABLE_JTAG
-  // JTAG disable for PORT F. write JTD bit twice within four cycles.
-  MCUCR |= (1<<JTD);
-  MCUCR |= (1<<JTD);
-#endif
-
-    debug_enable = true;
-    debug_matrix = true;
-    debug_mouse = true;
-    // initialize row and col
-#if (DIODE_DIRECTION == COL2ROW)
-    unselect_rows();
-    init_cols();
-#elif (DIODE_DIRECTION == ROW2COL)
-    unselect_cols();
-    init_rows();
-#endif
-
-    TX_RX_LED_INIT;
-
-    // initialize matrix state: all keys off
-    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-        matrix[i] = 0;
-        matrix_debouncing[i] = 0;
-    }
-
-    matrix_init_quantum();
-
-}
-
-uint8_t _matrix_scan(void)
-{
-    int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-#if (DIODE_DIRECTION == COL2ROW)
-    // Set row, read cols
-    for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) {
-#       if (DEBOUNCING_DELAY > 0)
-            bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
-
-            if (matrix_changed) {
-                debouncing = true;
-                debouncing_time = timer_read();
-            }
-
-#       else
-            read_cols_on_row(matrix+offset, current_row);
-#       endif
-
-    }
-
-#elif (DIODE_DIRECTION == ROW2COL)
-    // Set col, read rows
-    for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
-#       if (DEBOUNCING_DELAY > 0)
-            bool matrix_changed = read_rows_on_col(matrix_debouncing+offset, current_col);
-            if (matrix_changed) {
-                debouncing = true;
-                debouncing_time = timer_read();
-            }
-#       else
-             read_rows_on_col(matrix+offset, current_col);
-#       endif
-
-    }
-#endif
-
-#   if (DEBOUNCING_DELAY > 0)
-        if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
-            for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
-                matrix[i+offset] = matrix_debouncing[i+offset];
-            }
-            debouncing = false;
-        }
-#   endif
-
-    return 1;
-}
-
-#ifdef USE_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
-    int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
-    int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
-    if (err) goto i2c_error;
-
-    // start of matrix stored at 0x00
-    err = i2c_master_write(0x00);
-    if (err) goto i2c_error;
-
-    // Start read
-    err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
-    if (err) goto i2c_error;
-
-    if (!err) {
-        int i;
-        for (i = 0; i < ROWS_PER_HAND-1; ++i) {
-            matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
-        }
-        matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
-        i2c_master_stop();
-    } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
-        i2c_reset_state();
-        return err;
-    }
-
-    return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
-    int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
-    if (serial_update_buffers()) {
-        return 1;
-    }
-
-    for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        matrix[slaveOffset+i] = serial_slave_buffer[i];
-    }
-    return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
-    uint8_t ret = _matrix_scan();
-
-#ifdef USE_I2C
-    if( i2c_transaction() ) {
-#else // USE_SERIAL
-    if( serial_transaction() ) {
-#endif
-        // turn on the indicator led when halves are disconnected
-        TXLED1;
-
-        error_count++;
-
-        if (error_count > ERROR_DISCONNECT_COUNT) {
-            // reset other half if disconnected
-            int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-            for (int i = 0; i < ROWS_PER_HAND; ++i) {
-                matrix[slaveOffset+i] = 0;
-            }
-        }
-    } else {
-        // turn off the indicator led on no error
-        TXLED0;
-        error_count = 0;
-    }
-    matrix_scan_quantum();
-    return ret;
-}
-
-void matrix_slave_scan(void) {
-    _matrix_scan();
-
-    int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_I2C
-    for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        i2c_slave_buffer[i] = matrix[offset+i];
-    }
-#else // USE_SERIAL
-    for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        serial_slave_buffer[i] = matrix[offset+i];
-    }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
-    if (debouncing) return false;
-    return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
-    return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
-    return matrix[row];
-}
-
-void matrix_print(void)
-{
-    print("\nr/c 0123456789ABCDEF\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        phex(row); print(": ");
-        pbin_reverse16(matrix_get_row(row));
-        print("\n");
-    }
-}
-
-uint8_t matrix_key_count(void)
-{
-    uint8_t count = 0;
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        count += bitpop16(matrix[i]);
-    }
-    return count;
-}
-
-#if (DIODE_DIRECTION == COL2ROW)
-
-static void init_cols(void)
-{
-    for(uint8_t x = 0; x < MATRIX_COLS; x++) {
-        uint8_t pin = col_pins[x];
-        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-    }
-}
-
-static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
-{
-    // Store last value of row prior to reading
-    matrix_row_t last_row_value = current_matrix[current_row];
-
-    // Clear data in matrix row
-    current_matrix[current_row] = 0;
-
-    // Select row and wait for row selecton to stabilize
-    select_row(current_row);
-    wait_us(30);
-
-    // For each col...
-    for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
-
-        // Select the col pin to read (active low)
-        uint8_t pin = col_pins[col_index];
-        uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
-
-        // Populate the matrix row with the state of the col pin
-        current_matrix[current_row] |=  pin_state ? 0 : (ROW_SHIFTER << col_index);
-    }
-
-    // Unselect row
-    unselect_row(current_row);
-
-    return (last_row_value != current_matrix[current_row]);
-}
-
-static void select_row(uint8_t row)
-{
-    uint8_t pin = row_pins[row];
-    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT
-    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_row(uint8_t row)
-{
-    uint8_t pin = row_pins[row];
-    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-}
-
-static void unselect_rows(void)
-{
-    for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
-        uint8_t pin = row_pins[x];
-        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-    }
-}
-
-#elif (DIODE_DIRECTION == ROW2COL)
-
-static void init_rows(void)
-{
-    for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
-        uint8_t pin = row_pins[x];
-        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-    }
-}
-
-static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
-{
-    bool matrix_changed = false;
-
-    // Select col and wait for col selecton to stabilize
-    select_col(current_col);
-    wait_us(30);
-
-    // For each row...
-    for(uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++)
-    {
-
-        // Store last value of row prior to reading
-        matrix_row_t last_row_value = current_matrix[row_index];
-
-        // Check row pin state
-        if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
-        {
-            // Pin LO, set col bit
-            current_matrix[row_index] |= (ROW_SHIFTER << current_col);
-        }
-        else
-        {
-            // Pin HI, clear col bit
-            current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
-        }
-
-        // Determine if the matrix changed state
-        if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
-        {
-            matrix_changed = true;
-        }
-    }
-
-    // Unselect col
-    unselect_col(current_col);
-
-    return matrix_changed;
-}
-
-static void select_col(uint8_t col)
-{
-    uint8_t pin = col_pins[col];
-    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT
-    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_col(uint8_t col)
-{
-    uint8_t pin = col_pins[col];
-    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-}
-
-static void unselect_cols(void)
-{
-    for(uint8_t x = 0; x < MATRIX_COLS; x++) {
-        uint8_t pin = col_pins[x];
-        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
-        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
-    }
-}
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/readme.md b/keyboards/handwired/dactyl_manuform/readme.md
deleted file mode 100644 (file)
index 8b28757..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-Dactyl Manuform
-======
-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:
-
-```
-$ make dactyl_manuform:dvorak
-```
-
-You will see a lot of output and if everything worked correctly you will see the built hex file:
-
-```
-dactyl_manuform_dvorak.hex
-```
-
-If you would like to use one of the alternative keymaps, or create your own, copy one of the existing [keymaps](keymaps/) and run make like so:
-
-```
-$ make dactyl_manuform:YOUR_KEYMAP_NAME
-```
-
-If everything worked correctly you will see a file:
-
-```
-dactyl_manuform_YOUR_KEYMAP_NAME.hex
-```
-
-For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/docs/faq_keymap.md) in the main readme.md.
-
-## Keymaps
-Currently there are only two keymaps: Qwerty and Dvorak, feel free to make changes and contribute your keymap.
-### Qwerty and Dvorak
-Qwerty base layer:
-![Imgur](https://i.imgur.com/Yb5e7dS.png)
-Dvorak base layer:
-![Imgur](https://i.imgur.com/CpuZptB.png)
-Both keymaps have the same Raise and Lower layers:
-Raise Layer
-![Imgur](https://i.imgur.com/nOqePK5.png)
-Lower Layer
-![Imgur](https://i.imgur.com/WSshkYc.png)
-
-Required Hardware
------------------
-
-Apart from diodes and key switches for the keyboard matrix in each half, you
-will need:
-
-* 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each.
-* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
-
-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
------------------
-A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`.
-
-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.
-
-Next, wire your key matrix to any of the remaining 17 IO pins of the pro micro
-and modify the `matrix.c` accordingly.
-
-The wiring for serial:
-
-![serial wiring](https://i.imgur.com/C3D1GAQ.png)
-
-The wiring for i2c:
-
-![i2c wiring](https://i.imgur.com/Hbzhc6E.png)
-
-The pull-up resistors may be placed on either half. It is also possible
-to use 4 resistors and have the pull-ups in both halves, but this is
-unnecessary in simple use cases.
-
-You can change your configuration between serial and i2c by modifying your `config.h` file.
-
-Notes on Software Configuration
--------------------------------
-
-the keymaps in here are for the 4x5 layout of the keyboard only.
-
-Flashing
--------
-From the top level `qmk_firmware` directory run `make KEYBOARD:KEYMAP:avrdude` for automatic serial port resolution and flashing.
-Example: `make lets_split/rev2:default:avrdude`
-
-
-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.
-
-The EEPROM approach requires additional setup (flashing the eeprom) but allows you to swap the usb cable to either side.
-
-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.
-
-The EEPROM is used to store whether the
-half is left handed or right handed. This makes it so that the same firmware
-file will run on both hands instead of having to flash left and right handed
-versions of the firmware to each half. To flash the EEPROM file for the left
-half run:
-```
-avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-lefthand.eep
-// or the equivalent in dfu-programmer
-
-```
-and similarly for right half
-```
-avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-righhand.eep
-// or the equivalent in dfu-programmer
-```
-
-NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`)
-
-After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash.
-
-Note that you need to program both halves, but you have the option of using
-different keymaps for each half. You could program the left half with a QWERTY
-layout and the right half with a Colemak layout using bootmagic's default layout option.
-Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the
-right half is connected.
-
-
-Notes on Using Pro Micro 3.3V
------------------------------
-
-Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects
-the frequency on the 3.3V board.
-
-Also, if the slave board is producing weird characters in certain columns,
-update the following line in `matrix.c` to the following:
-
-```
-// _delay_us(30);  // without this wait read unstable value.
-_delay_us(300);  // without this wait read unstable value.
-```
diff --git a/keyboards/handwired/dactyl_manuform/rules.mk b/keyboards/handwired/dactyl_manuform/rules.mk
deleted file mode 100644 (file)
index 6c0949b..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-SRC += matrix.c \
-          i2c.c \
-          split_util.c \
-          serial.c \
-          ssd1306.c
-
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u4
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency in Hz. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-#
-#     This will be an integer division of F_USB below, as it is sourced by
-#     F_USB after it has run through any CPU prescalers. Note that this value
-#     does not *change* the processor frequency - it should merely be updated to
-#     reflect the processor speed set externally so that the code can use accurate
-#     software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-#     This will define a symbol, F_USB, in all source code files equal to the
-#     input clock frequency (before any prescaling is performed) in Hz. This value may
-#     differ from F_CPU if prescaling is used on the latter, and is required as the
-#     raw input clock is fed directly to the PLL sections of the AVR for high speed
-#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-#     at the end, this will be done automatically to create a 32-bit value in your
-#     source code.
-#
-#     If no clock division is performed on the input clock inside the AVR (via the
-#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-#     This definition is optional, and if your keyboard supports multiple bootloaders of
-#     different sizes, comment this out, and the correct address will be loaded 
-#     automatically (+60). See bootloader.mk for all options.
-BOOTLOADER = caterina
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# 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.
-SUBPROJECT_rev1 = yes
-USE_I2C = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
-
-CUSTOM_MATRIX = yes
-
-LAYOUTS = ortho_4x12
diff --git a/keyboards/handwired/dactyl_manuform/serial.c b/keyboards/handwired/dactyl_manuform/serial.c
deleted file mode 100644 (file)
index 74bcbb6..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <stdbool.h>
-#include "serial.h"
-
-#ifndef USE_I2C
-
-// Serial pulse period in microseconds. Its probably a bad idea to lower this
-// value.
-#define SERIAL_DELAY 24
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-
-#define SLAVE_DATA_CORRUPT (1<<0)
-volatile uint8_t status = 0;
-
-inline static
-void serial_delay(void) {
-  _delay_us(SERIAL_DELAY);
-}
-
-inline static
-void serial_output(void) {
-  SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
-}
-
-// make the serial pin an input with pull-up resistor
-inline static
-void serial_input(void) {
-  SERIAL_PIN_DDR  &= ~SERIAL_PIN_MASK;
-  SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static
-uint8_t serial_read_pin(void) {
-  return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static
-void serial_low(void) {
-  SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static
-void serial_high(void) {
-  SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void serial_master_init(void) {
-  serial_output();
-  serial_high();
-}
-
-void serial_slave_init(void) {
-  serial_input();
-
-  // Enable INT0
-  EIMSK |= _BV(INT0);
-  // Trigger on falling edge of INT0
-  EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-}
-
-// Used by the master to synchronize timing with the slave.
-static
-void sync_recv(void) {
-  serial_input();
-  // This shouldn't hang if the slave disconnects because the
-  // serial line will float to high if the slave does disconnect.
-  while (!serial_read_pin());
-  serial_delay();
-}
-
-// Used by the slave to send a synchronization signal to the master.
-static
-void sync_send(void) {
-  serial_output();
-
-  serial_low();
-  serial_delay();
-
-  serial_high();
-}
-
-// Reads a byte from the serial line
-static
-uint8_t serial_read_byte(void) {
-  uint8_t byte = 0;
-  serial_input();
-  for ( uint8_t i = 0; i < 8; ++i) {
-    byte = (byte << 1) | serial_read_pin();
-    serial_delay();
-    _delay_us(1);
-  }
-
-  return byte;
-}
-
-// Sends a byte with MSB ordering
-static
-void serial_write_byte(uint8_t data) {
-  uint8_t b = 8;
-  serial_output();
-  while( b-- ) {
-    if(data & (1 << b)) {
-      serial_high();
-    } else {
-      serial_low();
-    }
-    serial_delay();
-  }
-}
-
-// interrupt handle to be used by the slave device
-ISR(SERIAL_PIN_INTERRUPT) {
-  sync_send();
-
-  uint8_t checksum = 0;
-  for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
-    serial_write_byte(serial_slave_buffer[i]);
-    sync_send();
-    checksum += serial_slave_buffer[i];
-  }
-  serial_write_byte(checksum);
-  sync_send();
-
-  // wait for the sync to finish sending
-  serial_delay();
-
-  // read the middle of pulses
-  _delay_us(SERIAL_DELAY/2);
-
-  uint8_t checksum_computed = 0;
-  for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
-    serial_master_buffer[i] = serial_read_byte();
-    sync_send();
-    checksum_computed += serial_master_buffer[i];
-  }
-  uint8_t checksum_received = serial_read_byte();
-  sync_send();
-
-  serial_input(); // end transaction
-
-  if ( checksum_computed != checksum_received ) {
-    status |= SLAVE_DATA_CORRUPT;
-  } else {
-    status &= ~SLAVE_DATA_CORRUPT;
-  }
-}
-
-inline
-bool serial_slave_DATA_CORRUPT(void) {
-  return status & SLAVE_DATA_CORRUPT;
-}
-
-// Copies the serial_slave_buffer to the master and sends the
-// serial_master_buffer to the slave.
-//
-// Returns:
-// 0 => no error
-// 1 => slave did not respond
-int serial_update_buffers(void) {
-  // this code is very time dependent, so we need to disable interrupts
-  cli();
-
-  // signal to the slave that we want to start a transaction
-  serial_output();
-  serial_low();
-  _delay_us(1);
-
-  // wait for the slaves response
-  serial_input();
-  serial_high();
-  _delay_us(SERIAL_DELAY);
-
-  // check if the slave is present
-  if (serial_read_pin()) {
-    // slave failed to pull the line low, assume not present
-    sei();
-    return 1;
-  }
-
-  // if the slave is present syncronize with it
-  sync_recv();
-
-  uint8_t checksum_computed = 0;
-  // receive data from the slave
-  for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
-    serial_slave_buffer[i] = serial_read_byte();
-    sync_recv();
-    checksum_computed += serial_slave_buffer[i];
-  }
-  uint8_t checksum_received = serial_read_byte();
-  sync_recv();
-
-  if (checksum_computed != checksum_received) {
-    sei();
-    return 1;
-  }
-
-  uint8_t checksum = 0;
-  // send data to the slave
-  for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
-    serial_write_byte(serial_master_buffer[i]);
-    sync_recv();
-    checksum += serial_master_buffer[i];
-  }
-  serial_write_byte(checksum);
-  sync_recv();
-
-  // always, release the line when not in use
-  serial_output();
-  serial_high();
-
-  sei();
-  return 0;
-}
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/serial.h b/keyboards/handwired/dactyl_manuform/serial.h
deleted file mode 100644 (file)
index 15fe4db..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef MY_SERIAL_H
-#define MY_SERIAL_H
-
-#include "config.h"
-#include <stdbool.h>
-
-/* TODO:  some defines for interrupt setup */
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD0)
-#define SERIAL_PIN_INTERRUPT INT0_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 1
-
-// Buffers for master - slave communication
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-bool serial_slave_data_corrupt(void);
-
-#endif
diff --git a/keyboards/handwired/dactyl_manuform/split_util.c b/keyboards/handwired/dactyl_manuform/split_util.c
deleted file mode 100644 (file)
index 346cbc9..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/power.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <avr/eeprom.h>
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "config.h"
-#include "timer.h"
-
-#ifdef USE_I2C
-#  include "i2c.h"
-#else
-#  include "serial.h"
-#endif
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
-  #ifdef EE_HANDS
-    isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
-  #else
-    // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
-    #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
-      isLeftHand = !has_usb();
-    #else
-      isLeftHand = has_usb();
-    #endif
-  #endif
-}
-
-static void keyboard_master_setup(void) {
-#ifdef USE_I2C
-    i2c_master_init();
-#ifdef SSD1306OLED
-    matrix_master_OLED_init ();
-#endif
-#else
-    serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
-  timer_init();
-#ifdef USE_I2C
-    i2c_slave_init(SLAVE_I2C_ADDRESS);
-#else
-    serial_slave_init();
-#endif
-}
-
-bool has_usb(void) {
-   USBCON |= (1 << OTGPADE); //enables VBUS pad
-   _delay_us(5);
-   return (USBSTA & (1<<VBUS));  //checks state of VBUS
-}
-
-void split_keyboard_setup(void) {
-   setup_handedness();
-
-   if (has_usb()) {
-      keyboard_master_setup();
-   } else {
-      keyboard_slave_setup();
-   }
-   sei();
-}
-
-void keyboard_slave_loop(void) {
-   matrix_init();
-
-   while (1) {
-      matrix_slave_scan();
-   }
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
-    split_keyboard_setup();
-
-    if (!has_usb()) {
-        keyboard_slave_loop();
-    }
-}
diff --git a/keyboards/handwired/dactyl_manuform/split_util.h b/keyboards/handwired/dactyl_manuform/split_util.h
deleted file mode 100644 (file)
index 595a065..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-#define SLAVE_I2C_ADDRESS           0x32
-
-extern volatile bool isLeftHand;
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
-
-void split_keyboard_setup(void);
-bool has_usb(void);
-void keyboard_slave_loop(void);
-
-void matrix_master_OLED_init (void);
-
-#endif
index ba49cf72c3514666b7d7cb75d35536bfd3a82424..30b4bf2d920de4271dc7534e28568215f2a68ede 100644 (file)
@@ -94,17 +94,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
   //     ,    ,     ,   ,    ,    ,               MS_WH_UP,     ,    ,   ,   ,   ,
   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
-  // MS_LEFT,MS_UP,MS_DOWN,MS_RGHT,,,            MS_WH_DN,MS_BT1,MS_BT2,MS_BT3,  , ,
+  // ,,MS_LEFT,MS_UP,MS_DOWN,MS_RGHT,,            MS_WH_DN,MS_BT1,MS_BT2,MS_BT3,  , ,
   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
   //     ,    ,    ,    ,    ,    ,    ,    ,    ,    ,    ,MS_ACC0,MS_ACC1MS_ACC2
   //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
   //                       ,    ,    ,          ,    ,
   //                  `----+----+----'        `----+----+----'
   [_MOUSE] = LAYOUT(
-       _______,_______,_______,_______,_______,_______,                        _______,_______,_______,_______,_______,_______,
+       _______,_______,_______,_______,_______,_______,                       _______,_______,_______,_______,_______,_______,
        _______,_______,_______,_______,_______,_______,                       KC_MS_WH_UP,_______,_______,_______,_______,_______,
-       KC_MS_LEFT,KC_MS_UP,KC_MS_DOWN,KC_MS_RIGHT,_______,_______,              KC_MS_WH_DOWN,KC_MS_BTN1,KC_MS_BTN2,KC_MS_BTN3,_______,_______,
-       _______,_______,_______,_______,_______,_______,_______,                _______,_______,_______,_______,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,
+       _______,KC_MS_LEFT,KC_MS_UP,KC_MS_DOWN,KC_MS_RIGHT,_______,            KC_MS_WH_DOWN,KC_MS_BTN1,KC_MS_BTN2,KC_MS_BTN3,_______,_______,
+       _______,_______,_______,_______,_______,_______,_______,            _______,_______,_______,_______,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,
                                        _______,_______,_______,            _______,_______,_______
   ),