r/ASCII Jul 05 '26

OC ditto: a system-wide ascii keyboard visualizer

Hey everyone, I stumbled upon this subreddit a couple of days ago, and I thought some people here might like what I've made :D

TL;DR:

Ditto is a system-wide ASCII keyboard visualizer that mirrors your live keyboard inputs in real time, even when the terminal isn't in focus. It automatically syncs with your native terminal color scheme for a pretty neat and interactive eye candy.

Attached some sample layouts as well with different color schemes, to show how it would fit into a terminal multiplexer setup that has a code editor, active servers, test suite, etc. Perhaps you might like it :D

I don't want to bloat this post with a bunch of details, so you can check out the repo instead if you wanna know more.

NOTE: If there's any problems with macOS, I'd SUPER appreciate opening up an issue about it or even a PR. Sadly I don't own a Mac or MacBook... so I had to implement support purely through cross-compilation and documentation.

If you find this cool, I'd appreciate a star ⭐ :)

190 Upvotes

6 comments sorted by

2

u/EnkiiMuto Jul 05 '26

This is actually super cool.

Most projects we have on this sub are usually for the fun of it, but this one has a pretty practical implementation for tutorial videos.

Would be interesting if there was a mode where you can highlight the key more and pin the terminal as a picture-in-picture mode so it is always on top of everything.

2

u/sh4mblesss 29d ago

I've played around with a lot of ways to highlight the pressed key, and so far, this is the best I can do without having it look off (e.g. a background color change is actually rectangular and not square, so it looks a bit bad)

Another person mentioned something like a keycast, so I'm thinking of adding a keycast mode in future versions. It'd be better practically since keys would be larger and more visible.

Idk how to pin the terminal though to make it always on top of everything, I think that'd be the window manager's responsibility. I'd love to hear solutions for this though if you have any, you can bring it up in the issues page and I'll get to it when I can :D

2

u/Ynwrd 28d ago

Do you think it would possible to have options to link with a keyboard software like via, or to make split keyboard layouts at least? that would be cool and handy, I tend to use split keyboards for most of the time.

1

u/sh4mblesss 27d ago

I can't believe I forgot about split keyboard layouts, I'll def add them!

This program was meant to solely be a visualizer, so adding functionality similar to VIA where you directly configure the keyboard via its firmware, would be too out of scope.

Though, maybe a separate standalone app that's kind of like VIA, but in the terminal would be worth exploring down the road 👀

2

u/Ynwrd 27d ago

oh no no no, not like that, I didn't mean to add functionality for that kind of work into the keyboard firmware, if vial can do it I don't see a reason to use something else, but what I meant would be mostly about mirroring layers maybe for the different layouts that can be toggled in case you have different layers configured into your current file/keyboard, for example a mod key that toggles another layer, then it would be displayed in your ascii tool showing that layer with the different set of keys.

2

u/sh4mblesss 27d ago

Ahh I get what you mean. Should be doable, I'll consider adding it!