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

Let's split fixes
This commit is contained in:
Jack Humbert 2017-04-03 16:17:55 -04:00 committed by GitHub
commit 3ac9259742
13 changed files with 120 additions and 120 deletions

View File

@ -27,19 +27,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_FORCE_HOLD #define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100 #define TAPPING_TERM 100
#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 #ifdef SUBPROJECT_rev1
#include "../../rev1/config.h" #include "../../rev1/config.h"
#endif #endif
#ifdef SUBPROJECT_rev2 #ifdef SUBPROJECT_rev2
#include "../../rev2/config.h" #include "../../rev2/config.h"
#endif #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

View File

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

View File

@ -20,51 +20,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM 150 #define TAPPING_TERM 150
#ifdef SUBPROJECT_rev1
#include "../../rev1/config.h"
#endif
#ifdef SUBPROJECT_rev2
#include "../../rev2/config.h"
#endif
#undef RGBLED_NUM #undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 8 #define RGBLED_NUM 8
#define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_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

View File

@ -39,7 +39,7 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, 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, 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, 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 , , , 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, , ,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 , F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,
//|----+----+----+----+----+----| |----+----+----+----+----+----| //|----+----+----+----+----+----| |----+----+----+----+----+----|

View File

@ -11,6 +11,20 @@
#include "rev2fliphalf.h" #include "rev2fliphalf.h"
#endif #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" #include "quantum.h"
#endif #endif

View File

@ -7,6 +7,12 @@ Split keyboard firmware for Arduino Pro Micro or other ATmega32u4
based boards. 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 ## 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: 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: will need:
* 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each. * 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each.
* 2 TRS sockets * 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
* 1 TRS cable.
Alternatively, you can use any sort of cable and socket that has at least 3 Alternatively, you can use any sort of cable and socket that has at least 3
wires. If you want to use I2C to communicate between halves, you will need a wires. If you want to use I2C to communicate between halves, you will need a
@ -77,7 +82,7 @@ A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and t
Wiring 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. 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 Then wire your key matrix to any of the remaining 17 IO pins of the pro micro

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
SRC += matrix.c \ SRC += matrix.c \
i2c.c \ i2c.c \
split_util.c \ split_util.c \
serial.c\ serial.c \
ssd1306.c ssd1306.c
# MCU name # MCU name
@ -74,3 +74,15 @@ USE_I2C ?= yes
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes 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

View File

@ -21,7 +21,7 @@ static void setup_handedness(void) {
#ifdef EE_HANDS #ifdef EE_HANDS
isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
#else #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) #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
isLeftHand = !has_usb(); isLeftHand = !has_usb();
#else #else

View File

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

View File

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