From 1412076df68ac00f9a00173977d2826603c12ddf Mon Sep 17 00:00:00 2001 From: Smilliam Date: Mon, 4 Jul 2016 19:56:08 -0700 Subject: [PATCH 01/37] Allow Space Cadet state to be canceled by alternate Shift key Allows you to press RSHIFT to cancel the insertion of a "(" when holding down LSHIFT. Alternatively, allows you to press LSHIFT to cancel the insertion of a ")" when holding down RSHIFT. This change enables you to renege from outputting a character should you press a shift key erroneously. --- quantum/quantum.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/quantum/quantum.c b/quantum/quantum.c index d59bd5a3f8..65290338d0 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -162,6 +162,10 @@ bool process_record_quantum(keyrecord_t *record) { register_mods(MOD_BIT(KC_LSFT)); } else { + if (get_mods() & MOD_BIT(KC_RSFT)) { + shift_interrupted[0] = true; + shift_interrupted[1] = true; + } if (!shift_interrupted[0]) { register_code(LSPO_KEY); unregister_code(LSPO_KEY); @@ -178,6 +182,10 @@ bool process_record_quantum(keyrecord_t *record) { register_mods(MOD_BIT(KC_RSFT)); } else { + if (get_mods() & MOD_BIT(KC_LSFT)) { + shift_interrupted[0] = true; + shift_interrupted[1] = true; + } if (!shift_interrupted[1]) { register_code(RSPC_KEY); unregister_code(RSPC_KEY); From 6b0c9cc905c0985f96a80306cf5fe0d6724b28fc Mon Sep 17 00:00:00 2001 From: Smilliam Date: Mon, 4 Jul 2016 19:58:26 -0700 Subject: [PATCH 02/37] fixed indentation. --- quantum/quantum.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 65290338d0..71c3c723ba 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -162,10 +162,10 @@ bool process_record_quantum(keyrecord_t *record) { register_mods(MOD_BIT(KC_LSFT)); } else { - if (get_mods() & MOD_BIT(KC_RSFT)) { - shift_interrupted[0] = true; - shift_interrupted[1] = true; - } + if (get_mods() & MOD_BIT(KC_RSFT)) { + shift_interrupted[0] = true; + shift_interrupted[1] = true; + } if (!shift_interrupted[0]) { register_code(LSPO_KEY); unregister_code(LSPO_KEY); @@ -182,10 +182,10 @@ bool process_record_quantum(keyrecord_t *record) { register_mods(MOD_BIT(KC_RSFT)); } else { - if (get_mods() & MOD_BIT(KC_LSFT)) { - shift_interrupted[0] = true; - shift_interrupted[1] = true; - } + if (get_mods() & MOD_BIT(KC_LSFT)) { + shift_interrupted[0] = true; + shift_interrupted[1] = true; + } if (!shift_interrupted[1]) { register_code(RSPC_KEY); unregister_code(RSPC_KEY); From 10f3a1b6215af2a1c74b0245e46f5b6352ee18a4 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 00:17:32 +0300 Subject: [PATCH 03/37] Add ugfx submodule --- .gitmodules | 3 +++ lib/ugfx | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/ugfx diff --git a/.gitmodules b/.gitmodules index 1576b8dc0b..7e3c92d031 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "lib/chibios-contrib"] path = lib/chibios-contrib url = https://github.com/ChibiOS/ChibiOS-Contrib.git +[submodule "lib/ugfx"] + path = lib/ugfx + url = https://bitbucket.org/Tectu/ugfx diff --git a/lib/ugfx b/lib/ugfx new file mode 160000 index 0000000000..13e084ae62 --- /dev/null +++ b/lib/ugfx @@ -0,0 +1 @@ +Subproject commit 13e084ae6231857cd0d472c529f34be07d93c08b From 70797bb8f21c72cba15b314b2d0a6684bfedc369 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 00:20:20 +0300 Subject: [PATCH 04/37] Makefile changes and files to compile Visualizer --- Makefile | 15 +- keyboards/infinity_ergodox/Makefile | 3 + keyboards/infinity_ergodox/gfxconf.h | 331 ++++++++++++++++++ .../infinity_ergodox/lcd_backlight_hal.c | 84 +++++ keyboards/infinity_ergodox/visualizer_user.c | 168 +++++++++ quantum/visualizer/visualizer.c | 2 - quantum/visualizer/visualizer.h | 2 - quantum/visualizer/visualizer.mk | 22 +- 8 files changed, 604 insertions(+), 23 deletions(-) create mode 100644 keyboards/infinity_ergodox/gfxconf.h create mode 100644 keyboards/infinity_ergodox/lcd_backlight_hal.c create mode 100644 keyboards/infinity_ergodox/visualizer_user.c diff --git a/Makefile b/Makefile index 7c00ce2cc8..a7a10bf326 100644 --- a/Makefile +++ b/Makefile @@ -218,14 +218,6 @@ ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) VAPTH += $(SERIAL_PATH) endif -ifeq ($(MASTER),right) - OPT_DEFS += -DMASTER_IS_ON_RIGHT -else - ifneq ($(MASTER),left) -$(error MASTER does not have a valid value(left/right)) - endif -endif - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax @@ -257,10 +249,17 @@ ifeq ($(PLATFORM),AVR) else ifeq ($(PLATFORM),CHIBIOS) include $(TMK_PATH)/protocol/chibios.mk include $(TMK_PATH)/chibios.mk + OPT_OS = chibios else $(error Unknown platform) endif +ifeq ($(strip $(VISUALIZER_ENABLE)), yes) + VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer + VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer + include $(VISUALIZER_PATH)/visualizer.mk +endif + include $(TMK_PATH)/rules.mk GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") diff --git a/keyboards/infinity_ergodox/Makefile b/keyboards/infinity_ergodox/Makefile index efa32e037d..8be2f51b1f 100644 --- a/keyboards/infinity_ergodox/Makefile +++ b/keyboards/infinity_ergodox/Makefile @@ -67,6 +67,9 @@ SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend NKRO_ENABLE ?= yes # USB Nkey Rollover CUSTOM_MATRIX ?= yes # Custom matrix file SERIAL_LINK_ENABLE = yes +VISUALIZER_ENABLE ?= yes +LCD_ENABLE ?= yes +LCD_BACKLIGHT_ENABLE ?= yes ifndef QUANTUM_DIR include ../../Makefile diff --git a/keyboards/infinity_ergodox/gfxconf.h b/keyboards/infinity_ergodox/gfxconf.h new file mode 100644 index 0000000000..8caa577b73 --- /dev/null +++ b/keyboards/infinity_ergodox/gfxconf.h @@ -0,0 +1,331 @@ +/** + * This file has a different license to the rest of the uGFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the uGFX features you want to use. + * The values below are the defaults. + * + * Only remove the comments from lines where you want to change the + * default value. This allows definitions to be included from + * driver makefiles when required and provides the best future + * compatibility for your project. + * + * Please use spaces instead of tabs in this file. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + + +/////////////////////////////////////////////////////////////////////////// +// GOS - One of these must be defined, preferably in your Makefile // +/////////////////////////////////////////////////////////////////////////// +//#define GFX_USE_OS_CHIBIOS TRUE +//#define GFX_USE_OS_FREERTOS FALSE +// #define GFX_FREERTOS_USE_TRACE FALSE +//#define GFX_USE_OS_WIN32 FALSE +//#define GFX_USE_OS_LINUX FALSE +//#define GFX_USE_OS_OSX FALSE +//#define GFX_USE_OS_ECOS FALSE +//#define GFX_USE_OS_RAWRTOS FALSE +//#define GFX_USE_OS_ARDUINO FALSE +//#define GFX_USE_OS_KEIL FALSE +//#define GFX_USE_OS_CMSIS FALSE +//#define GFX_USE_OS_RAW32 FALSE +// #define INTERRUPTS_OFF() optional_code +// #define INTERRUPTS_ON() optional_code +// These are not defined by default for some reason +#define GOS_NEED_X_THREADS FALSE +#define GOS_NEED_X_HEAP FALSE + +// Options that (should where relevant) apply to all operating systems + #define GFX_NO_INLINE FALSE +// #define GFX_COMPILER GFX_COMPILER_UNKNOWN +// #define GFX_CPU GFX_CPU_UNKNOWN +// #define GFX_OS_HEAP_SIZE 0 +// #define GFX_OS_NO_INIT FALSE +// #define GFX_OS_INIT_NO_WARNING FALSE +// #define GFX_OS_PRE_INIT_FUNCTION myHardwareInitRoutine +// #define GFX_OS_EXTRA_INIT_FUNCTION myOSInitRoutine +// #define GFX_OS_EXTRA_DEINIT_FUNCTION myOSDeInitRoutine + + +/////////////////////////////////////////////////////////////////////////// +// GDISP // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GDISP TRUE + +//#define GDISP_NEED_AUTOFLUSH FALSE +//#define GDISP_NEED_TIMERFLUSH FALSE +//#define GDISP_NEED_VALIDATION TRUE +//#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE TRUE +#define GDISP_NEED_ARC TRUE +#define GDISP_NEED_ARCSECTORS TRUE +#define GDISP_NEED_CONVEX_POLYGON TRUE +//#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD TRUE +#define GDISP_NEED_CONTROL TRUE +//#define GDISP_NEED_QUERY FALSE +//#define GDISP_NEED_MULTITHREAD FALSE +//#define GDISP_NEED_STREAMING FALSE +#define GDISP_NEED_TEXT TRUE +// #define GDISP_NEED_TEXT_WORDWRAP FALSE +// #define GDISP_NEED_ANTIALIAS FALSE +// #define GDISP_NEED_UTF8 FALSE + #define GDISP_NEED_TEXT_KERNING TRUE +// #define GDISP_INCLUDE_FONT_UI1 FALSE +// #define GDISP_INCLUDE_FONT_UI2 FALSE // The smallest preferred font. +// #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS20 FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS24 FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS32 FALSE + #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 TRUE +// #define GDISP_INCLUDE_FONT_FIXED_10X20 FALSE +// #define GDISP_INCLUDE_FONT_FIXED_7X14 FALSE + #define GDISP_INCLUDE_FONT_FIXED_5X8 TRUE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE +// #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE +// #define GDISP_INCLUDE_USER_FONTS FALSE + +//#define GDISP_NEED_IMAGE FALSE +// #define GDISP_NEED_IMAGE_NATIVE FALSE +// #define GDISP_NEED_IMAGE_GIF FALSE +// #define GDISP_NEED_IMAGE_BMP FALSE +// #define GDISP_NEED_IMAGE_BMP_1 FALSE +// #define GDISP_NEED_IMAGE_BMP_4 FALSE +// #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE +// #define GDISP_NEED_IMAGE_BMP_8 FALSE +// #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE +// #define GDISP_NEED_IMAGE_BMP_16 FALSE +// #define GDISP_NEED_IMAGE_BMP_24 FALSE +// #define GDISP_NEED_IMAGE_BMP_32 FALSE +// #define GDISP_NEED_IMAGE_JPG FALSE +// #define GDISP_NEED_IMAGE_PNG FALSE +// #define GDISP_NEED_IMAGE_ACCOUNTING FALSE +#ifdef EMULATOR +#define GDISP_NEED_PIXMAP TRUE +#endif +// #define GDISP_NEED_PIXMAP_IMAGE FALSE + +//#define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE // If not defined the native hardware orientation is used. +//#define GDISP_LINEBUF_SIZE 128 +//#define GDISP_STARTUP_COLOR Black +#define GDISP_NEED_STARTUP_LOGO FALSE + +//#define GDISP_TOTAL_DISPLAYS 2 + +#ifndef EMULATOR +#define GDISP_DRIVER_LIST GDISPVMT_ST7565_ERGODOX, GDISPVMT_IS31FL3731C_ERGODOX +#else +#define GDISP_DRIVER_LIST GDISPVMT_EMULATOR_LCD_ERGODOX, GDISPVMT_EMULATOR_LED_ERGODOX +#endif + + #ifdef GDISP_DRIVER_LIST + // For code and speed optimization define as TRUE or FALSE if all controllers have the same capability + #define GDISP_HARDWARE_STREAM_WRITE FALSE + #define GDISP_HARDWARE_STREAM_READ FALSE + #define GDISP_HARDWARE_STREAM_POS FALSE + #define GDISP_HARDWARE_DRAWPIXEL TRUE + #define GDISP_HARDWARE_CLEARS FALSE + #define GDISP_HARDWARE_FILLS FALSE + #define GDISP_HARDWARE_BITFILLS FALSE + #define GDISP_HARDWARE_SCROLL FALSE + #define GDISP_HARDWARE_PIXELREAD TRUE + #define GDISP_HARDWARE_CONTROL TRUE + #define GDISP_HARDWARE_QUERY FALSE + #define GDISP_HARDWARE_CLIP FALSE + + #define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888 + #endif + +// The custom format is not defined for some reason, so define it as error +// so we don't get compiler warnings +#define GDISP_PIXELFORMAT_CUSTOM GDISP_PIXELFORMAT_ERROR + +#define GDISP_USE_GFXNET FALSE +// #define GDISP_GFXNET_PORT 13001 +// #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE +// #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE +// #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GWIN // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GWIN FALSE + +//#define GWIN_NEED_WINDOWMANAGER FALSE +// #define GWIN_REDRAW_IMMEDIATE FALSE +// #define GWIN_REDRAW_SINGLEOP FALSE +// #define GWIN_NEED_FLASHING FALSE +// #define GWIN_FLASHING_PERIOD 250 + +//#define GWIN_NEED_CONSOLE FALSE +// #define GWIN_CONSOLE_USE_HISTORY FALSE +// #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE +// #define GWIN_CONSOLE_HISTORY_ATCREATE FALSE +// #define GWIN_CONSOLE_ESCSEQ FALSE +// #define GWIN_CONSOLE_USE_BASESTREAM FALSE +// #define GWIN_CONSOLE_USE_FLOAT FALSE +//#define GWIN_NEED_GRAPH FALSE +//#define GWIN_NEED_GL3D FALSE + +//#define GWIN_NEED_WIDGET FALSE +//#define GWIN_FOCUS_HIGHLIGHT_WIDTH 1 +// #define GWIN_NEED_LABEL FALSE +// #define GWIN_LABEL_ATTRIBUTE FALSE +// #define GWIN_NEED_BUTTON FALSE +// #define GWIN_BUTTON_LAZY_RELEASE FALSE +// #define GWIN_NEED_SLIDER FALSE +// #define GWIN_SLIDER_NOSNAP FALSE +// #define GWIN_SLIDER_DEAD_BAND 5 +// #define GWIN_SLIDER_TOGGLE_INC 20 +// #define GWIN_NEED_CHECKBOX FALSE +// #define GWIN_NEED_IMAGE FALSE +// #define GWIN_NEED_IMAGE_ANIMATION FALSE +// #define GWIN_NEED_RADIO FALSE +// #define GWIN_NEED_LIST FALSE +// #define GWIN_NEED_LIST_IMAGES FALSE +// #define GWIN_NEED_PROGRESSBAR FALSE +// #define GWIN_PROGRESSBAR_AUTO FALSE +// #define GWIN_NEED_KEYBOARD FALSE +// #define GWIN_KEYBOARD_DEFAULT_LAYOUT VirtualKeyboard_English1 +// #define GWIN_NEED_KEYBOARD_ENGLISH1 TRUE +// #define GWIN_NEED_TEXTEDIT FALSE +// #define GWIN_FLAT_STYLING FALSE +// #define GWIN_WIDGET_TAGS FALSE + +//#define GWIN_NEED_CONTAINERS FALSE +// #define GWIN_NEED_CONTAINER FALSE +// #define GWIN_NEED_FRAME FALSE +// #define GWIN_NEED_TABSET FALSE +// #define GWIN_TABSET_TABHEIGHT 18 + + +/////////////////////////////////////////////////////////////////////////// +// GEVENT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GEVENT TRUE + +//#define GEVENT_ASSERT_NO_RESOURCE FALSE +//#define GEVENT_MAXIMUM_SIZE 32 +//#define GEVENT_MAX_SOURCE_LISTENERS 32 + + +/////////////////////////////////////////////////////////////////////////// +// GTIMER // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GTIMER FALSE + +//#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY +//#define GTIMER_THREAD_WORKAREA_SIZE 2048 + + +/////////////////////////////////////////////////////////////////////////// +// GQUEUE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GQUEUE FALSE + +//#define GQUEUE_NEED_ASYNC FALSE +//#define GQUEUE_NEED_GSYNC FALSE +//#define GQUEUE_NEED_FSYNC FALSE +//#define GQUEUE_NEED_BUFFERS FALSE + +/////////////////////////////////////////////////////////////////////////// +// GINPUT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GINPUT FALSE + +//#define GINPUT_NEED_MOUSE FALSE +// #define GINPUT_TOUCH_STARTRAW FALSE +// #define GINPUT_TOUCH_NOTOUCH FALSE +// #define GINPUT_TOUCH_NOCALIBRATE FALSE +// #define GINPUT_TOUCH_NOCALIBRATE_GUI FALSE +// #define GINPUT_MOUSE_POLL_PERIOD 25 +// #define GINPUT_MOUSE_CLICK_TIME 300 +// #define GINPUT_TOUCH_CXTCLICK_TIME 700 +// #define GINPUT_TOUCH_USER_CALIBRATION_LOAD FALSE +// #define GINPUT_TOUCH_USER_CALIBRATION_SAVE FALSE +// #define GMOUSE_DRIVER_LIST GMOUSEVMT_Win32, GMOUSEVMT_Win32 +//#define GINPUT_NEED_KEYBOARD FALSE +// #define GINPUT_KEYBOARD_POLL_PERIOD 200 +// #define GKEYBOARD_DRIVER_LIST GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32 +// #define GKEYBOARD_LAYOUT_OFF FALSE +// #define GKEYBOARD_LAYOUT_SCANCODE2_US FALSE +//#define GINPUT_NEED_TOGGLE FALSE +//#define GINPUT_NEED_DIAL FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GFILE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GFILE FALSE + +//#define GFILE_NEED_PRINTG FALSE +//#define GFILE_NEED_SCANG FALSE +//#define GFILE_NEED_STRINGS FALSE +//#define GFILE_NEED_FILELISTS FALSE +//#define GFILE_NEED_STDIO FALSE +//#define GFILE_NEED_NOAUTOMOUNT FALSE +//#define GFILE_NEED_NOAUTOSYNC FALSE + +//#define GFILE_NEED_MEMFS FALSE +//#define GFILE_NEED_ROMFS FALSE +//#define GFILE_NEED_RAMFS FALSE +//#define GFILE_NEED_FATFS FALSE +//#define GFILE_NEED_NATIVEFS FALSE +//#define GFILE_NEED_CHBIOSFS FALSE + +//#define GFILE_ALLOW_FLOATS FALSE +//#define GFILE_ALLOW_DEVICESPECIFIC FALSE +//#define GFILE_MAX_GFILES 3 + +/////////////////////////////////////////////////////////////////////////// +// GADC // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GADC FALSE + +//#define GADC_MAX_LOWSPEED_DEVICES 4 + + +/////////////////////////////////////////////////////////////////////////// +// GAUDIO // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GAUDIO FALSE +// There seems to be a bug in the ugfx code, the wrong define is used +// So define it in order to avoid warnings +#define GFX_USE_GAUDIN GFX_USE_GAUDIO +// #define GAUDIO_NEED_PLAY FALSE +// #define GAUDIO_NEED_RECORD FALSE + + +/////////////////////////////////////////////////////////////////////////// +// GMISC // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GMISC TRUE + +//#define GMISC_NEED_ARRAYOPS FALSE +//#define GMISC_NEED_FASTTRIG FALSE +//#define GMISC_NEED_FIXEDTRIG FALSE +//#define GMISC_NEED_INVSQRT FALSE +// #define GMISC_INVSQRT_MIXED_ENDIAN FALSE +// #define GMISC_INVSQRT_REAL_SLOW FALSE +#define GMISC_NEED_MATRIXFLOAT2D TRUE +#define GMISC_NEED_MATRIXFIXED2D FALSE + +#endif /* _GFXCONF_H */ diff --git a/keyboards/infinity_ergodox/lcd_backlight_hal.c b/keyboards/infinity_ergodox/lcd_backlight_hal.c new file mode 100644 index 0000000000..05fc810b4b --- /dev/null +++ b/keyboards/infinity_ergodox/lcd_backlight_hal.c @@ -0,0 +1,84 @@ +/* +Copyright 2016 Fred Sundvik +Jun Wako + +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 "lcd_backlight.h" +#include "hal.h" + +#define RED_PIN 1 +#define GREEN_PIN 2 +#define BLUE_PIN 3 +#define CHANNEL_RED FTM0->CHANNEL[0] +#define CHANNEL_GREEN FTM0->CHANNEL[1] +#define CHANNEL_BLUE FTM0->CHANNEL[2] + +#define RGB_PORT PORTC +#define RGB_PORT_GPIO GPIOC + +// Base FTM clock selection (72 MHz system clock) +// @ 0xFFFF period, 72 MHz / (0xFFFF * 2) = Actual period +// Higher pre-scalar will use the most power (also look the best) +// Pre-scalar calculations +// 0 - 72 MHz -> 549 Hz +// 1 - 36 MHz -> 275 Hz +// 2 - 18 MHz -> 137 Hz +// 3 - 9 MHz -> 69 Hz (Slightly visible flicker) +// 4 - 4 500 kHz -> 34 Hz (Visible flickering) +// 5 - 2 250 kHz -> 17 Hz +// 6 - 1 125 kHz -> 9 Hz +// 7 - 562 500 Hz -> 4 Hz +// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced +// Which will reduce the brightness range +#define PRESCALAR_DEFINE 0 + +void lcd_backlight_hal_init(void) { + // Setup Backlight + SIM->SCGC6 |= SIM_SCGC6_FTM0; + FTM0->CNT = 0; // Reset counter + + // PWM Period + // 16-bit maximum + FTM0->MOD = 0xFFFF; + + // Set FTM to PWM output - Edge Aligned, Low-true pulses +#define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0) + CHANNEL_RED.CnSC = CNSC_MODE; + CHANNEL_GREEN.CnSC = CNSC_MODE; + CHANNEL_BLUE.CnSC = CNSC_MODE; + + // System clock, /w prescalar setting + FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE); + + CHANNEL_RED.CnV = 0; + CHANNEL_GREEN.CnV = 0; + CHANNEL_BLUE.CnV = 0; + + RGB_PORT_GPIO->PDDR |= (1 << RED_PIN); + RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN); + RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN); + +#define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4) + RGB_PORT->PCR[RED_PIN] = RGB_MODE; + RGB_PORT->PCR[GREEN_PIN] = RGB_MODE; + RGB_PORT->PCR[BLUE_PIN] = RGB_MODE; +} + +void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) { + CHANNEL_RED.CnV = r; + CHANNEL_GREEN.CnV = g; + CHANNEL_BLUE.CnV = b; +} + diff --git a/keyboards/infinity_ergodox/visualizer_user.c b/keyboards/infinity_ergodox/visualizer_user.c new file mode 100644 index 0000000000..c0d335ce6a --- /dev/null +++ b/keyboards/infinity_ergodox/visualizer_user.c @@ -0,0 +1,168 @@ +/* +Copyright 2016 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 "visualizer.h" +#include "led_test.h" + +static const char* welcome_text[] = {"TMK", "Infinity Ergodox"}; + +// Just an example how to write custom keyframe functions, we could have moved +// all this into the init function +bool display_welcome(keyframe_animation_t* animation, visualizer_state_t* state) { + (void)animation; + // Read the uGFX documentation for information how to use the displays + // http://wiki.ugfx.org/index.php/Main_Page + gdispClear(White); + // You can use static variables for things that can't be found in the animation + // or state structs + gdispDrawString(0, 3, welcome_text[0], state->font_dejavusansbold12, Black); + gdispDrawString(0, 15, welcome_text[1], state->font_dejavusansbold12, Black); + // Always remember to flush the display + gdispFlush(); + // you could set the backlight color as well, but we won't do it here, since + // it's part of the following animation + // lcd_backlight_color(hue, saturation, intensity); + // We don't need constant updates, just drawing the screen once is enough + return false; +} + +// Feel free to modify the animations below, or even add new ones if needed + +// Don't worry, if the startup animation is long, you can use the keyboard like normal +// during that time +static keyframe_animation_t startup_animation = { + .num_frames = 4, + .loop = false, + .frame_lengths = {0, gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(5000), 0}, + .frame_functions = { + display_welcome, + keyframe_animate_backlight_color, + keyframe_no_operation, + enable_visualization + }, +}; + +// 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, keyframe_animate_backlight_color}, +}; + +// The LCD animation alternates between the layer name display and a +// bitmap that displays all active layers +static keyframe_animation_t lcd_animation = { + .num_frames = 2, + .loop = true, + .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)}, + .frame_functions = {keyframe_display_layer_text, keyframe_display_layer_bitmap}, +}; + +static keyframe_animation_t suspend_animation = { + .num_frames = 3, + .loop = false, + .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0}, + .frame_functions = { + keyframe_display_layer_text, + keyframe_animate_backlight_color, + keyframe_disable_lcd_and_backlight, + }, +}; + +static keyframe_animation_t resume_animation = { + .num_frames = 5, + .loop = false, + .frame_lengths = {0, 0, gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(5000), 0}, + .frame_functions = { + keyframe_enable_lcd_and_backlight, + display_welcome, + keyframe_animate_backlight_color, + keyframe_no_operation, + enable_visualization, + }, +}; + +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(0x50); + state->current_lcd_color = LCD_COLOR(0x00, 0x00, 0xFF); + state->target_lcd_color = LCD_COLOR(0x10, 0xFF, 0xFF); + start_keyframe_animation(&startup_animation); + start_keyframe_animation(&led_test_animation); +} + +void update_user_visualizer_state(visualizer_state_t* state) { + // 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) + if (state->status.layer & 0x8) { + state->target_lcd_color = LCD_COLOR(0xC0, 0xB0, 0xFF); + state->layer_text = "Numpad"; + } + else if (state->status.layer & 0x4) { + state->target_lcd_color = LCD_COLOR(0, 0xB0, 0xFF); + state->layer_text = "KBD functions"; + } + else if (state->status.layer & 0x2) { + state->target_lcd_color = LCD_COLOR(0x80, 0xB0, 0xFF); + state->layer_text = "Function keys"; + } + else { + state->target_lcd_color = LCD_COLOR(0x40, 0xB0, 0xFF); + state->layer_text = "Default"; + } + // 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. + start_keyframe_animation(&lcd_animation); + start_keyframe_animation(&color_animation); +} + +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(&suspend_animation); +} + +void user_visualizer_resume(visualizer_state_t* state) { + state->current_lcd_color = LCD_COLOR(0x00, 0x00, 0x00); + state->target_lcd_color = LCD_COLOR(0x10, 0xFF, 0xFF); + start_keyframe_animation(&resume_animation); + start_keyframe_animation(&led_test_animation); +} diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c index c240734055..abca22d85f 100644 --- a/quantum/visualizer/visualizer.c +++ b/quantum/visualizer/visualizer.c @@ -29,9 +29,7 @@ SOFTWARE. #include "ch.h" #endif -#ifdef LCD_ENABLE #include "gfx.h" -#endif #ifdef LCD_BACKLIGHT_ENABLE #include "lcd_backlight.h" diff --git a/quantum/visualizer/visualizer.h b/quantum/visualizer/visualizer.h index 45cfa9aa97..53e250725c 100644 --- a/quantum/visualizer/visualizer.h +++ b/quantum/visualizer/visualizer.h @@ -28,9 +28,7 @@ SOFTWARE. #include #include -#ifdef LCD_ENABLE #include "gfx.h" -#endif #ifdef LCD_BACKLIGHT_ENABLE #include "lcd_backlight.h" diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk index 56525ffd93..b5dfad8e1a 100644 --- a/quantum/visualizer/visualizer.mk +++ b/quantum/visualizer/visualizer.mk @@ -20,14 +20,14 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -GFXLIB = $(VISUALIZER_DIR)/ugfx SRC += $(VISUALIZER_DIR)/visualizer.c -UINCDIR += $(GFXINC) $(VISUALIZER_DIR) +EXTRAINCDIRS += $(GFXINC) $(VISUALIZER_DIR) +GFXLIB = $(LIB_PATH)/ugfx +VPATH += $(VISUALIZER_PATH) ifdef LCD_ENABLE -UDEFS += -DLCD_ENABLE +OPT_DEFS += -DLCD_ENABLE ULIBS += -lm -USE_UGFX = yes endif ifdef LCD_BACKLIGHT_ENABLE @@ -35,21 +35,21 @@ SRC += $(VISUALIZER_DIR)/lcd_backlight.c ifndef EMULATOR SRC += lcd_backlight_hal.c endif -UDEFS += -DLCD_BACKLIGHT_ENABLE +OPT_DEFS += -DLCD_BACKLIGHT_ENABLE endif ifdef LED_ENABLE SRC += $(VISUALIZER_DIR)/led_test.c UDEFS += -DLED_ENABLE -USE_UGFX = yes endif -ifdef USE_UGFX include $(GFXLIB)/gfx.mk -SRC += $(GFXSRC) -UDEFS += $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS))) -ULIBS += $(patsubst %,-l%,$(patsubst -l%,%,$(GFXLIBS))) -endif +#SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) +#SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) +#SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) +#SRC += $(GFXSRC) +OPT_DEFS += $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS))) +#ULIBS += $(patsubst %,-l%,$(patsubst -l%,%,$(GFXLIBS))) ifndef VISUALIZER_USER VISUALIZER_USER = visualizer_user.c From 9772e697a04472f3c710376bfb2919ec2c3672a3 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 12:45:34 +0300 Subject: [PATCH 05/37] Add Infinity Ergodox display drivers --- .../gdisp/IS31FL3731C/board_IS31FL3731C.h | 113 ++++++ .../drivers/gdisp/IS31FL3731C/driver.mk | 2 + .../gdisp/IS31FL3731C/gdisp_IS31FL3731C.c | 333 ++++++++++++++++++ .../gdisp/IS31FL3731C/gdisp_lld_config.h | 36 ++ .../drivers/gdisp/emulator_lcd/driver.mk | 2 + .../drivers/gdisp/emulator_lcd/emulator_lcd.c | 10 + .../drivers/gdisp/emulator_led/driver.mk | 2 + .../drivers/gdisp/emulator_led/emulator_led.c | 10 + .../gdisp/st7565ergodox/board_ST7565.h | 127 +++++++ .../drivers/gdisp/st7565ergodox/driver.mk | 2 + .../gdisp/st7565ergodox/gdisp_lld_ST7565.c | 292 +++++++++++++++ .../gdisp/st7565ergodox/gdisp_lld_config.h | 26 ++ .../drivers/gdisp/st7565ergodox/st7565.h | 37 ++ 13 files changed, 992 insertions(+) create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/driver.mk create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/driver.mk create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/emulator_lcd.c create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/emulator_led/driver.mk create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/emulator_led/emulator_led.c create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/board_ST7565.h create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/driver.mk create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_config.h create mode 100644 keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/st7565.h diff --git a/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h new file mode 100644 index 0000000000..2ea73f1fb3 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h @@ -0,0 +1,113 @@ +/* +Copyright 2016 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 _GDISP_LLD_BOARD_H +#define _GDISP_LLD_BOARD_H + +static const I2CConfig i2ccfg = { + 400000 // clock speed (Hz); 400kHz max for IS31 +}; + +#define GDISP_SCREEN_WIDTH 7 +#define GDISP_SCREEN_HEIGHT 7 + +static const uint8_t led_mask[] = { + 0xFF, 0x00, /* C1-1 -> C1-16 */ + 0xFF, 0x00, /* C2-1 -> C2-16 */ + 0xFF, 0x00, /* C3-1 -> C3-16 */ + 0xFF, 0x00, /* C4-1 -> C4-16 */ + 0x3F, 0x00, /* C5-1 -> C5-16 */ + 0x00, 0x00, /* C6-1 -> C6-16 */ + 0x00, 0x00, /* C7-1 -> C7-16 */ + 0x00, 0x00, /* C8-1 -> C8-16 */ + 0x00, 0x00, /* C9-1 -> C9-16 */ +}; + +// The address of the LED +#define LA(c, r) (c + r * 16 ) +// Need to be an address that is not mapped, but inside the range of the controller matrix +#define NA LA(8, 8) + +// The numbers in the comments are the led numbers DXX on the PCB +// The mapping is taken from the schematic of left hand side +static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = { +// 45 44 43 42 41 40 39 + { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)}, +// 52 51 50 49 48 47 46 + { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) }, +// 58 57 56 55 54 53 N/A + { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA }, +// 67 66 65 64 63 62 61 + { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) }, +// 76 75 74 73 72 60 59 + { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) }, +// N/A N/A N/A N/A N/A N/A 68 + { NA, NA, NA, NA, NA, NA, LA(5, 4) }, +// N/A N/A N/A N/A 71 70 69 + { NA, NA, NA, NA, LA(6, 2), LA(6, 1), LA(6, 0) }, +}; + + +#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND +#define IS31_TIMEOUT 5000 + +static GFXINLINE void init_board(GDisplay *g) { + (void) g; + /* I2C pins */ + palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL + palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA + palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); + palClearPad(GPIOB, 16); + /* start I2C */ + i2cStart(&I2CD1, &i2ccfg); + // try high drive (from kiibohd) + I2CD1.i2c->C2 |= I2Cx_C2_HDRS; + // try glitch fixing (from kiibohd) + I2CD1.i2c->FLT = 4; +} + +static GFXINLINE void post_init_board(GDisplay *g) { + (void) g; +} + +static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) { + (void) g; + return led_mask; +} + +static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y) +{ + (void) g; + return led_mapping[y][x]; +} + +static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) { + (void) g; + if(!shutdown) { + palSetPad(GPIOB, 16); + } + else { + palClearPad(GPIOB, 16); + } +} + +static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) { + (void) g; + i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT)); +} + +#endif /* _GDISP_LLD_BOARD_H */ diff --git a/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/driver.mk b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/driver.mk new file mode 100644 index 0000000000..f32d0d8685 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/driver.mk @@ -0,0 +1,2 @@ +GFXINC += drivers/gdisp/IS31FL3731C +GFXSRC += drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c diff --git a/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c new file mode 100644 index 0000000000..1d21f0c498 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c @@ -0,0 +1,333 @@ +/* +Copyright 2016 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 "gfx.h" + +#if GFX_USE_GDISP + +#define GDISP_DRIVER_VMT GDISPVMT_IS31FL3731C_ERGODOX +#include "drivers/gdisp/IS31FL3731C/gdisp_lld_config.h" +#include "src/gdisp/gdisp_driver.h" + +#include "board_IS31FL3731C.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +#ifndef GDISP_SCREEN_HEIGHT + #define GDISP_SCREEN_HEIGHT 9 +#endif +#ifndef GDISP_SCREEN_WIDTH + #define GDISP_SCREEN_WIDTH 16 +#endif +#ifndef GDISP_INITIAL_CONTRAST + #define GDISP_INITIAL_CONTRAST 0 +#endif +#ifndef GDISP_INITIAL_BACKLIGHT + #define GDISP_INITIAL_BACKLIGHT 100 +#endif + +#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) + +#define IS31_ADDR_DEFAULT 0x74 + +#define IS31_REG_CONFIG 0x00 +// bits in reg +#define IS31_REG_CONFIG_PICTUREMODE 0x00 +#define IS31_REG_CONFIG_AUTOPLAYMODE 0x08 +#define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18 +// D2:D0 bits are starting frame for autoplay mode + +#define IS31_REG_PICTDISP 0x01 // D2:D0 frame select for picture mode + +#define IS31_REG_AUTOPLAYCTRL1 0x02 +// D6:D4 number of loops (000=infty) +// D2:D0 number of frames to be used + +#define IS31_REG_AUTOPLAYCTRL2 0x03 // D5:D0 delay time (*11ms) + +#define IS31_REG_DISPLAYOPT 0x05 +#define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames +#define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8 +// D2:D0 bits blink period time (*0.27s) + +#define IS31_REG_AUDIOSYNC 0x06 +#define IS31_REG_AUDIOSYNC_ENABLE 0x1 + +#define IS31_REG_FRAMESTATE 0x07 + +#define IS31_REG_BREATHCTRL1 0x08 +// D6:D4 fade out time (26ms*2^i) +// D2:D0 fade in time (26ms*2^i) + +#define IS31_REG_BREATHCTRL2 0x09 +#define IS31_REG_BREATHCTRL2_ENABLE 0x10 +// D2:D0 extinguish time (3.5ms*2^i) + +#define IS31_REG_SHUTDOWN 0x0A +#define IS31_REG_SHUTDOWN_OFF 0x0 +#define IS31_REG_SHUTDOWN_ON 0x1 + +#define IS31_REG_AGCCTRL 0x0B +#define IS31_REG_ADCRATE 0x0C + +#define IS31_COMMANDREGISTER 0xFD +#define IS31_FUNCTIONREG 0x0B // helpfully called 'page nine' +#define IS31_FUNCTIONREG_SIZE 0xD + +#define IS31_FRAME_SIZE 0xB4 + +#define IS31_PWM_REG 0x24 +#define IS31_PWM_SIZE 0x90 + +#define IS31_LED_MASK_SIZE 0x12 +#define IS31_SCREEN_WIDTH 16 + +#define IS31 + +//Generated by http://jared.geek.nz/2013/feb/linear-led-pwm +const unsigned char cie[256] = { + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, + 7, 8, 8, 8, 8, 9, 9, 9, 10, 10, + 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, + 13, 14, 14, 15, 15, 15, 16, 16, 17, 17, + 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, + 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, + 28, 28, 29, 29, 30, 31, 31, 32, 32, 33, + 34, 34, 35, 36, 37, 37, 38, 39, 39, 40, + 41, 42, 43, 43, 44, 45, 46, 47, 47, 48, + 49, 50, 51, 52, 53, 54, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 70, 71, 72, 73, 74, 75, 76, 77, 79, + 80, 81, 82, 83, 85, 86, 87, 88, 90, 91, + 92, 94, 95, 96, 98, 99, 100, 102, 103, 105, + 106, 108, 109, 110, 112, 113, 115, 116, 118, 120, + 121, 123, 124, 126, 128, 129, 131, 132, 134, 136, + 138, 139, 141, 143, 145, 146, 148, 150, 152, 154, + 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, + 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, + 196, 198, 200, 202, 204, 207, 209, 211, 214, 216, + 218, 220, 223, 225, 228, 230, 232, 235, 237, 240, + 242, 245, 247, 250, 252, 255, +}; + + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +typedef struct{ + uint8_t write_buffer_offset; + uint8_t write_buffer[IS31_FRAME_SIZE]; + uint8_t frame_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH]; + uint8_t page; +}__attribute__((__packed__)) PrivData; + +// Some common routines and macros +#define PRIV(g) ((PrivData*)g->priv) + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +static GFXINLINE void write_page(GDisplay* g, uint8_t page) { + uint8_t tx[2] __attribute__((aligned(2))); + tx[0] = IS31_COMMANDREGISTER; + tx[1] = page; + write_data(g, tx, 2); +} + +static GFXINLINE void write_register(GDisplay* g, uint8_t page, uint8_t reg, uint8_t data) { + uint8_t tx[2] __attribute__((aligned(2))); + tx[0] = reg; + tx[1] = data; + write_page(g, page); + write_data(g, tx, 2); +} + +static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint16_t length) { + PRIV(g)->write_buffer_offset = offset; + write_page(g, page); + write_data(g, (uint8_t*)PRIV(g), length + 1); +} + +LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { + // The private area is the display surface. + g->priv = gfxAlloc(sizeof(PrivData)); + __builtin_memset(PRIV(g), 0, sizeof(PrivData)); + PRIV(g)->page = 0; + + // Initialise the board interface + init_board(g); + gfxSleepMilliseconds(10); + + // zero function page, all registers (assuming full_page is all zeroes) + write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE); + set_hardware_shutdown(g, false); + gfxSleepMilliseconds(10); + // software shutdown + write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF); + gfxSleepMilliseconds(10); + // zero function page, all registers + write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE); + gfxSleepMilliseconds(10); + + + // zero all LED registers on all 8 pages, and enable the mask + __builtin_memcpy(PRIV(g)->write_buffer, get_led_mask(g), IS31_LED_MASK_SIZE); + for(uint8_t i=0; i<8; i++) { + write_ram(g, i, 0, IS31_FRAME_SIZE); + gfxSleepMilliseconds(1); + } + + // software shutdown disable (i.e. turn stuff on) + write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON); + gfxSleepMilliseconds(10); + + // Finish Init + post_init_board(g); + + /* Initialise the GDISP structure */ + g->g.Width = GDISP_SCREEN_WIDTH; + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Orientation = GDISP_ROTATE_0; + g->g.Powermode = powerOn; + g->g.Backlight = GDISP_INITIAL_BACKLIGHT; + g->g.Contrast = GDISP_INITIAL_CONTRAST; + return TRUE; +} + +#if GDISP_HARDWARE_FLUSH + LLDSPEC void gdisp_lld_flush(GDisplay *g) { + // Don't flush if we don't need it. + if (!(g->flags & GDISP_FLG_NEEDFLUSH)) + return; + + PRIV(g)->page++; + PRIV(g)->page %= 2; + // TODO: some smarter algorithm for this + // We should run only one physical page at a time + // This way we don't need to send so much data, and + // we could use slightly less memory + uint8_t* src = PRIV(g)->frame_buffer; + for (int y=0;ywrite_buffer[get_led_address(g, x, y)]=cie[*src]; + ++src; + } + } + write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE); + gfxSleepMilliseconds(1); + write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page); + + g->flags &= ~GDISP_FLG_NEEDFLUSH; + } +#endif + +#if GDISP_HARDWARE_DRAWPIXEL + LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) { + coord_t x, y; + + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + x = g->p.x; + y = g->p.y; + break; + case GDISP_ROTATE_180: + x = GDISP_SCREEN_WIDTH-1 - g->p.x; + y = g->p.y; + break; + } + PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color); + g->flags |= GDISP_FLG_NEEDFLUSH; + } +#endif + +#if GDISP_HARDWARE_PIXELREAD + LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) { + coord_t x, y; + + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + x = g->p.x; + y = g->p.y; + break; + case GDISP_ROTATE_180: + x = GDISP_SCREEN_WIDTH-1 - g->p.x; + y = g->p.y; + break; + } + return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]); + } +#endif + +#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL + LLDSPEC void gdisp_lld_control(GDisplay *g) { + switch(g->p.x) { + case GDISP_CONTROL_POWER: + if (g->g.Powermode == (powermode_t)g->p.ptr) + return; + switch((powermode_t)g->p.ptr) { + case powerOff: + case powerSleep: + case powerDeepSleep: + write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF); + break; + case powerOn: + write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON); + break; + default: + return; + } + g->g.Powermode = (powermode_t)g->p.ptr; + return; + + case GDISP_CONTROL_ORIENTATION: + if (g->g.Orientation == (orientation_t)g->p.ptr) + return; + switch((orientation_t)g->p.ptr) { + /* Rotation is handled by the drawing routines */ + case GDISP_ROTATE_0: + case GDISP_ROTATE_180: + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + case GDISP_ROTATE_90: + case GDISP_ROTATE_270: + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + default: + return; + } + g->g.Orientation = (orientation_t)g->p.ptr; + return; + + case GDISP_CONTROL_CONTRAST: + return; + } + } +#endif // GDISP_NEED_CONTROL + +#endif // GFX_USE_GDISP diff --git a/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h new file mode 100644 index 0000000000..bb28ad775e --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h @@ -0,0 +1,36 @@ +/* +Copyright 2016 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 _GDISP_LLD_CONFIG_H +#define _GDISP_LLD_CONFIG_H + +#if GFX_USE_GDISP + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing +#define GDISP_HARDWARE_DRAWPIXEL TRUE +#define GDISP_HARDWARE_PIXELREAD TRUE +#define GDISP_HARDWARE_CONTROL TRUE + +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256 + +#endif /* GFX_USE_GDISP */ + +#endif /* _GDISP_LLD_CONFIG_H */ diff --git a/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/driver.mk b/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/driver.mk new file mode 100644 index 0000000000..16c3f80f53 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/driver.mk @@ -0,0 +1,2 @@ +GFXINC += drivers/gdisp/emulator_lcd +GFXSRC += drivers/gdisp/emulator_lcd/emulator_lcd.c diff --git a/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/emulator_lcd.c b/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/emulator_lcd.c new file mode 100644 index 0000000000..babfe2b367 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/emulator_lcd.c @@ -0,0 +1,10 @@ +#define GDISP_DRIVER_VMT GDISPVMT_EMULATOR_LCD_ERGODOX +#define GDISP_HARDWARE_DRAWPIXEL TRUE +#define GDISP_HARDWARE_PIXELREAD TRUE +#define GDISP_HARDWARE_CONTROL TRUE +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO +#define GDISP_SCREEN_WIDTH 128 +#define GDISP_SCREEN_HEIGHT 32 +#define ROTATE_180_IS_FLIP + +#include "emulator/emulator_driver_impl.h" diff --git a/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/driver.mk b/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/driver.mk new file mode 100644 index 0000000000..2554344321 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/driver.mk @@ -0,0 +1,2 @@ +GFXINC += drivers/gdisp/emulator_led +GFXSRC += drivers/gdisp/emulator_led/emulator_led.c diff --git a/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/emulator_led.c b/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/emulator_led.c new file mode 100644 index 0000000000..b0ebcdc475 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/emulator_led/emulator_led.c @@ -0,0 +1,10 @@ +#define GDISP_DRIVER_VMT GDISPVMT_EMULATOR_LED_ERGODOX +#define GDISP_HARDWARE_DRAWPIXEL TRUE +#define GDISP_HARDWARE_PIXELREAD TRUE +#define GDISP_HARDWARE_CONTROL TRUE +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO +#define GDISP_SCREEN_WIDTH 7 +#define GDISP_SCREEN_HEIGHT 7 +#define ROTATE_180_IS_FLIP + +#include "emulator/emulator_driver_impl.h" diff --git a/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/board_ST7565.h b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/board_ST7565.h new file mode 100644 index 0000000000..290571ce5b --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/board_ST7565.h @@ -0,0 +1,127 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _GDISP_LLD_BOARD_H +#define _GDISP_LLD_BOARD_H + +#include "print.h" + +#define ST7565_LCD_BIAS ST7565_LCD_BIAS_9 // actually 6 +#define ST7565_ADC ST7565_ADC_NORMAL +#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC +#define ST7565_PAGE_ORDER 0,1,2,3 +/* + * Custom page order for several LCD boards, e.g. HEM12864-99 + * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3 + */ + +#define ST7565_GPIOPORT GPIOC +#define ST7565_PORT PORTC +#define ST7565_A0_PIN 7 +#define ST7565_RST_PIN 8 +#define ST7565_MOSI_PIN 6 +#define ST7565_SLCK_PIN 5 +#define ST7565_SS_PIN 4 + +#define palSetPadModeRaw(portname, bits) \ + ST7565_PORT->PCR[ST7565_##portname##_PIN] = bits + +#define palSetPadModeNamed(portname, portmode) \ + palSetPadMode(ST7565_GPIOPORT, ST7565_##portname##_PIN, portmode) + +#define ST7565_SPI_MODE PORTx_PCRn_DSE | PORTx_PCRn_MUX(2) +// DSPI Clock and Transfer Attributes +// Frame Size: 8 bits +// MSB First +// CLK Low by default +static const SPIConfig spi1config = { + NULL, + /* HW dependent part.*/ + ST7565_GPIOPORT, + ST7565_SS_PIN, + SPIx_CTARn_FMSZ(7) + | SPIx_CTARn_ASC(7) + | SPIx_CTARn_DT(7) + | SPIx_CTARn_CSSCK(7) + | SPIx_CTARn_PBR(0) + | SPIx_CTARn_BR(7) + //SPI_CR1_BR_0 +}; + +static bool_t st7565_is_data_mode = 1; + +static GFXINLINE void init_board(GDisplay *g) { + (void) g; + palSetPadModeNamed(A0, PAL_MODE_OUTPUT_PUSHPULL); + palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN); + st7565_is_data_mode = 1; + palSetPadModeNamed(RST, PAL_MODE_OUTPUT_PUSHPULL); + palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN); + palSetPadModeRaw(MOSI, ST7565_SPI_MODE); + palSetPadModeRaw(SLCK, ST7565_SPI_MODE); + palSetPadModeRaw(SS, ST7565_SPI_MODE); + + spiInit(); + spiStart(&SPID1, &spi1config); + spiSelect(&SPID1); +} + +static GFXINLINE void post_init_board(GDisplay *g) { + (void) g; +} + +static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) { + (void) g; + if (state) { + palClearPad(ST7565_GPIOPORT, ST7565_RST_PIN); + } + else { + palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN); + } +} + +static GFXINLINE void acquire_bus(GDisplay *g) { + (void) g; + // Only the LCD is using the SPI bus, so no need to acquire + // spiAcquireBus(&SPID1); +} + +static GFXINLINE void release_bus(GDisplay *g) { + (void) g; + // Only the LCD is using the SPI bus, so no need to release + //spiReleaseBus(&SPID1); +} + +static GFXINLINE void write_cmd(GDisplay *g, uint8_t cmd) { + (void) g; + if (st7565_is_data_mode) { + // The sleeps need to be at lest 10 vs 25 ns respectively + // So let's sleep two ticks, one tick might not be enough + // if we are at the end of the tick + chThdSleep(2); + palClearPad(ST7565_GPIOPORT, ST7565_A0_PIN); + chThdSleep(2); + st7565_is_data_mode = 0; + } + spiSend(&SPID1, 1, &cmd); +} + +static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) { + (void) g; + if (!st7565_is_data_mode) { + // The sleeps need to be at lest 10 vs 25 ns respectively + // So let's sleep two ticks, one tick might not be enough + // if we are at the end of the tick + chThdSleep(2); + palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN); + chThdSleep(2); + st7565_is_data_mode = 1; + } + spiSend(&SPID1, length, data); +} + +#endif /* _GDISP_LLD_BOARD_H */ diff --git a/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/driver.mk b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/driver.mk new file mode 100644 index 0000000000..889a1a0317 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/driver.mk @@ -0,0 +1,2 @@ +GFXINC += drivers/gdisp/st7565ergodox +GFXSRC += drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c diff --git a/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c new file mode 100644 index 0000000000..c33aea81a8 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c @@ -0,0 +1,292 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#include "gfx.h" + +#if GFX_USE_GDISP + +#define GDISP_DRIVER_VMT GDISPVMT_ST7565_ERGODOX +#include "drivers/gdisp/st7565ergodox/gdisp_lld_config.h" +#include "src/gdisp/gdisp_driver.h" + +#include "board_ST7565.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +#ifndef GDISP_SCREEN_HEIGHT + #define GDISP_SCREEN_HEIGHT 32 +#endif +#ifndef GDISP_SCREEN_WIDTH + #define GDISP_SCREEN_WIDTH 128 +#endif +#ifndef GDISP_INITIAL_CONTRAST + #define GDISP_INITIAL_CONTRAST 0 +#endif +#ifndef GDISP_INITIAL_BACKLIGHT + #define GDISP_INITIAL_BACKLIGHT 100 +#endif + +#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) + +#include "drivers/gdisp/st7565ergodox/st7565.h" + +/*===========================================================================*/ +/* Driver config defaults for backward compatibility. */ +/*===========================================================================*/ +#ifndef ST7565_LCD_BIAS + #define ST7565_LCD_BIAS ST7565_LCD_BIAS_7 +#endif +#ifndef ST7565_ADC + #define ST7565_ADC ST7565_ADC_NORMAL +#endif +#ifndef ST7565_COM_SCAN + #define ST7565_COM_SCAN ST7565_COM_SCAN_INC +#endif +#ifndef ST7565_PAGE_ORDER + #define ST7565_PAGE_ORDER 0,1,2,3 +#endif + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +typedef struct{ + bool_t buffer2; + uint8_t ram[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8]; +}PrivData; + +// Some common routines and macros +#define PRIV(g) ((PrivData*)g->priv) +#define RAM(g) (PRIV(g)->ram) +#define write_cmd2(g, cmd1, cmd2) { write_cmd(g, cmd1); write_cmd(g, cmd2); } +#define write_cmd3(g, cmd1, cmd2, cmd3) { write_cmd(g, cmd1); write_cmd(g, cmd2); write_cmd(g, cmd3); } + +// Some common routines and macros +#define delay(us) gfxSleepMicroseconds(us) +#define delay_ms(ms) gfxSleepMilliseconds(ms) + +#define xyaddr(x, y) ((x) + ((y)>>3)*GDISP_SCREEN_WIDTH) +#define xybit(y) (1<<((y)&7)) + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/* + * As this controller can't update on a pixel boundary we need to maintain the + * the entire display surface in memory so that we can do the necessary bit + * operations. Fortunately it is a small display in monochrome. + * 64 * 128 / 8 = 1024 bytes. + */ + +LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { + // The private area is the display surface. + g->priv = gfxAlloc(sizeof(PrivData)); + PRIV(g)->buffer2 = false; + + // Initialise the board interface + init_board(g); + + // Hardware reset + setpin_reset(g, TRUE); + gfxSleepMilliseconds(20); + setpin_reset(g, FALSE); + gfxSleepMilliseconds(20); + + acquire_bus(g); + write_cmd(g, ST7565_DISPLAY_OFF); + write_cmd(g, ST7565_LCD_BIAS); + write_cmd(g, ST7565_ADC); + write_cmd(g, ST7565_COM_SCAN); + + write_cmd(g, ST7565_START_LINE | 0); + + write_cmd(g, ST7565_RESISTOR_RATIO | 0x6); + + // turn on voltage converter (VC=1, VR=0, VF=0) + write_cmd(g, ST7565_POWER_CONTROL | 0x04); + delay_ms(50); + + // turn on voltage regulator (VC=1, VR=1, VF=0) + write_cmd(g, ST7565_POWER_CONTROL | 0x06); + delay_ms(50); + + // turn on voltage follower (VC=1, VR=1, VF=1) + write_cmd(g, ST7565_POWER_CONTROL | 0x07); + delay_ms(50); + + write_cmd(g, 0xE2); + write_cmd(g, ST7565_COM_SCAN); + write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST*64/101); + //write_cmd2(g, ST7565_CONTRAST, 0); + write_cmd(g, ST7565_DISPLAY_ON); + write_cmd(g, ST7565_ALLON_NORMAL); + write_cmd(g, ST7565_INVERT_DISPLAY); + + write_cmd(g, ST7565_RMW); + + // Finish Init + post_init_board(g); + + // Release the bus + release_bus(g); + + /* Initialise the GDISP structure */ + g->g.Width = GDISP_SCREEN_WIDTH; + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Orientation = GDISP_ROTATE_0; + g->g.Powermode = powerOn; + g->g.Backlight = GDISP_INITIAL_BACKLIGHT; + g->g.Contrast = GDISP_INITIAL_CONTRAST; + return TRUE; +} + +#if GDISP_HARDWARE_FLUSH + LLDSPEC void gdisp_lld_flush(GDisplay *g) { + unsigned p; + + // Don't flush if we don't need it. + if (!(g->flags & GDISP_FLG_NEEDFLUSH)) + return; + + acquire_bus(g); + unsigned dstOffset = (PRIV(g)->buffer2 ? 4 : 0); + for (p = 0; p < 4; p++) { + write_cmd(g, ST7565_PAGE | (p + dstOffset)); + write_cmd(g, ST7565_COLUMN_MSB | 0); + write_cmd(g, ST7565_COLUMN_LSB | 0); + write_cmd(g, ST7565_RMW); + write_data(g, RAM(g) + (p*GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH); + } + unsigned line = (PRIV(g)->buffer2 ? 32 : 0); + write_cmd(g, ST7565_START_LINE | line); + PRIV(g)->buffer2 = !PRIV(g)->buffer2; + release_bus(g); + + g->flags &= ~GDISP_FLG_NEEDFLUSH; + } +#endif + +#if GDISP_HARDWARE_DRAWPIXEL + LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) { + coord_t x, y; + + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + x = g->p.x; + y = g->p.y; + break; + case GDISP_ROTATE_90: + x = g->p.y; + y = GDISP_SCREEN_HEIGHT-1 - g->p.x; + break; + case GDISP_ROTATE_180: + x = GDISP_SCREEN_WIDTH-1 - g->p.x; + y = GDISP_SCREEN_HEIGHT-1 - g->p.y; + break; + case GDISP_ROTATE_270: + x = GDISP_SCREEN_HEIGHT-1 - g->p.y; + y = g->p.x; + break; + } + if (gdispColor2Native(g->p.color) != Black) + RAM(g)[xyaddr(x, y)] |= xybit(y); + else + RAM(g)[xyaddr(x, y)] &= ~xybit(y); + g->flags |= GDISP_FLG_NEEDFLUSH; + } +#endif + +#if GDISP_HARDWARE_PIXELREAD + LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) { + coord_t x, y; + + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + x = g->p.x; + y = g->p.y; + break; + case GDISP_ROTATE_90: + x = g->p.y; + y = GDISP_SCREEN_HEIGHT-1 - g->p.x; + break; + case GDISP_ROTATE_180: + x = GDISP_SCREEN_WIDTH-1 - g->p.x; + y = GDISP_SCREEN_HEIGHT-1 - g->p.y; + break; + case GDISP_ROTATE_270: + x = GDISP_SCREEN_HEIGHT-1 - g->p.y; + y = g->p.x; + break; + } + return (RAM(g)[xyaddr(x, y)] & xybit(y)) ? White : Black; + } +#endif + +#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL + LLDSPEC void gdisp_lld_control(GDisplay *g) { + switch(g->p.x) { + case GDISP_CONTROL_POWER: + if (g->g.Powermode == (powermode_t)g->p.ptr) + return; + switch((powermode_t)g->p.ptr) { + case powerOff: + case powerSleep: + case powerDeepSleep: + acquire_bus(g); + write_cmd(g, ST7565_DISPLAY_OFF); + release_bus(g); + break; + case powerOn: + acquire_bus(g); + write_cmd(g, ST7565_DISPLAY_ON); + release_bus(g); + break; + default: + return; + } + g->g.Powermode = (powermode_t)g->p.ptr; + return; + + case GDISP_CONTROL_ORIENTATION: + if (g->g.Orientation == (orientation_t)g->p.ptr) + return; + switch((orientation_t)g->p.ptr) { + /* Rotation is handled by the drawing routines */ + case GDISP_ROTATE_0: + case GDISP_ROTATE_180: + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + case GDISP_ROTATE_90: + case GDISP_ROTATE_270: + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + default: + return; + } + g->g.Orientation = (orientation_t)g->p.ptr; + return; + + case GDISP_CONTROL_CONTRAST: + if ((unsigned)g->p.ptr > 100) + g->p.ptr = (void *)100; + acquire_bus(g); + write_cmd2(g, ST7565_CONTRAST, ((((unsigned)g->p.ptr)<<6)/101) & 0x3F); + release_bus(g); + g->g.Contrast = (unsigned)g->p.ptr; + return; + } + } +#endif // GDISP_NEED_CONTROL + +#endif // GFX_USE_GDISP diff --git a/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_config.h b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_config.h new file mode 100644 index 0000000000..48587b9e14 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_config.h @@ -0,0 +1,26 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _GDISP_LLD_CONFIG_H +#define _GDISP_LLD_CONFIG_H + +#if GFX_USE_GDISP + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing +#define GDISP_HARDWARE_DRAWPIXEL TRUE +#define GDISP_HARDWARE_PIXELREAD TRUE +#define GDISP_HARDWARE_CONTROL TRUE + +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO + +#endif /* GFX_USE_GDISP */ + +#endif /* _GDISP_LLD_CONFIG_H */ diff --git a/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/st7565.h b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/st7565.h new file mode 100644 index 0000000000..48636b33d6 --- /dev/null +++ b/keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/st7565.h @@ -0,0 +1,37 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _ST7565_H +#define _ST7565_H + +#define ST7565_CONTRAST 0x81 +#define ST7565_ALLON_NORMAL 0xA4 +#define ST7565_ALLON 0xA5 +#define ST7565_POSITIVE_DISPLAY 0xA6 +#define ST7565_INVERT_DISPLAY 0xA7 +#define ST7565_DISPLAY_OFF 0xAE +#define ST7565_DISPLAY_ON 0xAF + +#define ST7565_LCD_BIAS_7 0xA3 +#define ST7565_LCD_BIAS_9 0xA2 + +#define ST7565_ADC_NORMAL 0xA0 +#define ST7565_ADC_REVERSE 0xA1 + +#define ST7565_COM_SCAN_INC 0xC0 +#define ST7565_COM_SCAN_DEC 0xC8 + +#define ST7565_START_LINE 0x40 +#define ST7565_PAGE 0xB0 +#define ST7565_COLUMN_MSB 0x10 +#define ST7565_COLUMN_LSB 0x00 +#define ST7565_RMW 0xE0 + +#define ST7565_RESISTOR_RATIO 0x20 +#define ST7565_POWER_CONTROL 0x28 + +#endif /* _ST7565_H */ From 07d0d5cbe48d7afaf0bc8c9916d40179ec51cb42 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 12:46:10 +0300 Subject: [PATCH 06/37] Makefile fixes and update of Visualizer --- keyboards/infinity_ergodox/Makefile | 9 +++++++++ quantum/visualizer/led_test.c | 4 ++-- quantum/visualizer/visualizer.mk | 8 +++----- tmk_core/common/keyboard.c | 8 ++++++++ tmk_core/protocol/chibios/main.c | 7 +++++++ 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/keyboards/infinity_ergodox/Makefile b/keyboards/infinity_ergodox/Makefile index 8be2f51b1f..7edc03d8cc 100644 --- a/keyboards/infinity_ergodox/Makefile +++ b/keyboards/infinity_ergodox/Makefile @@ -69,8 +69,17 @@ CUSTOM_MATRIX ?= yes # Custom matrix file SERIAL_LINK_ENABLE = yes VISUALIZER_ENABLE ?= yes LCD_ENABLE ?= yes +LED_ENABLE ?= yes LCD_BACKLIGHT_ENABLE ?= yes +ifdef LCD_ENABLE +include drivers/gdisp/st7565ergodox/driver.mk +endif + +ifdef LED_ENABLE +include drivers/gdisp/IS31FL3731C/driver.mk +endif + ifndef QUANTUM_DIR include ../../Makefile endif \ No newline at end of file diff --git a/quantum/visualizer/led_test.c b/quantum/visualizer/led_test.c index c2ea30b55b..a9abace8df 100644 --- a/quantum/visualizer/led_test.c +++ b/quantum/visualizer/led_test.c @@ -89,8 +89,8 @@ static uint8_t crossfade_start_frame[NUM_ROWS][NUM_COLS]; static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS]; static uint8_t compute_gradient_color(float t, float index, float num) { - const float two_pi = 2.0f * PI; - float normalized_index = (1.0f - index / (num - 1)) * two_pi; + const float two_pi = M_2_PI; + float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi; float x = t * two_pi + normalized_index; float v = 0.5 * (cosf(x) + 1.0f); return (uint8_t)(255.0f * v); diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk index b5dfad8e1a..149968de72 100644 --- a/quantum/visualizer/visualizer.mk +++ b/quantum/visualizer/visualizer.mk @@ -25,6 +25,8 @@ EXTRAINCDIRS += $(GFXINC) $(VISUALIZER_DIR) GFXLIB = $(LIB_PATH)/ugfx VPATH += $(VISUALIZER_PATH) +OPT_DEFS += -DVISUALIZER_ENABLE + ifdef LCD_ENABLE OPT_DEFS += -DLCD_ENABLE ULIBS += -lm @@ -44,12 +46,8 @@ UDEFS += -DLED_ENABLE endif include $(GFXLIB)/gfx.mk -#SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) -#SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) -#SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) -#SRC += $(GFXSRC) +SRC += $(patsubst $(TOP_DIR)/%,%,$(GFXSRC)) OPT_DEFS += $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS))) -#ULIBS += $(patsubst %,-l%,$(patsubst -l%,%,$(GFXLIBS))) ifndef VISUALIZER_USER VISUALIZER_USER = visualizer_user.c diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 3a1262a9f9..c46a701b3b 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -29,6 +29,7 @@ along with this program. If not, see . #include "sendchar.h" #include "eeconfig.h" #include "backlight.h" +#include "action_layer.h" #ifdef BOOTMAGIC_ENABLE # include "bootmagic.h" #else @@ -52,6 +53,9 @@ along with this program. If not, see . #ifdef SERIAL_LINK_ENABLE # include "serial_link/system/serial_link.h" #endif +#ifdef VISUALIZER_ENABLE +# include "visualizer/visualizer.h" +#endif #ifdef MATRIX_HAS_GHOST static bool has_ghost_in_row(uint8_t row) @@ -181,6 +185,10 @@ MATRIX_LOOP_END: serial_link_update(); #endif +#ifdef VISUALIZER_ENABLE + visualizer_update(default_layer_state, layer_state, host_keyboard_leds()); +#endif + // update LED if (led_status != host_keyboard_leds()) { led_status = host_keyboard_leds(); diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c index aeb11752f4..6bf9c16681 100644 --- a/tmk_core/protocol/chibios/main.c +++ b/tmk_core/protocol/chibios/main.c @@ -38,6 +38,9 @@ #ifdef SERIAL_LINK_ENABLE #include "serial_link/system/serial_link.h" #endif +#ifdef VISUALIZER_ENABLE +#include "visualizer/visualizer.h" +#endif #include "suspend.h" @@ -101,6 +104,10 @@ int main(void) { /* init printf */ init_printf(NULL,sendchar_pf); +#ifdef VISUALIZER_ENABLE + visualizer_init(); +#endif + #ifdef SERIAL_LINK_ENABLE init_serial_link(); #endif From 7229751ba9d402b2a6c9dc1b7b29385b5162fe41 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 14:01:20 +0300 Subject: [PATCH 07/37] Fix visualizer crash at startup Visualizer and serial link initialized in the wrong order. The LED_ENABLED define wasn't set properly uGfx is always initialized --- quantum/visualizer/visualizer.c | 2 -- quantum/visualizer/visualizer.mk | 2 +- tmk_core/protocol/chibios/main.c | 7 ++++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c index abca22d85f..dfa2ff4eea 100644 --- a/quantum/visualizer/visualizer.c +++ b/quantum/visualizer/visualizer.c @@ -456,9 +456,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) { } void visualizer_init(void) { -#ifdef LCD_ENABLE gfxInit(); -#endif #ifdef LCD_BACKLIGHT_ENABLE lcd_backlight_init(); diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk index 149968de72..379496fb66 100644 --- a/quantum/visualizer/visualizer.mk +++ b/quantum/visualizer/visualizer.mk @@ -42,7 +42,7 @@ endif ifdef LED_ENABLE SRC += $(VISUALIZER_DIR)/led_test.c -UDEFS += -DLED_ENABLE +OPT_DEFS += -DLED_ENABLE endif include $(GFXLIB)/gfx.mk diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c index 6bf9c16681..36fd45d458 100644 --- a/tmk_core/protocol/chibios/main.c +++ b/tmk_core/protocol/chibios/main.c @@ -104,13 +104,14 @@ int main(void) { /* init printf */ init_printf(NULL,sendchar_pf); +#ifdef SERIAL_LINK_ENABLE + init_serial_link(); +#endif + #ifdef VISUALIZER_ENABLE visualizer_init(); #endif -#ifdef SERIAL_LINK_ENABLE - init_serial_link(); -#endif host_driver_t* driver = NULL; From dae7c9bfb3325412c542fbbe4342c9c8e0fc1904 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 14:12:56 +0300 Subject: [PATCH 08/37] Fix the SERIAL_LINK_ENABLE macro in Visualizer Rename from USE_SERIAL_LINK -> SERIAL_LINK_ENABLE --- quantum/visualizer/visualizer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c index dfa2ff4eea..54f6faaa42 100644 --- a/quantum/visualizer/visualizer.c +++ b/quantum/visualizer/visualizer.c @@ -43,7 +43,7 @@ SOFTWARE. #include "nodebug.h" #endif -#ifdef USE_SERIAL_LINK +#ifdef SERIAL_LINK_ENABLE #include "serial_link/protocol/transport.h" #include "serial_link/system/serial_link.h" #endif @@ -73,7 +73,7 @@ static bool visualizer_enabled = false; #define MAX_SIMULTANEOUS_ANIMATIONS 4 static keyframe_animation_t* animations[MAX_SIMULTANEOUS_ANIMATIONS] = {}; -#ifdef USE_SERIAL_LINK +#ifdef SERIAL_LINK_ENABLE MASTER_TO_ALL_SLAVES_OBJECT(current_status, visualizer_keyboard_status_t); static remote_object_t* remote_objects[] = { @@ -462,7 +462,7 @@ void visualizer_init(void) { lcd_backlight_init(); #endif -#ifdef USE_SERIAL_LINK +#ifdef SERIAL_LINK_ENABLE add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t*) ); #endif @@ -486,7 +486,7 @@ void update_status(bool changed) { geventSendEvent(listener); } } -#ifdef USE_SERIAL_LINK +#ifdef SERIAL_LINK_ENABLE static systime_t last_update = 0; systime_t current_update = chVTGetSystemTimeX(); systime_t delta = current_update - last_update; @@ -506,7 +506,7 @@ void visualizer_update(uint32_t default_state, uint32_t state, uint32_t leds) { // Alternatively a mutex could be used instead of the volatile variables bool changed = false; -#ifdef USE_SERIAL_LINK +#ifdef SERIAL_LINK_ENABLE if (is_serial_link_connected ()) { visualizer_keyboard_status_t* new_status = read_current_status(); if (new_status) { From bcbd8f1c50c6bc6169fe8afadafd6a21e182fa1f Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 14:22:45 +0300 Subject: [PATCH 09/37] Add suspend support to the ChibiOS visualizer --- tmk_core/protocol/chibios/main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c index 36fd45d458..b0eb9aef81 100644 --- a/tmk_core/protocol/chibios/main.c +++ b/tmk_core/protocol/chibios/main.c @@ -155,6 +155,9 @@ int main(void) { if(USB_DRIVER.state == USB_SUSPENDED) { print("[s]"); +#ifdef VISUALIZER_ENABLE + visualizer_suspend(); +#endif while(USB_DRIVER.state == USB_SUSPENDED) { /* Do this in the suspended state */ #ifdef SERIAL_LINK_ENABLE @@ -172,6 +175,10 @@ int main(void) { #ifdef MOUSEKEY_ENABLE mousekey_send(); #endif /* MOUSEKEY_ENABLE */ + +#ifdef VISUALIZER_ENABLE + visualizer_resume(); +#endif } keyboard_task(); From aaac254ebce2005272e7385488b5690bbbe6d7c8 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 14:29:53 +0300 Subject: [PATCH 10/37] Delete lcd_backlight_hal.c The functionality can now be found in the infinity_erogodox.c file instead. --- keyboards/infinity_ergodox/infinity_ergodox.c | 65 ++++++++++++++ .../infinity_ergodox/lcd_backlight_hal.c | 84 ------------------- quantum/visualizer/visualizer.mk | 3 - 3 files changed, 65 insertions(+), 87 deletions(-) delete mode 100644 keyboards/infinity_ergodox/lcd_backlight_hal.c diff --git a/keyboards/infinity_ergodox/infinity_ergodox.c b/keyboards/infinity_ergodox/infinity_ergodox.c index 85054775e8..87ed40fabf 100644 --- a/keyboards/infinity_ergodox/infinity_ergodox.c +++ b/keyboards/infinity_ergodox/infinity_ergodox.c @@ -2,6 +2,7 @@ #include "ch.h" #include "hal.h" #include "serial_link/system/serial_link.h" +#include "lcd_backlight.h" void init_serial_link_hal(void) { PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2); @@ -9,3 +10,67 @@ void init_serial_link_hal(void) { PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3); PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3); } + +#define RED_PIN 1 +#define GREEN_PIN 2 +#define BLUE_PIN 3 +#define CHANNEL_RED FTM0->CHANNEL[0] +#define CHANNEL_GREEN FTM0->CHANNEL[1] +#define CHANNEL_BLUE FTM0->CHANNEL[2] + +#define RGB_PORT PORTC +#define RGB_PORT_GPIO GPIOC + +// Base FTM clock selection (72 MHz system clock) +// @ 0xFFFF period, 72 MHz / (0xFFFF * 2) = Actual period +// Higher pre-scalar will use the most power (also look the best) +// Pre-scalar calculations +// 0 - 72 MHz -> 549 Hz +// 1 - 36 MHz -> 275 Hz +// 2 - 18 MHz -> 137 Hz +// 3 - 9 MHz -> 69 Hz (Slightly visible flicker) +// 4 - 4 500 kHz -> 34 Hz (Visible flickering) +// 5 - 2 250 kHz -> 17 Hz +// 6 - 1 125 kHz -> 9 Hz +// 7 - 562 500 Hz -> 4 Hz +// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced +// Which will reduce the brightness range +#define PRESCALAR_DEFINE 0 + +void lcd_backlight_hal_init(void) { + // Setup Backlight + SIM->SCGC6 |= SIM_SCGC6_FTM0; + FTM0->CNT = 0; // Reset counter + + // PWM Period + // 16-bit maximum + FTM0->MOD = 0xFFFF; + + // Set FTM to PWM output - Edge Aligned, Low-true pulses +#define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0) + CHANNEL_RED.CnSC = CNSC_MODE; + CHANNEL_GREEN.CnSC = CNSC_MODE; + CHANNEL_BLUE.CnSC = CNSC_MODE; + + // System clock, /w prescalar setting + FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE); + + CHANNEL_RED.CnV = 0; + CHANNEL_GREEN.CnV = 0; + CHANNEL_BLUE.CnV = 0; + + RGB_PORT_GPIO->PDDR |= (1 << RED_PIN); + RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN); + RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN); + +#define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4) + RGB_PORT->PCR[RED_PIN] = RGB_MODE; + RGB_PORT->PCR[GREEN_PIN] = RGB_MODE; + RGB_PORT->PCR[BLUE_PIN] = RGB_MODE; +} + +void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) { + CHANNEL_RED.CnV = r; + CHANNEL_GREEN.CnV = g; + CHANNEL_BLUE.CnV = b; +} diff --git a/keyboards/infinity_ergodox/lcd_backlight_hal.c b/keyboards/infinity_ergodox/lcd_backlight_hal.c deleted file mode 100644 index 05fc810b4b..0000000000 --- a/keyboards/infinity_ergodox/lcd_backlight_hal.c +++ /dev/null @@ -1,84 +0,0 @@ -/* -Copyright 2016 Fred Sundvik -Jun Wako - -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 "lcd_backlight.h" -#include "hal.h" - -#define RED_PIN 1 -#define GREEN_PIN 2 -#define BLUE_PIN 3 -#define CHANNEL_RED FTM0->CHANNEL[0] -#define CHANNEL_GREEN FTM0->CHANNEL[1] -#define CHANNEL_BLUE FTM0->CHANNEL[2] - -#define RGB_PORT PORTC -#define RGB_PORT_GPIO GPIOC - -// Base FTM clock selection (72 MHz system clock) -// @ 0xFFFF period, 72 MHz / (0xFFFF * 2) = Actual period -// Higher pre-scalar will use the most power (also look the best) -// Pre-scalar calculations -// 0 - 72 MHz -> 549 Hz -// 1 - 36 MHz -> 275 Hz -// 2 - 18 MHz -> 137 Hz -// 3 - 9 MHz -> 69 Hz (Slightly visible flicker) -// 4 - 4 500 kHz -> 34 Hz (Visible flickering) -// 5 - 2 250 kHz -> 17 Hz -// 6 - 1 125 kHz -> 9 Hz -// 7 - 562 500 Hz -> 4 Hz -// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced -// Which will reduce the brightness range -#define PRESCALAR_DEFINE 0 - -void lcd_backlight_hal_init(void) { - // Setup Backlight - SIM->SCGC6 |= SIM_SCGC6_FTM0; - FTM0->CNT = 0; // Reset counter - - // PWM Period - // 16-bit maximum - FTM0->MOD = 0xFFFF; - - // Set FTM to PWM output - Edge Aligned, Low-true pulses -#define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0) - CHANNEL_RED.CnSC = CNSC_MODE; - CHANNEL_GREEN.CnSC = CNSC_MODE; - CHANNEL_BLUE.CnSC = CNSC_MODE; - - // System clock, /w prescalar setting - FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE); - - CHANNEL_RED.CnV = 0; - CHANNEL_GREEN.CnV = 0; - CHANNEL_BLUE.CnV = 0; - - RGB_PORT_GPIO->PDDR |= (1 << RED_PIN); - RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN); - RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN); - -#define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4) - RGB_PORT->PCR[RED_PIN] = RGB_MODE; - RGB_PORT->PCR[GREEN_PIN] = RGB_MODE; - RGB_PORT->PCR[BLUE_PIN] = RGB_MODE; -} - -void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) { - CHANNEL_RED.CnV = r; - CHANNEL_GREEN.CnV = g; - CHANNEL_BLUE.CnV = b; -} - diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk index 379496fb66..449957d63f 100644 --- a/quantum/visualizer/visualizer.mk +++ b/quantum/visualizer/visualizer.mk @@ -34,9 +34,6 @@ endif ifdef LCD_BACKLIGHT_ENABLE SRC += $(VISUALIZER_DIR)/lcd_backlight.c -ifndef EMULATOR -SRC += lcd_backlight_hal.c -endif OPT_DEFS += -DLCD_BACKLIGHT_ENABLE endif From caedec92d2c22480313c43a364408fb920c55364 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 14:42:16 +0300 Subject: [PATCH 11/37] Move the visualizer_user file to keymap folder Also rename it to visualizer.c --- .../default/visualizer.c} | 0 quantum/visualizer/visualizer.mk | 11 ++++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) rename keyboards/infinity_ergodox/{visualizer_user.c => keymaps/default/visualizer.c} (100%) diff --git a/keyboards/infinity_ergodox/visualizer_user.c b/keyboards/infinity_ergodox/keymaps/default/visualizer.c similarity index 100% rename from keyboards/infinity_ergodox/visualizer_user.c rename to keyboards/infinity_ergodox/keymaps/default/visualizer.c diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk index 449957d63f..2f4a41d66f 100644 --- a/quantum/visualizer/visualizer.mk +++ b/quantum/visualizer/visualizer.mk @@ -46,10 +46,15 @@ include $(GFXLIB)/gfx.mk SRC += $(patsubst $(TOP_DIR)/%,%,$(GFXSRC)) OPT_DEFS += $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS))) -ifndef VISUALIZER_USER -VISUALIZER_USER = visualizer_user.c +ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","") + SRC += keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/visualizer.c +else + ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/visualizer.c)","") +$(error "$(KEYMAP_PATH)/visualizer.c" does not exist) + else + SRC += keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/visualizer.c + endif endif -SRC += $(VISUALIZER_USER) ifdef EMULATOR UINCDIR += $(TMK_DIR)/common From 589df84d6cd19ad7d776cc19bcddade1cd178ddc Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 7 Jul 2016 09:58:44 -0400 Subject: [PATCH 12/37] corrects quantum template --- quantum/template/template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/template/template.c b/quantum/template/template.c index dcc4b0a221..3057557eae 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -18,7 +18,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware - return process_action_user(record); + return process_record_user(record); } void led_set_kb(uint8_t usb_led) { From 57e08eb8badc5db2fb44d2df684f32ea48cce411 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 7 Jul 2016 11:33:32 -0400 Subject: [PATCH 13/37] updates rgblight implementation, makes non-timer stuff compatible with audio --- keyboards/clueboard/rev1/config.h | 5 +- keyboards/clueboard/rev2/config.h | 5 +- keyboards/cluepad/config.h | 13 ++-- keyboards/kc60/keymaps/ws2812/config.h | 5 +- keyboards/lets_split/config.h | 5 +- keyboards/phantom/config.h | 13 ++-- .../planck/keymaps/experimental/Makefile | 6 +- .../planck/keymaps/experimental/config.h | 8 ++ .../planck/keymaps/experimental/keymap.c | 73 ++++++++++++++++++- keyboards/planck/keymaps/pvc/config.h | 5 +- keyboards/planck/keymaps/yang/config.h | 5 +- keyboards/preonic/config.h | 5 +- keyboards/satan/config.h | 14 ++-- quantum/light_ws2812.c | 25 +++++-- quantum/rgblight.c | 23 +++++- quantum/rgblight.h | 7 +- readme.md | 17 ++--- 17 files changed, 160 insertions(+), 74 deletions(-) diff --git a/keyboards/clueboard/rev1/config.h b/keyboards/clueboard/rev1/config.h index 9bb58f56e8..8c94972324 100644 --- a/keyboards/clueboard/rev1/config.h +++ b/keyboards/clueboard/rev1/config.h @@ -25,9 +25,8 @@ /* Underlight configuration */ -#define ws2812_PORTREG PORTB -#define ws2812_DDRREG DDRB -#define ws2812_pin 2 +#define RGB_DI_PIN B2 +#define RGBLIGHT_TIMER #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/clueboard/rev2/config.h b/keyboards/clueboard/rev2/config.h index e2f8336beb..02982ff299 100644 --- a/keyboards/clueboard/rev2/config.h +++ b/keyboards/clueboard/rev2/config.h @@ -29,9 +29,8 @@ /* Underlight configuration */ -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin 7 +#define RGB_DI_PIN D7 +#define RGBLIGHT_TIMER #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/cluepad/config.h b/keyboards/cluepad/config.h index 0955e0f702..bae05fade3 100644 --- a/keyboards/cluepad/config.h +++ b/keyboards/cluepad/config.h @@ -69,13 +69,12 @@ along with this program. If not, see . /* Underlight configuration */ - #define ws2812_PORTREG PORTF - #define ws2812_DDRREG DDRF - #define ws2812_pin 6 - #define RGBLED_NUM 4 // Number of LEDs - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 +#define RGB_DI_PIN F6 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 4 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 /* * Feature disable options diff --git a/keyboards/kc60/keymaps/ws2812/config.h b/keyboards/kc60/keymaps/ws2812/config.h index 933bb0d2d1..2f39ea8e55 100644 --- a/keyboards/kc60/keymaps/ws2812/config.h +++ b/keyboards/kc60/keymaps/ws2812/config.h @@ -1,9 +1,8 @@ #include "../../config.h" /* WS2812B RGB Underglow LED */ -#define ws2812_PORTREG PORTF -#define ws2812_DDRREG DDRF -#define ws2812_pin PF5 // Based on wiring depicted in ws2812_wiring.jpg +#define RGB_DI_PIN F5 // Based on wiring depicted in ws2812_wiring.jpg +#define RGBLIGHT_TIMER #define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case. #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index 6f90997ab4..833818ce60 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -69,9 +69,8 @@ along with this program. If not, see . ) /* ws2812 RGB LED */ -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin PD1 +#define RGB_DI_PIN D2 +#define RGBLIGHT_TIMER #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/phantom/config.h b/keyboards/phantom/config.h index d5878766f0..983a1d73f2 100644 --- a/keyboards/phantom/config.h +++ b/keyboards/phantom/config.h @@ -62,13 +62,12 @@ along with this program. If not, see . /* Underlight configuration */ - #define ws2812_PORTREG PORTE - #define ws2812_DDRREG DDRE - #define ws2812_pin 2 - #define RGBLED_NUM 20 // Number of LEDs - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 +#define RGB_DI_PIN E2 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 20 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 /* * Feature disable options diff --git a/keyboards/planck/keymaps/experimental/Makefile b/keyboards/planck/keymaps/experimental/Makefile index 581e08cd02..877c4aed0e 100644 --- a/keyboards/planck/keymaps/experimental/Makefile +++ b/keyboards/planck/keymaps/experimental/Makefile @@ -10,12 +10,12 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h index 985e250ab5..52acd1905e 100644 --- a/keyboards/planck/keymaps/experimental/config.h +++ b/keyboards/planck/keymaps/experimental/config.h @@ -6,4 +6,12 @@ #define LEADER_TIMEOUT 300 #define BACKLIGHT_BREATHING + +/* ws2812 RGB LED */ +#define RGB_DI_PIN B1 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 + #endif diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c index 8ec335d7d2..d9303fcae5 100644 --- a/keyboards/planck/keymaps/experimental/keymap.c +++ b/keyboards/planck/keymaps/experimental/keymap.c @@ -15,7 +15,7 @@ extern keymap_config_t keymap_config; // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. -#define _QWERTY 0 +#define _QWERTY 10 #define _COLEMAK 1 #define _DVORAK 2 #define _LOWER 3 @@ -31,7 +31,15 @@ enum planck_keycodes { LOWER, RAISE, BACKLIT, - EXT_PLV + EXT_PLV, + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL, }; // Fillers to make layering more clear @@ -39,14 +47,20 @@ enum planck_keycodes { #define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { + {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, + {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, + {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, + {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL} +}, /* Qwerty - * ,-----------------------------------------------------------------------------------. + ,-----------------------------------------------------------------------------------. * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Esc | A | S | D | F | G | H | J | K | L | ; | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * | Shift| Z | X | C | V | B | N | M |, | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' @@ -292,6 +306,57 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; return false; + case RGBLED_TOGGLE: + //led operations + if (record->event.pressed) { + rgblight_toggle(); + } + return false; + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + return false; + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + return false; + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + return false; + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + return false; + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + return false; + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + return false; + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + return false; + break; + + } return true; }; diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h index b648931081..c857a3e89d 100644 --- a/keyboards/planck/keymaps/pvc/config.h +++ b/keyboards/planck/keymaps/pvc/config.h @@ -60,9 +60,8 @@ along with this program. If not, see . ) /* ws2812 RGB LED */ -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin PD1 +#define RGB_DI_PIN D1 +#define RGBLIGHT_TIMER #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/planck/keymaps/yang/config.h b/keyboards/planck/keymaps/yang/config.h index 5921e9377c..feb5a11901 100644 --- a/keyboards/planck/keymaps/yang/config.h +++ b/keyboards/planck/keymaps/yang/config.h @@ -4,9 +4,8 @@ #include "../../config.h" /* ws2812 RGB LED */ -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin PD1 +#define RGB_DI_PIN D1 +#define RGBLIGHT_TIMER #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h index 04946f7fbb..3fb978c2f6 100644 --- a/keyboards/preonic/config.h +++ b/keyboards/preonic/config.h @@ -62,9 +62,8 @@ along with this program. If not, see . ) /* ws2812 RGB LED */ -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin PD1 +#define RGB_DI_PIN D1 +#define RGBLIGHT_TIMER #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/satan/config.h b/keyboards/satan/config.h index a7ea8f904c..7e9f91cc82 100644 --- a/keyboards/satan/config.h +++ b/keyboards/satan/config.h @@ -65,13 +65,13 @@ along with this program. If not, see . /* Underlight configuration */ - #define ws2812_PORTREG PORTE - #define ws2812_DDRREG DDRE - #define ws2812_pin 2 - #define RGBLED_NUM 8 // Number of LEDs - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 + +#define RGB_DI_PIN E2 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 /* * Feature disable options diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index f20043067e..401845e855 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -19,12 +19,16 @@ // Setleds for standard RGB void inline ws2812_setleds(struct cRGB *ledarray, uint16_t leds) { - ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin)); + // ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin)); + ws2812_setleds_pin(ledarray,leds, _BV(RGB_DI_PIN & 0xF)); } void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pinmask) { - ws2812_DDRREG |= pinmask; // Enable DDR + // ws2812_DDRREG |= pinmask; // Enable DDR + // new universal format (DDR) + _SFR_IO8((RGB_DI_PIN >> 4) + 1) |= pinmask; + ws2812_sendarray_mask((uint8_t*)ledarray,leds+leds+leds,pinmask); _delay_us(50); } @@ -32,14 +36,17 @@ void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pin // Setleds for SK6812RGBW void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds) { - ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR - ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(ws2812_pin)); + // ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR + // new universal format (DDR) + _SFR_IO8((RGB_DI_PIN >> 4) + 1) |= _BV(RGB_DI_PIN & 0xF); + + ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(RGB_DI_PIN & 0xF)); _delay_us(80); } void ws2812_sendarray(uint8_t *data,uint16_t datlen) { - ws2812_sendarray_mask(data,datlen,_BV(ws2812_pin)); + ws2812_sendarray_mask(data,datlen,_BV(RGB_DI_PIN & 0xF)); } /* @@ -108,8 +115,10 @@ void inline ws2812_sendarray_mask(uint8_t *data,uint16_t datlen,uint8_t maskhi) uint8_t curbyte,ctr,masklo; uint8_t sreg_prev; - masklo =~maskhi&ws2812_PORTREG; - maskhi |= ws2812_PORTREG; + // masklo =~maskhi&ws2812_PORTREG; + // maskhi |= ws2812_PORTREG; + masklo =~maskhi&_SFR_IO8((RGB_DI_PIN >> 4) + 2); + maskhi |= _SFR_IO8((RGB_DI_PIN >> 4) + 2); sreg_prev=SREG; cli(); @@ -173,7 +182,7 @@ w_nop16 " dec %0 \n\t" // '1' [+2] '0' [+2] " brne loop%=\n\t" // '1' [+3] '0' [+4] : "=&d" (ctr) - : "r" (curbyte), "I" (_SFR_IO_ADDR(ws2812_PORTREG)), "r" (maskhi), "r" (masklo) + : "r" (curbyte), "I" (_SFR_IO_ADDR(_SFR_IO8((RGB_DI_PIN >> 4) + 2))), "r" (maskhi), "r" (masklo) ); } diff --git a/quantum/rgblight.c b/quantum/rgblight.c index c29ffedc38..b1b0f035d5 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -146,7 +146,9 @@ void rgblight_init(void) { } eeconfig_debug_rgblight(); // display current eeprom values - rgblight_timer_init(); // setup the timer + #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + rgblight_timer_init(); // setup the timer + #endif if (rgblight_config.enable) { rgblight_mode(rgblight_config.mode); @@ -192,14 +194,19 @@ void rgblight_mode(uint8_t mode) { eeconfig_update_rgblight(rgblight_config.raw); xprintf("rgblight mode: %u\n", rgblight_config.mode); if (rgblight_config.mode == 1) { - rgblight_timer_disable(); + #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + rgblight_timer_disable(); + #endif } else if (rgblight_config.mode >=2 && rgblight_config.mode <=23) { // MODE 2-5, breathing // MODE 6-8, rainbow mood // MODE 9-14, rainbow swirl // MODE 15-20, snake // MODE 21-23, knight - rgblight_timer_enable(); + + #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + rgblight_timer_enable(); + #endif } rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val); } @@ -211,7 +218,10 @@ void rgblight_toggle(void) { if (rgblight_config.enable) { rgblight_mode(rgblight_config.mode); } else { - rgblight_timer_disable(); + + #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + rgblight_timer_disable(); + #endif _delay_ms(50); rgblight_set(); } @@ -328,6 +338,9 @@ void rgblight_set(void) { } } + +#if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + // Animation timer -- AVR Timer3 void rgblight_timer_init(void) { static uint8_t rgblight_timer_is_init = 0; @@ -503,3 +516,5 @@ void rgblight_effect_knight(uint8_t interval) { } } + +#endif \ No newline at end of file diff --git a/quantum/rgblight.h b/quantum/rgblight.h index 64f92523e0..def26c428c 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -1,8 +1,11 @@ #ifndef RGBLIGHT_H #define RGBLIGHT_H -#ifndef RGBLIGHT_MODES -#define RGBLIGHT_MODES 23 + +#if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + #define RGBLIGHT_MODES 23 +#else + #define RGBLIGHT_MODES 1 #endif #ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH diff --git a/readme.md b/readme.md index c24d951d8d..e874812515 100644 --- a/readme.md +++ b/readme.md @@ -704,23 +704,18 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring RGBLIGHT_ENABLE = yes -Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time. +In order to use the underglow timer functions, you need to have `#define RGBLIGHT_TIMER` in your `config.h`, and have audio disabled (`AUDIO_ENABLE = no` in your Makefile). -Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default: - - #define ws2812_PORTREG PORTF - #define ws2812_DDRREG DDRF - #define ws2812_pin PF4 +Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the `F4` pin by default: + + #define RGB_DI_PIN F4 // The pin your RGB strip is wired to + #define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio) #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 #define RGBLIGHT_VAL_STEP 17 -You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to: - - #define ws2812_PORTREG PORTB - #define ws2812_DDRREG DDRB - #define ws2812_pin PB3 +You'll need to edit `RGB_DI_PIN` to the pin you have your `DI` on your RGB strip wired to. The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboards/planck/keymaps/yang/keymap.c` From c1dfb636ef61159456bdb24f4fee3f27e5babbeb Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 7 Jul 2016 12:22:10 -0400 Subject: [PATCH 14/37] fixes quantum template (actually) --- quantum/template/template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/template/template.c b/quantum/template/template.c index 3057557eae..5ef349583c 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -18,7 +18,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware - return process_record_user(record); + return process_record_user(keycode, record); } void led_set_kb(uint8_t usb_led) { From 9870082a06386eba8c0c5f22da90d0256ef6244b Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 19:48:39 +0300 Subject: [PATCH 15/37] Fix the range for consumer keys --- quantum/keymap_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 76872ac592..d0a8312c1e 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -62,7 +62,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); break; - case KC_AUDIO_MUTE ... KC_WWW_FAVORITES: + case KC_AUDIO_MUTE ... KC_MEDIA_REWIND: action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); break; case KC_MS_UP ... KC_MS_ACCEL2: From 0bfb6086158c64960f039524bbc2bb9e7bbee378 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 19:56:55 +0300 Subject: [PATCH 16/37] Remove unhandled KC_BTLD, RESET should be used instead --- keyboards/chibios_test/keymaps/default/keymap.c | 2 +- keyboards/infinity_ergodox/keymaps/default/keymap.c | 5 ++++- tmk_core/common/keycode.h | 5 ----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/keyboards/chibios_test/keymaps/default/keymap.c b/keyboards/chibios_test/keymaps/default/keymap.c index 239d70007a..a362e2ccf6 100644 --- a/keyboards/chibios_test/keymaps/default/keymap.c +++ b/keyboards/chibios_test/keymaps/default/keymap.c @@ -18,7 +18,7 @@ along with this program. If not, see . #include "chibios_test.h" const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - {{KC_CAPS}}, // test with KC_CAPS, KC_A, KC_BTLD + {{KC_CAPS}}, // test with KC_CAPS, KC_A, RESET }; const uint16_t fn_actions[] = { diff --git a/keyboards/infinity_ergodox/keymaps/default/keymap.c b/keyboards/infinity_ergodox/keymaps/default/keymap.c index c33fb7b926..f1e6b1c8ae 100644 --- a/keyboards/infinity_ergodox/keymaps/default/keymap.c +++ b/keyboards/infinity_ergodox/keymaps/default/keymap.c @@ -18,6 +18,9 @@ along with this program. If not, see . #include "infinity_ergodox.h" +// Workaround for old keymap format +#define KC_RESET RESET + const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KEYMAP( // layer 0 : default // left hand @@ -63,7 +66,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KEYMAP( // layer 2 : keyboard functions // left hand - BTLD,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + RESET,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, FN3, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index 448195306f..fc66dc0efc 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -156,8 +156,6 @@ along with this program. If not, see . #define KC_WSTP KC_WWW_STOP #define KC_WREF KC_WWW_REFRESH #define KC_WFAV KC_WWW_FAVORITES -/* Jump to bootloader */ -#define KC_BTLD KC_BOOTLOADER /* Transparent */ #define KC_TRANSPARENT 1 #define KC_TRNS KC_TRANSPARENT @@ -428,9 +426,6 @@ enum internal_special_keycodes { KC_MEDIA_FAST_FORWARD, KC_MEDIA_REWIND, /* 0xBC */ - /* Jump to bootloader */ - KC_BOOTLOADER = 0xBF, - /* Fn key */ KC_FN0 = 0xC0, KC_FN1, From a2eae81927ab0e817857d5b6ba2c7ce4a4b751b6 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 7 Jul 2016 20:04:27 +0300 Subject: [PATCH 17/37] Fix IS_CONSUMER macro --- tmk_core/common/keycode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index fc66dc0efc..2f208c54e0 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -31,7 +31,7 @@ along with this program. If not, see . #define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) #define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE) -#define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_WFAV) +#define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_MRWD) #define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31) #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) From 50c686587ed49d8079ba1b11d45ceb6a55d6cd4b Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Thu, 7 Jul 2016 23:34:33 -0400 Subject: [PATCH 18/37] Create keycodes for RGB control functions Moves RGB controls out of the macro function and assigns them their own keycodes: RGB_TOG (toggle on/off) RGB_MOD (mode step) RGB_HUI (increase hue) RGB_HUD (decrease hue) RGB_SAI (increase saturation) RGB_SAD (decrease saturation) RGB_VAI (increase brightness) RGB_VAD (decrease brightness) --- keyboards/clueboard/keymaps/default/keymap.c | 72 ++----------------- keyboards/clueboard/keymaps/max/keymap.c | 66 ++---------------- keyboards/cluepad/keymaps/default/keymap.c | 67 ++---------------- keyboards/kc60/keymaps/stanleylai/keymap.c | 67 +----------------- keyboards/kc60/keymaps/ws2812/keymap.c | 65 +---------------- keyboards/phantom/keymaps/default/keymap.c | 69 +----------------- keyboards/planck/keymaps/yang/keymap.c | 62 +---------------- keyboards/satan/keymaps/default/keymap.c | 68 +----------------- keyboards/satan/keymaps/sethbc/keymap.c | 73 +------------------- quantum/keymap.h | 10 +++ quantum/quantum.c | 50 ++++++++++++++ 11 files changed, 83 insertions(+), 586 deletions(-) diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c index 89f71e83a7..896bc7ebcc 100644 --- a/keyboards/clueboard/keymaps/default/keymap.c +++ b/keyboards/clueboard/keymaps/default/keymap.c @@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RS] = KEYMAP( #ifdef RGBLIGHT_ENABLE - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), F(7), \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(8), \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(5), \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(2), F(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(4), F(6), F(3)), + MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI), #else KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ @@ -83,30 +83,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -132,49 +112,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/keyboards/clueboard/keymaps/max/keymap.c b/keyboards/clueboard/keymaps/max/keymap.c index 82c93401db..080b4930b9 100644 --- a/keyboards/clueboard/keymaps/max/keymap.c +++ b/keyboards/clueboard/keymaps/max/keymap.c @@ -66,78 +66,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `----------------------------------------------------------------------------------' */ [_RS] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(0), F(6), \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(7), \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(4), \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(1), F(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(3), F(5), F(2)), + MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI), }; enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL, }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(RGBLED_TOGGLE), - [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { - case RGBLED_TOGGLE: - //led operations - if (record->event.pressed) { - rgblight_toggle(); - } - - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; } } diff --git a/keyboards/cluepad/keymaps/default/keymap.c b/keyboards/cluepad/keymaps/default/keymap.c index 8ba49952f6..10881e8dee 100644 --- a/keyboards/cluepad/keymaps/default/keymap.c +++ b/keyboards/cluepad/keymaps/default/keymap.c @@ -1,7 +1,6 @@ #include "cluepad.h" #include "backlight.h" -#include "rgblight.h" // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. @@ -46,77 +45,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '-------------------' */ [_FL] = KEYMAP( - LT(_FL, KC_NLCK), KC_TRNS, KC_TRNS, F(0), \ - KC_TRNS, F(4), KC_TRNS, F(6), \ - F(3), BL_STEP, F(2), \ - KC_TRNS, F(5), KC_TRNS, F(7), \ - F(1), KC_TRNS) + LT(_FL, KC_NLCK), KC_TRNS, KC_TRNS, RGB_TOG, \ + KC_TRNS, RGB_SAI, KC_TRNS, RGB_VAI, \ + RGB_HUD, BL_STEP, RGB_HUI, \ + KC_TRNS, RGB_SAD, KC_TRNS, RGB_VAD, \ + RGB_MOD, KC_TRNS) }; enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL, }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(RGBLED_TOGGLE), - [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; } } diff --git a/keyboards/kc60/keymaps/stanleylai/keymap.c b/keyboards/kc60/keymaps/stanleylai/keymap.c index a7ea6040d5..057c73bf4d 100644 --- a/keyboards/kc60/keymaps/stanleylai/keymap.c +++ b/keyboards/kc60/keymaps/stanleylai/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS,KC_NO, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), BL_STEP,BL_TOGG, KC_TRNS, KC_TRNS,\ + KC_TRNS,KC_NO, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,BL_STEP,BL_TOGG, KC_TRNS, KC_TRNS,\ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS), #else RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ @@ -52,30 +52,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL, - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -102,50 +82,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - - #ifdef RGBLIGHT_ENABLE - - case RGBLED_TOGGLE: - //led operations - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/keyboards/kc60/keymaps/ws2812/keymap.c b/keyboards/kc60/keymaps/ws2812/keymap.c index bd5bef787b..1c0574df09 100644 --- a/keyboards/kc60/keymaps/ws2812/keymap.c +++ b/keyboards/kc60/keymaps/ws2812/keymap.c @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET), #else KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ @@ -65,30 +65,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -114,48 +94,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/keyboards/phantom/keymaps/default/keymap.c b/keyboards/phantom/keymaps/default/keymap.c index 1368226aa9..a4fc319ac8 100644 --- a/keyboards/phantom/keymaps/default/keymap.c +++ b/keyboards/phantom/keymaps/default/keymap.c @@ -1,9 +1,5 @@ #include "phantom.h" -#ifdef RGBLIGHT_ENABLE -#include "rgblight.h" -#endif - // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -59,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \ - KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ @@ -73,30 +69,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -122,48 +98,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/keyboards/planck/keymaps/yang/keymap.c b/keyboards/planck/keymaps/yang/keymap.c index 541b1a57e4..5f2907a08a 100644 --- a/keyboards/planck/keymaps/yang/keymap.c +++ b/keyboards/planck/keymaps/yang/keymap.c @@ -51,33 +51,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RGB] = { /* RGBLIGHT */ {KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL}, {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_TRNS}, - {KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} } }; enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL, + }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(_RGB, KC_SPC), - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -100,47 +85,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { - case RGBLED_TOGGLE: - //led operations - if (record->event.pressed) { - rgblight_toggle(); - } - - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; + } } diff --git a/keyboards/satan/keymaps/default/keymap.c b/keyboards/satan/keymaps/default/keymap.c index b19404afc7..35dbbb77b2 100644 --- a/keyboards/satan/keymaps/default/keymap.c +++ b/keyboards/satan/keymaps/default/keymap.c @@ -1,8 +1,5 @@ #include "satan.h" -#ifdef RGBLIGHT_ENABLE -#include "rgblight.h" -#endif // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -53,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ @@ -66,30 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -115,48 +92,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/keyboards/satan/keymaps/sethbc/keymap.c b/keyboards/satan/keymaps/sethbc/keymap.c index 0ea4a7ae4f..f8991f9fd7 100644 --- a/keyboards/satan/keymaps/sethbc/keymap.c +++ b/keyboards/satan/keymaps/sethbc/keymap.c @@ -1,9 +1,5 @@ #include "satan.h" -#ifdef RGBLIGHT_ENABLE -#include "rgblight.h" -#endif - // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -44,39 +40,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RESET, \ - KC_CAPS, KC_TRNS, F(1), F(2), F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ - KC_TRNS, KC_VOLD, F(4), F(5), F(6), KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ - KC_TRNS, F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_CAPS, KC_TRNS, RGB_TOG,RGB_MOD,RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, RGB_HUD,RGB_SAI,RGB_SAD, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, RGB_VAI,RGB_VAD,KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #endif }; enum function_id { SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif }; const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -102,48 +78,5 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } } break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif } } diff --git a/quantum/keymap.h b/quantum/keymap.h index 73f99f8211..a158651839 100644 --- a/quantum/keymap.h +++ b/quantum/keymap.h @@ -156,6 +156,16 @@ enum quantum_keycodes { BL_INC, BL_TOGG, BL_STEP, + + // RGB functionality + RGB_TOG, + RGB_MOD, + RGB_HUI, + RGB_HUD, + RGB_SAI, + RGB_SAD, + RGB_VAI, + RGB_VAD, // Left shift, open paren KC_LSPO, diff --git a/quantum/quantum.c b/quantum/quantum.c index d8e43a4655..5c0b53e221 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -103,6 +103,56 @@ bool process_record_quantum(keyrecord_t *record) { return false; } break; + #ifdef RGBLIGHT_ENABLE + case RGB_TOG: + if (record->event.pressed) { + rgblight_toggle(); + return false; + } + break; + case RGB_MOD: + if (record->event.pressed) { + rgblight_step(); + return false; + } + break; + case RGB_HUI: + if (record->event.pressed) { + rgblight_increase_hue(); + return false; + } + break; + case RGB_HUD: + if (record->event.pressed) { + rgblight_decrease_hue(); + return false; + } + break; + case RGB_SAI: + if (record->event.pressed) { + rgblight_increase_sat(); + return false; + } + break; + case RGB_SAD: + if (record->event.pressed) { + rgblight_decrease_sat(); + return false; + } + break; + case RGB_VAI: + if (record->event.pressed) { + rgblight_increase_val(); + return false; + } + break; + case RGB_VAD: + if (record->event.pressed) { + rgblight_decrease_val(); + return false; + } + break; + #endif case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI: if (record->event.pressed) { // MAGIC actions (BOOTMAGIC without the boot) From ccfa7351add03eb6c3e081cd37893fc2da519c4b Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Thu, 7 Jul 2016 23:50:04 -0400 Subject: [PATCH 19/37] Fix compile error on Clueboard --- keyboards/clueboard/keymaps/max/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/clueboard/keymaps/max/keymap.c b/keyboards/clueboard/keymaps/max/keymap.c index 080b4930b9..193809840b 100644 --- a/keyboards/clueboard/keymaps/max/keymap.c +++ b/keyboards/clueboard/keymaps/max/keymap.c @@ -73,8 +73,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI), }; -enum function_id { -}; +/*enum function_id { +};*/ const uint16_t PROGMEM fn_actions[] = { }; From e2ec45a755741a29ecd814e6151f4d4860b20386 Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Thu, 7 Jul 2016 23:57:11 -0400 Subject: [PATCH 20/37] Fix cluepad and planck --- keyboards/cluepad/keymaps/default/keymap.c | 4 ++-- keyboards/planck/keymaps/yang/keymap.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/cluepad/keymaps/default/keymap.c b/keyboards/cluepad/keymaps/default/keymap.c index 10881e8dee..66827fe48b 100644 --- a/keyboards/cluepad/keymaps/default/keymap.c +++ b/keyboards/cluepad/keymaps/default/keymap.c @@ -52,8 +52,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_MOD, KC_TRNS) }; -enum function_id { -}; +/*enum function_id { +};*/ const uint16_t PROGMEM fn_actions[] = { }; diff --git a/keyboards/planck/keymaps/yang/keymap.c b/keyboards/planck/keymaps/yang/keymap.c index 5f2907a08a..0ce849050b 100644 --- a/keyboards/planck/keymaps/yang/keymap.c +++ b/keyboards/planck/keymaps/yang/keymap.c @@ -57,9 +57,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { } }; -enum function_id { - -}; +/*enum function_id { + +};*/ const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(_RGB, KC_SPC), From 66ffb1cb3a21c670719263f187e3470fd888f42a Mon Sep 17 00:00:00 2001 From: Robbie Gill Date: Thu, 7 Jul 2016 21:03:20 -0700 Subject: [PATCH 21/37] port missing support for hhkb-jp from tmk --- keyboards/hhkb/Makefile | 4 ++ keyboards/hhkb/config.h | 6 ++- keyboards/hhkb/hhkb.h | 27 +++++++++++ keyboards/hhkb/keymaps/jp/Makefile | 1 + keyboards/hhkb/keymaps/jp/keymap.c | 58 +++++++++++++++++++++++ keyboards/hhkb/keymaps/rdg_jp/Makefile | 1 + keyboards/hhkb/keymaps/rdg_jp/keymap.c | 65 ++++++++++++++++++++++++++ 7 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 keyboards/hhkb/keymaps/jp/Makefile create mode 100644 keyboards/hhkb/keymaps/jp/keymap.c create mode 100644 keyboards/hhkb/keymaps/rdg_jp/Makefile create mode 100644 keyboards/hhkb/keymaps/rdg_jp/keymap.c diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 53eece3969..6fe973e1eb 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -78,6 +78,10 @@ ifndef QUANTUM_DIR include ../../Makefile endif +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all diff --git a/keyboards/hhkb/config.h b/keyboards/hhkb/config.h index ee66e44571..3f0528b4b9 100644 --- a/keyboards/hhkb/config.h +++ b/keyboards/hhkb/config.h @@ -29,7 +29,11 @@ along with this program. If not, see . #define DESCRIPTION q.m.k keyboard firmware for HHKB /* key matrix size */ -#define MATRIX_ROWS 8 +#ifdef HHKB_JP +# define MATRIX_ROWS 16 +#else +# define MATRIX_ROWS 8 +#endif #define MATRIX_COLS 8 #define TAPPING_TERM 200 diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h index cc756c4565..e95125efcb 100644 --- a/keyboards/hhkb/hhkb.h +++ b/keyboards/hhkb/hhkb.h @@ -21,4 +21,31 @@ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ } + +#define KEYMAP_JP( \ + K02, K32, K62, K22, K12, K52, K72, KA2, K92, K82, KB2, KE2, KF2, KD2, KC2, \ + K03, K63, K23, K13, K53, K73, KA3, K93, K83, KB3, KE3, KF3, KD3, \ + K06, K66, K26, K16, K56, K76, KA6, K96, K86, KB6, KE6, KF6, KD6, KC6, \ + K05, K65, K25, K15, K55, K75, KA5, K95, K85, KB5, KE5, KF5, KD5, KC5, \ + K04, K34, K64, K24, K14, K74, K94, K84, KB4, KE4, KF4, KD4, KC4) \ +{ \ + { KC_NO, KC_NO, K02, K03, K04, K05, K06, KC_NO }, \ + { KC_NO, KC_NO, K12, K13, K14, K15, K16, KC_NO }, \ + { KC_NO, KC_NO, K22, K23, K24, K25, K26, KC_NO }, \ + { KC_NO, KC_NO, K32, KC_NO, K34, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, K52, K53, KC_NO, K55, K56, KC_NO }, \ + { KC_NO, KC_NO, K62, K63, K64, K65, K66, KC_NO }, \ + { KC_NO, KC_NO, K72, K73, K74, K75, K76, KC_NO }, \ + { KC_NO, KC_NO, K82, K83, K84, K85, K86, KC_NO }, \ + { KC_NO, KC_NO, K92, K93, K94, K95, K96, KC_NO }, \ + { KC_NO, KC_NO, KA2, KA3, KC_NO, KA5, KA6, KC_NO }, \ + { KC_NO, KC_NO, KB2, KB3, KB4, KB5, KB6, KC_NO }, \ + { KC_NO, KC_NO, KC2, KC_NO, KC4, KC5, KC6, KC_NO }, \ + { KC_NO, KC_NO, KD2, KD3, KD4, KD5, KD6, KC_NO }, \ + { KC_NO, KC_NO, KE2, KE3, KE4, KE5, KE6, KC_NO }, \ + { KC_NO, KC_NO, KF2, KF3, KF4, KF5, KF6, KC_NO } \ +} + + #endif diff --git a/keyboards/hhkb/keymaps/jp/Makefile b/keyboards/hhkb/keymaps/jp/Makefile new file mode 100644 index 0000000000..92986292a2 --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/jp/keymap.c b/keyboards/hhkb/keymaps/jp/keymap.c new file mode 100644 index 0000000000..8525adce59 --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/keymap.c @@ -0,0 +1,58 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + + +/* Layer 0: HHKB JP + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +/* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | + * |------------------------------------------------------` | + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | | + * |-----------------------------------------------------------| + * | || | | | | | | | | || | | | + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP_JP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_UP, KC_RSFT, + MO(1), KC_ZKHK, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_HENK, KC_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = KEYMAP_JP( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboards/hhkb/keymaps/rdg_jp/Makefile b/keyboards/hhkb/keymaps/rdg_jp/Makefile new file mode 100644 index 0000000000..92986292a2 --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/rdg_jp/keymap.c b/keyboards/hhkb/keymaps/rdg_jp/keymap.c new file mode 100644 index 0000000000..700ba3a0b7 --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/keymap.c @@ -0,0 +1,65 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + +enum { + ZER, + HDN, + OSY +}; + + +#define CTL_ESC CTL_T(KC_ESC) +#define SFT_BSP SFT_T(KC_BSPC) + +#define SCRNS3 LGUI(LCTL(LSFT(KC_3))) +#define SCRNS4 LGUI(LCTL(LSFT(KC_4))) + + +/* hhkb jp ~ layout + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [ZER] = KEYMAP_JP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_UP, KC_RSFT, + MO(HDN), KC_LCTL, KC_LALT, KC_LGUI, MO(HDN), KC_SPC, SFT_BSP, MO(HDN), MO(OSY), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [HDN] = KEYMAP_JP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, + _______, KC_TILD, KC_GRV, KC_BSLS, KC_PIPE, KC_MINS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TILD, KC_GRV, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, _______, KC_ENT, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, KC_UNDS , KC_DEL, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [OSY] = KEYMAP_JP( + _______, _______, _______, SCRNS3, SCRNS4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; From f7a86822266603b8ffd21e9f89ec1de8d4950791 Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Fri, 8 Jul 2016 03:32:28 -0400 Subject: [PATCH 22/37] Move return out of event if block According to Jack, this makes the return case not be processed. Doesn't break anything in the firmware. --- quantum/quantum.c | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 5c0b53e221..09daa47127 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -93,65 +93,65 @@ bool process_record_quantum(keyrecord_t *record) { *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific #endif bootloader_jump(); - return false; } + return false; break; case DEBUG: if (record->event.pressed) { print("\nDEBUG: enabled.\n"); debug_enable = true; - return false; } + return false; break; #ifdef RGBLIGHT_ENABLE case RGB_TOG: if (record->event.pressed) { rgblight_toggle(); - return false; - } - break; + } + return false; + break; case RGB_MOD: if (record->event.pressed) { rgblight_step(); - return false; - } - break; + } + return false; + break; case RGB_HUI: if (record->event.pressed) { rgblight_increase_hue(); - return false; - } - break; + } + return false; + break; case RGB_HUD: if (record->event.pressed) { rgblight_decrease_hue(); - return false; - } - break; + } + return false; + break; case RGB_SAI: if (record->event.pressed) { rgblight_increase_sat(); - return false; - } - break; + } + return false; + break; case RGB_SAD: if (record->event.pressed) { rgblight_decrease_sat(); - return false; - } - break; + } + return false; + break; case RGB_VAI: if (record->event.pressed) { rgblight_increase_val(); - return false; - } - break; + } + return false; + break; case RGB_VAD: if (record->event.pressed) { rgblight_decrease_val(); - return false; - } - break; + } + return false; + break; #endif case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI: if (record->event.pressed) { From 564c743aa025c094f9c31ba2049aa50e15d76ab7 Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Fri, 8 Jul 2016 03:40:05 -0400 Subject: [PATCH 23/37] Fix a function mismatch that was causing LEDs to not properly initialize See #430. Name of function being called at init was updated to led_init_ports(), but the call itself wasn't renamed. --- keyboards/phantom/led.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/phantom/led.c b/keyboards/phantom/led.c index b2459c7743..69dba7d40e 100644 --- a/keyboards/phantom/led.c +++ b/keyboards/phantom/led.c @@ -19,7 +19,7 @@ along with this program. If not, see . #include "stdint.h" #include "led.h" -void led_init(void) { +void led_init_ports(void) { // * Set our LED pins as output DDRB |= (1<<6); DDRB |= (1<<7); From b86b0480d530c9d5f40bbe835f120b1c1b563e47 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 8 Jul 2016 17:20:37 +0300 Subject: [PATCH 24/37] Speed up compilation by not using recusive make The cleaning is done outside the targets, by checking the requested target name. --- tmk_core/rules.mk | 59 +++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 352e9314b6..a518fc0c3f 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -271,23 +271,10 @@ ALL_CPPFLAGS = $(MCUFLAGS) -x c++ $(CPPFLAGS) $(GENDEPFLAGS) $(EXTRAFLAGS) ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) # Default target. -all: - @$(MAKE) begin - @$(MAKE) gccversion - @$(MAKE) sizebefore - @$(MAKE) clean_list # force clean each time - @$(MAKE) build - @$(MAKE) sizeafter - @$(MAKE) end +all: build sizeafter # Quick make that doesn't clean -quick: - @$(MAKE) begin - @$(MAKE) gccversion - @$(MAKE) sizebefore - @$(MAKE) build - @$(MAKE) sizeafter - @$(MAKE) end +quick: build sizeafter # Change the build target to build a HEX file or a library. build: elf hex @@ -303,13 +290,7 @@ sym: $(BUILD_DIR)/$(TARGET).sym LIBNAME=lib$(TARGET).a lib: $(LIBNAME) - - -# Eye candy. -# AVR Studio 3.x does not check make's exit code but relies on -# the following magic strings to be generated by the compile job. -begin: - @$(SECHO) $(MSG_BEGIN) +check_submodule: git submodule status --recursive | \ while IFS= read -r x; do \ case "$$x" in \ @@ -318,10 +299,6 @@ begin: esac \ done -end: - @$(SECHO) $(MSG_END) - - # Display size of file. HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex #ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf @@ -331,7 +308,7 @@ sizebefore: @if test -f $(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(HEXSIZE); \ 2>/dev/null; $(SECHO); fi -sizeafter: +sizeafter: $(BUILD_DIR)/$(TARGET).hex @if test -f $(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(HEXSIZE); \ 2>/dev/null; $(SECHO); fi # test file sizes eventually @@ -386,9 +363,9 @@ gccversion : # Link: create ELF output file from object files. .SECONDARY : $(BUILD_DIR)/$(TARGET).elf .PRECIOUS : $(OBJ) -%.elf: $(OBJ) +%.elf: gccversion sizebefore check_submodule $(OBJ) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) - $(eval CMD=$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)) + $(eval CMD=$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)) @$(BUILD_CMD) # Compile: create object files from C source files. @@ -429,14 +406,7 @@ $(OBJDIR)/%.o : %.S $(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@ # Target: clean project. -clean: begin clean_list end - -clean_list : - @$(REMOVE) -r $(BUILD_DIR) - @$(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR) - @$(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR) - @if $$SUBPROJECT; then $(REMOVE) -r $(SUBPROJECT_PATH)/$(BUILD_DIR); fi - @$(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR) +clean: show_path: @echo VPATH=$(VPATH) @@ -496,6 +466,19 @@ all-keymaps-%: all-keymaps: all-keymaps-all +GOAL=$(MAKECMDGOALS) +ifeq ($(MAKECMDGOALS),) +GOAL = all +endif +CLEANING_GOALS=clean clean_list all +ifneq ($(findstring $(GOAL),$(CLEANING_GOALS)),) +$(shell $(REMOVE) -r $(BUILD_DIR) 2>/dev/null) +$(shell $(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR)) +$(shell $(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR)) +$(shell if $$SUBPROJECT; then $(REMOVE) -r $(SUBPROJECT_PATH)/$(BUILD_DIR); fi) +$(shell $(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR)) +endif + # Create build directory $(shell mkdir $(BUILD_DIR) 2>/dev/null) @@ -508,7 +491,7 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) # Listing of phony targets. -.PHONY : all quick begin finish end sizebefore sizeafter gccversion \ +.PHONY : all quick finish sizebefore sizeafter gccversion \ build elf hex eep lss sym coff extcoff \ clean clean_list debug gdb-config show_path \ program teensy dfu flip dfu-ee flip-ee dfu-start \ From ccebceeb6f24aeee102f6ef3180f4f563ca025a8 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 8 Jul 2016 17:44:41 +0300 Subject: [PATCH 25/37] Don't run git describe for ever file that is built --- tmk_core/common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 5bae0d762f..aa05b9491d 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -107,7 +107,7 @@ endif # Version string -OPT_DEFS += -DVERSION=$(shell (git describe --always --dirty || echo 'unknown') 2> /dev/null) +OPT_DEFS += -DVERSION=$(GIT_VERSION) # Bootloader address ifdef STM32_BOOTLOADER_ADDRESS From 1e3db59097f8c396d69179fdd66ef0131a6ba80d Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 8 Jul 2016 18:18:33 +0300 Subject: [PATCH 26/37] Fix the link target --- tmk_core/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index a518fc0c3f..543d3da8a0 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -365,7 +365,7 @@ gccversion : .PRECIOUS : $(OBJ) %.elf: gccversion sizebefore check_submodule $(OBJ) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) - $(eval CMD=$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)) + $(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out gccversion sizebefore check_submodule,$^) --output $@ $(LDFLAGS)) @$(BUILD_CMD) # Compile: create object files from C source files. From e8e300d5c4dd05b806869b648b93feeff1f8a7dc Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 8 Jul 2016 22:59:09 +0300 Subject: [PATCH 27/37] Fix name of makefile dep files The files can't start with a .dot, as the wildcard function wont find them. So this is fixed by removing the BUILD_DIR from the name. --- tmk_core/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 543d3da8a0..8d843cc983 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -260,7 +260,7 @@ LST = $(patsubst %.c,$(OBJDIR)/%.lst,$(patsubst %.cpp,$(OBJDIR)/%.lst,$(patsubst # Compiler flags to generate dependency files. #GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d -GENDEPFLAGS = -MMD -MP -MF $(BUILD_DIR)/.dep/$(subst /,_,$@).d +GENDEPFLAGS = -MMD -MP -MF $(BUILD_DIR)/.dep/$(subst /,_,$(subst $(BUILD_DIR)/,,$@)).d # Combine all necessary flags and optional flags. From 6911ead027202da981862c9259ff4d962d51a519 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 8 Jul 2016 23:19:48 +0300 Subject: [PATCH 28/37] Use order only prerequisites to avoid re-linking The prerequisites at the start of the build process are order-only so that the trget don't link again. Also added as a dependency to the compilation to force the messages to be printed at the start --- tmk_core/rules.mk | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 8d843cc983..f13351ea19 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -360,49 +360,51 @@ gccversion : $(eval CMD=$(AR) $@ $(OBJ) ) @$(BUILD_CMD) +BEGIN = gccversion check_submodule sizebefore + # Link: create ELF output file from object files. .SECONDARY : $(BUILD_DIR)/$(TARGET).elf .PRECIOUS : $(OBJ) -%.elf: gccversion sizebefore check_submodule $(OBJ) +%.elf: $(OBJ) | $(BEGIN) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) - $(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out gccversion sizebefore check_submodule,$^) --output $@ $(LDFLAGS)) + $(eval CMD=$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)) @$(BUILD_CMD) # Compile: create object files from C source files. -$(OBJDIR)/%.o : %.c +$(OBJDIR)/%.o : %.c | $(BEGIN) @mkdir -p $(@D) @$(SILENT) || printf "$(MSG_COMPILING) $<" | $(AWK_CMD) $(eval CMD=$(CC) -c $(ALL_CFLAGS) $< -o $@) @$(BUILD_CMD) # Compile: create object files from C++ source files. -$(OBJDIR)/%.o : %.cpp +$(OBJDIR)/%.o : %.cpp | $(BEGIN) @mkdir -p $(@D) @$(SILENT) || printf "$(MSG_COMPILING_CPP) $<" | $(AWK_CMD) $(eval CMD=$(CC) -c $(ALL_CPPFLAGS) $< -o $@) @$(BUILD_CMD) # Compile: create assembler files from C source files. -%.s : %.c +%.s : %.c | $(BEGIN) @$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) $(eval CMD=$(CC) -S $(ALL_CFLAGS) $< -o $@) @$(BUILD_CMD) # Compile: create assembler files from C++ source files. -%.s : %.cpp +%.s : %.cpp | $(BEGIN) @$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) $(eval CMD=$(CC) -S $(ALL_CPPFLAGS) $< -o $@) @$(BUILD_CMD) # Assemble: create object files from assembler source files. -$(OBJDIR)/%.o : %.S +$(OBJDIR)/%.o : %.S | $(BEGIN) @mkdir -p $(@D) @$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) $(eval CMD=$(CC) -c $(ALL_ASFLAGS) $< -o $@) @$(BUILD_CMD) # Create preprocessed source for use in sending a bug report. -%.i : %.c +%.i : %.c | $(BEGIN) $(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@ # Target: clean project. @@ -492,7 +494,7 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) # Listing of phony targets. .PHONY : all quick finish sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff \ +build elf hex eep lss sym coff extcoff check_submodule \ clean clean_list debug gdb-config show_path \ program teensy dfu flip dfu-ee flip-ee dfu-start \ all-keyboards-defaults all-keyboards all-keymaps \ From c444f4f702739633b11e548575cdbe8369d0a98b Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 8 Jul 2016 21:40:57 -0400 Subject: [PATCH 29/37] Documents tap dance --- readme.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/readme.md b/readme.md index e874812515..3657d2c15a 100644 --- a/readme.md +++ b/readme.md @@ -353,6 +353,81 @@ void matrix_scan_user(void) { As you can see, you have three function. you can use - `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS` and `SEQ_THREE_KEYS` for longer sequences. Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously. +### Tap Dance: A single key can do 3, 5, or 100 different things + +Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/jackhumbert/qmk_firmware/pull/451). Here's how Algernon describes the feature: + +With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter. + +To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap. + +With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly. + +The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time. + +But lets start with how to use it, first! + +First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array. + +This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are two possible options: + +* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. +* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the current state of the tap-dance action. + +The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. + +And that's the bulk of it! + +Do note, however, that this implementation does have some consequences: keys do not register until either they reach the tapping ceiling, or they time out. This means that if you hold the key, nothing happens, no repeat, no nothing. It is possible to detect held state, and register an action then too, but that's not implemented yet. Keys also unregister immediately after being registered, so you can't even hold the second tap. This is intentional, to be consistent. + +And now, on to the explanation of how it works! + +The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer. + +This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness. + +Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. + +For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros. + +In the end, let's see a full example! + +```c +enum { + CT_SE = 0, + CT_CLN, + CT_EGG +}; + +/* Have the above three on the keymap, TD(CT_SE), etc... */ + +void dance_cln (qk_tap_dance_state_t *state) { + if (state->count == 1) { + register_code (KC_RSFT); + register_code (KC_SCLN); + unregister_code (KC_SCLN); + unregister_code (KC_RSFT); + } else { + register_code (KC_SCLN); + unregister_code (KC_SCLN); + reset_tap_dance (state); + } +} + +void dance_egg (qk_tap_dance_state_t *state) { + if (state->count >= 100) { + SEND_STRING ("Safety dance!"); + reset_tap_dance (state); + } +} + +const qk_tap_dance_action_t tap_dance_actions[] = { + [CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT) + ,[CT_CLN] = ACTION_TAP_DANCE_FN (dance_cln) + ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg) +}; +``` + ### Temporarily setting the default layer `DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. From 1ab527a4dbf6ad14c04b07dc6190470c8119b030 Mon Sep 17 00:00:00 2001 From: Max Whittingham Date: Sat, 9 Jul 2016 03:20:58 -0500 Subject: [PATCH 30/37] Cleaning up repo --- keyboards/gh60/keymaps/robotmaxtron/Makefile | 112 +++++++++ .../keymaps/robotmaxtron/WS2812-wiring.jpg | Bin 0 -> 1038926 bytes keyboards/gh60/keymaps/robotmaxtron/config.h | 190 +++++++++++++++ keyboards/gh60/keymaps/robotmaxtron/keymap.c | 228 ++++++++++++++++++ keyboards/gh60/keymaps/robotmaxtron/readme.md | 16 ++ 5 files changed, 546 insertions(+) create mode 100644 keyboards/gh60/keymaps/robotmaxtron/Makefile create mode 100644 keyboards/gh60/keymaps/robotmaxtron/WS2812-wiring.jpg create mode 100644 keyboards/gh60/keymaps/robotmaxtron/config.h create mode 100644 keyboards/gh60/keymaps/robotmaxtron/keymap.c create mode 100644 keyboards/gh60/keymaps/robotmaxtron/readme.md diff --git a/keyboards/gh60/keymaps/robotmaxtron/Makefile b/keyboards/gh60/keymaps/robotmaxtron/Makefile new file mode 100644 index 0000000000..2e69aee298 --- /dev/null +++ b/keyboards/gh60/keymaps/robotmaxtron/Makefile @@ -0,0 +1,112 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +# CONSOLE_ENABLE ?= yes # Console for debug(+400) +# COMMAND_ENABLE ?= yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif + diff --git a/keyboards/gh60/keymaps/robotmaxtron/WS2812-wiring.jpg b/keyboards/gh60/keymaps/robotmaxtron/WS2812-wiring.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ab8cc31ac9a0fef320befdedc1aef931c9c19ef GIT binary patch literal 1038926 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%0D3f=7@xI3X2H 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

  • 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