Нажатия клавиш Леонардо не работают с OBS
Я использую Arduino Leonardo, чтобы иметь горячие клавиши для OBS, но они не работают, когда окно OBS Studio не сфокусировано.
У меня Леонардо нажимает Ctrl + Alt + Shift + F7, когда я нажимаю кнопку, подключенную к Леонардо. В OBS у меня есть Ctrl + Alt + Shift + F7 для переключения на слайд. Когда у меня сфокусировано окно OBS, и я нажимаю кнопку, все работает нормально. Но когда у меня сфокусировано другое приложение, оно не работает. Странно то, что когда я нажимаю (на моей клавиатуре) Ctrl + Alt + Shift + F7, он переключается на слайд, но когда я нажимаю кнопку, он не работает.
Кстати, я запускаю OBS от имени администратора.
Мой код для Леонардо ниже
int pinA = 8;
void setup() {
pinMode(pinA, INPUT);
}
void loop(){
digitalWrite(pinA, HIGH);
readPinA = digitalRead(pinA);
if (readPinA == 0){
Serial.print("A\n");
Keyboard.press(KEY_RIGHT_CTRL);
Keyboard.press(KEY_RIGHT_ALT);
Keyboard.press(KEY_RIGHT_SHIFT);
Keyboard.press(KEY_F7);
Keyboard.releaseAll();
delay(250);
}
}
@Ryan Vogel, 👍1
Обсуждение1 ответ
Лучший ответ:
Предупреждение: все нижеизложенное является предположением.
Когда окно OBS сфокусировано, ОС может отправлять события клавиатуры в окно. Это означает, что он получает сообщение «Кнопка нажата». Сообщения. Они генерируются, когда кнопка "нажать" события отправляются из Леонардо.
Когда окно OBS не сфокусировано, оно не может отправлять эти сообщения, поэтому ему приходится вручную опрашивать состояние клавиатуры, чтобы увидеть, какие кнопки нажаты в любой момент времени. Он не может делать это все время, поэтому он делает это периодически (но все же довольно быстро).
Однако эффект домино заключается в том, что, когда он не сфокусирован, он может видеть только те кнопки, которые были нажаты в течение как минимум достаточного времени для опроса состояния.
Если вы добавите в свою программу задержку между последним "нажатием" и "освободить все" команды, которые длиннее, чем период между опросами (не знаю, что это такое - вам придется поэкспериментировать, но от 50 до 100 мс должно быть достаточно), вы должны дать OBS достаточно времени, чтобы увидеть, что кнопки нажаты, прежде чем вы затем отпустите их.
Это сработало! Спасибо!, @Ryan Vogel
- Как использовать SPI на Arduino?
- Нажать клавишу Windows, используя «keyboard.press();»
- Как подключить вывод INT MPU 6050?
- Улучшенное циклическое переключение цветов RGB.
- Проблема с загрузкой моего скетча на Ардуино
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
- Распиновка аналога Arduino Pro Micro
- Как преобразовать скетч примера Arduino в полный проект C++?
вам действительно нужно внимательно изучить пример скетча, @jsotola
@jsotola, не могли бы вы дать мне немного больше информации?, @Ryan Vogel
Попробуйте добавить задержку между нажатием клавиш и их отпусканием., @Majenko
@RyanVogel вы смотрели пример скетча? ... что в нем есть такого, чего нет в вашем скетче?, @jsotola