Как изменить поведение клавиатуры? - PullRequest
1 голос
/ 03 августа 2020

ОС: Windows 10 Язык программирования: c ++ Интерфейс: winapi

Моя цель - создать функцию обратного вызова для WH_KEYBOARD_LL. В этой функции я хочу изменить поведение клавиши «B». Конечно, я знаю, что мне нужно использовать

wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
int code = p->vkCode;

И проверьте, является ли ключ «B».

Затем я хочу изменить свою кнопку «B» в кнопке «A», поэтому в моей ОС, где будет запускаться ловушка, у меня будет два ключа «A»: нормальный и старый «B».

Я бы хотел, чтобы старый «B» (новый «A») был как "A", поэтому, когда я нажимаю "B" + "CTRL", я хочу выделить весь текст. Когда я нажимаю «B», я хочу видеть букву «A» в блокноте. Когда я где-то нажимаю "B", я хочу получить поведение "A".

Как выглядит код обычного поведения клавиш Winapi, когда система получает сообщение о нажатии клавиши?

1 Ответ

4 голосов
/ 03 августа 2020

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

Посмотрите на Когда я меняю местами клавиши с помощью SetWindowsHookEx WH_KEYBOARD_LL, почему моя программа попадает в цикл из слишком большого количества событий ввода с клавиатуры? для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...