summaryrefslogtreecommitdiffstats
path: root/keyboards/duck/orion/v3/v3.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/duck/orion/v3/v3.c')
-rw-r--r--keyboards/duck/orion/v3/v3.c58
1 files changed, 18 insertions, 40 deletions
diff --git a/keyboards/duck/orion/v3/v3.c b/keyboards/duck/orion/v3/v3.c
index 95da4b45b6..ca5c512cee 100644
--- a/keyboards/duck/orion/v3/v3.c
+++ b/keyboards/duck/orion/v3/v3.c
@@ -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;
- }
-}
-
-// 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 */
- };
+// 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.
- 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) {