Не удается ввести обратную косую черту (\) с помощью библиотеки клавиатуры
Я пытаюсь создать макро-клавиатуру, где я могу нажать одну кнопку, и она откроет для меня программы.
Я пытаюсь ввести это, например: "c:\windows "
но он печатается следующим образом: cÑ}windows
Я попытался использовать двойную обратную косую черту (\), но это все равно не работает
#include <HID-Project.h>
#include <HID-Settings.h>
#include <Keypad.h>
#define L_ALT KEY_LEFT_ALT
#define TAB KEY_TAB
#define WIN KEY_LEFT_GUI
#define ENTER KEY_RETURN
const byte FILAS = 4;
const byte COLUMNAS = 4;
//define the cymbols on the buttons of the keypads
char Keys[FILAS][COLUMNAS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinesFilas[FILAS] = {9, 8, 7, 6};
byte pinesColumnas[COLUMNAS] = {5, 4, 3, 2};
char TECLA;
Keypad teclado = Keypad( makeKeymap(Keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);
void setup() {
Serial.begin(9600);
Keyboard.begin();
}
void loop() {
TECLA = teclado.getKey();
if (TECLA) {
switch (TECLA) {
case '1':
Serial.print("Tecla 1 presionada");
break;
case '2':
Serial.print("Tecla 2 presionada");
break;
case '3':
Serial.print("Tecla 3 presionada");
break;
case 'A':
Serial.print("Tecla A presionada");
break;
case '4':
Serial.print("Tecla 4 presionada");
Keyboard.press(WIN);
Keyboard.write('r');
Keyboard.release(WIN);
delay(100);
Keyboard.print("C:\Program Files (x86)\AIMP\AIMP.exe"); //Here's the problem
//Keyboard.write(ENTER);
break;
case '5':
Serial.print("Tecla 5 presionada");
break;
case '6':
Serial.print("Tecla 6 presionada");
break;
case 'B':
Serial.print("Tecla B presionada");
break;
case '7':
Serial.print("Tecla 7 presionada");
break;
case '8':
Serial.print("Tecla 8 presionada");
break;
case '9':
Serial.print("Tecla 9 presionada");
break;
case 'C':
Serial.print("Tecla C presionada");
break;
case '*':
Serial.print("Tecla * presionada");
break;
case '0':
Serial.print("Tecla 0 presionada");
break;
case '#':
Serial.print("Tecla # presionada");
break;
case 'D':
Serial.print("Tecla D presionada");
break;
}
}
}
@Tomy Gaspar, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы должны иметь в виду, что Arduino не отправляет символы на компьютер. Вместо этого он имитирует нажатия клавиш, и компьютер должен преобразовать их в символы в соответствии с некоторой раскладкой клавиатуры. По умолчанию библиотека клавиатуры использует раскладку клавиатуры в США.
Если вы используете другой макет, вы должны сообщить об этом библиотеке при ее инициализации. Например.
Keyboard.begin(KeyboardLayout_es_ES);
будет работать с испанской раскладкой клавиатуры.
C.f. документация Keyboard.begin()
.
Если вы используете неподдерживаемый макет, вам может потребоваться написать свой собственный файл макета и добавить его в библиотеку. Затем вы можете добавить его вверх по течению, чтобы он стал частью будущих версий библиотеки клавиатуры .
В качестве альтернативы вы можете переключить свой макет на US в своей операционной системе.
PS: Библиотека клавиатуры поддерживает только международные раскладки клавиатуры, начиная с версии 1.0.3, выпущенной 2021-11-04.
- Почему Xbox360 не может определить Arduino Leonardo как клавиатуру?
- Клавиатура Arduino стартует строчными буквами (но не должна)
- Нажать клавишу Windows, используя «keyboard.press();»
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
- Какие диоды использовать в матричном вводе кнопок/клавиш? (Изготовление игровой клавиатуры)
- Keyboard.print() пропускает клавиши
- Не удается заставить клавиатуру использовать Keyboard.write на Arduino Uno
- Arduino Uno R3 HID с модулем HC-06 BT
Похоже, у вас на компьютере настроена другая раскладка клавиатуры, чем в библиотеке клавиатур. Я думаю, что он использует стандартную американскую компоновку., @chrisl