Is there a program that allows you to create keyboard shortcuts that consist of regular keys?
I'm looking for a method that will allow me to turn custom, nonstandard key combinations into a currently-unused intermediary key (like F16 or something). The intermediary key would then be able to be recognized in other applications (such as FastScripts), so that I can finally assign this intermediary keyboard shortcut to whatever action within that application that I desire.
By "nonstandard key combinations," I mean combinations that do not incorporate any modifier key (that is, ⌘ command, ⌥ option, ⌃ control, fn, or ⇧ shift).
Examples of nonstandard key combinations, pressed simultaneously:
1 + 0
A + D
space bar + V
W + 5
tab + Q
I have installed Karabiner, but I don't see a way to accomplish this in Karabiner.
Are there any programs that can do what I am looking for?
OS X El Capitan, version 10.11.6.
Solution 1:
This can be done in Karabiner, but is counter-intuitive and turns common keyboard usage upside down (check the first sentences of Monomeeth's answer).
An example for [M+N] to F13 is already provided in the presets of Karabiner:
Mapping 1+0 to F16 would require to add the following snippet to private.xml:
<item>
<name>Simultaneous Key Presses [0+1] to F16</name>
<identifier>remap.simultaneouskeypresses_012f16</identifier>
<autogen>__SimultaneousKeyPresses__ KeyCode::KEY_0, KeyCode::KEY_1, KeyCode::F16</autogen>
</item>
By defining an additional vk_lazy key (i.e. 0) it should also be possible to first press 0 and then 1 and depending on the first key up either send an F16 or write 01
, which is a more comfortable behavior typing "shortcuts" on a keyboard.
Solution 2:
I don't believe what you want to do is going to be possible if Karabiner can't do it.
The reason we have modifier keys (i.e. control, option, shift, and command) is that they need to modify the standard alphanumeric keys so that they're being recognised as something else besides their alphanumeric value. Let me explain this further:
- When an alphanumeric key is pressed, its input is sent to the frontmost active application. So, if you have MS Word open and, using your first example keyboard shortcut: 1+0, pressing these keys will be recognised by MS Word as a '1' and '0' respectively unless their value is modified (e.g. by a modifier key).
- But, what you want to effectively do, using your first example keyboard shortcut: 1+0 again as the example, is use the 1 key as the modifier key and/or the fact that both the 1 and 0 keys, if pressed simultaneously, represent something different to a '1' and '0'.
- Now you can see why this may cause problems: If the 1 key is acting as a modifier key, then how do you get the active app to recognise a '1' when you need it to? Or, if you're wanting this to work only when the 1+0 keys are pressed simultaneously, what happens if either key is pressed ever so slightly before the other key? That's not simultaneous and therefore your input will be screwed up (so to speak).
- So, to get this to work Karabiner (or some other utility) is going to have to be smart enough to manage this conundrum. As Thomas Tempelmann mentions in their comment below, one way to do this would be to add a delay after key presses so that the frontmost app doesn't recognise the key yet. But of course, any such delay is going to have to be very short (trust me - even a split second delay in something can cause users to feel a system is not being responsive).
You may want to refer to the: macOS Human Interface Guidelines - Keyboard Shortcuts page for a better understanding of Apple's guidelines to developers on this.
As an aside, when developers create games and a key is used for a specific purpose (e.g. the Z key moves the character left) the game is still recognising the Z key as a 'Z' but has just been programmed to accept the 'Z' value as meaning the character moves left.
Any software that appears to change the action of a key press (e.g. games that allow you to customise your controls, or utilities such as USB Overdrive, ControllerMate, etc) still accept the default key value rather than needing to modify them, and that's how they achieve their function.
For example, a user can use USB Overdrive to map a key (let's say the T key) to a particular function with or without the use of modifier keys, but when they're used without a modifier key they're still being recognised as having their original input. So I do not think they're going to be useful to you either, and of course, they're not designed to create keyboard shortcuts per se. However, you could check them out anyway (they're free to try) just in case you can trick either of them to do what you want:
- USB Overdrive
- ControllerMate
Notes:
- I have used both USB Overdrive and ControllerMate, but do not have any association with them whatsoever.
- For what it's worth, ControllerMate offers more advanced functionality (but it is more difficult to master).
- You may want to contact Karabiner support or send the developer an email as I still think it's your best bet and may be able to do what you want.