Comment puis-je envoyer un événement de changement de disposition du clavier avec la touche auto dans Windows 7?

Je souhaite remapper la mise en page du clavier / changement de langue à Win + Space , je l'ai essayé avec:

LWin & Space :: Envoyer, ^ +

Mais cela ne semble pas fonctionner, je voudrais qu'il envoie une séquence Ctrl + Shift afin que je puisse basculer entre les mises en page du clavier avec Win + Space .

Comment puis-je que cela fonctionne?

5 Solutions collect form web for “Comment puis-je envoyer un événement de changement de disposition du clavier avec la touche auto dans Windows 7?”

Win + Space switch fonctionne bien sur mon win7-x64:

; This should be replaced by whatever your native language is. See ; http://msdn.microsoft.com/en-us/library/dd318693%28v=vs.85%29.aspx ; for the language identifiers list. ru := DllCall("LoadKeyboardLayout", "Str", "00000419", "Int", 1) en := DllCall("LoadKeyboardLayout", "Str", "00000409", "Int", 1) #Space:: w := DllCall("GetForegroundWindow") pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0) l := DllCall("GetKeyboardLayout", "UInt", pid) if (l = en) { PostMessage 0x50, 0, %ru%,, A } else { PostMessage 0x50, 0, %en%,, A } 

Plus de détails: http://www.autohotkey.com/board/topic/70019-keyboard-layout-switcher-for-many-layouts/

Êtes-vous sûr que c'est Ctrl + Shift ? Sur mon système, c'est Alt + Shift . De toute façon, utilisez cette commande:

 LWin & Space::Send, {Alt Down}{Shift}{Alt up} 

Remplacez Alt pour Ctrl si votre système utilise effectivement la combinaison Ctrl + Shift .

Vous pouvez facilement (en changeant les deux premières lignes vers:

 $~#Space::LangSwitch(1) $~#Space up::LangSwitch(2) 

) Modifiez le commutateur de mise en page du clavier de wOxxOm pour utiliser Win + Space au lieu du droit contrôle. Et cela fonctionnera, peu importe les raccourcis clavier mis en place pour changer de disposition dans Windows (par défaut Alt + Shift, j'utilise Ctrl + Shift).

En raison de la commutation non native (le script utilise WinAPI), le script entier est plutôt volumineux, donc je ne l'ai pas collé en ligne. Dans le cas de l'inaccessibilité d'autohotkey.com, voici: http://pastebin.com/ygm3f6sp

(Encore une fois, tous les crédits vont à wOxxOm, le script source est là: http://www.autohotkey.com/board/topic/24666-keyboard-layout-switcher/ )

PS Ce script est assez ancien et possède des octets offsets codés, donc je ne sais pas si cela fonctionnera avec Autohotkey.exe 64 bits ou Windows 64 bits. J'ai seulement 32 bits.

Le script Andrei Pak a au moins les limites suivantes:

  1. Ne fonctionne pas dans la boîte de dialogue FileOpen et dans d'autres fenêtres
  2. Ne fonctionne pas dans les fenêtres de la console
  3. Vous devez connaître à l'avance KLID de mise en page (0x04090409, etc.) et le modifier dans le code (code fort sale).

Ce script avance dans les mises en page actives de votre système par Win + Space :

 #Space::PostMessage WM_INPUTLANGCHANGEREQUEST:=0x50, INPUTLANGCHANGE_FORWARD:=0x2,,, % (hWndOwn := DllCall("GetWindow", Ptr, hWnd:=WinExist("A"), UInt, GW_OWNER := 4, Ptr)) ? "ahk_id" hWndOwn : "ahk_id" hWnd 

Si vous voulez plus de contrôle (avoir> 2 mises en page, besoin d'un raccourci pour définir une certaine mise en page):

 F2::Lyt.Set() ; switch input language. F3::Lyt.Set("Forward") ; move forward (cycle) in current layout list F4::Lyt.Set("-en") ; set first non-english F7::Lyt.Set("en", "global") ; set first english layout in all windows F8::Lyt.Set(2) ; set second layout in current layout list 

Utilisation de la classe Lyt (classe de copie en dessous de votre code pour l'utiliser dans votre script).

Votre script est:

 #Space:: Sleep 500 Send, {CTRL} return 

Ensuite, installez el pointwitcher et réglez la langue de changement sur la touche de commande. c'est tout

  • Est-il nécessaire de suspendre un processus avant de le terminer?
  • Clé de fenêtre + touches de navigation fléchées ne fonctionnant pas
  • Préférez automatiquement Ethernet sur WLAN
  • Existe-t-il un moyen de diviser le navigateur sur les deux côtés?
  • Pourquoi ne puis-je pas étendre cette partition dans l'espace non alloué?
  • Windows 7 se ferme de façon inattendue, selon les journaux
  • Plusieurs cartes vidéo sur Windows 7
  • Chrome 100% de l'utilisation du processeur, à nouveau - software_reporter_tool.exe
  • Explorer.exe mange la mémoire comme un fou
  • Est-il possible de créer un «plein» Windows 7 Live DVD?
  • Windows 7: Espace disque: windirstat affiche 88 Go utilisés: Windows affiche 143 Go utilisés
  • Soyons le génie de l'ordinateur et du réseau.