Many applications like Google Docs use Ctrl+Alt shortcuts like Ctrl+Alt+2 for heading 2, Ctrl+Alt+m for comments etc. However, in case of international keyboards' layouts, Ctrl+Alt is mapped to AltGr, so many of these shortcuts produce special characters instead, e.g. Ctrl+Alt+2 = @. Therefore these shortcuts can not be used.
Is there a way to disable this Ctrl+Alt = AltGr, such that AltGr+2 = @ but Ctrl+Alt+2 can be used as a shortcut?
There has been some earlier post with answers related to this problem:
- Why don't the Google Docs CTRL + ALT shortcuts work?
- Ctrl+Alt registering as AltGr for US International Alternate, any way to disable?
Both solutions are however related to unassign the special character completely. These solutions do not disable the Ctrl+Alt = AltGr binding. This means, that in order to use Ctrl+Alt+2 as a shortcut, I am not able to write @ at all, which is naturally not an option.
Best Answer
I have researched further and looked at the other answers. It seems like the short answer is: No! Windows treats Ctrl+Alt and AltGr identically.
But there is a hack. Essentially we do not let Windows handle AltGr key bindings and instead use a third party tool that knows the difference. We do this manually for every singe key.
This hack does not work with "dead keys" such as ~ or ^.
.
Part 1: Let AutoHotKey convert AltGr+Some Key to symbols
AutoHotKey can distinguish between AltGr and Ctrl+Alt. It can also transform keystrokes like AltGr+2 to a single symbol
@
, before Windows applies its keyboard layout..ahk
<^>!BUTTON::SendInput {raw}CHAR
Example: AltGr+2=@ becomes
<^>!2::SendInput {raw}@
If you want to test your script, you can create some arbitrary mapping like
<^>!t::SendInput {raw}tttt
. Double click the script to apply it and test if AltGr+t produces four t's when you type..
Part 2: Get windows out of the way:
We want to remove all assignments of AltGr+Any Key on they keyboard, so Windows never convert them into characters.
First we need to create a new keyboard layout.
File -> Load Existing Keyboard
and choose your keyboard layout.File -> Save source as
and give it a new name.Alt+Ctrl (AltGr)
.You might want to select
File -> Save as Image
to make a note of the original assignments.OK
Do not clear any dead keys! (The grey ones). Check for all modifiers i.e. AltGr, Ctrl, Alt, or none!
Projet -> Propertie
and give it a decent name and description.File -> Save Source File
so you can edit it laterProject -> Build DLL and Setup Package
Then we need to apply this new keyboard layout.
setup.exe
. This will install your new keyboard layout.Control Pannel -> Change keyboards and other input methods -> Change keybords
Add
select you own keyboard and make it default.Come back here and remove the standard keyboard, once your confident everything works well.
.
Part 3: Let AutoHotKey take over:
Now lets put everything into action:
Start Menu\Programs\Startup
folderThat's it! (ツ) You can share the keyboard layout setup files and the
.ahk
script, with other computers to skip most of the steps.Other resources:
http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/replace-default-windows-keyboard-shortcut-behavior/0c5ff2a4-6bea-49a9-88bc-669049a1e107
http://office.microsoft.com/en-us/word-help/alt-gr-keys-HP005259063.aspx
https://devblogs.microsoft.com/oldnewthing/20040329-00/?p=40003
http://www.autohotkey.com/board/topic/61625-how-to-avoid-that-ctrl-alt-altgr/