Что касается библиотеки клавиатуры Arduino, то в ней нет раскладки клавиатуры для британской клавиатуры. Кто-нибудь создал для этого файл KeyboardLayout_en_UK.cpp?

Что касается библиотеки клавиатуры Arduino, то в ней нет раскладки клавиатуры для британской клавиатуры. Я пытался найти схему клавиатуры, на которой показано шестнадцатеричное значение британской клавиатуры, но безуспешно.

Если вы посмотрите библиотеку клавиатуры Arduino: Arduino\libraries\Keyboard\scr\KeyboardLayout_en_US.cpp в нем есть несколько других языков, но нет раскладки клавиатуры для британской клавиатуры.

Где-то, я думаю, на GitHub написано, что можно добавить файл раскладки клавиатуры, но где я могу получить этот файл или как я могу создать этот файл? Кто-нибудь уже создал файл KeyboardLayout_en_UK.cpp, который я мог бы использовать?

, 👍2

Обсуждение

Эдгар Бонет, постоянный участник здесь, имеет несколько дополнительных раскладок по адресу https://github.com/arduino-libraries/Keyboard/tree/master/src, однако британская клавиатура, похоже, отсутствует. Вероятно, он сможет вам помочь, без сомнения, он скоро увидит этот пост., @Nick Gammon

Спасибо за полезную информацию, @Susan


2 ответа


Лучший ответ:

1

В качестве примера того, что вы можете сделать...

Сначала скопируйте файл 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


2

Мне не известен британский файл макета для библиотеки клавиатуры 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