Odpowiedzi:
IBM nazwał ten klucz „grafiką alternatywną” i nie zastępuje on CTRL+ ALT, chociaż CTRL+ ALTzostał zaimplementowany jako zamiennik dla ALT GRsystemu Windows. Jest to modyfikator klucza (taki jak CTRL lub SHIFT), który umożliwia wprowadzanie danych innych niż normalnie oczekiwany od klucza.
W zależności od konfiguracji klawiatury i położenia można go używać do tworzenia znaków ze znakami diakrytycznymi, gdy są używane w połączeniu z klawiszami alfabetu (najczęściej samogłosek) oraz trzecim symbolem nadrukowanym na niektórych klawiszach, na przykład € ( ALT GR+ 4) lub ¦ ( ALT GR+ `), które pojawiają się na mojej brytyjskiej klawiaturze. Klawiatury kontynentalne w Europie mają na ogół znacznie więcej klawiszy z dodatkowymi symbolami, które odpowiadają literom różnego rodzaju znaków diakrytycznych używanych w tych językach.
Aby uzyskać więcej informacji, zobacz klawisz AltGr .
Alt
. Dziwne, że artykuł w Wikipedii nawet o tym nie wspomina.
Alt Gr
jest zaimplementowane jako Ctrl
+, Alt
ale Ctrl
+ Alt
nie odwzorowuje Alt Gr
.
W przypadku niektórych klawiatur umożliwia kilka alternatywnych kombinacji. W niektórych klawiaturach dopuszcza symbol centa lub symbol euro - Wikipedia ma dość obszerną listę kombinacji przy użyciu Alt Gr.
Jednak używając mapy klawiszy US / Windows, w większości przypadków nic nie robi.
Przydatny także dla osób potrzebujących ułatwień dostępu, które muszą wykonać kombinację klawiszy Ctrl + alt + del. Spróbuj tego jedną ręką.
AltGr
do Ctrl
+ Alt
(przynajmniej w Windows i Linux), więc nie będą działać dokładnie tak samo. (Z wyjątkiem być może klawiatury wysyłającej Ctrl
+ Alt
skancody.)
Alt gr jest niezbędny w niektórych językach, takich jak polski:
Alt Gr+ a= ą
Alt Gr+ s= ś
Alt Gr+ shift+ n= Ń
Jestem prawie pewien, że jest tak zaimplementowany.
Możesz przetestować kod vkCode z KBDLLHOOKSTRUCT, aby zobaczyć, co otrzymujesz.
Mapowana lista wyliczeń stąd , tutaj i www.pinvoke.net/default.aspx/Constants/WM.html
Powinno to być równoważne z tym:
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;
Ważne kombinacje klawiszy Alt + Gr na domyślnej niemieckiej klawiaturze to: