Author: yamakenz Date: Fri Jun 29 17:40:09 2007 New Revision: 4628 Added: wiki/UIM_XIM.wiki
Log: Created wiki page through web user interface. Added: wiki/UIM_XIM.wiki ============================================================================== --- (empty file) +++ wiki/UIM_XIM.wiki Fri Jun 29 17:40:09 2007 @@ -0,0 +1,190 @@ += About = + +uim-xim is the bridge for XIM. This is used to input text via legacy XIM protocol. You can specify candidate window program by setting UIM_CANDWIN_PROG (currently, uim-candwin-gtk or uim-candwin-qt is supported). + += Screen Shot = + +Japanese input with XFig. + +http://uim.freedesktop.org/img/xfig-uim-xim.png + +Available command line options are listed below. + + * --help : Show usage + * --version : Show version + * --list : Show available backend conversion engines + * --engine=ENGINE : Use ENGINE as a backend conversion engine at startup + * --async : Use on-demand-synchronous method of XIM event flow (using this option is not safe for Tcl/Tk GUI toolkit) + * --trace : trace connection + * --trace-xim : trace-xim-message + += From README = +About uim-xim + +uim package includes an XIM server named uim-xim. + +XIM is a legacy protocol and has many severe restrictions. However, +there are many software which support only XIM protocol to input text +especially in Japanese. So, we had written uim-xim as a tentative +tool. + +Currently, uim-xim has many defects. Some of them can be fixed. +But the real way to go is to discard XIM itself. + +We already have Gtk+ and Qt immodule version of uim. + +== Main defect of uim-xim == + +It only supports input method with language whose character is +convertible into the working encoding of client application. In +short, if the client application (such as OpenOffice.org, tgif...) +is working with ja_JP.eucJP locale, you can use only Japanese input +methods (anthy, prime, skk...). + +But if you use these client applications with UTF-8 locale (such as +ja_JP.UTF-8), you can use all the available multi-linguistic input +methods, and switch them dynamically. + +== How to use uim-xim == + +(1) Invoke uim-xim. You can choose startup conversion engine (input + method) with --engine=ENGINE command line option (replace ENGINE + with anthy, prime, skk, tcode, tutcode, and so on. You can get + list of available engines with invoking uim-xim --list). Also you + can specify the default conversion engine with uim-pref tool. + + Unless specifying with above two methods, preferred engine + corresponding to startup locale of uim-xim is used automatically. + +(2) Set [EMAIL PROTECTED] and run client. + +(3) If you want to use candidate helper program other than default + toolkit one, set UIM_CANDWIN_PROG environmental variable before + invoking uim-xim. + + sh: UIM_CANDWIN_PROG=uim-candwin-qt export UIM_CANDWIN_PROG + csh: setenv UIM_CANDWIN_PROG uim-candwin-qt + + If nothing specified, uim-candwin-gtk or uim-candwin-qt becomes + default depending on the selected toolkit. If uim is not + configured either with GTK+ or Qt, candidate helper is not used. + +(4) To change conversion engines dynamically, use uim-im-switcher + tool. + +(5) Most settings of working input contexts are dynamically + configurable by uim-pref-{gtk,qt}. + +== How to use extra modifier keys == + +uim supports 'Super' and 'Hyper' modifier keys for customized key +operations. Try following steps to enable the feature (keycodes may vary). + +(1) map arbitrary keys to Super and Hyper keys +{{{ + xmodmap -e 'keycode 115 = Super_L' # left Windows key + xmodmap -e 'keycode 116 = Super_R' # right Windows key + xmodmap -e 'add mod3 = Super_L Super_R' # any mod number is OK + + xmodmap -e 'keycode 117 = Hyper_L' # 'Application' key + xmodmap -e 'add mod4 = Hyper_L' # any mod number is OK +}}} + +(2) define your own key-bindings with uim-pref. + + +== Bypassing uim temporarily == + +uim has 'emergency key' feature to bypass uim temporarily. This is +useful with some applications. Also another way to avoid language +conversion is choosing "direct" input method using uim-im-switcher +tool or IM-toggle facility using keyboard shotcuts. We recommend +latter method. + +=== The way to use 'emergency key' === + (1) Set following environment variable before invoking uim-xim. + LIBUIM_ENABLE_EMERGENCY_KEY=1 + + (2) Press Shift + Backspace to disable/enable uim key + processing. Key inputs are directly passed to applications while + uim key processing is disabled by emergency key. + + +== About XIM event flow == + +uim-xim supports two XIM event flow methods, full-synchronous-method +(like kinput2, skkinput2...) and on-demand-synchronous method (like +XIM server using IMdkit, such as SCIM's x11 frontend). Default +behavior of uim-xim is set to use full-synchronous-method. If you get +occasional XIM_ERROR while using some specific XIM client +applications, please try to use on-demand-synchronous method with +adding '--async' command line startup option (Warning: +on-demand-synchronous method is known to not work with current XIM +implementation of Tcl/Tk version 8.{3,4}). + +== Internal Implementation == + +uim-xim processes all IM-related strings as UTF-8 for internal +reasons. When a XIM client application runs on an UTF-8 locale such as +ja_JP.UTF-8, the strings are converted as follows. + + * "foo" expresses a string encoded in foo. + +uim-anthy (only for example) + V +"EUC-JP" + V +libuim (iconv(3)) + V +"UTF-8" + V +uim-xim (XmbTextListToTextProperty) + V +"compound text" + V +XIM client + + +uim-xim also supports XIM clients working on non UTF-8 native locales +such as ja_JP.eucJP. When a client application runs on such locales, +some additional encoding conversion occurs as follows. + +uim-anthy (only for example) + V +"EUC-JP" + V +libuim (iconv(3)) + V +"UTF-8" + V +uim-xim (iconv(3)) + V +"EUC-JP" + V +uim-xim (XmbTextListToTextProperty) + V +"compound text" + V +XIM client + + +In such case, uim-xim performs an additional conversion via UTF-8 to +process the strings in the implementation. But it is ensured that no +character code alteration will occur since the both 'native->UTF-8" +and 'UTF-8->native' conversions are performed by same converter +iconv(3). This results the string as accurate as the old +implementation which is dedicated to ja_JP.eucJP encoding as follows. + +uim-anthy (only for example) + V +"EUC-JP" + V +libuim (iconv(3)) + V +"EUC-JP" + V +uim-xim (XmbTextListToTextProperty) + V +"compound text" + V +XIM client
