Firefox 그리고 한글 입력기문제

Firefox에서 xim으로 한글입력기를 사용하면 메뉴가 사라지는 등의 문제가 발생하는 것은 게시판에서 많이 논의가 되었습니다.
아직까지 확인한 바로는 GTK_IM_MODULE=[b:3tob63w9]"xim"[/b:3tob63w9]일 때만 Firefox 문제가 발생합니다.

다음 세가지 조합으로 Firefox 한글 문제가 해결될 것으로 보고 있습니다.

  • uim (GTK_IM_MODULE="uim")
  • nabi + imhangul-gtk2/3 (GTK_IM_MODULE="hangul2")
  • ibus (GTK_IM_MODULE="ibus") : Mint 16(ubuntu 13.10 기반)에는 ibus로 지정하더라도 GTK_IM_MODULE="xim"으로 설정하는 문제가 있음.

저는 지금까지 uim,nabi+imhangul-gtk2/3 조합이 올바르게 작동함을 확인하였습니다. ibus는 대충 쓰다가 제 취향이 아니라 장시간 테스트는 못 해보았습니다.

Ubuntu 13.10 버전이 문제가 있습니다.
[b:3tob63w9]ibus 세팅후 GTK_IM_MODULE 환경변수 값을 보면 xim으로 돼 있습니다.[/b:3tob63w9]
im-config에서 ibus를 기본으로 선택하고 나서, ~/.xinputrc 파일을 열고 마지막에 다음을 추가하여 ibus로 모두 변경해주고 재시작하면 ibus에서도 Firefox 한글 문제는 발생하지 않게 되지 않을까 싶습니다.

[code:3tob63w9]
GTK_IM_MODULE="ibus"
[/code:3tob63w9]

참고 : http://kwonnam.pe.kr/wiki/linux/inputmethod

imhangul은 동적라이브로 되어 있는 입력기 모듈이고, 자동으로 로드됩니다.
gtk에서는 imhangul-gtk가 qt에서는 imhangul-qt가 항상 로드되죠.

imhangul이 설치되어 동작하면, gnome-terminal에서 시스템 기본으로 항상 imhangul이 사용됩니다.
매번 터미널에서 우클릭해서, 입력기를 지정하지 않으면 imhangul이 사용됩니다.
xinput과는 무관하게, imhangul이 사용되더군요.

처음에는 터미널에서 한글 입력에 문제가 없어서 몰랐는데,
그 당시엔 ibus를 사용했는데, 아무리 환경설정을 nabi로 바꿔도 안되서, 그놈터미널이 항상 ibus를 사용하는가 싶었죠
근데 좀 이상해서 살펴봤더니, ibus가 동작하는 것이 아니라, imhangul이 동작하고 있는 것이었습니다.

