浏览代码

Merge pull request #1204 from nooges/lets-split-fixes

Let's split fixes
Jack Humbert 8 年之前
父节点
当前提交
3ac9259742

+ 7 - 10
keyboards/lets_split/keymaps/OLED_sample/config.h

@@ -27,19 +27,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define TAPPING_FORCE_HOLD
 #define TAPPING_TERM 100
 
+#ifdef SUBPROJECT_rev1
+    #include "../../rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "../../rev2/config.h"
+#endif
+
 #undef RGBLED_NUM
 #define RGBLIGHT_ANIMATIONS
 #define RGBLED_NUM 6
 #define RGBLIGHT_HUE_STEP 10
 #define RGBLIGHT_SAT_STEP 17
 #define RGBLIGHT_VAL_STEP 17
-
-
-
-
-#ifdef SUBPROJECT_rev1
-    #include "../../rev1/config.h"
-#endif
-#ifdef SUBPROJECT_rev2
-    #include "../../rev2/config.h"
-#endif

+ 3 - 0
keyboards/lets_split/keymaps/OLED_sample/keymap.c

@@ -6,6 +6,9 @@
 #ifdef AUDIO_ENABLE
   #include "audio.h"
 #endif
+#ifdef SSD1306OLED
+  #include "ssd1306.h"
+#endif
 
 extern keymap_config_t keymap_config;
 

+ 7 - 42
keyboards/lets_split/keymaps/hexwire/config.h

@@ -20,51 +20,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define TAPPING_TERM 150
 
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 8
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-
 #ifdef SUBPROJECT_rev1
     #include "../../rev1/config.h"
