App to show the shortcuts of the current application for Windows, Linux, and macOS
Tags: showdev, productivity, webdev, keyboard
Published: 2020-12-13 10:43:41

# Introduction

Looking up keyboard shortcuts on the web takes you out of the current context and breaks your workflow. That's why, [as a Linux user](https://tkainrad.dev/posts/setting-up-linux-workstation/), I have always been a bit envious of macOS users, who had access to tools that could instantly show the current application's shortcuts, such as [CheatSheet](https://www.mediaatelier.com/CheatSheet/), and [Pretzel](https://github.com/amiechen/pretzel). 

On Windows and Linux, there was no such thing. You had to find shortcut information in the software's documentation and hope that it was searchable. Or even worse, suffer a massive context switch and google for the shortcuts, until now. KeyCombiner Desktop is free to use and can show the active application's shortcuts on Windows, Linux, and macOS.

Suppose you are on macOS and already use one of the existing solutions. In that case, you might still want to read further because KeyCombiner goes far beyond looking up the active application's shortcuts.

# How does it look like?

If a picture says more than 1000 words, an animation will speak for itself:


![Instant shortcut lookup for three example applications.](https://dev-to-uploads.s3.amazonaws.com/i/0esv4eb3ld89hanodrrx.gif)
 

Upon pressing the global trigger, the lookup will appear with a search field in focus, where you can start to type right away. The default trigger is <kbd>super</kbd>+<kbd>shift</kbd>+<kbd>c</kbd> on Windows and Linux, and <kbd>cmd</kbd>+<kbd>shift</kbd>+<kbd>k</kbd> on macOS. This can be configured, I use <kbd>super</kbd>+<kbd>c</kbd> on Linux.

The search terms will be applied to the shortcut description, the key binding, and some hidden fields like the shortcut category. Do you want to search for all file-related bindings that use <kbd>Ctrl</kbd>? Type something like `file ctrl` and you have your answer.

The lookup window disappears whenever you click outside of it, when you press <kbd>esc</kbd>, or when you switch to another application via <kbd>cmd</kbd>/<kbd>ctrl</kbd>+<kbd>tab</kbd>. If you close via <kbd>esc</kbd>, the search term will be cleared. If you use <kbd>cmd</kbd>/<kbd>ctrl</kbd>+<kbd>tab</kbd>, you can switch back to the active application without losing the cursor position.


# What else can it do?

If you carefully watched the animation above, you might have noticed that the rows are grouped. The first group has the prefix `Active:` and is highlighted with a blue background. This group shows the shortcuts for the active application. Everything that is shown below this group is from the user's personal shortcut and command collections.

To explain what these are, I have to provide some background. KeyCombiner is an application to organize, learn, and practice keyboard shortcuts. A core idea is to learn precisely the shortcuts you need. The only way to achieve this is to choose them yourself, which is done by creating personal collections of shortcuts and text snippets. I like to compare this concept to how you build playlists in music software. Instead of browsing your favorite artists’ albums, KeyCombiner allows you to browse shortcut collections of your favorite applications. Instead of adding songs to your playlists, you can add keyboard shortcuts and text snippets to your personal collections.

The instant lookup of KeyCombiner Desktop profits immensely from these collection building features, and vice-versa. Having instant access to your collections makes them a lot more valuable. In short, these two features complete each other.

The instant lookup works offline. Your personal collections are downloaded only on application startup. If you modified your collections while KeyCombiner Desktop was running, you may reload the lookup via (<kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>R</kbd>).


I will try to illustrate this with my personal experience. Currently, I have 10 personal KeyCombiner collections. My largest one contains more or less all shortcuts that I already knew when I started to use KeyCombiner. This collection is publicly accessible via this [shareable link](https://keycombiner.com/collecting/collections/shared/89e47af4-0f2e-4d5d-98fa-6966bc7453cc/). Then, I did a [blog post challenge to learn 50 new keyboard shortcuts as fast as possible](https://tkainrad.dev/posts/how-i-learned-50-new-keyboard-shortcuts-in-42-minutes/). More recently, I [learned *all* VSCode keyboard shortcuts](https://tkainrad.dev/posts/learning-all-vscode-shortcuts-evolved-my-developing-habits/), which evolved my developing habits and added another collection with 151 shortcuts to my repertoire.
Add to that a few smaller collections I used for learning the shortcuts of Chrome DevTools, Nautilus, Spotify, and Vimium. Having instant access to all of these shortcuts without leaving my current context feels like a superpower, even though I admit that some of those superpowers you see in movies look even more powerful.

My most recent new use case is to look up regular expressions. There is an [article](https://tkainrad.dev/posts/automatically-add-kbd-tags-with-a-single-regex/) on how to automatically add HTML \<kbd>-tags to any text via a single regex replace operation. I use this for all of my blog posts, all \<kbd> tags you see in this post are added this way. However, it wouldn't be so convenient if I couldn't instantly look up and copy-paste the required regular expression:


![The lookup also shows shortcuts and text snippets from your personal collections.](https://dev-to-uploads.s3.amazonaws.com/i/bz48ckrr8i743156pu7a.gif)
 

KeyCombiner's instant lookup is a cheatsheet of sorts. But it is context-aware, searchable, and you can expand it quickly by importing from public or shared collections. It is also friendlier to the environment than printing out PDFs and hanging them next to your desk.

# How does it know the active application's shortcuts?

There is a very boring answer to this question: By maintaining an extensive public database of keyboard shortcuts. You might have noticed from reading this post that I am quite excited about Keycombiner. That's why I spend considerable time to parse the documentation pages of software tools for their keyboard shortcuts. It's not as dull as it sounds like; creative use of regular expressions makes it quite fun. Don't judge me; everyone has a weird hobby.

You can browse the database at https://keycombiner.com/collections/.  
The instant lookup works for all desktop-based applications that are listed there.  In particular, it should work for all apps that an average software developer uses (VSCode, JetBrains IDEs, Vim, Eclipse, Chrome, Firefox, Safari, Nautilus, Finder, Notion, Slack, Explorer, Terminal, iTerm2, Obsidian,...). This list is growing fast, and I am happy to take suggestions.

One downside of this approach is that KeyCombiner can only show the default bindings for the active application. If you have changed these bindings, that's not ideal. Fortunately, If you went through the trouble of changing a binding, you usually won't need to look it up. In any case, you can add the customized binding to a personal collection, and the lookup will show it as explained above.

Existing tools for macOS use a different approach. They rely on a macOS API to retrieve menu keyboard shortcuts for the current application. This has its advantages and disadvantages. The great thing about it is that it works automatically for all applications that have a menu. On the other hand, applications
don't necessarily register all of their shortcuts as menu shortcuts.

# How can I use it?

Simply go to https://keycombiner.com/desktop/ and grab the installer for your system. On macOS, you need to grant some permissions for the instant lookup to work. Please refer to the bottom of the linked page for instructions on how to do that.

KeyCombiner is a SaaS with a generous free tier. **All features described in this article are entirely free to use.** If you use KeyCombiner a lot, please consider upgrading to a Pro subscription to get access to additional features and to support hosting and development efforts. 

If you are a developer, you might be interested in how I implemented the checkout process for the Pro subscription. I recently [published a blog post describing the implementation](https://tkainrad.dev/posts/implementing-paddle-payments-for-my-django-saas/) in detail.



# Conclusion

KeyCombiner can do a lot more things than what's described in this post. However, the instant lookup has quickly become one of my favorite features. Admittedly, I don't use KeyCombiner every day for learning shortcuts. Usually, after I have [mastered all shortcuts](https://tkainrad.dev/posts/learning-all-vscode-shortcuts-evolved-my-developing-habits/) of a new collection, it takes a couple of days or even weeks until I get back to frequent practice.

In contrast, I use the instant lookup *all the time*. If I am on a different computer without KeyCombiner installed, I notice that something is missing after a couple of minutes.

**Enough about me, though. I'd be thrilled to hear about your experience with the software.**