qmk / qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families
https://qmk.fm
GNU General Public License v2.0
18.28k stars 39.38k forks source link

Ergodox Infinity LCD light issue on the slave-half #1456

Closed roded closed 6 years ago

roded commented 7 years ago

Hi, Using the 0.5.69 tag, I'm experiencing an issue with the LED lights on the half of the keyboard which is not connected to the computer (same behavior for both the left and right halves). The LED display works and updates just fine but the lighting is silent. I'm using the provided colemak keymap if that makes a difference.

fredizzimo commented 7 years ago

You are not the first one to report this https://github.com/qmk/qmk_firmware/issues/1415

But it doesn't occur on all keyboards and I don't have LEDs installed myself to test this myself, so currently I have no idea what's wrong. But I will read the code carefully to see if there's some potential issue.

I'm closing this as a duplicate of #1415

roded commented 7 years ago

Apologies, I mistyped LED instead of LCD. My issue is with the LCD backlights, not LED backlights.

fredizzimo commented 7 years ago

Ah, I will re-open this then.

The underlying cause could still be the same, but since the behaviour is different, we should have two different issues.

fredizzimo commented 7 years ago

Does anyone else experience this? Any additional information or help with debugging this issue is would greatly be appreciated.

mhweaver commented 7 years ago

I've got the same issue - the LCD works on both halves, but the LCD backlight on the slave half doesn't seem to work with QMK. Not sure what extra info I can provide, other than verifying that more than one person has the problem, though...

Edit: I was messing around with visualizer.c and removed the is_serial_link_master() check and always set new_index and old_index with get_led_index_master(). The LCD backlights match, mimicking the behavior of the stock KLL firmware, which I'm fine with for now. get_led_index_slave() doesn't appear to want to give me a useful index.

fredizzimo commented 7 years ago

Ah, after reading your edit, I now know what the issue is.

The behaviour is like that by design. The default visualizer tries to emulate the LEDs of the standard Ergodox, which has three LEDs, a red, a green and a blue one. It's a bit tricky to emulate that, with just two screens, so it works like this.

But that's the default visualizer, which is used, if you don't implement your own. It's only there to display somewhat meaningful information, on keymaps without a custom one.

The easiest way to make a custom visualizer, is to use simple_visualizer, check out the default keymap for an example. You can also implement a completely custom visualizer for more interesting effects.

I will soon have time to write documentation, so stay tuned for that.

gabeplaysdrums commented 6 years ago

@mhweaver could you possibly share a topic branch with the code changes you made to get the backlight color showing up on both halves? That's the behavior I'd like but having trouble groking the changes needed.

dudeofawesome commented 6 years ago

You can check out my ErgoDox layout, which links the LCD backlight color between halves. The line that does that is dudeofawesome/visualizer.c#L189.

drashna commented 6 years ago

"by design" and fix linked.

Closing.