-    #define COMPACT_KEYMAP( \
-      k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
-      k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
-      k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
-      k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
-    ) \
-    { \
-      { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
-      { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
-      { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
-      { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
-      { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
-      { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
-      { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
-      { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
-    }
 #endif
 #ifdef SUBPROJECT_rev2
     #include "../../rev2/config.h"
-    #define COMPACT_KEYMAP( \
-      k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
-      k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
-      k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
-      k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
-      ) \
-      { \
-        { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \
-        { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \
-        { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \
-        { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \
-        { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \
-        { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \
-        { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \
-        { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \
-      }
-#endif
-#ifdef SUBPROJECT_rev2fliphalf
-	#include "../../rev2fliphalf/config.h"
 #endif
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 8
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8

+ 6 - 6
keyboards/lets_split/keymaps/hexwire/keymap.c

@@ -39,7 +39,7 @@ enum custom_keycodes {
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-  [_QWERTY] = COMPACT_KEYMAP(
+  [_QWERTY] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB , Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_COLEMAK] = COMPACT_KEYMAP(
+  [_COLEMAK] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB , Q  , W  , F  , P  , G  ,      J  , L  , U  , Y  ,SCLN,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_DVORAK] = COMPACT_KEYMAP(
+  [_DVORAK] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      TAB ,QUOT,COMM,DOT , P  , Y  ,      F  , G  , C  , R  , L  ,MINS,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_LOWER] = COMPACT_KEYMAP(
+  [_LOWER] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
          , 1  , 2  , 3  , 4  , 5  ,      6  , 7  , 8  , 9  , 0  ,    ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_RAISE] = COMPACT_KEYMAP(
+  [_RAISE] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
          ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,    ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
   ),
 
-  [_FN3] = COMPACT_KEYMAP(
+  [_FN3] = KC_KEYMAP(
   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
      F12 , F1 , F2 , F3 , F4 , F5 ,      F6 , F7 , F8 , F9 ,F10 ,F11 ,
   //|----+----+----+----+----+----|    |----+----+----+----+----+----|

+ 14 - 0
keyboards/lets_split/lets_split.h

@@ -11,6 +11,20 @@
 	#include "rev2fliphalf.h"
 #endif
 
+// Used to create a keymap using only KC_ prefixed keys
+#define KC_KEYMAP( \
+    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 \
+    ) \
+    KEYMAP( \
+        KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
+        KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
+        KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
+        KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
+    )
+
 #include "quantum.h"
 
 #endif

+ 8 - 3
keyboards/lets_split/readme.md

@@ -7,6 +7,12 @@ Split keyboard firmware for Arduino Pro Micro or other ATmega32u4
 based boards.
 
 
+## Build Guide
+
+A build guide for putting together the Let's Split v2 can be found here: [An Overly Verbose Guide to Building a Let's Split Keyboard](https://github.com/nicinabox/lets-split-guide)
+
+There is additional information there about flashing and adding RGB underglow.
+
 ## First Time Setup
 
 Download or clone the whole firmware and navigate to the keyboards/lets_split directory. Once your dev env is setup, you'll be able to generate the default .hex using:
@@ -62,8 +68,7 @@ Apart from diodes and key switches for the keyboard matrix in each half, you
 will need:
 
 * 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each.
-* 2 TRS sockets
-* 1 TRS cable.
+* 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
@@ -77,7 +82,7 @@ A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and t
 Wiring
 ------
 
-The 3 wires of the TRS cable need to connect GND, VCC, and digital pin 3 (i.e.
+The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and digital pin 3 (i.e.
 PD0 on the ATmega32u4) between the two Pro Micros.
 
 Then wire your key matrix to any of the remaining 17 IO pins of the pro micro

+ 12 - 12
keyboards/lets_split/rev1/rev1.h

@@ -9,20 +9,20 @@
 //void promicro_bootloader_jmp(bool program);
 
 #define KEYMAP( \
-	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
-	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
-	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
-	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
+	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 \
 	) \
 	{ \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 }, \
-		{ k40, k41, k42, k43, k44, k45 }, \
-		{ k50, k51, k52, k53, k54, k55 }, \
-		{ k60, k61, k62, k63, k64, k65 }, \
-		{ k70, k71, k72, k73, k74, k75 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R00, R01, R02, R03, R04, R05 }, \
+		{ R10, R11, R12, R13, R14, R15 }, \
+		{ R20, R21, R22, R23, R24, R25 }, \
+		{ R30, R31, R32, R33, R34, R35 } \
 	}
 
 #endif

+ 0 - 1
keyboards/lets_split/rev2/rev2.c

@@ -37,4 +37,3 @@ void shutdown_user(void) {
 	stop_all_notes();
     #endif
 }
-

+ 31 - 42
keyboards/lets_split/rev2/rev2.h

@@ -10,62 +10,51 @@
 #ifdef USE_I2C
 #include <stddef.h>
 #ifdef __AVR__
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#endif
-#ifdef SSD1306OLED
-extern bool iota_gfx_init(void);
-extern void iota_gfx_task(void);
-extern bool iota_gfx_off(void);
-extern bool iota_gfx_on(void);
-extern void iota_gfx_flush(void);
-extern void iota_gfx_write_char(uint8_t c);
-extern void iota_gfx_write(const char *data);
-extern void iota_gfx_write_P(const char *data);
-extern void iota_gfx_clear_screen(void);
+	#include <avr/io.h>
+	#include <avr/interrupt.h>
 #endif
 #endif
 
 //void promicro_bootloader_jmp(bool program);
 
 #ifndef FLIP_HALF
-//Standard Keymap
+// Standard Keymap
+// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
 #define KEYMAP( \
-	k40, k41, k42, k43, k44, k45, k05, k04, k03, k02, k01, k00, \
-	k50, k51, k52, k53, k54, k55, k15, k14, k13, k12, k11, k10, \
-	k60, k61, k62, k63, k64, k65, k25, k24, k23, k22, k21, k20, \
-	k70, k71, k72, k73, k74, k75, k35, k34, k33, k32, k31, k30 \
+	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 \
 	) \
 	{ \
-		{ k45, k44, k43, k42, k41, k40 }, \
-		{ k55, k54, k53, k52, k51, k50 }, \
-		{ k65, k64, k63, k62, k61, k60 }, \
-		{ k75, k74, k73, k72, k71, k70 }, \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R05, R04, R03, R02, R01, R00 }, \
+		{ R15, R14, R13, R12, R11, R10 }, \
+		{ R25, R24, R23, R22, R21, R20 }, \
+		{ R35, R34, R33, R32, R31, R30 } \
 	}
-
 #else
-// Keymap with one side flipped
+// Keymap with right side flipped
+// (TRRS jack on both halves are to the right)
 #define KEYMAP( \
-	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
-	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
-	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
-	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
+	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 \
 	) \
 	{ \
-		{ k00, k01, k02, k03, k04, k05 }, \
-		{ k10, k11, k12, k13, k14, k15 }, \
-		{ k20, k21, k22, k23, k24, k25 }, \
-		{ k30, k31, k32, k33, k34, k35 }, \
-		{ k45, k44, k43, k42, k41, k40 }, \
-		{ k55, k54, k53, k52, k51, k50 }, \
-		{ k65, k64, k63, k62, k61, k60 }, \
-		{ k75, k74, k73, k72, k71, k70 } \
+		{ L00, L01, L02, L03, L04, L05 }, \
+		{ L10, L11, L12, L13, L14, L15 }, \
+		{ L20, L21, L22, L23, L24, L25 }, \
+		{ L30, L31, L32, L33, L34, L35 }, \
+		{ R00, R01, R02, R03, R04, R05 }, \
+		{ R10, R11, R12, R13, R14, R15 }, \
+		{ R20, R21, R22, R23, R24, R25 }, \
+		{ R30, R31, R32, R33, R34, R35 } \
 	}
 #endif
 
-
-#endif
+#endif

+ 13 - 1
keyboards/lets_split/rules.mk

@@ -1,7 +1,7 @@
 SRC += matrix.c \
 	   i2c.c \
 	   split_util.c \
-	   serial.c\
+	   serial.c \
 	   ssd1306.c
 
 # MCU name
@@ -74,3 +74,15 @@ USE_I2C ?= yes
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
+
+avrdude: build
+	ls /dev/tty* > /tmp/1; \
+	echo "Reset your Pro Micro now"; \
+	while [[ -z $$USB ]]; do \
+	  sleep 1; \
+	  ls /dev/tty* > /tmp/2; \
+	  USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
+	done; \
+	avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
+
+.PHONY: avrdude

+ 1 - 1
keyboards/lets_split/split_util.c

@@ -21,7 +21,7 @@ static void setup_handedness(void) {
   #ifdef EE_HANDS
     isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
   #else
-    // I2c_MASTER_RIGHT ish deprecate use MASTER_RIGHT instead since this works for both serial and i2c:
+    // 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

+ 1 - 2
keyboards/lets_split/ssd1306.c

@@ -1,8 +1,7 @@
+#include "ssd1306.h"
 #include "config.h"
 #include "i2c.h"
-#include <stdbool.h>
 #include <string.h>
-#include <stdio.h>
 #include "print.h"
 #include "lets_split.h"
 #include "common/glcdfont.c"

+ 17 - 0
keyboards/lets_split/ssd1306.h

@@ -0,0 +1,17 @@
+#ifndef SSD1306_H
+#define SSD1306_H
+
+#include <stdbool.h>
+#include <stdio.h>
+
+bool iota_gfx_init(void);
+void iota_gfx_task(void);
+bool iota_gfx_off(void);
+bool iota_gfx_on(void);
+void iota_gfx_flush(void);
+void iota_gfx_write_char(uint8_t c);
+void iota_gfx_write(const char *data);
+void iota_gfx_write_P(const char *data);
+void iota_gfx_clear_screen(void);
+
+#endif