Digispark / DigiKeyboard изменить раскладку клавиатуры

Я пытаюсь использовать Digispark в качестве Rubber Ducky, но Digispark работает только с американской раскладкой. Немецкая раскладка — QWERTZ. Некоторые клавиши, например, y и z, можно изменить, но если есть [ или ], это невозможно. Попытка определить клавишу [ в DigiKeyboard.h отображает ü.

Знает ли кто-нибудь решение?

, 👍3


3 ответа


2

Вы можете редактировать файл scancode-ascii-table.h в вашей библиотеке DigiKeyboard. По сути, он определяет, какой код ASCII соответствует какому скан-коду клавиатуры.

Таким образом, если вы пытаетесь напечатать символ «:», но вместо этого получаете «>», вы знаете, что в вышеупомянутом файле в позиции ASCII для «:» находится скан-код для «>».

Используя это, вы можете менять местами скан-коды и, по сути, создавать собственные «соответствия». Например, если поменять местами значения в ASCII-кодах 89, 90 и 121, 122, можно решить проблему переключения Y/Z.

Однако я так и не разобрался, как правильно выводить обратную косую черту. Возможно, вам придётся сопоставить это с другим символом ASCII, который вам не нужен.

В дополнение к этому ответу, существует обходной путь с использованием duck2spark от mame82: https://github.com/mame82/duck2spark

,

1

Решение здесь: Скрипт Python для преобразования полезных данных RubberDucky в скетч DigiSpark с учетом выбранной раскладки клавиатуры:

duck2spark

Кстати: клавиши '<', '|' и '>' находятся на NON-US-KEY-100 немецкой раскладки клавиатуры. Для USB HID клавиша имеет значение 0x64, и необходимо установить правильные модификаторы (например, ALT_GR для '|'). Вы можете отправить их с помощью

DigiKeyboard.sendKeyStroke(key,modifier);

Подробнее см. в таблицах использования USB HID

,

0

Вот версия библиотеки Digistump с поддержкой немецкой клавиатуры https://github.com/adnanonline/DigistumpArduinoDe Я адаптировал библиотеку клавиатуры: digistump-avr/libraries/DigisparkKeyboard/DigiKeyboard.h под немецкую раскладку

,