Risposte:
IBM ha chiamato questa chiave "grafica alternativa" e non è un sostituto di CTRL+ ALT, sebbene CTRL+ sia ALTstato implementato come sostituto di ALT GRWindows. È un modificatore di chiave (come CTRL o MAIUSC) che abilita un input diverso da quello normalmente previsto da una chiave.
A seconda della configurazione della tastiera e della posizione, può essere utilizzato per produrre caratteri con segni diacritici quando utilizzato in combinazione con tasti alfabetici (più spesso vocali) e il terzo simbolo stampato su alcuni tasti, ad esempio € ( ALT GR+ 4) o ¦ ( ALT GR+ `) che appare sulla mia tastiera del Regno Unito. Le tastiere dell'Europa continentale generalmente hanno molti più tasti con simboli extra stampati su di essi che corrispondono alle lettere con i vari tipi di segni diacritici usati in quelle lingue.
Vedi chiave AltGr per maggiori informazioni.
Alt
. È strano che l'articolo di Wikipedia non ne parli nemmeno.
Alt Gr
è implementato come Ctrl
+ Alt
ma Ctrl
+ Alt
non è mappato Alt Gr
.
Per alcune tastiere, consente alcune combinazioni alternative. In alcune tastiere consente il simbolo del centesimo o il simbolo dell'euro - Wikipedia ha un elenco abbastanza completo di combinazioni che usano Alt Gr.
Tuttavia, utilizzando una keymap US / Windows, nella maggior parte dei casi non fa nulla.
Inoltre, utile per le persone con esigenze di accessibilità che devono fare un Ctrl + alt + del. Lo provi con una sola mano.
AltGr
alla conversione in Ctrl
+ Alt
(almeno su Windows e Linux), quindi non funzioneranno esattamente allo stesso modo. (Tranne forse nel caso di una tastiera che invia Ctrl
+ Alt
scancodes.)
Alt gr è necessario per alcune lingue come il polacco:
Alt Gr+ a= ±
Alt Gr+ s= ś
Alt Gr+ shift+ n= Ń
Sono abbastanza sicuro che sia implementato in questo modo.
Puoi testare vkCode da KBDLLHOOKSTRUCT per vedere cosa ottieni.
Elenco enum mappato da qui , qui e www.pinvoke.net/default.aspx/Constants/WM.html
Dovrebbe essere equivalente a questo:
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;
Importanti combinazioni di tasti Alt + Gr su una tastiera tedesca predefinita sono: