Что касается библиотеки клавиатуры Arduino, то в ней нет раскладки клавиатуры для британской клавиатуры. Кто-нибудь создал для этого файл KeyboardLayout_en_UK.cpp?
Что касается библиотеки клавиатуры Arduino, то в ней нет раскладки клавиатуры для британской клавиатуры. Я пытался найти схему клавиатуры, на которой показано шестнадцатеричное значение британской клавиатуры, но безуспешно.
Если вы посмотрите библиотеку клавиатуры Arduino: Arduino\libraries\Keyboard\scr\KeyboardLayout_en_US.cpp
в нем есть несколько других языков, но нет раскладки клавиатуры для британской клавиатуры.
Где-то, я думаю, на GitHub написано, что можно добавить файл раскладки клавиатуры, но где я могу получить этот файл или как я могу создать этот файл? Кто-нибудь уже создал файл KeyboardLayout_en_UK.cpp, который я мог бы использовать?
@Susan, 👍2
Обсуждение2 ответа
Лучший ответ:
В качестве примера того, что вы можете сделать...
Сначала скопируйте файл KeyboardLayout_en_US.cpp и переименуйте его в KeyboardLayout_en_UK.cpp.
Большинство записей будут одинаковыми. Теперь посмотрим на макет в https://github.com/arduino-libraries/. Keyboard/blob/1.0.4/src/KeyboardLayout.h видим это:
+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
|35 |1e |1f |20 |21 |22 |23 |24 |25 |26 |27 |2d |2e |BackSp |
+---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----+
| Tab |14 |1a |08 |15 |17 |1c |18 |0c |12 |13 |2f |30 | Ret |
+-----++--++--++--++--++--++--++--++--++--++--++--++--++ |
|CapsL |04 |16 |07 |09 |0a |0b |0d |0e |0f |33 |34 |31 | |
+----+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+----+
|Shi.|32 |1d |1b |06 |19 |05 |11 |10 |36 |37 |38 | Shift |
+----+---++--+-+-+---+---+---+---+---+--++---+---++----+----+
|Ctrl|Win |Alt | |AlGr|Win |Menu|Ctrl|
+----+----+----+------------------------+----+----+----+----+
Третья клавиша в верхнем ряду моей (США) клавиатуры (под функциональными клавишами) имеет @
вверху и 2
внизу. На диаграмме он имеет код 1f
.
В файле макета США мы частично видим:
0x2c, // ' ' 0x20
0x1e|SHIFT, // ! 0x21
0x34|SHIFT, // " 0x22
0x20|SHIFT, // # 0x23
0x21|SHIFT, // $ 0x24
0x22|SHIFT, // % 0x25
0x24|SHIFT, // & 0x26
0x34, // ' 0x27
0x26|SHIFT, // ( 0x28
0x27|SHIFT, // ) 0x29
0x25|SHIFT, // * 0x2a
0x2e|SHIFT, // + 0x2b
0x36, // , 0x2c
0x2d, // - 0x2d
0x37, // . 0x2e
0x38, // / 0x2f
0x27, // 0 0x30
0x1e, // 1 0x31
0x1f, // 2 0x32
0x20, // 3 0x33
0x21, // 4 0x34
0x22, // 5 0x35
0x23, // 6 0x36
0x24, // 7 0x37
0x25, // 8 0x38
0x26, // 9 0x39
0x33|SHIFT, // : 0x3a
0x33, // ; 0x3b
0x36|SHIFT, // < 0x3c
0x2e, // = 0x3d
0x37|SHIFT, // > 0x3e
0x38|SHIFT, // ? 0x3f
0x1f|SHIFT, // @ 0x40
Я поместил позиции каждой записи справа (смещение от начала массива).
Итак, глядя на эту таблицу, когда приходит код сканирования 1f
и нажимается SHIFT, мы получаем 0x40
, что на самом деле является @
в таблицу ASCII.
Аналогично, 1f
без SHIFT дает нам 0x32
, что равно 2
в таблице ASCII.
Теперь в вашем случае я считаю, что клавиша выдает "
при нажатии SHIFT, поэтому третья строка сверху в моем примере меняется на:
0x34|SHIFT, // " 0x22
кому:
0x1f|SHIFT, // " 0x22
Аналогично и для остальных клавиш. Таким образом, символ @
перемещается туда, где на американской клавиатуре находится кавычка. Поэтому измените последнюю строку в моем примере на:
0x1f|SHIFT, // @ 0x40
кому:
0x34|SHIFT, // " 0x40
Эти два изменения «поменялись местами»; расположение символов "
и @
.
Как отмечено в комментариях, клавиши, отмеченные ¬ и £, не имеют 7-битного ASCII-представления, поэтому вы не сможете поместить их в таблицу (для них нет записи).
Спасибо за это, я только начинаю разбираться в этом сам, и эта информация действительно полезна., @Susan
Мне не известен британский файл макета для библиотеки клавиатуры Arduino.
сама библиотека не имеет такого макета, и поиск в Интернете выдал
ничего. Вы можете рассмотреть возможность создания этого макета самостоятельно.
документация Keyboard.begin()
гласит:
Пользовательские макеты можно создавать путем копирования и изменения существующего макет. См. инструкции в библиотеке клавиатуры. Файл KeyboardLayout.h.
Файл KeyboardLayout.h действительно содержит подробную информацию инструкции для этого. Достаточно ли они ясны? Если нет, скажите мне: я написал эти инструкции, и я могу попытаться обновить их, если что-то в их сбивает с толку.
Хотите ли вы попробовать создать этот макет самостоятельно? Если так, то это было бы было бы здорово, если бы вы могли отправить это в официальную библиотеку по запросу запрос. Таким образом, другие пользователи библиотеки смогут получить пользу от вашей работы. Если вам не хочется это делать, я могу попробовать (я уже это сделал). создал несколько из них). В этом случае я был бы признателен, если бы вы могли сообщить о проблеме, просто чтобы показать сопровождающим, что есть некоторые проблемы. заинтересован в том, чтобы библиотека предоставила этот макет.
Спасибо за вашу помощь, думаю, я попробую создать файл KeyboardLayout_en_UK.cpp., @Susan
Я бы предположил, что единственное дополнение, которое можно было бы с пользой внести в эти инструкции, — это явное заявление о том, что они поддерживают только 7-битный ASCII. Таким образом, хотя на британской клавиатуре есть клавиши, отмеченные ¬ и £, соответствующие коды ASCII отсутствуют., @Mark Morgan Lloyd
@MarkMorganLloyd: «7-битный ASCII» — это плеоназм. Подойдет ли предложение «Символы, отличные от ACSII», добавленное в конец первого абзаца? Или мне следует добавить в скобках «что-нибудь за пределами диапазона NUL..DEL», чтобы объяснить «символы, отличные от ACSII»?, @Edgar Bonet
@EdgarBonet Подойдет любая из этих форм, но помните, что многие люди на самом деле не понимают, что различные кодовые страницы и т. д., основанные на «расширенном ASCII», выходят далеко за рамки исходной спецификации ASCII. Мой опыт показывает, что термины «7-битный ASCII» и «8-битный расширенный ASCII» хорошо понятны, хотя я знаю, по крайней мере, так же хорошо, как и вы, что ни один из них не является строго правильным., @Mark Morgan Lloyd
@MarkMorganLloyd: ОК. Я отправил разъяснения в [запросе на извлечение](https://github.com/arduino-libraries/Keyboard/pull/82)., @Edgar Bonet
@EdgarBonet Я создал файл KeyboardLayout_en_UK.cpp и добавил его в свою библиотеку клавиатуры Arduino, а также изменил Keyboard.h, включив в него строку: extern const uint8_t KeyboardLayout_en_UK[]; Я не очень хорошо знаком с GitHub и в настоящее время не уверен, что смогу сделать запрос на включение., @Susan
- Не удается заставить клавиатуру использовать Keyboard.write на Arduino Uno
- Arduino nano как клавиатура HID
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Keyboard.h не найден
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Существуют ли библиотеки сглаживания сигналов для Arduino?
- Нажать клавишу Windows, используя «keyboard.press();»
Эдгар Бонет, постоянный участник здесь, имеет несколько дополнительных раскладок по адресу https://github.com/arduino-libraries/Keyboard/tree/master/src, однако британская клавиатура, похоже, отсутствует. Вероятно, он сможет вам помочь, без сомнения, он скоро увидит этот пост., @Nick Gammon
Спасибо за полезную информацию, @Susan