From eba4cb7a0437c115c56dfe1796a76c69a99c4d4f Mon Sep 17 00:00:00 2001 From: Kenneth Aloysius Date: Tue, 2 Jan 2018 09:34:46 +1100 Subject: RGB underglow support for JJ40, clean up redundant code in Mechmini keymap (#2196) * Cleanup Mechmini keymap. Once the custom RGB function is defined, there is no need to manually handle RGB code. * Change default to KEYMAP_MIT, not KEYMAP_OFFSET * Add custom RGB code for JJ40 * Reset Mechmini advertised power draw to 500. Will have to test actual maximum power draw later. * RGB working on JJ40. * Fix: saturation increase/decrease flipped * Add new directory for my custom keymap with RGB keycodes * Swap LAlt and LGUI * Update JJ40 max power draw with measured value * Update: fun40 rules.mk to enable underglow; earlier failed Travis CI --- keyboards/mechmini/config.h | 7 +- keyboards/mechmini/keymaps/default/keymap.c | 118 +--------------------------- keyboards/mechmini/mechmini.c | 7 +- keyboards/mechmini/usbconfig.h | 2 +- 4 files changed, 14 insertions(+), 120 deletions(-) (limited to 'keyboards/mechmini') diff --git a/keyboards/mechmini/config.h b/keyboards/mechmini/config.h index e7004608e..6a4523f85 100644 --- a/keyboards/mechmini/config.h +++ b/keyboards/mechmini/config.h @@ -30,12 +30,15 @@ along with this program. If not, see . #define MATRIX_ROWS 8 #define MATRIX_COLS 15 +#define NO_UART 1 + +/* RGB underglow */ +// The RGB_DI_PIN value seems to be shared between all PS2AVRGB boards. +// The same pin is used on the JJ40, at least. #define RGBLED_NUM 16 #define RGBLIGHT_ANIMATIONS #define RGB_DI_PIN E2 -#define NO_UART 1 - /* key combination for command */ #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) diff --git a/keyboards/mechmini/keymaps/default/keymap.c b/keyboards/mechmini/keymaps/default/keymap.c index 5cae1bc81..4a0a4dc0a 100644 --- a/keyboards/mechmini/keymaps/default/keymap.c +++ b/keyboards/mechmini/keymaps/default/keymap.c @@ -14,16 +14,12 @@ along with this program. If not, see . */ #include "mechmini.h" -#include "rgblight.h" #include "quantum.h" -#define MAX_BRIGHTNESS 15 -#define MAX_BRIGHTNESS_IOS 5 // max brightness suitable for iOS devices - -#define _BL 0 -#define _FN1 1 -#define _FN2 2 -#define _FN3 3 +#define _BL 0 // base layer +#define _FN1 1 // function layer 1 +#define _FN2 2 // function layer 2 +#define _FN3 3 // function layer 3 #define _____ KC_TRNS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -52,109 +48,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _____, _____, _____, _____, _____, _____, _____, _____ ) }; - -/** - * Blank keymap - [0] = KEYMAP( - _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ - _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, - _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, - _____, _____, _____, _____, _____, _____, _____, _____ - ) - */ - -uint8_t current_level = 4; -int is_on = 0; - -uint8_t r = 0xFF; -uint8_t g = 0xFF; -uint8_t b = 0xFF; - -uint8_t max_brightness = MAX_BRIGHTNESS_IOS; - -enum macro_id { - TOGGLE_RGB, - BRIGHTNESS_DOWN, - BRIGHTNESS_UP, - COLOR_1, - COLOR_2, - COLOR_3, - ENABLE_MAX_BRIGHTNESS -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - keyevent_t event = record->event; - - switch (id) { - case TOGGLE_RGB: - if (event.pressed) { - if (!is_on) { - current_level = 4; - is_on = 1; - } else { - is_on = 0; - } - } - case BRIGHTNESS_DOWN: - if (event.pressed && current_level > 0) { - current_level--; - } - break; - case BRIGHTNESS_UP: - if (event.pressed && current_level < max_brightness) { - current_level++; - } - break; - case COLOR_1: // set to pink - if (event.pressed) { - r = 0xFF; - g = 0x81; - b = 0xC2; - } - break; - case COLOR_2: // set to cyan - if (event.pressed) { - r = 0x00; - g = 0xE0; - b = 0xFF; - } - break; - case COLOR_3: // set to white - if (event.pressed) { - r = 0xFF; - g = 0xFF; - b = 0xFF; - } - break; - case ENABLE_MAX_BRIGHTNESS: // enable all 16 brightness steps - if (event.pressed) { - max_brightness = MAX_BRIGHTNESS; - } - break; - } - - return MACRO_NONE; -} - -const uint16_t fn_actions[] PROGMEM = { -}; - -void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b); - -uint8_t dim(uint8_t color, uint8_t opacity) { - return ((uint16_t) color * opacity / 0xFF) & 0xFF; -} - -void user_setrgb(uint8_t r, uint8_t g, uint8_t b) { - uint8_t alpha = current_level * 0x11; - rgblight_setrgb(dim(r, alpha), dim(g, alpha), dim(b, alpha)); -} - -void matrix_scan_user(void) { - if (!is_on) { - current_level = 0; - user_setrgb(r, g, b); - } else { - user_setrgb(r, g, b); - } -} diff --git a/keyboards/mechmini/mechmini.c b/keyboards/mechmini/mechmini.c index baa2e0357..9897da099 100644 --- a/keyboards/mechmini/mechmini.c +++ b/keyboards/mechmini/mechmini.c @@ -16,16 +16,16 @@ along with this program. If not, see . */ #include "mechmini.h" -#include "rgblight.h" - #include #include "action_layer.h" #include "i2c.h" #include "quantum.h" -extern rgblight_config_t rgblight_config; +#include "rgblight.h" +// custom RGB driver +extern rgblight_config_t rgblight_config; void rgblight_set(void) { if (!rgblight_config.enable) { for (uint8_t i = 0; i < RGBLED_NUM; i++) { @@ -42,4 +42,5 @@ void rgblight_set(void) { __attribute__ ((weak)) void matrix_scan_user(void) { rgblight_task(); + /* add other tasks to be done on each matrix scan */ } diff --git a/keyboards/mechmini/usbconfig.h b/keyboards/mechmini/usbconfig.h index b6b8cdbbb..d2d848fcd 100644 --- a/keyboards/mechmini/usbconfig.h +++ b/keyboards/mechmini/usbconfig.h @@ -118,7 +118,7 @@ section at the end of this file). /* Define this to 1 if the device has its own power supply. Set it to 0 if the * device is powered from the USB bus. */ -#define USB_CFG_MAX_BUS_POWER 100 +#define USB_CFG_MAX_BUS_POWER 500 /* Set this variable to the maximum USB bus power consumption of your device. * The value is in milliamperes. [It will be divided by two since USB * communicates power requirements in units of 2 mA.] -- cgit v1.2.3