Проблема с USB-клавиатурой с использованием Arduino Leonardo - PullRequest
0 голосов
/ 15 марта 2019

У меня есть «таинственный ящик», о котором я очень мало знаюМне нужно, чтобы Leonardo работал с коробкой, пока она находится в настройке BIOS.Я загрузил проект USBSerPassThruLine с GitHub (https://github.com/gdsports/usb-metamorph/tree/master/USBSerPassThruLine), и, похоже, он работает со всеми настройками BIOS, известными человечеству, за исключением моего специального окна.

Каждое нажатие клавиши сопровождается неявным SHIFT. Поэтому, если явызову Keyboard.press ('a') я получаю 'A'. Или для Keyboard.press ('3') я получаю '#'.

Я пытался быть как можно более прямым с моим собственным простымНажмите ():

void sendReport(KeyReport* keys)
{
   HID().SendReport(2,keys,sizeof(KeyReport));
}

KeyReport rawdata;
size_t press() 
{
   uint8_t i;

   memset(&rawdata, 0, sizeof(KeyReport));

//#define KEY_MOD_LCTRL  0x01
//#define KEY_MOD_LSHIFT 0x02
//#define KEY_MOD_LALT   0x04
//#define KEY_MOD_LMETA  0x08
//#define KEY_MOD_RCTRL  0x10
//#define KEY_MOD_RSHIFT 0x20
//#define KEY_MOD_RALT   0x40
//#define KEY_MOD_RMETA  0x80

//   rawdata.modifiers = KEY_MOD_RSHIFT;

   for (i=0; i<6; i++) {
      rawdata.keys[i] = KEY_1+i; 
   }

  sendReport(&rawdata);
}

Все безрезультатно.

Я все еще получаю: '! @ # $% ^' (вместо '123456')

Любые идеи?

Кстати, задушевная штука в том, что эта настройка BIOS работает с любой USB-клавиатурой, которую я подключаю к коробке. Есть какой-то более старый стандарт, который может использовать эта коробка?

1 Ответ

0 голосов
/ 16 марта 2019

Пришлось добавить это, чтобы заставить его работать:

   if (first_time) {

     first_time = 0;

     memset(&rawdata, 0x0, sizeof(KeyReport));

     rawdata.keys[0] = KEY_CAPSLOCK;
     sendReport(&rawdata);
     releaseAll();
     delay(100);

     rawdata.keys[0] = KEY_CAPSLOCK;
     sendReport(&rawdata);
     releaseAll();
     delay(100);

     rawdata.keys[0] = KEY_LEFTSHIFT;
     sendReport(&rawdata);
     releaseAll();
     delay(100);
   }

А почему это работает? Кто знает?

Кстати, здесь есть ноль для платы Arduino и все, что с этим связано. коробка.

...