Automating your keyboard’s backlit with Bash

Raymel Francisco
3 min readAug 27, 2017

--

You have a keyboard, it backlits at night, but not in day. You save a bit of energy, and your keyboard looks cool at night. Great!

But… wait a minute.

I’m learning Bash lately, and I guess sharing my learning experience with you will be fruitful on my writing experience as well. Bear with me.

Going back…

So I used a simple algorithm in making my keyboard a little bit smarter with Bash. Bash’s syntax is a bit strange for me, and took me a day before getting used to it. But why Bash when I can do it with a language I’m comfortable with, like Python? Well, exposing yourself to new habits from time to time exercises your brain’s neuroplasticity, which is good.

So here’s how the backlit’s simple algorithm works,

Living near the equator gives us full 12 hours of daylight/darkness everyday.
Therefore I shall conclude, that my keyboard must be cool in between 6pm and 6am, and eco-friendly between 6am and 6pm.

Thus, giving us this logic flow:

But wait, why those formulas?

Because 6pm is the 18th hour of day. The second formula is the same as the first, I just put it into the context of time resetting back to 0 at 12am. I guess, for the sake of a clearer view of the algorithm.

Okay, so now the keyboard knows when it should switch. Great.

But wait…

How should it switch… the scroll lock?

Well, for some keyboards, pressing the Scroll Lock key triggers backlit.

And for most Linux machines, you can control your keyboard LEDs using xset command.

From xset man page:

led

The led option controls the keyboard LEDs. This controls the turning on or off of one or all of the LEDs. It accepts an optional integer, a preceding dash(-) or an ‘on/off’ flag…

…For example, to turn on the Scroll Lock LED:
xset led named "Scroll Lock"

Cool.

So now we have all we need, we can now write the code.

Feel free to correct me or suggest simpler ways. I’ll be glad and grateful to learn from you. ;)

This script is hosted in Github as well, as part of my personal and personalized Bash scripts.
https://github.com/raymelon/bash-wrappers/blob/master/auto-scrlck

Cheers!

This article is originally posted in The Practical Dev as well.

--

--

Raymel Francisco

Computer Science Research, Polytechnic University of the Philippines