[Keyboard] Orion Locking Indicator LED Support (#7683)
* add indicator lighting support thanks to Keebology tracing * set the correct number of underglow LEDs * add comments and skeletal structure for layer indicator LEDs * add backlight areas pins * update readme * we can't turn leds on based on zones, so we use multiple backlight pin support instead to turn them ALL on and control them. * add comments to backlight setting * make a more useful default keymap that can also be used for testing * add duck orion to list * add indicator led support * update readme * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/duck/orion/v3/matrix.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * add the appropriate header files * fix indent so Drashna will not die * Update keyboards/duck/orion/v3/v3.c Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/duck/orion/v3/keymaps/default/keymap.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/duck/orion/v3/keymaps/default/keymap.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/duck/orion/v3/readme.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/duck/orion/v3/readme.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/duck/orion/v3/readme.md Co-Authored-By: fauxpark <fauxpark@gmail.com> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: fauxpark <fauxpark@gmail.com>
This commit is contained in:
parent
8af1501328
commit
64263bbb02
6 changed files with 64 additions and 72 deletions
|
@ -16,48 +16,26 @@
|
|||
#include "v3.h"
|
||||
#include "indicator_leds.h"
|
||||
|
||||
enum BACKLIGHT_AREAS {
|
||||
BACKLIGHT_ALPHAS = 0b00000010,
|
||||
BACKLIGHT_MODNUM = 0b00001000
|
||||
};
|
||||
// Alphas PB1
|
||||
// Navigation Cluster: PB2
|
||||
// Number Row, Mods: PB3
|
||||
// Function Row: PE6
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
switch(level) {
|
||||
case 0:
|
||||
PORTB |= BACKLIGHT_ALPHAS;
|
||||
PORTB |= BACKLIGHT_MODNUM;
|
||||
break;
|
||||
case 1:
|
||||
PORTB &= ~BACKLIGHT_ALPHAS;
|
||||
PORTB |= BACKLIGHT_MODNUM;
|
||||
break;
|
||||
case 2:
|
||||
PORTB |= BACKLIGHT_ALPHAS;
|
||||
PORTB &= ~BACKLIGHT_MODNUM;
|
||||
break;
|
||||
case 3:
|
||||
PORTB &= ~BACKLIGHT_ALPHAS;
|
||||
PORTB &= ~BACKLIGHT_MODNUM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Other than using RGB or LED matrix, QMK cannot turn on specific zones
|
||||
// of backlight LEDs. Unfortunately, Duck PCBs do not follow this design
|
||||
// and instead use multiple pins connected to each of these zones. QMK is
|
||||
// only able to control them ALL with the current default mechanisms.
|
||||
|
||||
// Port from backlight_update_state
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
bool status[8] = {
|
||||
IS_HOST_LED_ON(USB_LED_SCROLL_LOCK), /* LED 3 */
|
||||
IS_HOST_LED_ON(USB_LED_CAPS_LOCK), /* LED 2 */
|
||||
IS_HOST_LED_ON(USB_LED_NUM_LOCK), /* LED 1 */
|
||||
|
||||
layer_state & (1<<2), /* LED 6 */
|
||||
layer_state & (1<<1), /* LED 5 */
|
||||
layer_state & (1<<0) ? 0: 1, /* LED 4 */
|
||||
|
||||
layer_state & (1<<5), /* LED 8 */
|
||||
layer_state & (1<<4) /* LED 7 */
|
||||
};
|
||||
|
||||
indicator_leds_set(status);
|
||||
// Locking indicator LEDs
|
||||
// The Duck Orion V3 has 3 locking indicator LEDs and are located to the right
|
||||
// of the Escape key.
|
||||
bool led_update_kb(led_t led_state) {
|
||||
if(led_update_user(led_state)) {
|
||||
writePin(B0, !led_state.caps_lock);
|
||||
writePin(B4, !led_state.num_lock);
|
||||
writePin(D7, !led_state.scroll_lock);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue