Close

New Feature: Rest Timer

A project log for Wireless BLE Kinesis Advantage (Custom Controller)

Replaces the stock controller with an nRF52 BLE SOC and MCP23S17 io expander. BLE Kinesis with great (few months) battery life.

mike-wMike W 11/19/2018 at 02:060 Comments

A rest timer that uses the Kinesis' LED(s) to let you know when it's time to take a break. 

You're probably here because you own a Kinesis, and you probably own a Kinesis because you've run into some strain issues due to prolonged usage of your keyboard. As much as the Kinesis helps in reducing discomfort, it doesn't alleviate the need for frequent rests in between work. I've tried several timers, phone, software, sound alerts, haptic alerts on watches, but I haven't found the perfect timer that doesn't break me out of my flow while I work.

I wanted a timer that was:

- Easy and quick to set up

- Clear but unobtrusive

- Repeats

I've been thinking about building my own LED timer that syncs to my computer for a while, but yesterday I realized I could just build it straight into the keyboard! I've only been using this for a few hours, but this is by far my favorite feature of this firmware. I hope you guys find it useful too.

Settings

Everything is configured in config.h

It's on by default but you can turn it off by commenting out

#define REST_TIMER

You can set how long you'd like to work continuously for until a break

#define WORK_INTERVAL_MINS    20

Finally,  the keyboard assumes if you've been inactive for this long, you're already on a break so it'll reset the timer

#define WORK_TIMEOUT_MINS     5

Manual vs Auto Breaks

I originally had the keyboard assume we're on break if we need to take one and we were inactive for more than some time.

#define REST_INTERVAL_SECS    60

I realised this ended up cancelling breaks unintentionally, because believe it or not sometimes I went a whole minute without typing!  

That kind of defeats the purpose, so the default is to now require you to manually  enter break mode by pressing a key combo.  Of course you can uncomment this to bring back auto-breaks.

//#define REST_AUTO_BREAKS


Manually entering break mode:

Press DELETE + PROGM to let the keyboard know you're going on break. You can change this in the matrix of course. 

Summing Up 

The result of all this is a timer that is inherently always on, smart enough to track whether you need a break without knowing the time and get's out of your way when you don't want to break focus. Just look down every once in a while, and if your keyboard is blinking, take a break!

Discussions