답변:
IBM은이 키 "대체 그래픽"라는 그것은을 대신 할 수는 없습니다입니다 CTRL+ ALT하지만, CTRL+는 ALT대용으로 구현 된 ALT GR윈도우있다. 일반적으로 키에 필요한 것과 다른 입력을 가능하게하는 키 수정 자 (CTRL 또는 SHIFT와 같은)입니다.
키보드 및 위치 설정에 따라 알파벳 키 (대부분 모음)와 함께 사용될 때 발음 구별 부호가있는 문자를 생성하고 일부 키에 인쇄 된 세 번째 기호 (예 : € ( ALT GR+ 4) 또는 영국 키보드에 나타나는 ¦ ( ALT GR+ `). 유럽 대륙 키보드에는 일반적으로 추가 기호가 인쇄 된 키가 더 많으며, 해당 언어에서 사용되는 다양한 유형의 발음 구별 부호가있는 문자에 해당합니다.
자세한 정보는 AltGr 키 를 참조하십시오.
Alt
. Wikipedia 기사에서 언급조차하지 않는 것이 이상합니다.
Alt Gr
은 Ctrl
+ 로 구현 Alt
되었지만 Ctrl
+ Alt
는에 매핑되지 않습니다 Alt Gr
.
일부 키보드의 경우 대체 조합을 허용합니다. 일부 키보드에서는 센트 기호 또는 유로 기호를 사용할 수 있습니다. Wikipedia에는 Alt Gr을 사용 하는 매우 포괄적 인 조합 목록이 있습니다.
그러나 US / Windows 키맵을 사용하면 대부분의 경우 아무 작업도 수행하지 않습니다.
폴란드어와 같은 일부 언어에는 Alt gr이 필요합니다.
Alt Gr+ a= ą
Alt Gr+ s= ś
Alt Gr+ shift+ n= Ń
또한 Ctrl + alt + del을 수행해야하는 내게 필요한 옵션이있는 사용자에게 편리합니다. 한 손으로 사용해보십시오.
AltGr
to Ctrl
+ Alt
변환 (최소한 Windows 및 Linux) 보다 훨씬 낮은 수준에서 처리 되므로 정확히 동일하게 작동하지 않습니다. (아마도 Ctrl
+ Alt
스캔 코드를 보내는 키보드의 경우를 제외하고 )
나는 이것이 이렇게 구현되어 있다고 확신합니다.
KBDLLHOOKSTRUCT에서 vkCode를 테스트하여 얻는 것을 확인할 수 있습니다.
here , here 및 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;