1
0
Fork 0

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
This commit is contained in:
Kenneth Aloysius 2018-01-02 09:34:46 +11:00 committed by Jack Humbert
parent 85ea963931
commit eba4cb7a04
12 changed files with 143 additions and 139 deletions

View file

@ -30,12 +30,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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)))

View file

@ -14,16 +14,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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);
}
}

View file

@ -16,16 +16,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mechmini.h"
#include "rgblight.h"
#include <avr/pgmspace.h>
#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 */
}

View file

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