From c9562ebfde8bab54c83215c4970163d19ce199b1 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Wed, 20 Oct 2021 04:48:01 +0300 Subject: [PATCH 1/6] Make the MAGIC_TOGGLE_GUI keycode work (#14886) --- quantum/process_keycode/process_magic.c | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c index 01f2fb92892b..d5cff4f12aa9 100644 --- a/quantum/process_keycode/process_magic.c +++ b/quantum/process_keycode/process_magic.c @@ -43,6 +43,7 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI: case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT: + case MAGIC_TOGGLE_GUI: /* keymap config */ keymap_config.raw = eeconfig_read_keymap(); switch (keycode) { From 0fd45d59845d71e435f36975d9ba8a54dfb2a87d Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 19 Oct 2021 20:50:44 -0700 Subject: [PATCH 2/6] Fix type of Tap Dance max index variable (#14887) --- quantum/process_keycode/process_tap_dance.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 225b36cd5fd6..c707fdea308e 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -20,7 +20,7 @@ uint8_t get_oneshot_mods(void); #endif static uint16_t last_td; -static int8_t highest_td = -1; +static int16_t highest_td = -1; void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; From 84d5198ef9b4106fe61530211b5b5bb1a2fc52c8 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Oct 2021 20:07:40 +0100 Subject: [PATCH 3/6] Align PS/2 GPIO defines (#14745) * Align PS/2 GPIO * Align PS/2 GPIO * refactor more keyboards * Remove more defines * Put back avr/chibios split * format --- docs/feature_ps2_mouse.md | 34 +++---------- docs/ja/feature_ps2_mouse.md | 31 +++--------- keyboards/converter/ibm_terminal/config.h | 33 +++---------- .../evyd13/gh80_3700/keymaps/ps2/config.h | 10 +--- .../handwired/108key_trackpoint/config.h | 10 +--- keyboards/handwired/promethium/config.h | 30 +++--------- keyboards/handwired/trackpoint/config.h | 10 +--- keyboards/kapcave/paladin64/config.h | 20 ++------ tmk_core/protocol/ps2_interrupt.c | 18 +++---- tmk_core/protocol/ps2_io_avr.c | 49 ++++++++----------- tmk_core/protocol/ps2_io_chibios.c | 28 +++++------ tmk_core/protocol/ps2_usart.c | 13 +++++ 12 files changed, 94 insertions(+), 192 deletions(-) diff --git a/docs/feature_ps2_mouse.md b/docs/feature_ps2_mouse.md index 433a47fa9b89..c980705ae7f9 100644 --- a/docs/feature_ps2_mouse.md +++ b/docs/feature_ps2_mouse.md @@ -39,14 +39,8 @@ In your keyboard config.h: ```c #ifdef PS2_USE_BUSYWAIT -# define PS2_CLOCK_PORT PORTD -# define PS2_CLOCK_PIN PIND -# define PS2_CLOCK_DDR DDRD -# define PS2_CLOCK_BIT 1 -# define PS2_DATA_PORT PORTD -# define PS2_DATA_PIN PIND -# define PS2_DATA_DDR DDRD -# define PS2_DATA_BIT 2 +# define PS2_CLOCK_PIN D1 +# define PS2_DATA_PIN D2 #endif ``` @@ -65,14 +59,8 @@ In your keyboard config.h: ```c #ifdef PS2_USE_INT -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 2 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 5 +#define PS2_CLOCK_PIN D2 +#define PS2_DATA_PIN D5 #define PS2_INT_INIT() do { \ EICRA |= ((1<. */ #ifdef PS2_USE_USART /* XCK for clock line */ -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 5 -/* RXD for data line */ -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ /* set DDR of CLOCK as input to be slave */ @@ -93,15 +86,8 @@ along with this program. If not, see . */ #ifdef PS2_USE_INT /* uses INT1 for clock line(ATMega32U4) */ -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 1 - -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 0 +#define PS2_CLOCK_PIN D1 +#define PS2_DATA_PIN D0 #define PS2_INT_INIT() do { \ EICRA |= ((1<. * PS/2 Busywait configuration */ #ifdef PS2_USE_BUSYWAIT -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 1 - -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 0 +#define PS2_CLOCK_PIN D1 +#define PS2_DATA_PIN D0 #endif diff --git a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h index 44ac7dcd034c..b77ac95d7d47 100644 --- a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h +++ b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h @@ -17,14 +17,8 @@ #pragma once #ifdef PS2_USE_USART -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 5 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ /* set DDR of CLOCK as input to be slave */ diff --git a/keyboards/handwired/108key_trackpoint/config.h b/keyboards/handwired/108key_trackpoint/config.h index b1ac790d7639..b5bf98271afb 100644 --- a/keyboards/handwired/108key_trackpoint/config.h +++ b/keyboards/handwired/108key_trackpoint/config.h @@ -12,14 +12,8 @@ #define MATRIX_COLS 23 #ifdef PS2_USE_USART - #define PS2_CLOCK_PORT PORTD - #define PS2_CLOCK_PIN PIND - #define PS2_CLOCK_DDR DDRD - #define PS2_CLOCK_BIT 5 - #define PS2_DATA_PORT PORTD - #define PS2_DATA_PIN PIND - #define PS2_DATA_DDR DDRD - #define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ /* set DDR of CLOCK as input to be slave */ diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index b146767d65de..612675c63a07 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -224,27 +224,15 @@ enum led_sequence { /* PS/2 mouse */ #ifdef PS2_USE_BUSYWAIT -# define PS2_CLOCK_PORT PORTD -# define PS2_CLOCK_PIN PIND -# define PS2_CLOCK_DDR DDRD -# define PS2_CLOCK_BIT 3 -# define PS2_DATA_PORT PORTD -# define PS2_DATA_PIN PIND -# define PS2_DATA_DDR DDRD -# define PS2_DATA_BIT 2 +# define PS2_CLOCK_PIN D3 +# define PS2_DATA_PIN D2 #endif /* PS/2 mouse interrupt version */ #ifdef PS2_USE_INT /* uses INT1 for clock line(ATMega32U4) */ -# define PS2_CLOCK_PORT PORTD -# define PS2_CLOCK_PIN PIND -# define PS2_CLOCK_DDR DDRD -# define PS2_CLOCK_BIT 3 -# define PS2_DATA_PORT PORTD -# define PS2_DATA_PIN PIND -# define PS2_DATA_DDR DDRD -# define PS2_DATA_BIT 2 +# define PS2_CLOCK_PIN D3 +# define PS2_DATA_PIN D2 # define PS2_INT_INIT() \ do { \ @@ -264,14 +252,8 @@ enum led_sequence { /* PS/2 mouse USART version */ #ifdef PS2_USE_USART /* XCK for clock line and RXD for data line */ -# define PS2_CLOCK_PORT PORTD -# define PS2_CLOCK_PIN PIND -# define PS2_CLOCK_DDR DDRD -# define PS2_CLOCK_BIT 5 -# define PS2_DATA_PORT PORTD -# define PS2_DATA_PIN PIND -# define PS2_DATA_DDR DDRD -# define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ /* set DDR of CLOCK as input to be slave */ diff --git a/keyboards/handwired/trackpoint/config.h b/keyboards/handwired/trackpoint/config.h index 1429136f403d..cf8b5605f43a 100644 --- a/keyboards/handwired/trackpoint/config.h +++ b/keyboards/handwired/trackpoint/config.h @@ -12,14 +12,8 @@ #define MATRIX_COLS 3 #ifdef PS2_USE_USART - #define PS2_CLOCK_PORT PORTD - #define PS2_CLOCK_PIN PIND - #define PS2_CLOCK_DDR DDRD - #define PS2_CLOCK_BIT 5 - #define PS2_DATA_PORT PORTD - #define PS2_DATA_PIN PIND - #define PS2_DATA_DDR DDRD - #define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ /* set DDR of CLOCK as input to be slave */ diff --git a/keyboards/kapcave/paladin64/config.h b/keyboards/kapcave/paladin64/config.h index 2685be96cf86..7c3d1a0fa111 100755 --- a/keyboards/kapcave/paladin64/config.h +++ b/keyboards/kapcave/paladin64/config.h @@ -34,14 +34,8 @@ along with this program. If not, see . /* Only required if you add in a trackpoint hardware to the pcb */ #ifdef PS2_USE_USART - #define PS2_CLOCK_PORT PORTD - #define PS2_CLOCK_PIN PIND - #define PS2_CLOCK_DDR DDRD - #define PS2_CLOCK_BIT 5 - #define PS2_DATA_PORT PORTD - #define PS2_DATA_PIN PIND - #define PS2_DATA_DDR DDRD - #define PS2_DATA_BIT 2 +#define PS2_CLOCK_PIN D5 +#define PS2_DATA_PIN D2 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling * edge */ @@ -77,14 +71,8 @@ along with this program. If not, see . #endif #ifdef PS2_USE_INT -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 2 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 5 +#define PS2_CLOCK_PIN D2 +#define PS2_DATA_PIN D5 #define PS2_INT_INIT() do { \ EICRA |= ((1< -#include -#include +#include "ps2_io.h" +#include "gpio.h" +#include "wait.h" /* Check port settings for clock and data line */ -#if !(defined(PS2_CLOCK_PORT) && defined(PS2_CLOCK_PIN) && defined(PS2_CLOCK_DDR) && defined(PS2_CLOCK_BIT)) -# error "PS/2 clock port setting is required in config.h" +#if !(defined(PS2_CLOCK_PIN)) +# error "PS/2 clock setting is required in config.h" #endif -#if !(defined(PS2_DATA_PORT) && defined(PS2_DATA_PIN) && defined(PS2_DATA_DDR) && defined(PS2_DATA_BIT)) -# error "PS/2 data port setting is required in config.h" +#if !(defined(PS2_DATA_PIN)) +# error "PS/2 data setting is required in config.h" #endif /* @@ -17,21 +18,17 @@ void clock_init(void) {} void clock_lo(void) { - PS2_CLOCK_PORT &= ~(1 << PS2_CLOCK_BIT); - PS2_CLOCK_DDR |= (1 << PS2_CLOCK_BIT); + // Transition from input with pull-up to output low via Hi-Z instead of output high + writePinLow(PS2_CLOCK_PIN); + setPinOutput(PS2_CLOCK_PIN); } -void clock_hi(void) { - /* input with pull up */ - PS2_CLOCK_DDR &= ~(1 << PS2_CLOCK_BIT); - PS2_CLOCK_PORT |= (1 << PS2_CLOCK_BIT); -} +void clock_hi(void) { setPinInputHigh(PS2_CLOCK_PIN); } bool clock_in(void) { - PS2_CLOCK_DDR &= ~(1 << PS2_CLOCK_BIT); - PS2_CLOCK_PORT |= (1 << PS2_CLOCK_BIT); - _delay_us(1); - return PS2_CLOCK_PIN & (1 << PS2_CLOCK_BIT); + setPinInputHigh(PS2_CLOCK_PIN); + wait_us(1); + return readPin(PS2_CLOCK_PIN); } /* @@ -40,19 +37,15 @@ bool clock_in(void) { void data_init(void) {} void data_lo(void) { - PS2_DATA_PORT &= ~(1 << PS2_DATA_BIT); - PS2_DATA_DDR |= (1 << PS2_DATA_BIT); + // Transition from input with pull-up to output low via Hi-Z instead of output high + writePinLow(PS2_DATA_PIN); + setPinOutput(PS2_DATA_PIN); } -void data_hi(void) { - /* input with pull up */ - PS2_DATA_DDR &= ~(1 << PS2_DATA_BIT); - PS2_DATA_PORT |= (1 << PS2_DATA_BIT); -} +void data_hi(void) { setPinInputHigh(PS2_DATA_PIN); } bool data_in(void) { - PS2_DATA_DDR &= ~(1 << PS2_DATA_BIT); - PS2_DATA_PORT |= (1 << PS2_DATA_BIT); - _delay_us(1); - return PS2_DATA_PIN & (1 << PS2_DATA_BIT); + setPinInputHigh(PS2_DATA_PIN); + wait_us(1); + return readPin(PS2_DATA_PIN); } diff --git a/tmk_core/protocol/ps2_io_chibios.c b/tmk_core/protocol/ps2_io_chibios.c index b672bd1f47fa..906d85d84840 100644 --- a/tmk_core/protocol/ps2_io_chibios.c +++ b/tmk_core/protocol/ps2_io_chibios.c @@ -6,11 +6,11 @@ #include "hal.h" /* Check port settings for clock and data line */ -#if !(defined(PS2_CLOCK)) +#if !(defined(PS2_CLOCK_PIN)) # error "PS/2 clock setting is required in config.h" #endif -#if !(defined(PS2_DATA)) +#if !(defined(PS2_DATA_PIN)) # error "PS/2 data setting is required in config.h" #endif @@ -20,18 +20,18 @@ void clock_init(void) {} void clock_lo(void) { - palSetLineMode(PS2_CLOCK, PAL_MODE_OUTPUT_OPENDRAIN); - palWriteLine(PS2_CLOCK, PAL_LOW); + palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); + palWriteLine(PS2_CLOCK_PIN, PAL_LOW); } void clock_hi(void) { - palSetLineMode(PS2_CLOCK, PAL_MODE_OUTPUT_OPENDRAIN); - palWriteLine(PS2_CLOCK, PAL_HIGH); + palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); + palWriteLine(PS2_CLOCK_PIN, PAL_HIGH); } bool clock_in(void) { - palSetLineMode(PS2_CLOCK, PAL_MODE_INPUT); - return palReadLine(PS2_CLOCK); + palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); + return palReadLine(PS2_CLOCK_PIN); } /* @@ -40,16 +40,16 @@ bool clock_in(void) { void data_init(void) {} void data_lo(void) { - palSetLineMode(PS2_DATA, PAL_MODE_OUTPUT_OPENDRAIN); - palWriteLine(PS2_DATA, PAL_LOW); + palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN); + palWriteLine(PS2_DATA_PIN, PAL_LOW); } void data_hi(void) { - palSetLineMode(PS2_DATA, PAL_MODE_OUTPUT_OPENDRAIN); - palWriteLine(PS2_DATA, PAL_HIGH); + palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN); + palWriteLine(PS2_DATA_PIN, PAL_HIGH); } bool data_in(void) { - palSetLineMode(PS2_DATA, PAL_MODE_INPUT); - return palReadLine(PS2_DATA); + palSetLineMode(PS2_DATA_PIN, PAL_MODE_INPUT); + return palReadLine(PS2_DATA_PIN); } diff --git a/tmk_core/protocol/ps2_usart.c b/tmk_core/protocol/ps2_usart.c index 6a66dc4a1e73..5f70083698fa 100644 --- a/tmk_core/protocol/ps2_usart.c +++ b/tmk_core/protocol/ps2_usart.c @@ -46,6 +46,19 @@ POSSIBILITY OF SUCH DAMAGE. #include "ps2_io.h" #include "print.h" +#ifndef PS2_CLOCK_DDR +# define PS2_CLOCK_DDR PORTx_ADDRESS(PS2_CLOCK_PIN) +#endif +#ifndef PS2_CLOCK_BIT +# define PS2_CLOCK_BIT (PS2_CLOCK_PIN & 0xF) +#endif +#ifndef PS2_DATA_DDR +# define PS2_DATA_DDR PORTx_ADDRESS(PS2_DATA_PIN) +#endif +#ifndef PS2_DATA_BIT +# define PS2_DATA_BIT (PS2_DATA_PIN & 0xF) +#endif + #define WAIT(stat, us, err) \ do { \ if (!wait_##stat(us)) { \ From 5500c428dd41348243e8a1695986b0da070e2ffa Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Oct 2021 21:04:23 +0100 Subject: [PATCH 4/6] Rename platform SRC variable (#14894) --- build_keyboard.mk | 8 ++++---- tmk_core/chibios.mk | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 36807911d85d..e5edacfd8a6f 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -435,15 +435,15 @@ ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H) OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) -$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ +$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) \ -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" \ -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) -$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) -$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) -$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) +$(KEYBOARD_OUTPUT)_SRC := $(PLATFORM_SRC) +$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) +$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) # Default target. diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index ad0ffa762d92..c520d6025b76 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -232,7 +232,8 @@ include $(CHIBIOS)/os/rt/rt.mk # Other files (optional). include $(CHIBIOS)/os/hal/lib/streams/streams.mk -CHIBISRC = $(STARTUPSRC) \ +PLATFORM_SRC = \ + $(STARTUPSRC) \ $(KERNSRC) \ $(PORTSRC) \ $(OSALSRC) \ @@ -247,7 +248,7 @@ CHIBISRC = $(STARTUPSRC) \ # Ensure the ASM files are not subjected to LTO -- it'll strip out interrupt handlers otherwise. QUANTUM_LIB_SRC += $(STARTUPASM) $(PORTASM) $(OSALASM) $(PLATFORMASM) -CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) +PLATFORM_SRC := $(patsubst $(TOP_DIR)/%,%,$(PLATFORM_SRC)) EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \ $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs \ @@ -278,7 +279,7 @@ endif ifeq ($(strip $(USE_CHIBIOS_CONTRIB)),yes) include $(CHIBIOS_CONTRIB)/os/hal/hal.mk - CHIBISRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB) + PLATFORM_SRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB) EXTRAINCDIRS += $(PLATFORMINC_CONTRIB) $(HALINC_CONTRIB) $(CHIBIOS_CONTRIB)/os/various endif From d4be4b67a251ecc046d857c5cd00cfb37c394ab7 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Oct 2021 21:18:49 +0100 Subject: [PATCH 5/6] Relocate PS2 code (#14895) * Relocate ps2 protocol code * clang * Move makefile logic --- common_features.mk | 34 +++++++++++++++++++ {tmk_core/protocol => drivers/ps2}/ps2.h | 0 .../protocol => drivers/ps2}/ps2_busywait.c | 0 .../protocol => drivers/ps2}/ps2_interrupt.c | 0 {tmk_core/protocol => drivers/ps2}/ps2_io.h | 0 .../protocol => drivers/ps2}/ps2_mouse.c | 10 ++---- .../protocol => drivers/ps2}/ps2_mouse.h | 0 .../avr/drivers/ps2/ps2_io.c | 0 .../avr/drivers/ps2}/ps2_usart.c | 1 + .../chibios/drivers/ps2/ps2_io.c | 0 tmk_core/protocol.mk | 25 -------------- 11 files changed, 38 insertions(+), 32 deletions(-) rename {tmk_core/protocol => drivers/ps2}/ps2.h (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_busywait.c (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_interrupt.c (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_io.h (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_mouse.c (98%) rename {tmk_core/protocol => drivers/ps2}/ps2_mouse.h (100%) rename tmk_core/protocol/ps2_io_avr.c => platforms/avr/drivers/ps2/ps2_io.c (100%) rename {tmk_core/protocol => platforms/avr/drivers/ps2}/ps2_usart.c (99%) rename tmk_core/protocol/ps2_io_chibios.c => platforms/chibios/drivers/ps2/ps2_io.c (100%) diff --git a/common_features.mk b/common_features.mk index 9b9425dc33cd..083aa4aaa4f5 100644 --- a/common_features.mk +++ b/common_features.mk @@ -576,6 +576,40 @@ ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) endif endif +ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes) + PS2_ENABLE := yes + SRC += ps2_mouse.c + OPT_DEFS += -DPS2_MOUSE_ENABLE + OPT_DEFS += -DMOUSE_ENABLE +endif + +ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes) + PS2_ENABLE := yes + SRC += ps2_busywait.c + SRC += ps2_io_avr.c + OPT_DEFS += -DPS2_USE_BUSYWAIT +endif + +ifeq ($(strip $(PS2_USE_INT)), yes) + PS2_ENABLE := yes + SRC += ps2_interrupt.c + SRC += ps2_io.c + OPT_DEFS += -DPS2_USE_INT +endif + +ifeq ($(strip $(PS2_USE_USART)), yes) + PS2_ENABLE := yes + SRC += ps2_usart.c + SRC += ps2_io.c + OPT_DEFS += -DPS2_USE_USART +endif + +ifeq ($(strip $(PS2_ENABLE)), yes) + COMMON_VPATH += $(DRIVER_PATH)/ps2 + COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/ps2 + OPT_DEFS += -DPS2_ENABLE +endif + JOYSTICK_ENABLE ?= no VALID_JOYSTICK_TYPES := analog digital JOYSTICK_DRIVER ?= analog diff --git a/tmk_core/protocol/ps2.h b/drivers/ps2/ps2.h similarity index 100% rename from tmk_core/protocol/ps2.h rename to drivers/ps2/ps2.h diff --git a/tmk_core/protocol/ps2_busywait.c b/drivers/ps2/ps2_busywait.c similarity index 100% rename from tmk_core/protocol/ps2_busywait.c rename to drivers/ps2/ps2_busywait.c diff --git a/tmk_core/protocol/ps2_interrupt.c b/drivers/ps2/ps2_interrupt.c similarity index 100% rename from tmk_core/protocol/ps2_interrupt.c rename to drivers/ps2/ps2_interrupt.c diff --git a/tmk_core/protocol/ps2_io.h b/drivers/ps2/ps2_io.h similarity index 100% rename from tmk_core/protocol/ps2_io.h rename to drivers/ps2/ps2_io.h diff --git a/tmk_core/protocol/ps2_mouse.c b/drivers/ps2/ps2_mouse.c similarity index 98% rename from tmk_core/protocol/ps2_mouse.c rename to drivers/ps2/ps2_mouse.c index 39251a643437..8a6668b41069 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/drivers/ps2/ps2_mouse.c @@ -16,13 +16,9 @@ along with this program. If not, see . */ #include - -#if defined(__AVR__) -# include -#endif - #include "ps2_mouse.h" #include "wait.h" +#include "gpio.h" #include "host.h" #include "timer.h" #include "print.h" @@ -158,8 +154,8 @@ static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report) #ifdef PS2_MOUSE_INVERT_BUTTONS // swap left & right buttons - uint8_t needs_left = mouse_report->buttons & PS2_MOUSE_BTN_RIGHT; - uint8_t needs_right = mouse_report->buttons & PS2_MOUSE_BTN_LEFT; + uint8_t needs_left = mouse_report->buttons & PS2_MOUSE_BTN_RIGHT; + uint8_t needs_right = mouse_report->buttons & PS2_MOUSE_BTN_LEFT; mouse_report->buttons = (mouse_report->buttons & ~(PS2_MOUSE_BTN_MASK)) | (needs_left ? PS2_MOUSE_BTN_LEFT : 0) | (needs_right ? PS2_MOUSE_BTN_RIGHT : 0); #else // remove sign and overflow flags diff --git a/tmk_core/protocol/ps2_mouse.h b/drivers/ps2/ps2_mouse.h similarity index 100% rename from tmk_core/protocol/ps2_mouse.h rename to drivers/ps2/ps2_mouse.h diff --git a/tmk_core/protocol/ps2_io_avr.c b/platforms/avr/drivers/ps2/ps2_io.c similarity index 100% rename from tmk_core/protocol/ps2_io_avr.c rename to platforms/avr/drivers/ps2/ps2_io.c diff --git a/tmk_core/protocol/ps2_usart.c b/platforms/avr/drivers/ps2/ps2_usart.c similarity index 99% rename from tmk_core/protocol/ps2_usart.c rename to platforms/avr/drivers/ps2/ps2_usart.c index 5f70083698fa..151cfcd68f3a 100644 --- a/tmk_core/protocol/ps2_usart.c +++ b/platforms/avr/drivers/ps2/ps2_usart.c @@ -42,6 +42,7 @@ POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include "gpio.h" #include "ps2.h" #include "ps2_io.h" #include "print.h" diff --git a/tmk_core/protocol/ps2_io_chibios.c b/platforms/chibios/drivers/ps2/ps2_io.c similarity index 100% rename from tmk_core/protocol/ps2_io_chibios.c rename to platforms/chibios/drivers/ps2/ps2_io.c diff --git a/tmk_core/protocol.mk b/tmk_core/protocol.mk index 30c87a0f124a..8aa063c9116c 100644 --- a/tmk_core/protocol.mk +++ b/tmk_core/protocol.mk @@ -1,30 +1,5 @@ PROTOCOL_DIR = protocol -ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes) - SRC += $(PROTOCOL_DIR)/ps2_mouse.c - OPT_DEFS += -DPS2_MOUSE_ENABLE - OPT_DEFS += -DMOUSE_ENABLE -endif - -ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes) - SRC += protocol/ps2_busywait.c - SRC += protocol/ps2_io_avr.c - OPT_DEFS += -DPS2_USE_BUSYWAIT -endif - -ifeq ($(strip $(PS2_USE_INT)), yes) - SRC += protocol/ps2_interrupt.c - SRC += protocol/ps2_io_$(PLATFORM_KEY).c - OPT_DEFS += -DPS2_USE_INT -endif - -ifeq ($(strip $(PS2_USE_USART)), yes) - SRC += protocol/ps2_usart.c - SRC += protocol/ps2_io_$(PLATFORM_KEY).c - OPT_DEFS += -DPS2_USE_USART -endif - - ifeq ($(strip $(SERIAL_MOUSE_MICROSOFT_ENABLE)), yes) SRC += $(PROTOCOL_DIR)/serial_mouse_microsoft.c OPT_DEFS += -DSERIAL_MOUSE_ENABLE -DSERIAL_MOUSE_MICROSOFT \ From 1816006121de991581d50d0bc6b5a653e2b3ccd2 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Oct 2021 21:27:46 +0100 Subject: [PATCH 6/6] Tidy up LCD_ENABLE/visualizer references (#14855) * Tidy up LCD_ENABLE/visualizer references * Fix up my (333fred) ergodox keymap with new LCD driver Co-authored-by: Fredric Silberberg --- common_features.mk | 4 - .../keymaps/dudeofawesome/config.h | 2 - .../keymaps/dudeofawesome/keymap.c | 4 +- .../keymaps/dudeofawesome/simple_visualizer.h | 123 ------ .../keymaps/dudeofawesome/visualizer.c | 79 ---- .../keymaps/dudeofawesome/visualizer.h | 35 -- .../keymaps/halfkeyboard/visualizer.c | 384 ------------------ .../keymaps/halfkeyboard/visualizer.h | 125 ------ layouts/community/ergodox/333fred/keymap.c | 40 ++ layouts/community/ergodox/333fred/rules.mk | 3 - .../community/ergodox/333fred/visualizer.c | 39 -- .../community/ergodox/adnw_p_u_q/visualizer.c | 34 -- layouts/community/ergodox/belak/keymap.c | 35 +- layouts/community/ergodox/belak/visualizer.c | 49 --- .../ergodox/choromanski/visualizer.c | 62 --- .../ergodox/drashna/visualizer.c_old | 77 ---- .../community/ergodox/osx_neo2/visualizer.c | 47 --- show_options.mk | 1 - users/talljoe/visualizer.c | 21 - 19 files changed, 57 insertions(+), 1107 deletions(-) delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h delete mode 100644 keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c delete mode 100644 keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h delete mode 100644 layouts/community/ergodox/333fred/visualizer.c delete mode 100644 layouts/community/ergodox/adnw_p_u_q/visualizer.c delete mode 100644 layouts/community/ergodox/belak/visualizer.c delete mode 100644 layouts/community/ergodox/choromanski/visualizer.c delete mode 100644 layouts/community/ergodox/drashna/visualizer.c_old delete mode 100644 layouts/community/ergodox/osx_neo2/visualizer.c delete mode 100644 users/talljoe/visualizer.c diff --git a/common_features.mk b/common_features.mk index 083aa4aaa4f5..af538b696f71 100644 --- a/common_features.mk +++ b/common_features.mk @@ -326,10 +326,6 @@ ifneq ($(strip $(VARIABLE_TRACE)),no) endif endif -ifeq ($(strip $(LCD_ENABLE)), yes) - CIE1931_CURVE := yes -endif - VALID_BACKLIGHT_TYPES := pwm timer software custom BACKLIGHT_ENABLE ?= no diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h index 161958233e28..9dcf8a7f43e6 100644 --- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h +++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h @@ -6,6 +6,4 @@ #include "../../config.h" #include "dudeofawesome.h" -#include "./visualizer.h" - #endif diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c index c3ea48654da4..675b56edec77 100644 --- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c @@ -471,8 +471,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; void matrix_init_user() { - backlight_enable(); - backlight_level(BACKLIGHT_LEVELS); + led_matrix_enable_noeeprom(); + led_matrix_set_val_noeeprom(UINT8_MAX); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h deleted file mode 100644 index 9213e99f4289..000000000000 --- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h +++ /dev/null @@ -1,123 +0,0 @@ -/* Copyright 2017 Fred Sundvik - * - * 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 . - */ - -#ifndef KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ -#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ - -// Currently we are assuming that both the backlight and LCD are enabled -// But it's entirely possible to write a custom visualizer that use only -// one of them -#ifndef LCD_BACKLIGHT_ENABLE -#error This visualizer needs that LCD backlight is enabled -#endif - -#ifndef LCD_ENABLE -#error This visualizer needs that LCD is enabled -#endif - -#include "visualizer.h" -#include "visualizer_keyframes.h" -#include "lcd_keyframes.h" -#include "lcd_backlight_keyframes.h" -#include "system/serial_link.h" -#include "led.h" -#include "default_animations.h" - -static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF); -static const uint32_t initial_color = LCD_COLOR(0, 0, 0); - -static bool initial_update = true; - -// Feel free to modify the animations below, or even add new ones if needed - -static keyframe_animation_t lcd_layer_display = { - .num_frames = 1, - .loop = false, - .frame_lengths = {gfxMillisecondsToTicks(0)}, - .frame_functions = {lcd_keyframe_display_layer_and_led_states} -}; - -// The color animation animates the LCD color when you change layers -static keyframe_animation_t color_animation = { - .num_frames = 2, - .loop = false, - // Note that there's a 200 ms no-operation frame, - // this prevents the color from changing when activating the layer - // momentarily - .frame_lengths = {gfxMillisecondsToTicks(1), gfxMillisecondsToTicks(5)}, - .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color}, -}; - -void initialize_user_visualizer(visualizer_state_t* state) { - // The brightness will be dynamically adjustable in the future - // But for now, change it here. - lcd_backlight_brightness(130); - state->current_lcd_color = initial_color; - state->target_lcd_color = logo_background_color; - initial_update = true; - start_keyframe_animation(&default_startup_animation); -} - - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state); - -void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) { - // Add more tests, change the colors and layer texts here - // Usually you want to check the high bits (higher layers first) - // because that's the order layers are processed for keypresses - // You can for check for example: - // state->status.layer - // state->status.default_layer - // state->status.leds (see led.h for available statuses) - - uint32_t prev_color = state->target_lcd_color; - const char* prev_layer_text = state->layer_text; - - get_visualizer_layer_and_color(state); - - if (initial_update || prev_color != state->target_lcd_color) { - start_keyframe_animation(&color_animation); - } - - if (initial_update || prev_layer_text != state->layer_text) { - start_keyframe_animation(&lcd_layer_display); - } - // You can also stop existing animations, and start your custom ones here - // remember that you should normally have only one animation for the LCD - // and one for the background. But you can also combine them if you want. -} - -void user_visualizer_suspend(visualizer_state_t* state) { - state->layer_text = "Suspending..."; - uint8_t hue = LCD_HUE(state->current_lcd_color); - uint8_t sat = LCD_SAT(state->current_lcd_color); - state->target_lcd_color = LCD_COLOR(hue, sat, 0); - start_keyframe_animation(&default_suspend_animation); -} - -void user_visualizer_resume(visualizer_state_t* state) { - state->current_lcd_color = initial_color; - state->target_lcd_color = logo_background_color; - initial_update = true; - start_keyframe_animation(&default_startup_animation); -} - -#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */ diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c deleted file mode 100644 index 54fc2363c76c..000000000000 --- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c +++ /dev/null @@ -1,79 +0,0 @@ -/* -Copyright 2017 Fred Sundvik - -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 . -*/ - -#include "./simple_visualizer.h" -#include "util.h" -#include "layers.h" - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - switch(biton32(default_layer_state)) { - case _QWERTY: - state->layer_text = "QWERTY"; - state->target_lcd_color = LCD_COLOR(0, 255, 128); - break; - case _WORKMAN: - state->layer_text = "Workman"; - state->target_lcd_color = LCD_COLOR(80, 255, 128); - break; - case _DVORAK: - state->layer_text = "Dvorak"; - state->target_lcd_color = LCD_COLOR(194, 255, 128); - break; - case _COLEMAK: - state->layer_text = "Colemak"; - state->target_lcd_color = LCD_COLOR(18, 255, 128); - break; - } - - switch(biton32(state->status.layer)) { - case _LOWER: - state->layer_text = "Lower"; - state->target_lcd_color = LCD_COLOR(141, 255, 255); - break; - case _RAISE: - state->layer_text = "Raise"; - state->target_lcd_color = LCD_COLOR(18, 255, 255); - break; - case _ADJUST: - state->layer_text = "Adjust"; - state->target_lcd_color = LCD_COLOR(194, 255, 255); - break; - case _NUM: - state->layer_text = "Numpad"; - state->target_lcd_color = LCD_COLOR(80, 255, 255); - break; - case _MOUSE: - state->layer_text = "Mouse"; - state->target_lcd_color = LCD_COLOR(300, 255, 255); - break; - case _GAME: - state->layer_text = "Game"; - state->target_lcd_color = LCD_COLOR(300, 255, 255); - break; - case _QWERTY: case _WORKMAN: case _DVORAK: case _COLEMAK: - break; - default: - state->layer_text = "NONE"; - state->target_lcd_color = LCD_COLOR(0, 255, 255); - break; - } -} diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h deleted file mode 100644 index 740a951ec887..000000000000 --- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2017 Fred Sundvik - * - * 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 . - */ - -#ifndef VISUALIZER_H_ -#define VISUALIZER_H_ - -#include "visualizer.h" -#include "led.h" - -void ergodox_led_lower_on (void); -void ergodox_led_raise_on (void); -void ergodox_led_adjust_on (void); - -void ergodox_led_lower_off (void); -void ergodox_led_raise_off (void); -void ergodox_led_adjust_off (void); - -void ergodox_led_lower_set (uint8_t n); -void ergodox_led_raise_set (uint8_t n); -void ergodox_led_adjust_set (uint8_t n); - -#endif /* VISUALIZER_H_ */ diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c deleted file mode 100644 index 61a724c63f50..000000000000 --- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c +++ /dev/null @@ -1,384 +0,0 @@ -/* -Copyright 2017 Fred Sundvik -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 . -*/ - -#include "visualizer.h" -#include "gfx.h" -#include "math.h" -#include "default_animations.h" -#include "led_backlight_keyframes.h" - -#define NUM_ROWS LED_HEIGHT -#define NUM_COLS LED_WIDTH - -#define ONESIDESCAN 10 -#define BOTHSIDESCAN 20 -#define FULL_ON LUMA2COLOR(255) -#define THREE_QUARTER LUMA2COLOR(200) -#define HALF_ON LUMA2COLOR(150) -#define ONE_QUARTER LUMA2COLOR(50) - -#define CROSSFADE_TIME 500 -#define GRADIENT_TIME 3000 -bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state); -bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state); -bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state); -keyframe_animation_t Fade_in_all_leds = { - .num_frames = 1, - .loop = false, - .frame_lengths = { - CROSSFADE_TIME, - }, - .frame_functions = { - led_backlight_keyframe_fade_in_all, - }, -}; -keyframe_animation_t decreasing_gradient = { - .num_frames = 8, - .loop = true, - .frame_lengths = { - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - }, - .frame_functions = { - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_mirror_orientation, - keyframe_no_operation, - keyframe_no_operation, - keyframe_no_operation, - keyframe_no_operation, - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_normal_orientation, - - }, -}; - - - -static uint8_t off_on_off_gradient(float t, float index, float num) { - const float two_pi = M_PI * 2.0f; - float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi; - float x = t * two_pi + normalized_index-M_PI; - if((1*M_PI) < x && x < (3*M_PI)) - { - float v = 0.5 * (cosf(x) + 1.0f); - return (uint8_t)(255.0f * v); - } - else - { - return 0; - } -} -static uint8_t off_on_gradient(float t, float index, float num) { - const float two_pi = M_PI * 2.0f; - float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi; - float x = t * two_pi + normalized_index-M_PI; - float v; - if((1*M_PI) < x && x < (2*M_PI)) - { - v = 0.5 * (cosf(x) + 1.0f); - } - else if(x >= (2*M_PI)) - { - v = 1; - } - else - { - v = 0; - } - return (uint8_t)(255.0f * v); -} -static uint8_t on_off_gradient(float t, float index, float num) { - const float two_pi = M_PI * 2.0f; - float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi; - float x = t * two_pi + normalized_index-M_PI; - float v; - if((2*M_PI) < x && x < (3*M_PI)) - { - v = 0.5 * (cosf(x) + 1.0f); - - } - else if(x >= (3*M_PI)) - { - v = 0; - } - else - { - v = 1; - } - return (uint8_t)(255.0f * v); -} - -bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state) { - (void)state; - float frame_length = animation->frame_lengths[animation->current_frame]; - float current_pos = frame_length - animation->time_left_in_frame; - float t = current_pos / frame_length; - for (int i=0; i< NUM_COLS; i++) { - uint8_t color = off_on_off_gradient(t*2, i, NUM_COLS); - gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color)); - } - return true; -} - -bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state) { - (void)state; - float frame_length = animation->frame_lengths[animation->current_frame]; - float current_pos = frame_length - animation->time_left_in_frame; - float t = current_pos / frame_length; - for (int i=0; i< NUM_COLS; i++) { - uint8_t color = off_on_gradient(t*2, i, NUM_COLS); - gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color)); - } - return true; -} -bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state) { - (void)state; - float frame_length = animation->frame_lengths[animation->current_frame]; - float current_pos = frame_length - animation->time_left_in_frame; - float t = current_pos / frame_length; - for (int i=0; i< NUM_COLS; i++) { - uint8_t color = on_off_gradient(t*2, i, NUM_COLS); - gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color)); - } - return true; -} - - -/* - +---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+ -| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | phase | -+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+ -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | -| 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | -| 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | -| 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | -| 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | -| 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | -| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | -| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 8 | -| 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 9 | -| 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 10 | -| 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 11 | -| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 12 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 13 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 14 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 15 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 16 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 17 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 18 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 19 | -| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 20 | -+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+ -*/ - -#ifdef MASTER_IS_ON_RIGHT /*right side*/ -keyframe_animation_t sweep_on_sweep_off_left_and_right = { - .num_frames = 12, - .loop = true, - .frame_lengths = { - 0, - 1, - gfxMillisecondsToTicks(GRADIENT_TIME), // left on - gfxMillisecondsToTicks(GRADIENT_TIME), // right on - gfxMillisecondsToTicks(GRADIENT_TIME), // left off - gfxMillisecondsToTicks(GRADIENT_TIME), // right off - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // right on - gfxMillisecondsToTicks(GRADIENT_TIME), // left on - gfxMillisecondsToTicks(GRADIENT_TIME), // right off - gfxMillisecondsToTicks(GRADIENT_TIME), // left off - 0, // normal leds - }, - .frame_functions = { - led_backlight_keyframe_mirror_orientation, - led_backlight_keyframe_fade_out_all, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_on, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_off, - led_backlight_keyframe_normal_orientation, - led_backlight_keyframe_half_period_sweep_to_on, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_off, - keyframe_no_operation, - led_backlight_keyframe_mirror_orientation, - - }, -}; -keyframe_animation_t both_sides_fade_across = { - .num_frames = 10, - .loop = true, - .frame_lengths = { - 0, - 1, - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - }, - .frame_functions = { - led_backlight_keyframe_mirror_orientation, - led_backlight_keyframe_fade_out_all, - keyframe_no_operation, - keyframe_no_operation, - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_normal_orientation, - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_mirror_orientation, - keyframe_no_operation, - keyframe_no_operation, - }, -}; - -#else /*left side*/ -keyframe_animation_t sweep_on_sweep_off_left_and_right = { - .num_frames = 10, - .loop = true, - .frame_lengths = { - gfxMillisecondsToTicks(GRADIENT_TIME), // left on - gfxMillisecondsToTicks(GRADIENT_TIME), // right on - gfxMillisecondsToTicks(GRADIENT_TIME), // left off - gfxMillisecondsToTicks(GRADIENT_TIME), // right off - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // right on - gfxMillisecondsToTicks(GRADIENT_TIME), // left on - gfxMillisecondsToTicks(GRADIENT_TIME), // right off - gfxMillisecondsToTicks(GRADIENT_TIME), // left off - 0, // normal leds - }, - .frame_functions = { - led_backlight_keyframe_half_period_sweep_to_on, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_off, - keyframe_no_operation, - led_backlight_keyframe_mirror_orientation, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_on, - keyframe_no_operation, - led_backlight_keyframe_half_period_sweep_to_off, - led_backlight_keyframe_normal_orientation, - - }, -}; -keyframe_animation_t both_sides_fade_across = { - .num_frames = 8, - .loop = true, - .frame_lengths = { - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in) - 0, // mirror leds - gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out) - 0, // normal leds - }, - .frame_functions = { - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_mirror_orientation, - keyframe_no_operation, - keyframe_no_operation, - keyframe_no_operation, - keyframe_no_operation, - led_backlight_keyframe_one_period_sweep, - led_backlight_keyframe_normal_orientation, - - }, -}; - - -#endif - -#define RED 0 -#define ORANGE 21 -#define YELLOW 42 -#define SPRING_GREEN 64 -#define GREEN 85 -#define TURQUOISE 107 -#define CYAN 127 -#define OCEAN 149 -#define BLUE 170 -#define VIOLET 192 -#define MAGENTA 212 -#define RASPBERRY 234 - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - uint8_t saturation = 255; - /* if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) { - saturation = 255; - } */ - - if (state->status.layer & 0x400) { - state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF); - state->layer_text = "STENOGRAPHY"; - } - else if (state->status.layer & 0x200) { - state->target_lcd_color = LCD_COLOR(GREEN, saturation, 0xFF); - state->layer_text = "FUNCTION"; - } - else if (state->status.layer & 0x100) { - state->target_lcd_color = LCD_COLOR(MAGENTA, saturation, 0xFF); - state->layer_text = "Shortcuts Layer"; - stop_keyframe_animation(&sweep_on_sweep_off_left_and_right); - start_keyframe_animation(&led_test_animation); - } - else if (state->status.layer & 0x80) { - state->target_lcd_color = LCD_COLOR(VIOLET, saturation, 0xFF); - state->layer_text = "Plover"; - } - else if (state->status.layer & 0x40) { - state->target_lcd_color = LCD_COLOR(RASPBERRY, saturation, 0xFF); - state->layer_text = "Mirrored Symbols"; - } - else if (state->status.layer & 0x20) { - state->target_lcd_color = LCD_COLOR(RED, saturation, 0xFF); - state->layer_text = "Symbols"; - } - else if (state->status.layer & 0x8) { - state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF); - state->layer_text = "Mirrored Dvorak"; - } - else if (state->status.layer & 0x4) { - state->target_lcd_color = LCD_COLOR(BLUE, saturation, 0xFF); - state->layer_text = "Dvorak"; - stop_keyframe_animation(&led_test_animation); - start_keyframe_animation(&sweep_on_sweep_off_left_and_right); - } - else if (state->status.layer & 0x2) { - state->target_lcd_color = LCD_COLOR(ORANGE, saturation, 0xFF); - state->layer_text = "Mirrored Qwerty"; - } - else { - state->target_lcd_color = LCD_COLOR(YELLOW, saturation, 0xFF); - state->layer_text = "Qwerty"; - stop_keyframe_animation(&led_test_animation); - start_keyframe_animation(&Fade_in_all_leds); - } -} diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h deleted file mode 100644 index c97a7a22a583..000000000000 --- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright 2017 Fred Sundvik - * - * 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 . - */ - -#ifndef VISUALIZER_H_ -#define VISUALIZER_H_ - -// Currently we are assuming that both the backlight and LCD are enabled -// But it's entirely possible to write a custom visualizer that use only -// one of them -#ifndef LCD_BACKLIGHT_ENABLE -#error This visualizer needs that LCD backlight is enabled -#endif - -#ifndef LCD_ENABLE -#error This visualizer needs that LCD is enabled -#endif - -#include "visualizer.h" -#include "visualizer_keyframes.h" -#include "lcd_keyframes.h" -#include "lcd_backlight_keyframes.h" -#include "system/serial_link.h" -#include "led.h" -#include "default_animations.h" - -static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF); -static const uint32_t initial_color = LCD_COLOR(0, 0, 0); - -static bool initial_update = true; - -// Feel free to modify the animations below, or even add new ones if needed -extern keyframe_animation_t KITT_Scanner_animation; - -static keyframe_animation_t lcd_layer_display = { - .num_frames = 1, - .loop = false, - .frame_lengths = {gfxMillisecondsToTicks(0)}, - .frame_functions = {lcd_keyframe_display_layer_and_led_states} -}; - -// The color animation animates the LCD color when you change layers -static keyframe_animation_t color_animation = { - .num_frames = 2, - .loop = false, - // Note that there's a 200 ms no-operation frame, - // this prevents the color from changing when activating the layer - // momentarily - .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)}, - .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color}, -}; - -void initialize_user_visualizer(visualizer_state_t* state) { - // The brightness will be dynamically adjustable in the future - // But for now, change it here. - lcd_backlight_brightness(130); - state->current_lcd_color = initial_color; - state->target_lcd_color = logo_background_color; - initial_update = true; - start_keyframe_animation(&default_startup_animation); -} - - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state); - -void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) { - // Add more tests, change the colors and layer texts here - // Usually you want to check the high bits (higher layers first) - // because that's the order layers are processed for keypresses - // You can for check for example: - // state->status.layer - // state->status.default_layer - // state->status.leds (see led.h for available statuses) - - uint32_t prev_color = state->target_lcd_color; - const char* prev_layer_text = state->layer_text; - - get_visualizer_layer_and_color(state); - - if (initial_update || prev_color != state->target_lcd_color) { - start_keyframe_animation(&color_animation); - } - - if (initial_update || prev_layer_text != state->layer_text) { - start_keyframe_animation(&lcd_layer_display); - } - // You can also stop existing animations, and start your custom ones here - // remember that you should normally have only one animation for the LCD - // and one for the background. But you can also combine them if you want. - -} - -void user_visualizer_suspend(visualizer_state_t* state) { - state->layer_text = "Suspending..."; - uint8_t hue = LCD_HUE(state->current_lcd_color); - uint8_t sat = LCD_SAT(state->current_lcd_color); - state->target_lcd_color = LCD_COLOR(hue, sat, 0); - start_keyframe_animation(&default_suspend_animation); -} - -void user_visualizer_resume(visualizer_state_t* state) { - state->current_lcd_color = initial_color; - state->target_lcd_color = logo_background_color; - initial_update = true; - start_keyframe_animation(&default_startup_animation); -} - -#endif /* VISUALIZER_H_ */ diff --git a/layouts/community/ergodox/333fred/keymap.c b/layouts/community/ergodox/333fred/keymap.c index b9aefd929309..5dee9a1e3f68 100644 --- a/layouts/community/ergodox/333fred/keymap.c +++ b/layouts/community/ergodox/333fred/keymap.c @@ -272,3 +272,43 @@ void matrix_scan_user(void) { ergodox_led_all_on(); } +#ifdef ST7565_ENABLE + +void st7565_task_user(void) { + // The colors will need to be ported over to the quantum painter API when + // https://github.com/qmk/qmk_firmware/pull/10174 is merged. + + st7565_clear(); + switch (get_highest_layer(layer_state)) { + case BASE: + //state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF); + st7565_write_P(PSTR("Default\n"), false); + break; + case CODEFLOW: + //state->target_lcd_color = LCD_COLOR(216, 90, 0xFF); + st7565_write_P(PSTR("Code\n"), false); + break; + case SYMB: + //state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF); + st7565_write_P(PSTR("Symbol\n"), false); + break; + case MDIA: + //state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF); + st7565_write_P(PSTR("Media\n"), false); + break; + case VIM: + //state->target_lcd_color = LCD_COLOR(140, 100, 60); + st7565_write_P(PSTR("Movement\n"), false); + break; + case GAME: + //state->target_lcd_color = LCD_COLOR(0, 255, 60); + st7565_write_P(PSTR("Game\n"), false); + break; + case GAME_ARROW: + //state->target_lcd_color = LCD_COLOR(0, 255, 60); + st7565_write_P(PSTR("Game Arrow\n"), false); + break; + } +} + +#endif diff --git a/layouts/community/ergodox/333fred/rules.mk b/layouts/community/ergodox/333fred/rules.mk index f6c71feb4627..9a3e2b97e594 100644 --- a/layouts/community/ergodox/333fred/rules.mk +++ b/layouts/community/ergodox/333fred/rules.mk @@ -1,5 +1,2 @@ -LCD_BACKLIGHT_ENABLE = yes -LCD_ENABLE = yes -BACKLIGHT_ENABLE = yes KEY_LOCK_ENABLE = yes CONSOLE_ENABLE = no diff --git a/layouts/community/ergodox/333fred/visualizer.c b/layouts/community/ergodox/333fred/visualizer.c deleted file mode 100644 index d13b3cd79477..000000000000 --- a/layouts/community/ergodox/333fred/visualizer.c +++ /dev/null @@ -1,39 +0,0 @@ -/* -Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL. -*/ - -#include "simple_visualizer.h" - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - uint8_t saturation = 60; - if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) { - saturation = 255; - } - if (state->status.layer & 0x80) { - state->target_lcd_color = LCD_COLOR(0, 255, 60); - state->layer_text = "Game Arrow"; - } else if (state->status.layer & 0x40) { - state->target_lcd_color = LCD_COLOR(0, 255, 60); - state->layer_text = "Game"; - } else if (state->status.layer & 0x20) { - state->target_lcd_color = LCD_COLOR(140, 100, 60); - state->layer_text = "Movement"; - } else if (state->status.layer & 0x10) { - state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF); - state->layer_text = "Media"; - } else if (state->status.layer & 0x8) { - state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF); - state->layer_text = "Symbol"; - } else if (state->status.layer & 0x2 || state->status.layer & 0x4) { - state->target_lcd_color = LCD_COLOR(216, 90, 0xFF); - state->layer_text = "Code"; - } else { - state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF); - state->layer_text = "Default"; - } -} diff --git a/layouts/community/ergodox/adnw_p_u_q/visualizer.c b/layouts/community/ergodox/adnw_p_u_q/visualizer.c deleted file mode 100644 index 9a4d485387d4..000000000000 --- a/layouts/community/ergodox/adnw_p_u_q/visualizer.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL. -*/ - -#include "simple_visualizer.h" - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - - if (state->status.layer & 0x20) { - state->target_lcd_color = LCD_COLOR(127, 0xFF, 0xFF); - state->layer_text = "Mouse"; - } else if (state->status.layer & 0x10) { - state->target_lcd_color = LCD_COLOR(85, 0xFF, 0xFF); - state->layer_text = "Symbol"; - } else if (state->status.layer & 0x8) { - state->target_lcd_color = LCD_COLOR(64, 0xFF, 0xFF); - state->layer_text = "Brackets"; - } else if (state->status.layer & 0x4) { - state->target_lcd_color = LCD_COLOR(42, 0xFF, 0xFF); - state->layer_text = "Diak"; - } else if (state->status.layer & 0x2) { - state->target_lcd_color = LCD_COLOR(21, 0xFF, 0xFF); - state->layer_text = "Terminal"; - } else { - state->target_lcd_color = LCD_COLOR(192, 0xFF, 0xFF); - state->layer_text = "Vim"; - } -} - diff --git a/layouts/community/ergodox/belak/keymap.c b/layouts/community/ergodox/belak/keymap.c index bca0dec913fd..de0fe1b1aef3 100644 --- a/layouts/community/ergodox/belak/keymap.c +++ b/layouts/community/ergodox/belak/keymap.c @@ -33,11 +33,6 @@ enum belak_keycodes { E_TSET, }; -inline void tap(uint16_t keycode) { - register_code(keycode); - unregister_code(keycode); -}; - // TODO: Add LED support to the tap dance by using the advanced macro #define LTOGGLE TD(TD_LAYER_TOGGLE) @@ -273,17 +268,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case E_SHRUG: // ¯\_(ツ)_/¯ if (record->event.pressed) { process_unicode((0x00AF|QK_UNICODE), record); // Hand - tap(KC_BSLS); // Arm + tap_code16(KC_BSLS); // Arm register_code(KC_RSFT); - tap(KC_UNDS); // Arm - tap(KC_LPRN); // Head + tap_code16(KC_UNDS); // Arm + tap_code16(KC_LPRN); // Head unregister_code(KC_RSFT); process_unicode((0x30C4|QK_UNICODE), record); // Face register_code(KC_RSFT); - tap(KC_RPRN); // Head - tap(KC_UNDS); // Arm + tap_code16(KC_RPRN); // Head + tap_code16(KC_UNDS); // Arm unregister_code(KC_RSFT); - tap(KC_SLSH); // Arm + tap_code16(KC_SLSH); // Arm process_unicode((0x00AF|QK_UNICODE), record); // Hand } return false; @@ -291,19 +286,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻ if (record->event.pressed) { register_code(KC_RSFT); - tap(KC_9); + tap_code16(KC_9); unregister_code(KC_RSFT); process_unicode((0x256F|QK_UNICODE), record); // Arm process_unicode((0x00B0|QK_UNICODE), record); // Eye process_unicode((0x25A1|QK_UNICODE), record); // Mouth process_unicode((0x00B0|QK_UNICODE), record); // Eye register_code(KC_RSFT); - tap(KC_0); + tap_code16(KC_0); unregister_code(KC_RSFT); process_unicode((0x256F|QK_UNICODE), record); // Arm - tap(KC_SPC); + tap_code16(KC_SPC); process_unicode((0x0361|QK_UNICODE), record); // Flippy - tap(KC_SPC); + tap_code16(KC_SPC); process_unicode((0x253B|QK_UNICODE), record); // Table process_unicode((0x2501|QK_UNICODE), record); // Table process_unicode((0x253B|QK_UNICODE), record); // Table @@ -316,18 +311,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { process_unicode((0x2500|QK_UNICODE), record); // Table process_unicode((0x2500|QK_UNICODE), record); // Table process_unicode((0x252C|QK_UNICODE), record); // Table - tap(KC_SPC); + tap_code16(KC_SPC); process_unicode((0x30CE|QK_UNICODE), record); // Arm register_code(KC_RSFT); - tap(KC_9); + tap_code16(KC_9); unregister_code(KC_RSFT); - tap(KC_SPC); + tap_code16(KC_SPC); process_unicode((0x309C|QK_UNICODE), record); // Eye - tap(KC_MINS); + tap_code16(KC_MINS); process_unicode((0x309C|QK_UNICODE), record); // Eye process_unicode((0x30CE|QK_UNICODE), record); // Arm register_code(KC_RSFT); - tap(KC_0); + tap_code16(KC_0); unregister_code(KC_RSFT); } return false; diff --git a/layouts/community/ergodox/belak/visualizer.c b/layouts/community/ergodox/belak/visualizer.c deleted file mode 100644 index b92890a668a3..000000000000 --- a/layouts/community/ergodox/belak/visualizer.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2017 Fred Sundvik - -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 . -*/ - -// Currently we are assuming that both the backlight and LCD are enabled -// But it's entirely possible to write a custom visualizer that use only -// one of them -#ifndef LCD_BACKLIGHT_ENABLE -#error This visualizer needs that LCD backlight is enabled -#endif - -#ifndef LCD_ENABLE -#error This visualizer needs that LCD is enabled -#endif - -#include "simple_visualizer.h" - -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - uint8_t saturation = 60; - if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) { - saturation = 255; - } - - if (state->status.layer & 0x4) { - state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF); - state->layer_text = "Media"; - } - else if (state->status.layer & 0x2) { - state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF); - state->layer_text = "Symbols"; - } - else { - state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF); - state->layer_text = "Base"; - } -} diff --git a/layouts/community/ergodox/choromanski/visualizer.c b/layouts/community/ergodox/choromanski/visualizer.c deleted file mode 100644 index e207c66822e0..000000000000 --- a/layouts/community/ergodox/choromanski/visualizer.c +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2017 Fred Sundvik - -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 . -*/ - -#include "simple_visualizer.h" - -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - - if (state->status.layer & 0x20) { - //GREEN - state->target_lcd_color = LCD_COLOR(85, 255, 128); - state->layer_text = "Gaming"; - } - else if (state->status.layer & 0x10) { - //ORANGE - state->target_lcd_color = LCD_COLOR(28, 255, 230); - state->layer_text = "Numpad & Mouse"; - } - else if (state->status.layer & 0x8) { - //YELLOW - state->target_lcd_color = LCD_COLOR(38, 255, 230); - state->layer_text = "Symbols"; - } - else if (state->status.layer & 0x4) { - //RED - state->target_lcd_color = LCD_COLOR(0, 255, 95); - if (state->status.layer & 0x2){ - state->layer_text = "Qwerty - Fn"; - }else{ - state->layer_text = "Colemak - Fn"; - } - } - else if (state->status.layer & 0x2) { - //BLUE - state->target_lcd_color = LCD_COLOR(149, 255, 192); - state->layer_text = "Qwerty"; - } - else { - //PURPLE - state->target_lcd_color = LCD_COLOR(200, 255, 192); - state->layer_text = "Colemak"; - } -} - diff --git a/layouts/community/ergodox/drashna/visualizer.c_old b/layouts/community/ergodox/drashna/visualizer.c_old deleted file mode 100644 index 6b1c3ff498b6..000000000000 --- a/layouts/community/ergodox/drashna/visualizer.c_old +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright 2017 Fred Sundvik - -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 . -*/ - -#include "./simple_visualizer.h" -#include "util.h" -#include "drashna.h" -#include "rgblight_list.h" - -#define LCD_COLOR_wrapper(...) LCD_COLOR(__VA_ARGS__) -// This function should be implemented by the keymap visualizer -// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing -// that the simple_visualizer assumes that you are updating -// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is -// stopped. This can be done by either double buffering it or by using constant strings -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - - switch(get_highest_layer(state->status.layer|default_layer_state)) { - case _LOWER: - state->layer_text = "Lower"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_GREEN); - break; - case _RAISE: - state->layer_text = "Raise"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_YELLOW); - break; - case _ADJUST: - state->layer_text = "Adjust"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_RED); - break; - case _MACROS: - state->layer_text = "Macros"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_ORANGE); - break; - case _MEDIA: - state->layer_text = "Media"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_CHARTREUSE); - break; - case _GAMEPAD: - state->layer_text = "Game"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_ORANGE); - break; - case _QWERTY: - state->layer_text = "QWERTY"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_CYAN); - break; - case _WORKMAN: - state->layer_text = "Workman"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_GOLDENROD); - break; - case _DVORAK: - state->layer_text = "Dvorak"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_SPRINGGREEN); - break; - case _COLEMAK: - state->layer_text = "Colemak"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_MAGENTA); - break; break; - default: - state->layer_text = "NONE"; - state->target_lcd_color = LCD_COLOR_wrapper(HSV_RED); - break; - } -} diff --git a/layouts/community/ergodox/osx_neo2/visualizer.c b/layouts/community/ergodox/osx_neo2/visualizer.c deleted file mode 100644 index 653201bb8aae..000000000000 --- a/layouts/community/ergodox/osx_neo2/visualizer.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "layers.h" -#include "simple_visualizer.h" -#include "util.h" - -static void get_visualizer_layer_and_color(visualizer_state_t *state) { - uint8_t layer = biton32(state->status.layer); - - // Go from highest to lowest layer to get the right text/color combination. - switch (layer) { - // #AEB2F4 / hsv(65.71%, 28.69%, 95.69%) - case FKEYS: - // #F4AEDC / hsv(89.05%, 28.69%, 95.69%) - state->layer_text = "FUNCTION KEYS"; - state->target_lcd_color = LCD_COLOR(228, 73, 245); - break; - case US_1: - // #F4B993 / hsv(6.53%, 39.75%, 95.69%) - state->layer_text = "QWERTY"; - state->target_lcd_color = LCD_COLOR(17, 102, 245); - break; - case NEO_6: - // #F4E393 / hsv(13.75%, 39.75%, 95.69%) - state->layer_text = "NEO: 6"; - state->target_lcd_color = LCD_COLOR(35, 102, 245); - break; - case NEO_5: - // #C6F493 / hsv(24.57%, 39.75%, 95.69%) - state->layer_text = "NEO: 5"; - state->target_lcd_color = LCD_COLOR(63, 102, 245); - break; - case NEO_4: - // #8EEBC9 / hsv(43.91%, 39.57%, 92.16%) - state->layer_text = "NEO: 4"; - state->target_lcd_color = LCD_COLOR(112, 101, 189); - break; - case NEO_3: - // #93D2F4 / hsv(55.84%, 39.75%, 95.69%) - state->layer_text = "NEO: 3"; - state->target_lcd_color = LCD_COLOR(143, 102, 245); - break; - default: - // #EEEEEE / hsv(0%, 0%, 93%) - state->layer_text = "NEO: 1"; - state->target_lcd_color = LCD_COLOR(0, 0, 255); - break; - } -} diff --git a/show_options.mk b/show_options.mk index e0d7c9b072b6..c1da90bcbc41 100644 --- a/show_options.mk +++ b/show_options.mk @@ -28,7 +28,6 @@ HARDWARE_OPTION_NAMES = \ AUDIO_ENABLE \ HD44780_ENABLE \ ENCODER_ENABLE \ - LCD_ENABLE \ LED_TABLES \ POINTING_DEVICE_ENABLE \ DIP_SWITCH_ENABLE diff --git a/users/talljoe/visualizer.c b/users/talljoe/visualizer.c deleted file mode 100644 index c17b56706bfc..000000000000 --- a/users/talljoe/visualizer.c +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020 Joseph Wasson - * - * 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 . - */ - -#include "talljoe.h" - -static void get_visualizer_layer_and_color(visualizer_state_t* state) { - state->status_text = layer_names[biton32(state->status.layer)]; -}