Linux는 Bluetooth 키보드의 데이터를 어떻게 처리합니까? (어떻게 키 입력이 되나요?)

Linux는 Bluetooth 키보드의 데이터를 어떻게 처리합니까? (어떻게 키 입력이 되나요?)

내 Bluetooth 키보드가 작동하지 않고(자세한 내용은 아래 설명 참조) 원인을 디버깅하려고 합니다.

지금까지 내가 한 일:

  • 다음을 사용하여 장치를 연결하십시오.bluetoothctl
  • /var/lib/bluetooth/{adapter_MAC}/{keyboard_MAC}내가 알아 차린 후에 Class=0x000540. 나는 이것을 확인했다https://www.question-defense.com/tools/class-of-device-bluetooth-cod-list-in-binary-and-hex그것이 실제로 Keyboard수업이라는 것을 알았습니다.
  • 이것을 실행했는데 btmon키보드에서 데이터가 입력되는 것을 볼 수 있습니다(아래 예 참조).

뭐가 문제 야:

  • 키보드의 키를 눌러도 텍스트 상자에 출력이 없습니다(아래 제외).
  • 키보드의 키를 누르면 다음을 볼 수 있습니다.btmon
  • 가끔(이것을 재현하는 데 약간의 어려움이 있었지만 블루투스 키보드를 잠시 동안 유휴 상태로 두는 것과 관련이 있는 것 같습니다) 처음 누르는 키가 선택되어 텍스트 상자/터미널에 계속 입력됩니다. 예를 들어, 를 입력하면 abc유선 aaaaaaaaaaaaaaaaaaa키보드의 키를 누를 때까지 터미널이 계속 입력될 수 있습니다.

btmon에 입력하면 다음 abc6개의 메시지가 표시됩니다.

a1 01 00 00 04 00 00 00 00 00  # a
a1 01 00 00 00 00 00 00 00 00  # keyup
a1 01 00 00 05 00 00 00 00 00  # b 
a1 01 00 00 00 00 00 00 00 00  # keyup
a1 01 00 00 06 00 00 00 00 00  # c
a1 01 00 00 00 00 00 00 00 00  # keyup

내 질문은 다음과 같습니다Linux는 이 데이터를 어떻게 처리하고 이를 키 입력으로 변환합니까? 다음에는 무엇을 합니까? 이 문제를 처리하는 드라이버는 어디에 있습니까?

이것은 Fedora 기반 배포판입니다.

답변1

제 경우에는 블루투스 키보드(AnnePro2 P1, made in China)가 호스트 장치에서 단 몇 cm 떨어진 곳에서도 작동하도록 설계된 하이브리드 키보드인 것 같습니다. 즉, 이는 앞에 있는 노트북 시나리오에만 적용됩니다.

내 질문은 다음과 같습니다

  1. 키보드가 무작위로 연결 해제됨
  2. 때로는 키보드가 "연결"되어도 키가 작동하지 않는 경우가 있습니다.
  3. 설명과 유사하게 키 입력이 반복적으로 전송되는 경우가 있습니다.

타워형 컴퓨터를 사용해야 했기 때문에 USB 연장 케이블을 이용해 블루투스 펜던트를 블루투스 키보드에서 손바닥 길이 정도 떨어진 곳에 배치했더니 두 가지 문제가 모두 사라졌습니다.

질문 제목을 바꾸시길 바랍니다. 현재 제목은 귀하의 진단이며, 이는 틀릴 수 있습니다. 이는 귀하의 문제일 것입니다(예: "블루투스 키보드가 응답하지 않거나 문자를 반복적으로 출력합니다").

관련 정보