imhangul은 따로 설정하는 곳이 없습니다.
그냥 gtk의 immodules 디렉토리에 동적라이브러리를 넣고, 이를 gtk가 자동으로 로드하는 것입니다.
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/*.so 파일들이 그런 입력기 모듈들이고,
GTK_IM_MODULE=입력기
이런식으로 지정하면 간단히 생각해 본다면, 위의 디렉토리의 im-입력기.so 파일이 자동으로 로드된다는 것입니다.
nabi를 사용하려면, GTK_IM_MODULE=xim으로 설정해야 됩니다.
안그러면, GTK_IM_MODULE로 지정한 입력기가 동작하게 됩니다.
GTK_IM_MODULE=hangul2 로 하면, imhangul이 동작합니다.
imhangul은 따로 상태를 보여주지 않기 때문에, 그게 동작하더라도, 표면상으론 잘 알 수 없습니다.
ibus를 띠워놔도, imhangul이 동작하고 있는 것일 수 있다는 것입니다.

그래서 저는 아예 imhangul을 설치하지 않습니다.

그래야 GTK_IM_MODULE을 xim설정이 먹히고, nabi가 동작하기 때문이죠.

nabi 사용시에 일부러 GTK_IM_MODULE을 hangul2로 지정하여 nabi가 아닌 imhangul을 사용하게 한 것입니다.
Firefox는 GTK_IM_MODULE='xim’일 때 문제를 일으키기 때문입니다.
GTK 애플리케이션 외의 다른 것은 nabi로, GTK 애플리케이션은 imhangul을 사용해야 Firefox의 메뉴 사라짐문제를 해결할 수 있습니다.
nabi는 상태창에서 imhangul의 상태도 표시해주는 기능이 있기 때문에 별문제 없이 imhangul 사용이 가능합니다.

[quote="kwon37xi":36rp7af4]nabi 사용시에 일부러 GTK_IM_MODULE을 hangul2로 지정하여 nabi가 아닌 imhangul을 사용하게 한 것입니다.
Firefox는 GTK_IM_MODULE='xim’일 때 문제를 일으키기 때문입니다.
GTK 애플리케이션 외의 다른 것은 nabi로, GTK 애플리케이션은 imhangul을 사용해야 Firefox의 메뉴 사라짐문제를 해결할 수 있습니다.
nabi는 상태창에서 imhangul의 상태도 표시해주는 기능이 있기 때문에 별문제 없이 imhangul 사용이 가능합니다.[/quote:36rp7af4]

GTK에서 nabi를 사용하고 싶은 것인데, 그러면 어떻게 해야 합니까?

저는 이런 문제가 firefox에서만 나타나기 때문에… firefox.sh를 수정하여 ibus를 띠우도록 변경하였습니다.
즉, firefox가 주된 문제이기 때문에, firefox만 XIM을 사용하지 않는 다른 입력기로 변경하여 사용하도록 했습니다.
이렇게 하면, 다른 곳에서는 원하는 설정에 따른 입력기를 사용할 수 있죠.

어자피 firefox에서 xim 문제는 입력기로 nabi를 사용하니 생기는 것이 아닙니까?
다른 입력기를 사용하면, GTK_IM_MODULE=xim으로 설정할 필요가 없이 해당 입력기 이름을 설정해주면 되니까요.

그런데, gtk에서는 imhangul을 사용하고, gtk가 아닌것은 nabi를 사용한다면,
원래 목적인 nabi를 사용하고 싶다는 것에 어긋나는 것이 아닙니까?
그런식이라면 뭐하러 나비를 사용합니까? 그냥 imhagul로 통일하면 되죠.

[quote:12bgrvg9]저는 이런 문제가 firefox에서만 나타나기 때문에… firefox.sh를 수정하여 ibus를 띠우도록 변경하였습니다.
즉, firefox가 주된 문제이기 때문에, firefox만 XIM을 사용하지 않는 다른 입력기로 변경하여 사용하도록 했습니다.
이렇게 하면, 다른 곳에서는 원하는 설정에 따른 입력기를 사용할 수 있죠.

그런데, gtk에서는 imhangul을 사용하고, gtk가 아닌것은 nabi를 사용한다면,
원래 목적인 nabi를 사용하고 싶다는 것에 어긋나는 것이 아닙니까?
그런식이라면 뭐하러 나비를 사용합니까? 그냥 imhagul로 통일하면 되죠.[/quote:12bgrvg9]
저도 일전에 같은 글을 쓴 적이 있습니다만 배포반 마다
GTK_IM_MODULE이 xim, ibus, fcitx, uim이 됐든 파이어폭스에서 버그가 발생할 수도, 발생 하지 않을 수도 있습니다.

예를 들자면 nabi를 사용하는 경우 오픈 수세에서는 관련 버그가 발생하지 않지만
우분투에서는 발생하고 페도라에서는 터미널의 내용을 복사해서 파이어폭스에서 검색하는 경우
버그가 발생 합니다. 또한 gnome이냐 KDE냐에 따라서도 버그가 서로 다릅니다.

반대로 수세에선 uim, ibus를 사용하는 경우 관련 버그가 발생합니다.
쿠분투에서는 nabi, fcitx에서 관련 버그가 발생 합니다. 이 처럼 배포반 마다 조금씩 차이가 있습니다.

어째든 논점에서 벗어난 것 같지만 gtk에서 im-hangul을 사용하는 것과 firefox 사용시 ibus를 사용하는 것
protochaos님께서 말씀 하신 둘 다 결국은 같은 논리의 문제 인 것 같습니다.

서로 다른 방법을 사용한다고 해서 나무랄 바도 아니지만
문제 해결의 선택권도 사용자에게 있음이 자명한 것이 아니겠습니까?

[quote:12bgrvg9]ibus 세팅후 GTK_IM_MODULE 환경변수 값을 보면 xim으로 돼 있습니다.
im-config에서 ibus를 기본으로 선택하고 나서, ~/.xinputrc 파일을 열고 마지막에 다음을 추가하여 ibus로 모두 변경해주고 재시작하면 ibus에서도 Firefox 한글 문제는 발생하지 않게 되지 않을까 싶습니다.[/quote:12bgrvg9]
이미 GTK_IM_MODULE="ibus"로 설정이 변경되어 배포되고 있습니다.
우분투 13.10에서는 ibus에서 관련 버그를 아직 경험한 적이 없습니다.

[quote="bahzu":236gxmr3]
이미 GTK_IM_MODULE="ibus"로 설정이 변경되어 배포되고 있습니다.
우분투 13.10에서는 ibus에서 관련 버그를 아직 경험한 적이 없습니다.[/quote:236gxmr3]

이 문제는 어쩌면 Mint 16 Mate (Ubuntu 13.10 기반)에서만 발생할 수도 있습니다.
저는 모두 Mint만 사용하고 있는데, im-config에서 ibus를 지정하면 ibus가 뜨긴하지만 GTK_IM_MODULE="xim" 상태입니다.

Original Ubuntu 13.10 은 안 그런가보네요.

이거 말하는 모양이네요.
[attachment=0:36dr1eob]a.png[/attachment:36dr1eob]

[code:36dr1eob]$ printenv | grep ibus
XMODIFIERS=@im=ibus
GTK_IM_MODULE=ibus
[/code:36dr1eob]

음 웹서핑을 통해 알아본 바, xim에서 이벤트에 타임 스탬프를 제대로 전달하지 않아서,
GDK등에서, 이벤트를 무시해버려서 파이어폭스에서 메뉴등의 이벤트가 처리되지 못하는 문제가 생기는 모양인데,
Chiaki ISHIKAWA라는 사람이 패치를 내놓았고,
관련 패키지는 libx11-6 입니다.

이것 때문에, 파이어폭스에서 문제가 생기는 것인지는 정확히 알 수 없어,
이 패치를 적용해 컴파일한 libx11.so와 libx11-xcb.so파일로 바꿔서, 테스트 중입니다.

패치 내용은 아래 링크를 따라가시면 되는데, 소스가 같지 않기 때문에, 수동으로 적용하시고, 버전에 맞는 diff 패치 파일을 만드셔도 됩니다.
[url:3kxzygft]http://lists.x.org/archives/xorg-devel/2012-December/034823.html[/url:3kxzygft]

좀 써보고 문제가 발생하지 않는다면 좋겠습니다.

그리고, 제가 사용하는 우분투 버전은 13.04인데, 13.10의 패키지 소스를 받아서 본 결과,
그 안에도 이런 패치가 적용되지 않았네요.

13.10을 사용하시는 분 중에, 위의 패치를 적용해 컴파일 해 보실 분 계신가요?
libx11-6 패키지는 단 두개의 so파일이 전부이고, 나머지는 문서파일입니다.
그러니, 이 바이너리 파일만 교체하면 패치는 적용되리라 봅니다.

단 바이너리 파일이라, i386/amd64를 따로 빌드해야 합니다.
저의 경우 64비트 컴퓨터라, amd64빌드를 하고,
다음과 같이 32비트 빌드를 해놓고 테스트 중입니다.

[code:3kxzygft]sudo apt-get install ubuntu-dev-tools gcc-multilib pbuilder
pbuilder-dist raring i386 create
pbuilder-dist raring i386 login --bindmounts "/build 소스푼디렉토리"
apt-get install xmlto xtrans-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-video-dev
cd /build
./configure
make
mkdir dso
cp src/.libs/libX11-xcb.so src/.libs/libX11.so dso/
exit
cd /usr/lib/x86_64-linux-gnu/
sudo cp libX11.so.6.3.0 libX11.so.6.3.0.orig
sudo cp libX11-xcb.so.1.0.0 libX11-xcb.so.1.0.0.orig
sudo service lightdm stop

프로그램들 종료

pidof X && sudo kill -9 $(pidof X)
sudo cp 소스압축푼디렉토리/dso/* /usr/lib/x86_64-linux-gnu/
sudo service lightdm start
[/code:3kxzygft]

테스트 해보고, 문제가 없으면,
i386/amd64로 빌드한 so바이너리 파일을 자료실에 올릴 생각입니다.
하지만, 13.10버전은 컴파일을 못하니, 다른 분이 좀 해주셨으면 합니다.

소스를 풀어 내는 방법은,
sudo apt-get source libx11-6:amd64
이고, modules/im/ximcp 디렉토리의 imDefLkup.c와 imTrans.c를 수정하시면 됩니다.

일단 글을 썼다가 패치가 된 것 인지의 유무에 확신이 없어 다시 씁니다.

일단 수세의 src 소스(버전 1.6.2)에서 확인 해 본 결과 말씀 하신 일본 사람이 만든 코드가
이미 적용되어 있더군요!

우분투는 버전이 1.6.1 이라서 재부팅 하기도 뭐해서 확인해 보지는 않았습니다.
결론 부터 말씀 드리자면 별 효과가 없을 것으로 봅니다.

수세에서는 ibus, uim 사용시 버그가 발생하는 것으로 보아 효과는 장담해 드릴 순 없겠군요!
그러나 xim 관련 패키지가 근본적으로 우분투와 차이가 있으니 어떨런지는 모르겠습니다.

쿠분투에 1.6.1 버전이 적용되어 있으나
나비의 경우 터미널 또는 파이어폭스의 탭 내용을 주소줄 또는 검색란에 붙여넣기 한 경우
같은 버그가 나는 것을 확인 한 적이 있습니다.

참고하십시오.

추가사항

소스는 확인해 보지 않았으나 1.6.2 버전이 패키지화 되어 있군요!
수세에서 패치 사항을 확인하였으니 우분투도 되었을 것으로 봅니다.
아래 주소에서 다운로드 받으시기 바랍니다.

[url:1zvqr2r9]https://launchpad.net/~ricotz/+archive/unstable/+sourcepub/3542366/+listing-archive-extra[/url:1zvqr2r9]

추가사항

changelog를 확인해 본 결과 protochaos님께서 말씀 하신 패치가 1.6.2 부터 적용되어 있습니다.
우분투에서 테스트 해보시고 결과를 토의해 볼 수 있으면 좋겠군요!
protochaos님께서 혹시 컴파일 하셨을까 저의 되는군요! 괜한 수고를 하시는 건 아닌지 모르겠습니다.

윗 분은 혼동하고 계신 것이 아닌가 싶습니다.

링크에 있는 것은 libx11-6의 버전이 2:1.6.2+git20131002.18a5278b-0ubuntu0ricotz2입니다.
즉 ppa에서 적용해 올린 버전이라는 것이고, changelog도 해당 버전에 대한 변경 사항입니다.
Ubuntu 사이트에는 패키지 검색할 곳이 있으며, 아래가 주소가 공식적인 곳입니다.
[url:2cug9lfr]http://packages.ubuntu.com/saucy/libx11-6[/url:2cug9lfr]
여기서 확인한 바, libx11-6의 버전은 2:1.6.1-1ubuntu1 입니다.
그리고 그 버전에는 패치가 적용되어 있지 않습니다.

[url:2cug9lfr]http://packages.ubuntu.com[/url:2cug9lfr]에서 배포 버전 별로, 패키지 바이너리 및 소스를
다운로드 할 수 있습니다.

음 ubuntu 패키지 검색 사이트에서 받아보니 13.10에는 libx11-6의 버전이 1.6.1이었습니다.
1.6.2부터는 패치가 적용되었는지는 잘 모르겠고, 그 버전에서 버그가 여전한지는 잘 모르겠습니다.

저는 패치가 적용된 버전의 ppa가 존재하는 것으로 알고 있지만,
버그의 가능성 때문에, 그것을 얘기하지 않았습니다.
libx11-6패키지는 매우 중요하고, 이를 변경하는 것은 위험합니다.
xlib를 이용하는 모든 프로그램에 영향을 줄 수 있기 때문입니다.
그래서, 저는 우분투에서 배포한 소스에서 패치만 적용해서 컴파일 한 것입니다.

저는 13.04를 사용 중이고, 패치를 적용해 컴파일 해 테스트 중입니다만,
현재까지는 별 문제가 발생하지 않는군요.
13.04를 사용하시는 다른 분들도 테스트를 좀 해주셨으면 합니다.
또한 13.10을 사용하시는 분들 중 누가 이전 글 과 같이 컴파일 해서 테스트 해보셨으면 합니다.
이것이 문제인 것이 밝혀진다면, 공식적으로 해결할 길이 생기는 것이기 때문이죠.

13.04 64비트 버전 패치
[attachment=1:2cug9lfr]libx11-6-amd64.tgz[/attachment:2cug9lfr]
13.04 32비트 버전 패치
[attachment=0:2cug9lfr]libx11-6-i386.tgz[/attachment:2cug9lfr]
위의 파일을
/usr/lib/$(arch)-linux-gnu에 버전에 맞게 복사하시면 됩니다.
단 먼저 원본은 다른 이름으로 백업은 해두셔야 겠죠.

말씀의 의미를 잘 이해하였습니다.

뭐 딱히 위험하다고 생각하지는 않지만(문제가 된다면 다운그레이드 하시면 됩니다.)
위의 버전은 saucy에 최적화 된 버전이므로 특별히 컴파일의 필요성을 느끼지 못했습니다.

물론 unstable 버전이긴 하지만서도요…^^
쿠분투에 적용하여 이미 사용하고 있는 데 크게 문제 될 바는 없을 것 같습니다.

내용 수정

일단의 리포트를 확인해 보니 제안하신 패치가 해결책인 것 같습니다.
따라서 이전에 제가 쓴 틀린 내용을 수정하였습니다.

제안하신 글에 도움이 될 수 있도록 컴파일 하여 saucy 버전으로 올리도록 하겠습니다.

내용 수정

[quote:7lunto4p]sudo apt-get source libx11-6
sudo apt-get install ubuntu-dev-tools gcc-multilib pbuilder
pbuilder-dist saucy i386 create
pbuilder-dist saucy i386 login --bindmounts "/build 소스푼디렉토리"
[u:7lunto4p]apt-get install xmlto xtrans-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-video-dev[/u:7lunto4p]
cd /build
./configure
make
mkdir dso
cp src/.libs/libX11-xcb.so src/.libs/libX11.so dso/
exit[/quote:7lunto4p]
참고로 원본 diff 파일도 올려 봅니다. 자세한 사항은 아래 commit 링크를 참고 하십시오.

[url:7lunto4p]http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=8f58e54[/url:7lunto4p]

쿠분투에서 컴파일 했는데 별 이상은 없겠죠! 오늘은 철야라 짬을 냈습니다만
퇴근 시간이 훨씬 지나서 테스트는 내일이나 되어야 가능 하겠군요!

[code:7lunto4p]apt-get install xmlto xtrans-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-video-dev x11proto-xext-dev libx11-xcb-dev pkg-config[/code:7lunto4p]
위의 내용 중 컴파일시 "includedir /X11" 에러가 발생하는 경우 위의 코드와 같이 하십시오.

아, 문제가 발생합니다.

:cry:

혹시나 하고 기대를 걸었지만, 근본적인 해결책이 되지 못하는군요.
그 패치는 이벤트 버그에 대한 패치이기 때문에 적용해도 문제는 없을 겁니다.

전에 올려드렸던 저의 해결법에 대해 약간 수정을 했습니다. (자동으로 firefox.sh을 변경)
다음과 같이 불여우에서는 ibus를 사용하도록 설정하실 수 있습니다.

/etc/firefox_workaround.sh
==> 불여우에서는 nabi 대신 ibus를 사용하도록 설정하며, 종료시 ibus도 자동으로 종료
==> 즉, 불여우 실행시 ibus가 실행되고, 불여우 종료시 ibus 종료
==> 불여우를 제외한 프로그램은 기본 입력기인 nabi를 유지

[code:36nknzjs]
#!/bin/bash
[ "$GTK_IM_MODULE" = "xim" ] && export GTK_IM_MODULE=ibus
[ "$QT_IM_MODULE" = "xim" ] && export QT_IM_MODULE=ibus
[ "$XMODIFIERS" = "@im=nabi" ] && export XMODIFIERS=@im=ibus
ibus_kill() {
pid=$1
pidof $pid >/dev/null && kill -9 $pid
}
pidof ibus-daemon >/dev/null
if [ $? -ne 0 ]; then
ibus-daemon -dx
sleep 0.1
ibus_pid=$(pidof ibus-daemon)
trap "kill $ibus_pid" EXIT QUIT INT TERM
for i in {1..300};
do
ps aux|grep -v grep|grep "/ibus-engine-hangul " &>/dev/null && break
sleep 0.1
done
fi
exec() {
echo "$@"
"$@"
}
[/code:36nknzjs]

/etc/apt/apt.conf.d/98-firefox
==> 패키지 설치 및 변경 시 /etc/fix_xim_firefox.sh 실행

[code:36nknzjs]
Dpkg::Post-Invoke { "[ -f /etc/fix_xim_firefox.sh ] && /bin/sh /etc/fix_xim_firefox.sh || true"; };
[/code:36nknzjs]

/etc/fix_xim_firefox.sh
==> firefox가 설치/업그레이드 되었을 때, /usr/lib/firefox/firefox.sh을 변경
==>변경 내용1: sh 대신 bash 사용(exec 명령을 변경하기 위함)
==>변경 내용2: set -e 를 주석 처리 (오류시 종료)
==>변경 내용3: source /etc/firefox_workaround.sh 추가

[code:36nknzjs]
#!/bin/sh
if [ -f /usr/lib/firefox/firefox.sh ]; then
SRC=/usr/lib/firefox/firefox.sh
if [ $(sed -n ‘1p;q’ $SRC) != "#!/bin/bash" ]; then
[ ! -e $SRC.orig ] && cp $SRC $SRC.orig
sed -ri ‘1,4{s!^#!/bin/sh$!#!/bin/bash!;s!^(set -e)$!#\1\nsource /etc/firefox_workaround.sh!}’ /usr/lib/firefox/firefox.sh
fi
fi
[/code:36nknzjs]

아마 그럴 것으로 생각되어 졌습니다.

일단 컴파일 할 때는 시간이 없어 대충 하고 넘어 갔습니다만
소스를 분석하다 보니 --enable-loadable-i18n 옵션을 주지 않으면 한영키가 먹지 않음 것임을 어렴풋이 짐작할 수 있었습니다.

또한 단순히 so 파일만을 변경해서는 qt와 gtk 중 gtk에서는 한글이 입력되지 않을 것 임을 또한 짐작 할 수 있었습니다.
그래서 저는 파일 변경을 미루고 다른 시도를 하였습니다.

먼저 protochaos님 께서 제안 하신 부분은 해결책에 가까울 것이라 생각합니다.
아니 틀림없는 해결책을 제시 하셨다고 생각하며 위에 남기신 글은 아마도 컴파일 시
위에서 거론한 내용을 간과하고 계시지 않나 생각합니다. (직접 다시 시도하시길 권합니다.)

또한 제가 어렴풋이 생각하고 있는 포커스 이벤트에 대한 패치도 이전에 올려 놓은 diff 파일에 포함 시켜 보았습니다.

물론 새로 컴파일 하여 파일을 올려드리는 것이 맞을 것 같으나
어차피 우분투는 조금 쓰다 데비안으로 변경할 것 이기에 새로 설치한다는 기분으로
libx11-1.6.2 버전을 컴파일 하여 사용하기로 마음을 먹고
아래와 같이 컴파일 하여 현재 테스트 중 입니다.

일단 libx11-1.6.2 소스는 아래에서 다운로드 받으시기 바랍니다. (컴파일에 필요한 필수 라이브러리가 이미 설치되어 있다는 전제 하에 설명 드립니다.)
[url:3ob787n0]http://cgit.freedesktop.org/xorg/lib/libX11/[/url:3ob787n0]

[code:3ob787n0]# sudo apt-get install xutils-dev

cd build/ (소스를 풀어 놓은 디렉토리)

./autogen.sh --enable-loadable-i18n

make

sudo make install[/code:3ob787n0]

수정 전

다이렉트로 autogene.sh 파일을 실행하시면 기본 옵션으로 컴파일 되므로 주의하시기 바랍니다.

수정 후

autogen.sh도 옵션이 가능 하네요! (위의 코드를 수정 하였습니다.)
일단 --prefix=/usr 옵션은 삭제가 용이 하도록 기본으로 컴파일 하시기 바랍니다. (기본 위치: /usr/local)
두 가지 버전을 테스트 중이라 make uninstall을 깜빡 했더니 수작업으로 삭제 하느라 죽는 줄 알았습니다.

수정 끝

만약 libx11-1.6.1 버전으로 다운그레이드를 원하시면 위의 링크에서 소스 원본을 받아 컴파일 하신 후 덮어 쓰시거나 새로 설치하시기 바랍니다.
그리고 protochaos님께서 제안 하신 패치와 제가 제안하는 패치만을 컴파일 하시려면 아래 소스를 다운로드 후 설치하시기 바랍니다.

현재 까지는 1.6.2 버전을 사용하고 있는 데 아이버스에서 발생하는 버그는 말끔히 해소 된 것 같습니다.
다른 입력 도구도 테스트할 예정이므로 어느 정도 결과가 나오면 글을 쓰도록 하겠습니다.

참고로 위의 컴파일 버전은 설치하시면 gtk에서 한글 입력이 불가능 합니다.
그러니 설치하지 마시기 바랍니다.

아래 첨부 파일은 libX11-1.6.1 버전에 protochaos님과 제가 제안 하는 2개 패치가 적용된 소스 원본입니다.
위의 소스를 아주 잠시 동안 사용해 본 결과 포커스 이벤트에 따른 버그는 효과가 있는 것으로 생각되어 집니다.
다른 분께서 테스트 해보시고 글을 남겨 주시면 감사하겠습니다.

음…! 다른 분들의 참여가 저조 한 것 같습니다.

현재 두가지 버전을 왔다 갔다 하면서 nabi와 ibus를 대상으로 테스트 하고 있습니다.
쿠분투에서 libx11-1.6.2 버전과 libx11-1.6.1-2patchs 버전으로 nabi-1.0, ibus-1.5.3을 가지고 테스트 중 입니다.

아직 까지는 파이어폭스에서 컨텍스트 메뉴가 사라지는 현상은 나비와 아이버스 모두 발생하지 않고 있는 데
protochaos님의 제안이 정확 한 것 같습니다.

두 버전 모두 파이어폭스의 버그는 발생하지 않지만 2patchs 버전에서 나비 사용시 터미널 내용을 복사하여
파이어폭스 창에 붙여넣기 한 경우 메뉴가 사라지는 기존의 버그는 발생하지 않지만
단지 10회 중 1회 정도 가끔씩 붙여넣기(마우스, 단축키 포함)가 되지 않는 군요!

저는 쿠분투를 이용하여 테스트 중 이므로 다른 분께서 우분투나 그놈 리믹스에서 테스트 해 주시면 감사하겠습니다.
아직 uim, fcitx를 대상으로 한 테스트는 시간의 여유를 두고 테스트할 예정 입니다.

구글크롬도 그러던데요 crtl-f(찾기) 를 누루면 조만창이 떠야 되는데 창이 떠있기는 한것 같은데 잘 안보이네요

크롬은 해결법 없나요?(독점크롬)

우측에 조그마하게 뜹니다.

창이 뜨는 것이 아니라 서브 메뉴 처럼 살포시 내려 옵니다.
글쎄요. 말씀의 의미는 알겠으나 버그라기 보다는 사용자의 눈에 잘 띄지 않는 것이 아닌가 합니다.

오늘 주변의 친우 몇명이 테스트에 동참하여 주기로 하였는 데(말이 동참이지 장난에 가까운 것이지만…)
예기치 않는 경우에 처하게 되었습니다. 만약 아래와 같은 현상이 나타나는 다른 분께서도 참고하시기 바랍니다.

일단 libx11 버전을 컴파일 하기 전 기존에 원본 파일은 백업을 하게 됩니다.
백업 해야 할 파일 중 가장 중요한 파일은 다음과 같습니다.

[code:1y9kfqy6]/usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
/usr/lib/x86_64-linux-gnu/libX11.so (libX11.so.6.3.0 심볼릭)
/usr/lib/x86_64-linux-gnu/libX11.so.6 (libX11.so.6.3.0 심볼릭)
/usr/lib/x86_64-linux-gnu/libX11.a
/usr/lib/x86_64-linux-gnu/libX11.la
/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (libX11-xcb.so.1.0.0 심볼릭)
/usr/lib/x86_64-linux-gnu/libX11-xcb.so (libX11-xcb.so.1.0.0 심볼릭)
/usr/lib/x86_64-linux-gnu/libX11-xcb.a
/usr/lib/x86_64-linux-gnu/libX11-xcb.la
/usr/lib/pkgconfig/x11-xcb.pc
/usr/lib/pkgconfig/x11.pc[/code:1y9kfqy6]
위의 파일 중 주의 해야 할 부분이 있는 데 그것은 libX11.so.6 파일 입니다.
이 파일은 심볼릭이므로 굳이 백업 처리 하지 않으셔도 되지만
해당 파일은 LightDM, KDM, MDM, GDM등의 디스플레이 매니저와 밀접한 관계가 있으므로
백업 처리 하시면 디스플레이 매너저가 실행 되지 않습니다.

libX11을 컴파일 하시면 해당 파일이 /usr/local/lib에 설치되므로 반드시 /usr/lib/x86_64-linux-gnu 디렉토리에
libX11 라이브러리를 심볼릭 파일로 생성해 주셔야 한다는 점을 강조해 드립니다.
물론 디스플레이 매니저의 관련 파일 위치를 바로 잡아 주면 되지만
그보다는 심볼릭 링크를 생성하는 것이 쉬운 방법인 듯 합니다.

위처럼 하는 이유는 다들 잘 아시겠지만 만약의 사태를 대비함과 동시에
이미 밝혀드린 디스플레이 매니저 문제를 해결 하기 위함이 먼저이고
나중에 삭제 하시기 편하게 하기 위함이므로 유의 하시기 바랍니다.

그리고 만약 민트 또는 그놈 리믹스를 사용하시는 분은 fontconfig-infinality를 설치 하셨다면
로우 그래픽 모드(GDM)가 나타나거나 startup fail(MDM) 현상이 나타납니다.
이유는 infinality-setting.sh 파일 때문 입니다. 이 오래된 현상을 저에게 미루니
오늘 한 놈은 뒤통수가 상당히 아플 것 입니다.

[b:1y9kfqy6]이 현상은 절대 libX11과는 상관이 없습니다.[/b:1y9kfqy6]

/etc/profile.d/infinality-settings.sh를 삭제 하시고 민트와 그놈 리믹스에서
fontconfig-infinality를 사용 하시려면 디스플레이 매니저를 LightDM, KDM등으로 바꾸시거나
사용자 홈 디렉토리에 ./local/bin 디렉토리를 생성 하신 후 infinality-setting.sh를 설치 하시고
.profile에 PATH를 걸고 실행 권한을 주시면 사용하시는 데 지장이 없습니다.

그리고 /etc/profile에 echo를 통해 패스 추가 하신 분이 계시다면 패스를 /etc/enviroment에 새로 생성 하십시오.
우분투 계열은 /etc/profile에 패스 추가시 /usr/local/bin, /usr/local/sbin등의 패스가 사라지는 버그가 있습니다.

또한 ld.so.conf에 컴파일 된 libX11 라이브러리를 인식 시켜 주어야 합니다.
위의 파일에 /usr/local/lib을 추가해 주시면 사용 하시는 데 불편이 없을 것 입니다.

오늘 디스플레이 매니저 문제로 이를 변명하느라 진땀을 흘려
혹시 모를 낭패를 보신 이용자가 계시다면 이 글을 참조하시기 바랍니다.

일단 배포반을 이동하여 현재 테스트 중 입니다만 한 가지 이상한 점이 있어 말씀 드려 봅니다.

쿠분투에서 모든 입력 도구를 가지고 테스트 하였습니다만
protochaos님께서 제의 하신 timestamp 패치는 확실히 효과가 있는 것 같습니다.

그러나 오늘 페도라로 이용하여 테스트 하는 중 light-theme(우분투 기본 테마팩)가 포팅되어
기쁜 마음으로 설치 하고 gtk에 적용하여 파이어폭스를 실행하니 컨텍스트 메뉴가 나오지 않는 버그가
발생 하더군요!

관련 자료를 검색하던 중 timestamp 패치를 만드신 분께서 metacity에도 timestamp 버그가
있는 것을 언급하더군요! (관련 링크는 아래를 참조 하십시오.)

[url:326a38sa]https://bugs.freedesktop.org/show_bug.cgi?id=39367[/url:326a38sa]

그래서 테마를 rosa-elementary, qtcurve-gtk로 변경하여 본 결과 nabi에서 관련 버그가 발생하지 않았습니다.
재차 Ambience 테마를 적용한 결과 즉각적인 버그가 발생 하더군요!

위의 링크에서 ishikawa라는 일본인이 주장하는 metacity에 대한 변경 사항의 패치도 현 패키지에 이미 적용 되어 있었습니다.

메타시티는 gtk의 기본적인 윈도우 매니저라 우분투의 그놈 또는 유니티에 포함되어 있을 것으로 보고
파이어폭스 버그 현상은 유독 나비에서만 발생 합니다. 참고 하시기 바랍니다.

한가지 더 알려 드리고 싶은 점은 메타시티와 관련된 테마에서는 파이어폭스의 맞춤법 검사가 동작하지 않는 데
아마 이와도 관련이 있는 것 같습니다.

저는 KDE를 주로 사용하므로 metacity를 사용하지 않는 데 요즘 우분투는 어떤지 모르겠습니다.
페도라에서 포팅된 light-theme 팩은 메타시티와 연관되어 있었습니다.

여하튼 이점 참고 하시기 바라며 메타시티와 관련된 문제를 제외하면
쿠분투에서 아이버스, 나비 사용시 나타나던 버그는 관련 패치로 효과를 보았다고 말씀 드릴 수 있겠습니다.

xim의 timestamp 문제가 유독 firefox에서만 발생하는 것은
이렇게도 볼 수 있습니다.

원래는 이벤트에 타임스탬프를 포함하는 것이 정상적임에도,
응용프로그램들은 타임스탬프를 활용하지 않거나, 초기화하고 있을 수 도 있습니다.
불여우만이 타임스탬프를 처리한다던가, 초기화하지 않고, 받은대로 전송을 한다던가 할 수 도 있는 것이죠.
그렇다면, 원칙적으로는 불여우가 패치되어야 하는 것이 아니고,
xim등 문제를 발생시키는 프로그램들이 많더라도, 그 모두가 패치의 대상이 되어야 하는 것입니다.

protochaos님의 말씀에 전적으로 동의 합니다.