본문 바로가기

RaspberryPi/RP2040

RP2040 SSM - HID Keyboard Composite Device 테스트, CDC로 Key 값 설정하기

Keyboard, Disk Composite Device 로 Key 값을 설정 하는 방법외  CDC 로 설정하면 좀더 편리 하지 않을까?
키보드 + 시리얼 로 동작하게 해서 시리얼 포트로는 데이터 세팅 하도록 하는 코드 작성해 보았다.
 
스위치 누르면 키값을 전송하도록 했는데 keyboard_ramdisk.ino와 다른 현상이 발생한다.
if (digitalRead(PIN_BUTTON1) == 0 )
    {
      if(flag == 0)
      {
        flag = 1;

        keycode = hidcode[0];
        usb_hid.keyboardReport(report_id, modifier, &keycode);
  
        Serial.print("press=");  
           
        // delay a bit before attempt to send keyboard report
        delay(50);
  
        usb_hid.keyboardRelease(0);
      }
    }
    else
    {
      if(flag == 1)
      {
        flag = 0;
        Serial.println("unpress"); 
      }
    }

 

스위치를 누르면 'a'가 입력되어야 하는데...
"aea" 3개의 키값이 전송된다.
aea
 
레포트데이터가 3바이트 인가?
 

3바이트가 맞고 실제 데이터는 바이트 1에 넣어서 보내야 키 하나가 전송 된다.

 

if (digitalRead(PIN_BUTTON1) == 0 )
    {
      if(flag == 0)
      {
        flag = 1;

        keycode[1] = hidcode[1];
        usb_hid.keyboardReport(report_id, modifier, keycode);
  
        Serial.print("press=");  
           
        // delay a bit before attempt to send keyboard report
        delay(50);
  
        usb_hid.keyboardRelease(0);
      }
      
    }
    else
    {
      if(flag == 1)
      {
        flag = 0;
        Serial.println("unpress"); 
      }
    }
반응형