나는 오랫동안 Gnome을 사용해왔지만 xim
기본 GTK 동작보다 일반 X 입력 방법( )을 선호합니다. 방금 환경 변수를 GTK_IM_MODULE
로 설정했는데 QT_IM_MODULE
여러 레이아웃 구성, 키, 사용자 정의 및 레이아웃 확장 xim
에 문제가 없습니다 .Compose~/.XCompose
misc: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에서도 비슷한 문제에 직면했습니다. ~/.XCompose
GTK+ 애플리케이션에서는 무시되므로 내 Compose 시퀀스가 Firefox, Gimp 및 기타 브라우저에서 작동하지 않았습니다.
gtk-query-immodules-2.0
일부 입력 방법이 나열되어 있지만 변수 가 xim
무엇 이든 사용할 수 없습니다. 패키지 (및 친구)를 설치하면 문제가 해결되었습니다.GTK_IM_MODULE
xim
gtk2-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 프로젝트에도 작동합니다.