Как отправить Unicode ключи с C ++ (keybd_event) - PullRequest
6 голосов
/ 16 сентября 2010

Мой друг изучает норвежский язык, и я хочу создать глобальную программу горячих клавиш, которая отправляет такие ключи, как

æ
ø
å

Моя проблема в том, что функция keybd_event не позволяет мне отправлять эти ключи, мне кажется,ограничено виртуальными ключами есть ли другая функция, которую я мог бы использовать, или какой-то трюк для их отправки?

1 Ответ

4 голосов
/ 16 сентября 2010

Вместо этого вы должны использовать SendInput.keybd_event не поддерживает отправку таких символов (за исключением случаев, когда они уже находятся в текущей кодовой странице, как на норвежских компьютерах).Небольшой пример кода для отправки:

KEYBDINPUT kb={0};
INPUT Input={0};

// down
kb.wScan = 0x00c5;
kb.dwFlags = KEYEVENTF_UNICODE;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));

// up
kb.wScan = 0x00c5;
kb.dwFlags = KEYEVENTF_UNICODE|KEYEVENTF_KEYUP;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));

На случай, если вы не знали: в Windows легко установить дополнительные раскладки клавиатуры и переключаться между ними с помощью ярлыка.* Lykke Til!

...