Ответы:
IBM назвала этот ключ «альтернативной графикой», и он не заменяет CTRL+ ALT, хотя CTRL+ ALTбыл реализован вместо ALT GRWindows. Это ключевой модификатор (например, CTRL или SHIFT), который позволяет вводить информацию, отличную от той, которая обычно ожидается от клавиши.
В зависимости от вашей клавиатуры и настроек местоположения ее можно использовать для создания символов с диакритическими знаками при использовании в сочетании с буквенными клавишами (чаще всего гласными) и третьим символом, который печатается на некоторых клавишах, например, € ( ALT GR+ 4) или ¦ ( ALT GR+ `), которые появляются на моей британской клавиатуре. Клавиатуры континентальной Европы, как правило, имеют гораздо больше клавиш с напечатанными на них дополнительными символами, которые соответствуют буквам различных типов диакритических знаков, используемых на этих языках.
См. Ключ AltGr для получения дополнительной информации.
Alt
. Странно, что статья в Википедии даже не упоминает об этом.
Alt Gr
реализовано как Ctrl
+, Alt
но Ctrl
+ Alt
не соответствует Alt Gr
.
Для некоторых клавиатур допускаются альтернативные комбинации. В некоторых клавиатурах допускается использование символа цента или символа евро - в Википедии имеется довольно полный список комбинаций с использованием Alt Gr.
Однако, используя карту ключей США / Windows, в большинстве случаев она ничего не делает.
Кроме того, удобно для людей с ограниченными возможностями, которые должны сделать Ctrl + Alt + Del. Вы попробуете это одной рукой.
AltGr
to Ctrl
+ Alt
(по крайней мере, в Windows и Linux), поэтому они не будут работать точно так же. (За исключением, возможно, в случае отправки с клавиатуры Ctrl
+ Alt
сканкоды.)
Alt gr необходим для некоторых языков, таких как польский:
Alt Gr+ a= ą
Alt Gr+ s= ś
Alt Gr+ shift+ n= Ń
Я уверен, что это реализовано так.
Вы можете проверить vkCode из KBDLLHOOKSTRUCT, чтобы увидеть, что вы получаете.
Перечень перечисленных здесь и здесь , и www.pinvoke.net/default.aspx/Constants/WM.html
Это должно быть эквивалентно этому:
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;
Важные комбинации клавиш Alt + Gr на немецкой клавиатуре по умолчанию: