imhangul에서 안마태 자판이 선택되는 현상 해결하기
Posted by 마냥 on the 16th of December, 2012 at 1:02 pm under 컴퓨터. This post has no comments.지난번에 웹비넷으로 옮기고 테스트할 때 젠투리눅스 업데이트를 했는데 파이어폭스에서 입력기가 안마태 자판으로 설정되는 문제가 있었다. 일단 gtk.immodules에서 imhangul 목록을 내가 쓰는것만 남기고 지워서 썼는데, gtk.immodules가 업데이트 되면 자꾸 안마태 자판이 떠서 원인을 찾아봤다.
원인은 http://git.gnome.org/browse/gtk+/commit/gtk/gtkimmodule.c?id=4d7e47ddd0590a6cad1bdf5d785203e8aa9f259e 에 있었다. GTK_IM_MODULE 환경변수는 이전에는 하나만 지원했는데 : 을 구분자로 fallback을 추가할 수 있도록 바뀌었다. 그러면서 추가된 lookup_immodule 함수가 문제였다. GTK_IM_MODULE에서 설정한 context를 가지고 찾은 immodule의 첫번째 context를 return하면서 자꾸 안마태 자판이 나온 것이다.
코드는 간단히 immodule이 가지고 있는 context중에 실제 요청한 context를 return하도록 고치면 된다.
--- gtk+-2.24.12/gtk/gtkimmodule.c.orig 2012-12-14 09:42:51.500009901 +0900 +++ gtk+-2.24.12/gtk/gtkimmodule.c 2012-12-14 09:58:14.960465057 +0900 @@ -662,7 +662,16 @@ GtkIMModule *module; module = g_hash_table_lookup (contexts_hash, *immodules_list); if (module) - return module->contexts[0]->context_id; + { + int i; + for (i = 0; i < module->n_contexts; i++) + { + if (strcmp (module->contexts[i]->context_id, *immodules_list) == 0) + return module->contexts[i]->context_id; + } + + return NULL; + } } immodules_list++; }
Submit Comment
The URI to TrackBack this entry is:
https://bmp.pe.kr/blog/index.php/2012/12/16/imhangul%ec%97%90%ec%84%9c-%ec%95%88%eb%a7%88%ed%83%9c-%ec%9e%90%ed%8c%90%ec%9d%b4-%ec%84%a0%ed%83%9d%eb%90%98%eb%8a%94-%ed%98%84%ec%83%81-%ed%95%b4%ea%b2%b0%ed%95%98%ea%b8%b0/trackback/