xkb 컴파일은 어떻게 작동하나요?

xkb 컴파일은 어떻게 작동하나요?

"Linux from 스크래치" 환경에서 X 시작 시 xkbcomp가 실패하는 문제에 직면했습니다. 내 표준 우분투 컴퓨터에서는 키맵을 컴파일할 수도 없다는 사실을 발견했습니다.

xkbcomp -w 10 -R/usr/share/X11/xkb -xkm rules/evdev dummy.km

이로 인해 오류가 발생합니다.

Warning: Changing root directory to "/usr/share/X11/xkb"
syntax error: line 16 of rules/evdev
last scanned symbol is:
Errors encountered in rules/evdev; not compiled.

xkbcomp는 어떻게 사용해야 합니까?

답변1

/usr/share/X11/xkb/rules/evdev사양이 포함되어 있습니다규칙. 규칙은 XKB에 부품에서 키맵을 구축하는 방법을 알려주지 특정 키맵을 지정하지는 않습니다. 입력은 다음 xkbcomp과 같아야 합니다.키맵.

입력이 무엇인지 알아내는 가장 쉬운 방법은 읽는 것 입니다.매뉴얼 페이지(하하 아니) 읽고 있어요공식 문서(마치) 오해의 소지가 있는 이름을 읽는 것처럼신뢰할 수 없는 가이드(멋지네요. 준공식 홈페이지에 링크가 있습니다.X.org 위키, 하지만 그럼에도 불구하고정보를 가지고 있다xkbcomp실제로 이것이 인터넷에서 묻는 errr 에 대한 입력이라고 말하지 않습니까 ? 아, 방금 그랬잖아.

음, xkbcomp양방향으로 작동합니다. 따라서 디스플레이에서 키맵을 디컴파일하도록 요청하면 허용 가능한 입력이 표시됩니다.

xkbcomp :0 - | less

구문은 다음과 같습니다.

xkb_keymap {
  xkb_keycodes { … };
  xkb_types    { … };
  xkb_compat   { … };
  xkb_symbols  { … };
  xkb_geometry { … };
}

다음 중괄호 안의 내용은 xkb_xxx디렉토리에 있는 파일의 내용입니다 /usr/share/X11/xkb/xxx. 명령문을 사용하여 기존 파일을 읽도록 include지시 할 수 있습니다 . xkbcomp파일 이름 사이에 지시문을 추가해야 합니다 include. +일부 파일에는 여러 xkb_xxx지시어가 포함되어 있으므로 원하는 지시어의 이름을 괄호 안에 전달하세요. 예를 들어, Composeon 과 함께 미국 레이아웃을 사용 하려면 Menu다음을 사용하십시오.

xkb_symbols { include "us+compose(menu)" }

당신은 물어볼 수 있습니다setxkbmap수용 가능한 입력을 생성합니다 xkbcomp. -print키맵을 서버에 푸시하는 대신 출력을 확인하는 옵션을 전달합니다 . setxkbmap, , -compat, -geometry를 사용하여 해당 , 및 을 설정 -keycodes합니다 .-typesxkb_xxx-layoutxkb_symbols

setxkbmap -layout "us+compose(menu)" -print

사실, 나는 위에서 생략한 내용으로 거짓말을 했습니다. 더 간단한 방법이 있습니다. 정보는 다음과 같습니다.아치스 위키. Arch Linux를 사용하든 사용하지 않든 시스템을 구성하는 방법을 알고 싶다면 Arch wiki가 훌륭한 리소스입니다.

관련 정보