Я просмотрел несколько более ранних вопросов об этом, и лучший ответ, который я нашел до сих пор, выглядит примерно так:
(char) WinAPI.MapVirtualKey((uint) Keys.A, 2)
Однако это не работает двумя способами:
-
Он всегда возвращает заглавные буквы. Для
Keys.A
я ожидаю получить символa
, а дляKeys.A | Keys.ShiftKey
я ожидаю получитьa
; однако я, кажется, получаюa
для обоих. -
Похоже, что не учитываются раскладки клавиатуры. Например, для
Keys.OemMinus
я всегда получаю символ-
, даже если текущая раскладка клавиатуры - немецкая, где я ожидаю, что эта клавиша вернетß
.
Какое правильное решение для этого?