Причина, которую я спрашиваю, состоит в том, что я думаю о создании ножного переключателя для действия как клавиши Shift и клавиши CTRL - хорошо два переключателя, один для каждой ноги.
Я - планирование использования Ардуино для этого и записи маленького приложения C# для обнаружения, когда переключатель был нажат, который затем установит состояние сдвига или управления. Я не должен писать драйвер клавиатуры для Ардуино, поскольку я хотел бы, чтобы он сделал другие вещи также.
Да, это возможно, но вам нужно будет выполнить 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);
, чтобы снова ее выключить (т. Е. Клавишу вверх).
Первый аргумент - это шестнадцатеричное значение клавиши, которую нужно нажать:
Я только что пробовал это в простом приложении C #, используя флажок для представления клавиши Shift. Когда он был проверен, он «удерживал» клавишу Shift для любого приложения, которое я использовал.
Если вас интересует только управление приложением переднего плана, самым простым решением является отправьте сообщения WM_KEYDOWN и WM_KEYUP активному приложению для нажатия и отпускания вашей педали.
Я мог ошибаться (и разумные головы, не стесняйтесь поправлять меня, если я ошибаюсь!), Но я считаю, что для создания фактического события нажатия клавиши на системном уровне - например, чтобы Windows создавала для вас сообщения keydown / keyup и работала правильно, даже если вы меняете приложения при нажатой педали - вам необходимо написать драйвер ввода.