3

TLDR

I'm looking for a way to disable the Option + Key = Symbol behaviour of most keyboard layouts (like US and dvorak), but still allow the application to capture those keypresses.


Ideal solution

Make Option + Key send exactly that to the application: Option + Key. Which means, the part where Option + Key gets turned into a symbol is disabled, while retaining all other behaviours of the layout. This, regardless of the layout that happens to be selected, be it US, dvorak, or any other layout.


Problem description and attempted solutions so-far

When using the "U.S.", "ABC", "ABC extended", or "dvorak" layouts, Option + Key gives symbols.

  • This is problematic, as in some applications (e.g. VS Code) these cannot all be used for keyboard shortcuts. For example, Option + T works as a shortcut, but Option + N gives ˜ (the issue probably due to it being a dead key that is waiting for the second input).

The "Unicode Hex Input" layout does not do symbols. With it, Option + Key is no longer a problem; the symbols are gone, and the active application can capture the keypresses so the keyboard shortcuts work. Perfect. Or is it?

  • It is not. One issue is that "Unicode Hex Input" has qwerty-layout, and an equivalent dvorak layout does not seem to exists. A second issue is that, in this layout, other and common shortcuts no longer universally work. For example, in firefox, word and powerpoint, Option + Left/Right no longer moves the cursor to the previous/next word. (Although confusingly, VS Code does not suffer from this issue.)
5
  • 2
    IMHO all keyboard layouts "just work". This of course doesn't necessarily mean that functionality meets everybody's needs or wishes. It would be more productive to have a question to solve the specific problem like "how to make keybindings in VS Code with Option as modifier key" Commented Feb 6 at 9:33
  • Thanks for your input, @AivarPaalberg. I tried solving that question some time ago, and couldn't get it to work despite a lot of effort. I was glad to have found the unicode layout and to have finally solved the issue... only to find this new mysterious behavior. So I guess my question now is: why do firefox and powerpoint behave distinctly from vscode. And with "just work" I mean, work consistently and identically regardless of the application it's used in.
    – ElRudi
    Commented Feb 6 at 12:17
  • In ideal world software from different developers/companies will work consistently and identically. Until then one solution could be using Karabiner Elements to disable unwanted opt+key combinations by setting them to do nothing (or something which is wanted). Something like rule Map Left Option + E to Nothing. Commented Feb 6 at 14:41
  • Thanks for that suggestion, I'll look into that! I'd prefer a solution that does not require yet another third-party plug-in, but it seems like I have no choice.
    – ElRudi
    Commented Feb 7 at 8:25
  • I've tried Karabiner, and I can't get it to work. Most importantly, mapping (in my case) option + n to "nothing", means that the keycode is no longer sent to the application. Meaning, I can no longer use it in any keyboard shortcuts. What I want is for option + n to be sent... just not as ˜. Is that possible?
    – ElRudi
    Commented Feb 7 at 8:59

1 Answer 1

0

OK, it's not an answer to the exact question. But this is how I got rid of the dead keys, which is what mattered the most to me (as they prevented the use of those Option + Key in shortcuts):

  1. Create new custom layout files. Follow the steps below, or download mine from here:

    1. Install Ukelele;

    2. Create a new layout from the currently selected one;

    3. Press and hold Option (Alt). The offending layer is shown, with the dead keys in red.

    4. Right-click each dead key and "Make Output..". enter image description here

    5. Save the .keylayout file.

  2. Make available:

    1. Copy .keylayout file into ~/Library/Keyboard Layouts/. A symlink doesn't work.

    2. Reboot

    3. Add the layout as input source

And now, it should be available like the undead layouts shown here:

enter image description here

Bonus:

If you, like me, want to put a specific keyboard layout under a specific keyboard shortcut (instead of just 'switching to the next one'), this is also not possible out of the box. To do that:

  1. Create a script that sets the layout

  2. Bind a keyboard shortcut to that script. I use skhd for that.

Here is some information on the whole process.


Offtopic proposal to the reader

I won't bitch about my frustration and how much I hate a company that makes things that are so basic so hard. And in return you don't tell me how great and intuitive these apple products are.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .