특히 데스크탑 Linux의 키보드 입력 스택을 이해하십시오. 쓰기 키

특히 데스크탑 Linux의 키보드 입력 스택을 이해하십시오. 쓰기 키

문맥상, 저는 Wayland에서 GNOME을 사용하여 Fedora 39에서 Compose 키 처리 시 발생한 버그를 추적하려고 합니다.여기그리고여기. 그러나 내 질문은 더 일반적입니다. 저는 Linux 데스크탑의 키보드 입력이라는 거대한 체계에서 모든 작은 조각들이 어떻게 조화를 이루는지 이해하려고 노력하고 있습니다.

나는 다음과 같은 작품에 대해 들어본 적이 있습니다.

  • 리눅스 커널
  • evdev
  • (lib)xkb공통
  • 버스
  • 웨이랜드
  • GUI 툴킷: GTK, Qt
  • 데스크탑 환경: GNOME, KDE(및 gsettings와 같은 구성 메커니즘)
  • 레거시X11

어느 것이 무엇을 하는지 조금 혼란스럽습니다.

이 내 꺼야생각하다나는 이것이 매우 잘못된 것일 수 있다는 것을 이해합니다. 이 경우 어떻게 해야 하는지 알고 싶습니다.

  • Linux 커널은 키보드에서 (udev??를 통해) 물리적 키 신호를 가져와 이를 "키 코드"로 변환합니다.
  • evdev는 커널에서 원시 정보를 더 쉽게 검색할 수 있도록 하는 라이브러리 계층입니다(해당 문서에서, "libevdev는 본질적으로 /dev/input/eventX 장치에 대한 스테로이드 읽기(2)입니다.")
  • libxkbcommon은 "키코드"에서 "키기호"로의 매핑을 아름답게 표현한 키보드 설명을 이해하는 라이브러리입니다.
  • Wayland 프로토콜(구체적으로wl_keyboard)는 키코드가 포함된 입력 키보드 이벤트를 제공하고 libxkbcommon 형식으로 키보드 설명을 얻는 방법도 제공합니다.
  • X11도 비슷한 기능을 수행합니다. "xkbcommon"이라는 이름은 X11의 일부인 xkbcommon의 역사에서 유래되었습니다. 지금은 더 일반적이지만
  • 데스크탑 환경(내 경우에는 GNOME)에서는 구성 GUI를 통해 키보드 레이아웃을 구성할 수 있습니다. 레이아웃이 제대로 작동하도록 하려면 이를 wl_keyboard::keymapWayland 합성기(GNOME용 Mutter)의 출력으로 만듭니다 .
  • GTK와 같은 GUI 툴킷은 Wayland 프로토콜에서 키 코드와 키보드 설명을 가져와서 libxkbcommon을 사용하여 키 기호로 변환한 다음 어떻게든 (어떻게?) 키 기호가 유니코드 문자가 됩니다.

IBus가 이 그림에서 어디에 적합한지 이해가 되지 않습니다. 그것은 무엇을 위해 사용됩니까? libxkbcommon과 어떻게 다른가요? 뭔가 다른 일을 하는가, 아니면 그것과 경쟁하는가? 스택의 어느 부분에서 이를 사용합니까? 데스크탑 환경? 신디사이저는 정확히 무엇입니까? GUI 툴킷?

~/.XCompose또한 파일을 어디에서 읽는지 이해할 수 없습니다 . 사실 가능한 키 기호 목록이 어디에 정의되어 있는지조차 이해하지 못합니다.

관련 정보