Действительно ли возможно программно установить состояние клавиш Shift и клавиш CTRL?

Причина, которую я спрашиваю, состоит в том, что я думаю о создании ножного переключателя для действия как клавиши Shift и клавиши CTRL - хорошо два переключателя, один для каждой ноги.

Я - планирование использования Ардуино для этого и записи маленького приложения C# для обнаружения, когда переключатель был нажат, который затем установит состояние сдвига или управления. Я не должен писать драйвер клавиатуры для Ардуино, поскольку я хотел бы, чтобы он сделал другие вещи также.

8
задан Stephen Harrison 27 March 2010 в 00:17
поделиться

2 ответа

Да, это возможно, но вам нужно будет выполнить pInvoke в Win32. Посмотрите на вызов keydb_event .

[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

Затем вы можете позвонить:

keybd_event(0x10, 0, 0, 0);

, чтобы включить клавишу Shift (т. Е. Клавишу вниз), и:

keybd_event(0x10, 0, 2, 0);

, чтобы снова ее выключить (т. Е. Клавишу вверх).

Первый аргумент - это шестнадцатеричное значение клавиши, которую нужно нажать:

  • 0x10 = shift
  • 0x11 = ctrl
  • 0x12 = alt

Я только что пробовал это в простом приложении C #, используя флажок для представления клавиши Shift. Когда он был проверен, он «удерживал» клавишу Shift для любого приложения, которое я использовал.

9
ответ дан 5 December 2019 в 18:58
поделиться

Если вас интересует только управление приложением переднего плана, самым простым решением является отправьте сообщения WM_KEYDOWN и WM_KEYUP активному приложению для нажатия и отпускания вашей педали.

Я мог ошибаться (и разумные головы, не стесняйтесь поправлять меня, если я ошибаюсь!), Но я считаю, что для создания фактического события нажатия клавиши на системном уровне - например, чтобы Windows создавала для вас сообщения keydown / keyup и работала правильно, даже если вы меняете приложения при нажатой педали - вам необходимо написать драйвер ввода.

0
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: