Eu estava procurando uma solução para o mesmo problema: corrigir como o Windows reage ao "Alt + Shift" (alterar idioma de entrada), mas você digita incorretamente e pressiona Alt, seguido por Shift, sem sobreposição. Nesse caso, o Windows interpretaria a Alt solitária como "select menu", a Shift solitária não faz nada e qualquer caractere que você pressionar depois seleciona e insere menus aleatórios que você não pretendia abrir.
Ao usar um aplicativo de bate-papo como o Skype e você é um falante de idioma estrangeiro, alternar com Alt + Shift é bastante frequente e você pode fazer muitas coisas estúpidas na pressa.
@ user3419297 me indicou sua solução aqui, que modifiquei para permitir que Alt + Shift acontecesse em todos os casos. É apenas um #If mais, mas muito importante! O trecho relevante:
; Disable stand-alone Alt key press: make Alt purely a modifier key.
; The If statement is required to get Alt+Shift work as expected. If it's not
; there, only [Press Alt], [Press Shift], [Release Shift], [Release Alt] would
; trigger the input language change. The other, more common sequence would be
; [Press Alt], [Press Shift], [Release Alt], [Release Shift], but AutoHotKey
; would block it before it reaches Windows if the "#If" isn't there.
#If not GetKeyState("LShift", "P")
~LAlt::
KeyWait, LAlt
return
; Make Alt+Something still work:
~LAlt Up::
Send, {LAlt Up}
return
Meu script completo também permite dois recursos Linuxish: Alt + F2 abre um "comando de início rápido" e pressionar o Alt correto minimiza a janela ativa no momento:
;==============================================================================
; AutoHotKey script for "Linuxifying" Windows 8.
; Based on suggestions on SuperUser (http://superuser.com/questions/1147370)
;
; Written by: Veselin Georgiev
; Date : 2016-11-18
;==============================================================================
; Optional: Make Alt+F2 bring up the "quick launch command" Window.
; In this case, it simulates the Windows logo key press. On Windows 8, the
; cursor would be in the search bar, which nicely emulates launching a
; command.
!F2::
Sleep 200
Send {LWin}
return
; Disable stand-alone Alt key press: make Alt purely a modifier key.
; The If statement is required to get Alt+Shift work as expected. If it's not
; there, only [Press Alt], [Press Shift], [Release Shift], [Release Alt] would
; trigger the input language change. The other, more common sequence would be
; [Press Alt], [Press Shift], [Release Alt], [Release Shift], but AutoHotKey
; would block it before it reaches Windows if the "#If" isn't there.
#If not GetKeyState("LShift", "P")
~LAlt::
KeyWait, LAlt
return
; Make Alt+Something still work:
~LAlt Up::
Send, {LAlt Up}
return
; Optional: Make the right alt key minimize the currently visible window.
~RAlt Up::WinMinimize A