Подобный вопрос уже задавался, поэтому я не собираюсь тратить время на его объяснение, здесь можно найти существующее обсуждение:
ToAscii / ToUnicode в хуке клавиатуры уничтожает мертвые клавиши
Причина, по которой я публикую новый вопрос, заключается в том, что мне кажется, что я нашел «решение», но я не совсем уверен, как его реализовать.
Этот пост в блоге предлагает решение проблемы с поддержкой мертвых ключей в ToUnicode:
http://www.siao2.com/2005/01/19/355870.aspx
Однако я не уверен, как реализовать предложенное решение. Толчок в правильном направлении был бы очень признателен.
Для ясности, часть, на которую я ссылаюсь, такова:
Есть два способа обойти это:
1) Вы можете продолжать вызывать ToUnicode с той же информацией, пока она не будет очищена, а затем вызвать его еще раз, чтобы вернуть состояние, где оно было, если вы никогда ничего не печатали, или
2) Вы можете загрузить всю информацию о клавиатуре заранее, а затем, когда они набирают информацию, вы можете посмотреть в собственном информационном кэше, что означают нажатия клавиш, без необходимости вызывать API позже.
Я не совсем уверен, как сделать что-либо из этого (клавиатура и интернационализация далеки от моей сильной стороны), поэтому любая помощь будет принята с благодарностью.
Спасибо