GTK 및 Qt 애플리케이션에서 Compose를 작동시키는 방법은 무엇입니까?

GTK 및 Qt 애플리케이션에서 Compose를 작동시키는 방법은 무엇입니까?

나는 오랫동안 Gnome을 사용해왔지만 xim기본 GTK 동작보다 일반 X 입력 방법( )을 선호합니다. 방금 환경 변수를 GTK_IM_MODULE로 설정했는데 QT_IM_MODULE여러 레이아웃 구성, 키, 사용자 정의 및 레이아웃 확장 xim에 문제가 없습니다 .Compose~/.XComposemisc:typo

최근 Gnome 3.6은 키보드 입력을 완전히 엉망으로 만들어 반쯤 구운 버그가 있는 버전을 제공했습니다.ibus 그리고 이를 사용자에게 부과합니다.. 키보드가 이전처럼 작동하도록 할 수 없었고( ibus비활성화된 경우에도) Gnome을 완전히 포기해야 했습니다.

이제 간단한 창 관리자를 사용하고 setxkbmap. 키보드가 다시 잘 작동하지만 작성 키를 어디에서나 사용할 수 없습니다. Compose는 일반 X11 애플리케이션( xterm)에서는 작동하지만 GTK2, GTK3 및 Qt 애플리케이션에서는 작동하지 않습니다.

현재 Archlinux 버전을 사용하고 있습니다.

xorg-xinput 1.6.0
xorg-server 1.13.1
xf86-input-keyboard 1.6.2
gtk2 2.24.14
gtk3 3.6.4
qt 4.8.4

Compose다음과 같이 키를 활성화하십시오.

setxkbmap ... -option 'compose:menu'

및 내보내기 GTK_IM_MODULE, QT_IM_MODULE변수:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

ComposeX11은 키를 올바르게 식별합니다.

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
135 Multi_key

xterm제가 포함시킨 순서대로 잘 작동합니다 ~/.XCompose. GTK 또는 Qt 애플리케이션에서는 작동하지 않습니다. 를 입력하면 시퀀스의 세 번째 키를 기다리지 않고 Compose '애플리케이션이 즉시 에코됩니다.'

Compose이제 Xorg( Qt 애플리케이션에서도 작동하지 않기 때문에) 또는 GTK에서 변경된 사항이 있는 것 같습니다.그리고Qt. *_IM_MODULE이제 변수로는 충분하지 않습니다. 최신 GTK와 Qt가 Compose 시퀀스를 인식하려면 xim또 무엇이 필요합니까 ?

추신: 비슷한(그리고 답변되지 않은) 질문이 있습니다작성 키가 GTK에서 작동하지 않습니다. 질문자와 달리 저는 설치하지 않았습니다 ibus.

답변1

GTK 애플리케이션(Qt는 아님)에서 작동하는 솔루션을 찾았습니다. 하나를 설정해야 합니다.

XMODIFIERS="@im=none"

X11이 데드 키를 처리하도록 하세요. @PabloSaratxaga님 감사합니다그의 대답.

답변2

openSUSE에서도 비슷한 문제에 직면했습니다. ~/.XComposeGTK+ 애플리케이션에서는 무시되므로 내 Compose 시퀀스가 ​​Firefox, Gimp 및 기타 브라우저에서 작동하지 않았습니다.

gtk-query-immodules-2.0일부 입력 방법이 나열되어 있지만 변수 가 xim무엇 이든 사용할 수 없습니다. 패키지 (및 친구)를 설치하면 문제가 해결되었습니다.GTK_IM_MODULEximgtk2-immodule-xim

아마도 이 인용문은 같은 저주로 고통받는 누군가에게 유용할 것입니다.

답변3

이는 구성을 유지하는 방법입니다. 예를 들어 여기에 설명되어 있습니다.https://wiki.edubuntu.org/ComposeKey#line-66. ~/.XCompose를 사용하여 작성 키를 이와 같이 구성했습니다. 우분투와 데비안 시스템에서 이것을 확인했습니다.

답변4

GTK 프로그램에서는 작동했지만 QT 프로그램에서는 작동하지 않았을 때 이것이 바로 내가 가진 것이고 해결책을 찾았기 때문입니다.여기:

GTK+ 애플리케이션은 Xorg의 자체 Compose 파일 복사본을 사용합니다. 대부분의 쓰기 시퀀스는 일부 레거시 예외를 제외하고 계속 작동해야 합니다. xterm 및 QT 애플리케이션은 XOrg를 사용하여 시퀀스를 구성합니다. 시퀀스는 en_US.UTF-8그 안에 있는 파일 /usr/share/X11/locate~/.XCompose파일이 있는 경우 해당 파일입니다.

이것이 나에게 의미하는 바는 다음과 같습니다.

ln -s /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose

그런 다음 QT 프로젝트에도 작동합니다.

관련 정보