J'ai lu quelque part que le Alt Gr clé trouvée sur certaines dispositions est un substitut pour Ctrl + Alt.
Cependant, à quoi cette combinaison peut-elle être utilisée? Existe-t-il des raccourcis documentés utilisant Ctrl + Alt?
IBM a appelé cette clé "autre graphique" et ce n'est pas un substitut à CTRL + ALT, bien que CTRL + ALT a été mis en œuvre en remplacement de ALT GR sous Windows. C'est un modificateur de touche (comme CTRL ou SHIFT) qui permet une entrée différente de celle attendue d'une clé.
En fonction de votre clavier et de votre configuration géographique, il peut être utilisé pour produire des caractères avec des signes diacritiques lorsqu'il est utilisé conjointement avec des touches alphabétiques (le plus souvent des voyelles) et le troisième symbole imprimé sur certaines touches, par exemple, € (ALT GR + 4) ou (ALT GR + `) qui apparaissent sur mon clavier britannique. Les claviers d'Europe continentale ont généralement beaucoup plus de touches portant des symboles supplémentaires, qui correspondent aux lettres correspondant aux différents types de signes diacritiques utilisés dans ces langues.
Voir touche AltGr pour plus d'informations.
Pour certains claviers, cela permet d'autres combinaisons. Sur certains claviers, le symbole du cent ou le symbole de l'euro est autorisé - Wikipedia possède une liste assez complète de combinaisons utilisant Alt Gr.
Cependant, en utilisant un clavier US/Windows, il ne fait rien dans la plupart des cas.
Alt gr est nécessaire pour certaines langues comme le polonais:
Alt Gr + a = ±
Alt Gr + s = ś
Alt Gr + shift + n =
Aussi, pratique pour les personnes ayant des besoins d'accessibilité qui doivent faire un Ctrl + Alt + Suppr. Vous l'essayez d'une seule main.
Je suis à peu près sûr que c'est implémenté comme ça.
Vous pouvez tester le vkCode à partir de KBDLLHOOKSTRUCT pour voir ce que vous obtenez.
Liste d'énumérations mappées à partir de ici , ici et www.pinvoke.net /default.aspx/Constants/WM.html
Cela devrait être équivalent à ceci:
using System.Windows.Forms;
isAltGr ? (Keys) (1 << 19) : Keys.None
private static Keys BuildKeyData(Keys virtualKeyCode) => virtualKeyCode | (IsDownControl ? Keys.Control : Keys.None) | (IsDownShift ? Keys.Shift : Keys.None) | (IsDownAlt ? Keys.Alt : Keys.None) | (IsAltGr ? (Keys) (1 << 19) : Keys.None);
private static bool IsDownControl => IsKeyPressed((ushort)VirtualKeys.LeftControl) || IsKeyPressed((ushort)VirtualKeys.RightControl);
private static bool IsDownShift => IsKeyPressed((ushort)VirtualKeys.LeftShift) || IsKeyPressed((ushort)VirtualKeys.RightShift);
private static bool IsDownAlt => IsKeyPressed((ushort)VirtualKeys.LeftMenu) || IsKeyPressed((ushort)VirtualKeys.RightMenu) || IsKeyPressed((ushort)VirtualKeys.Menu);
private static bool IsAltGr => IsDownControl && IsDownAlt;
Les combinaisons de touches Alt + Gr importantes sur un clavier allemand par défaut sont les suivantes: