Why I built a new app for practicing keyboard shortcuts
- Why Keyboard Shortcuts don't work on non-US Layouts and how Devs could fix it
- An Interactive Virtual Keyboard to Visualize any Collection of Shortcuts
- An app to show the shortcuts of the current application for Windows, Linux, and macOS
- Automatically add <kbd>-tags with a Single Regex
Introduction
I have always wanted to build a software product as a side project. Something that I could gradually improve and work on for years without deadlines and technology restrictions. Something that was my side-project. Fortunately, I was never short of ideas. In my post on managing my personal knowledge base, I have mentioned that I keep a Notion database of project ideas. It has plenty of entries.
In the same post, I also described my shortcut database use case. It was a spreadsheet to keep track of all the keyboard shortcuts I was using. Something about this motivated me much more than all the Slack bots and browser extensions lurking around in my ideas list. So, I started to work and expand on the concept in the form of a new web application. Initially, I thought It would take me until the end of 2020 to have anything that I could share with the world. Then, the Corona-lockdown came, and suddenly most of my other free time activities were no longer possible.
Long story short, keycombiner.com is now available for everyone to use. This post covers how it compares to existing tools, what it tries to do, how it does it, and the road ahead.
KeyCombiner is completely free to use, with no strings attached. For a demo of the Practice mode or browsing public shortcut collections, you don’t even need to create an account.
Existing Tools
There are a lot of typing practice tools available. However, KeyCombiner is quite different from all of them.
The vast majority of existing tools focus on text typing. These applications will show you automatically generated pieces of text that you are supposed to type as fast and as correct as possible. Usually, you will get a report at the end about your speed and accuracy. I do like this a lot and often test my typing speed. It is a fun thing to do once in a while, and if you realize that your typing speed is low, you might want to work on it. Of course, these tools have nothing to do with keyboard shortcuts. They will not help with learning them and also do not include them in their typing practice.
When looking at practicing keyboard shortcuts, there are far fewer alternatives to choose from. But still, there are a couple of existing apps. To my knowledge, all of them work with pre-defined lessons, which is very unintuitive for me. I don’t want to learn all keyboard shortcuts of a particular app. Also, they are focused solely on learning keyboard shortcuts, not with your typing skills per se. Therefore, they do not record typing speed, accuracy, or any other such metrics. For me, this alone removes most of the motivation for using such a tool. I don’t want to only learn shortcuts, I also want to become faster and more accurate at using them.
KeyCombiner aims to bridge this gap between typing training software and shortcut learning apps. Besides, it goes to great lengths to make it easy to learn and practice not just any shortcuts but precisely the ones you want to use. If you like to look at Venn diagrams that probably shouldn’t be Venn diagrams, I have just the thing for you:
Goals
Developing KeyCombiner, I had and still have the following goals:
Enable efficient creation of keyboard shortcut collections
The first goal is, of course, to cover the original use case described in my knowledge management post. Having an overview of all the keyboard shortcuts you are using and intend to learn is already useful in itself. However, it is clear that most people don’t want to spend a lot of time with this task, so it has to be possible in a couple of minutes to build meaningful collections.
Facilitate learning of keyboard shortcuts
Generally, I want to provide as much value on top of a user’s shortcut collections as possible. Learning new keyboard shortcuts is probably the most powerful thing that can be done. It is therefore the second fundamental goal of KeyCombiner.
Allow to practice also text snippets
As developers, we have many short text snippets that we need to remember. Think of git commands or language syntax. These feel similar to keyboard shortcuts, and I would like to be able to practice them together.
Help to improve typing speed and accuracy
Going beyond mere memorization of keyboard shortcuts is an important aspect and one thing that sets KeyCombiner apart from other software. The goal is not just to learn keyboard shortcuts, but to be able to type them fast and accurately, too.
How it works
This section covers KeyCombiner’s three main areas. However, those are very much connected, as illustrated in the following figure:
Create shortcut collections
A core idea of KeyCombiner is to learn and practice exactly the shortcuts you need or want to use. The only way to achieve this is if you choose them yourself.
I thought a lot about how to make this collection building process as efficient as possible. From the start, it was apparent that it would need to be possible to import keyboard shortcuts and text snippets from a public database of popular application shortcuts. This mechanic can be used to build the bulk of your collections quickly. They can then be completed by manually adding entries.
I like to compare my approach to how you build playlists in music software. Instead of browsing your favorite artists' albums, KeyCombiner allows you to browse categories of your favorite applications. Instead of adding songs to your playlists, you can add keyboard shortcuts and text snippets to your collections:
KeyCombiner’s public collections already contain thousands of keyboard shortcuts. Each collection can be filtered and searched quickly.
Creating collections of keyboard shortcuts is already a use case in itself. It can help to answer a variety of questions:
- How many shortcuts am I using?
- Are my key bindings logical and consistent or am I using completely different combinations for similar things?
- For which applications am I using my shortcuts?
- I am setting up a new machine and want to set up my key bindings. What were those exactly?
When combining personal shortcut collections with the other two main areas of KeyCombiner, we can answer even more interesting questions:
- How well do I actually know the shortcuts in my collections?
- How fast can I type them?
- How often do I make an error while typing a specific shortcut?
As shown in the illustration above, collections are annotated with information gathered from KeyCombiner’s statistics. Most importantly, the confidence value shows how good you are with a combination in your collections:
Learn shortcuts flashcard-style
Before going deeper into confidence values and other statistical measures, we need to take a step back and look at how data is gathered. It is done while you practice your shortcut collections.
In principle, KeyCombiner’s interactive training is similar to other applications. You are shown what a shortcut does and, ideally, you know the keys and type it in correctly:
What makes KeyCombiner unique in this regard is that you are practicing your very own collections, hence exactly the shortcuts you want to learn! Furthermore, KeyCombiner gathers detailed statistics that help to analyze your performance. You might know how many words you can type by minute (WPM), but do you also know how many keyboard shortcuts you can execute during this time?
There are many more things to be said about the Practice mode. It does all kinds of things to make learning as efficient as possible. For example, it uses ideas from spaced repetition and shows keyboard shortcuts with low confidence value more often than others. Then, there is the option to display the actual keys of a combination after a delay that gives you some time to think. This is a tricky thing to do because key combinations typed with hints should not influence the confidence value. But that’s a topic for another blog post.
What I like to do personally is to gradually expand my collections. For example, I set a goal of learning 10 new shortcuts a given week. Then, at the beginning of the week, I browse the public collections for 10 new shortcuts and add them to one of my collections. Throughout the week, I do a 60-seconds practice session from time to time. Because the new shortcuts have a low confidence value at the beginning, KeyCombiner will show them often during practice, and after just a couple of practice runs, I usually know them well.
Statistics to improve accuracy & speed
One of the defined goals is to help users improve their typing skills beyond just remembering shortcuts. It is of similar importance to be able to type them fast and accurately. To help identify weaknesses and bad habits, KeyCombiner gathers detailed statistics during practice.
The below figure shows an example bar chart for one of my early practice runs.
It is immediately obvious that I had problems typing Shift+a, Ctrl+Alt+m and Ctrl+Shift + c. Using such statistics, I actually found that I was occasionaly making mistakes with some of the most essential shortcuts: Ctrl+x/c/v. This was because I used my pointer finger for each of them. After realizing that this was a problem, I started to use the middle finger for Ctrl+x and am no longer making mistakes.
When taking the average time into account, there are many more observations to make. If you find out which combinations are the fastest to type for you, you can use this knowledge and set such convenient combinations wherever possible.
Roadmap
The most pressing issue right now is user onboarding. Unfortunately, many people sign up and then never create any meaningful collections. Some import all combinations of popular apps into a collection and quickly lose interest. This is not surprising because learning with all combinations of a public collection is not a good idea. It has all the problems of apps based on pre-defined drills but misses out on some of their benefits. Therefore, I am exploring possibilities to make the process of building your own collections even more obvious and seamless.
After that, I will publish a desktop app. This will be nice because it will allow to train also shortcuts that are otherwise reserved for the browser, such as Ctrl+(Shift)+N/T/W.
Another important milestone in the relatively near future will be searching for shortcuts across all public collections. I am quite excited about this as I don’t think there is anything similar in any other app. How would you currently find out which applications offer Ctrl+Alt+R as a keyboard shortcut? The question is relevant e.g., for developers thinking about which shortcuts to include in their applications.
Update from the future: All three items are now done.
- User onboarding was improved by showing hints for new users, and by improving the spaced repetition algorithm to facilitate learning with large, unknown collections.
- The desktop app is available! In addition to enabling the practice of browser-reserved shortcuts, it comes with an instant look up for all shortcuts that are in your combined collections plus those of the currently active application.
- The shortcut search is live and kicking! It works via URL parameters, so you can, for example, use this link to see all shortcuts in KeyCombiner’s database that use ctrl+enter on Windows/Linux, and cmd+enter on macOS.
Conclusion
I am very happy with the way my side project progressed, but there is a long road ahead. Keyboard shortcuts are a surprisingly rich domain.
If the described concepts sound interesting to you, please go ahead and have a look at https://keycombiner.com. There is a demo of the interactive trainer directly on the landing page, and you can sign up for free with just an email address or log in with your Google account.
I would love to hear what you think of it.
Finally, if you are interested in following KeyCombiner’s evolution, please consider signing up to its newsletter using the form below.