키보드를 눌렀을 때 X 서버는 어떻게 문자를 내보내나요? [복사]

키보드를 눌렀을 때 X 서버는 어떻게 문자를 내보내나요? [복사]

이것은 실제로 코딩 문제입니다.

나는 X 서버가 어떤 문자를 내보낼지 결정하기 위해 활성 키보드 레이아웃을 검사한다는 것을 알고 있습니다(유니코드가 지원됩니다). 하지만 실제로 이것이 어떻게 수행되는지는 모르겠습니다. 누군가 이 작업을 실제로 볼 수 있는 소스 코드를 알려줄 수 있습니까?

실제로 내가 원하는 것은 동일한 작업(활성 레이아웃 무시)을 수행하는 "유니코드 키보드 드라이버"를 만드는 것입니다. 그러나 X가 GUI에 유니코드 문자를 보내는 방법을 알아야 합니다.

X 서버에 새로운 기능을 추가하고 다시 컴파일해야 하는지는 중요하지 않습니다. 나는 이러한 문자를 GUI로 보내기 위한 올바른 소스 코드를 지적하고 싶었습니다.

편집하다:

이 댓글은 나에게 답을 찾을 수 있는 올바른 방향을 알려주었습니다. 이제 Linux에서 프로그래밍 방식으로 유니코드 텍스트를 GUI로 출력하는 방법을 알아낸 것 같습니다.

팁: xdotool/libxdo, XTestFakeKeyEvent, xmodmap -e "키코드 107 = U2196"

나는 결국 내 자신의 C++ 라이브러리를 사용하여 이 질문에 답할 수 있는지 알아볼 것입니다.

답변1

프로그래밍 방식으로 이 작업을 수행하는 데 필요한 두 가지 명령을 알아냈습니다.

XChangeKeyboardMapping(사용하지 않는 키코드를 문자/유니코드로 매핑)

XTestFakeKeyEvent(X 서버로 전송)

따라서 모든 문자를 전송할 수 있으며 키보드 레이아웃은 변경되지 않고 그대로 유지됩니다.

관련 정보