Я пытаюсь получить значение ключа для определенного скан-кода на разных языках следующим образом
Макет: английский США (клавиатура США) 16 - Q 17 - W 18 - E 19 - R 20- T 21 - Y Расположение: французский (клавиатура Франции) 16 - A 17 - Z 18 - E 19 - R 20 - T 21 - Y, для этого я использую следующий код:
#include "pch.h"
#include "iostream"
#include <windows.h>
using namespace std;
int main()
{
int scancode[6] = { 16,17,18,19,20,21};
int bufferLength = 10;
char buffer[10] ;
while (1)
{
int i = 0;
for (i = 0; i < 6 ; i++)
{
unsigned int extended = scancode[i] & 0xffff00;
unsigned int lParam = 0;
if (extended)
{
if (extended == 0xE11D00)
{
lParam = 0x45 << 16;
}
else
{
lParam = (0x100 | (scancode[i] & 0xff)) << 16;
}
}
else {
lParam = scancode[i] << 16;
if (scancode[i] == 0x45)
{
lParam |= (0x1 << 24);
}
}
GetKeyNameTextA(lParam, buffer, bufferLength);
printf("%s \n", buffer);
}
}
return 0;
}
Этот коддает мне локализованные значения ключей, но если я изменю раскладку во время выполнения, значения ключей не изменятся.Они остаются такими же, как и раньше, чтобы получить измененные значения, мне нужно запустить его снова.Кто-нибудь может предложить мне исправить это ??Также предложите, если есть альтернативный способ добиться этого ..