From 589d99b448e6085513799fbb183f6389d4df408d Mon Sep 17 00:00:00 2001 From: Ralf Schmitt Date: Tue, 8 Apr 2014 21:02:46 +0200 Subject: New macro: ACTION_BACKLIGHT_LEVEL(level) To have full control of the backlight level. --- keyboard/lightsaber/backlight.c | 48 ++++++++++++++++++++++++++++++------- keyboard/lightsaber/backlight.h | 9 +++++++ keyboard/lightsaber/keymap_winkey.h | 14 ++++++++--- 3 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 keyboard/lightsaber/backlight.h (limited to 'keyboard/lightsaber') diff --git a/keyboard/lightsaber/backlight.c b/keyboard/lightsaber/backlight.c index b28200807..59b8b4a63 100644 --- a/keyboard/lightsaber/backlight.c +++ b/keyboard/lightsaber/backlight.c @@ -26,8 +26,8 @@ along with this program. If not, see . * Backside PD6 (high) * TopRight PD7 (low) * F-Row PE6 (high) - * */ + void backlight_set(uint8_t level) { // Set as output. @@ -35,22 +35,52 @@ void backlight_set(uint8_t level) DDRD |= (1<<6) | (1<<7); DDRE |= (1<<6); - if(level & (1<<0)) + if (level & BACKLIGHT_ALPHA) { - PORTB &= ~(1<<1); - PORTB &= ~(1<<2); - PORTB &= ~(1<<3); - PORTD &= ~(1<<6); - PORTD |= (1<<7); - PORTE &= ~(1<<6); + PORTB |= (1<<1); } else { - PORTB |= (1<<1); + PORTB &= ~(1<<1); + } + if (level & BACKLIGHT_NUMERIC) + { PORTB |= (1<<2); + } + else + { + PORTB &= ~(1<<2); + } + if (level & BACKLIGHT_MODNUM) + { PORTB |= (1<<3); + } + else + { + PORTB &= ~(1<<3); + } + if (level & BACKLIGHT_BACKSIDE) + { PORTD |= (1<<6); + } + else + { + PORTD &= ~(1<<6); + } + if (level & BACKLIGHT_TOPRIGHT) + { PORTD &= ~(1<<7); + } + else + { + PORTD |= (1<<7); + } + if (level & BACKLIGHT_FROW) + { PORTE |= (1<<6); } + else + { + PORTE &= ~(1<<6); + } } diff --git a/keyboard/lightsaber/backlight.h b/keyboard/lightsaber/backlight.h new file mode 100644 index 000000000..6dc7967a6 --- /dev/null +++ b/keyboard/lightsaber/backlight.h @@ -0,0 +1,9 @@ + +enum backlight_level { + BACKLIGHT_ALPHA = 0b0000001, + BACKLIGHT_NUMERIC = 0b0000010, + BACKLIGHT_MODNUM = 0b0000100, + BACKLIGHT_BACKSIDE = 0b0001000, + BACKLIGHT_TOPRIGHT = 0b0010000, + BACKLIGHT_FROW = 0b0100000, +}; diff --git a/keyboard/lightsaber/keymap_winkey.h b/keyboard/lightsaber/keymap_winkey.h index 59ffd4a8f..3e8367083 100644 --- a/keyboard/lightsaber/keymap_winkey.h +++ b/keyboard/lightsaber/keymap_winkey.h @@ -1,3 +1,5 @@ +#include "backlight.h" + static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KEYMAP(\ ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, PSCR, SLCK, BRK, \ @@ -8,14 +10,20 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL,LGUI,LALT, SPC, NO, RALT,RGUI,RCTL, KP_0, NO, KP_DOT, NO), \ KEYMAP(\ CALC,MYCM,WSCH,WHOM,MAIL,MUTE,VOLD,VOLU,MSEL,MSTP,MPLY,MPRV,MNXT,TRNS, TRNS, WAKE, PWR, SLEP, \ - TRNS,TRNS,TRNS,TRNS,END ,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS, \ + FN1, FN2, FN3, FN4, FN5, FN6, FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS,TRNS,TRNS,TRNS,PGDN,TRNS,LEFT,DOWN,UP ,RGHT,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS, \ TRNS, TRNS,TRNS,TRNS,TRNS,PGUP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS, \ - TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS) + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS) }; static const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_BACKLIGHT_STEP() + [1] = ACTION_BACKLIGHT_TOGGLE(), + [2] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_ALPHA), + [3] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_MODNUM), + [4] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_NUMERIC), + [5] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_FROW), + [6] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_BACKSIDE), + [7] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_TOPRIGHT) }; -- cgit v1.2.3-24-g4f1b