Câu trả lời:
IBM đã đặt tên khóa này là "đồ họa thay thế" và nó không phải là thay thế cho CTRL+ ALT, mặc dù CTRL+ ALTđã được triển khai thay thế cho ALT GRWindows. Đây là một công cụ sửa đổi khóa (như CTRL hoặc SHIFT) cho phép nhập dữ liệu khác với dự kiến thông thường của khóa.
Tùy thuộc vào thiết lập bàn phím và vị trí của bạn, nó có thể được sử dụng để tạo các ký tự có dấu phụ khi được sử dụng cùng với các phím chữ cái (thường là nguyên âm) và ký hiệu thứ ba được in trên một số phím, ví dụ: € ( ALT GR+ 4) hoặc ( ALT GR+ `) Xuất hiện trên bàn phím Vương quốc Anh của tôi. Bàn phím lục địa châu Âu nói chung có nhiều phím hơn với các ký hiệu bổ sung được in trên đó tương ứng các chữ cái với các loại dấu phụ khác nhau được sử dụng trong các ngôn ngữ đó.
Xem phím AltGr để biết thêm thông tin.
Alt
. Thật kỳ lạ khi bài viết trên Wikipedia thậm chí không đề cập đến điều đó.
Alt Gr
được thực hiện là Ctrl
+ Alt
nhưng Ctrl
+ Alt
không ánh xạ tới Alt Gr
.
Đối với một số bàn phím, nó cho phép một số kết hợp thay thế. Trong một số bàn phím, nó cho phép ký hiệu cent hoặc ký hiệu euro - Wikipedia có một danh sách kết hợp khá toàn diện bằng Alt Gr.
Tuy nhiên, bằng cách sử dụng sơ đồ phím US / Windows, nó không làm gì trong hầu hết các trường hợp.
Alt gr là cần thiết cho một số ngôn ngữ như tiếng Ba Lan:
Alt Gr+ a= ą
Alt Gr+ s= ś
Alt Gr+ shift+ n=
Ngoài ra, tiện dụng cho những người có nhu cầu truy cập, những người phải thực hiện Ctrl + alt + del. Bạn thử nó bằng một tay.
AltGr
với chuyển đổi thành Ctrl
+ Alt
(ít nhất là trên Windows và Linux), vì vậy chúng sẽ không hoạt động chính xác như nhau. (Có lẽ ngoại trừ trong trường hợp bàn phím gửi Ctrl
+ Alt
scancodes.)
Tôi khá chắc chắn rằng nó được thực hiện như thế này.
Bạn có thể kiểm tra vkCode từ KBDLLHOOKSTRVEL để xem những gì bạn nhận được.
Danh sách enum được ánh xạ từ đây , đây và www.pinvoke.net/default.aspx/Constants/WM.html
Nó sẽ tương đương với điều này:
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;
Các tổ hợp phím Alt + Gr quan trọng trên bàn phím tiếng Đức mặc định là: