uim-fepはuimを利用してコンソールで多言語を入力するためのfepです。


* インストール
  INSTALLを見てください。


* 使い方
  LANGに使用する言語とエンコーディングを設定します。
  LC_ALLかLC_CTYPEでもいいです。
  サポートされている言語とエンコーディングは
  locale -a
  で確認できると思います。

  例 sh系でja_JP.euc-jpにする
  $ LANG=ja_JP.eucjp ; export LANG

  例 csh系でja_JP.utf-8にする
  % setenv LANG ja_JP.utf8

  例 Solarisでeuc-jpで使う
  $ LANG=ja ; export LANG
  % setenv LANG ja

  $ uim-fep
  SHELLが起動します。キーバインドなどはuimのマニュアルを見てください。

  変換エンジンは~/.uimに
  (define default-im-name 'anthy)
  のように書きます。

  注意
  デフォルトのキーバインドでは、uim-fepでは以下の操作が行えません。
  anthy
  文節を縮める
  prime
  全角英数モードにモード変更
  canna
  文節を縮める

  これらの操作を行うためにはuim-prefでキーバインドを設定するか~/.uimに次のように書きます。

  例
  (require-module "anthy")
  (define-key anthy-shrink-segment-key? '("tab" "<IgnoreCase><Control>i" "<Shift>left"))
  (require-module "prime")
  (define-key prime-wide-latin-key? '("<Control><Alt>l" "<Control>L"))
  (require-module "canna")
  (define-key canna-shrink-segment-key? '("tab" "<IgnoreCase><Control>i" "<Shift>left"))


* 環境変数
  o TERM
    terminfo/termcapの端末名を指定します。
    これが適切に設定されていないと使えません。

  o SHELL
    -eオプションが指定されていないときに起動されるコマンドを指定します。
    コマンド名か絶対パスを設定してください。

  o LC_ALL LC_CTYPE LANG
    文字コードを決めるときにこの順番で見ます。

  o WINDOW
    backtickを使っているときに表示されます。

  o UIM_FEP_PID
    uim-fepのPIDが設定されます。

  o UIM_FEP_GETMODE
    uim-fepのモードが書き込まれるファイルです。

  o UIM_FEP_SETMODE
    このファイルにモードを書き込むとuim-fepのモードが変わります。
    $ echo 0 > $UIM_FEP_SETMODE

  o LIBUIM_USER_SCM_FILE
    uimの設定ファイルを指定します。定義されていないと~/.uimになります。


* オプション

  o -u <engine>
    変換エンジンを指定します。

  o -s lastline | backtick | none
    ステータスラインの表示場所を指定します。
    -sl, -sb, -snのように省略できます。

  o -b <file>
    backtickで使うsocketのパスを指定します。相対パスのときは、~/.uim.d/fep/
    からのパスになります。

  o -w <数値>
    ステータスラインの幅です。
  
  o -t <秒>
    rshを使っていると"F1", "up", "<Alt>a"などが認識されないことがあり
    ます。これはエスケープシーケンスが一度に入力されないからです。
    そのような場合はこのオプションでエスケープのあとの待ち時間を設定し
    ます。このオプションを付けないときの待ち時間は0秒です。
    例 待ち時間を0.1秒にする
    $ uim-fep -t 0.1

  o -C [<foreground color>]:[<background color>]
     プリエディットや-s lastlineのときのステータスラインの色を指定しま
     す。使用するアプリケーションの背景色が通常の背景色と違う場合にこ
     のオプションで色を合わせてください。

     <foreground color>、<background color>の部分は次の16色が使えます。
     lightblackより下の色は表示できない端末があります。

                 省略記法
     black          k
     red            r
     green          g
     yellow         y
     blue           b
     magenta        m
     cyan           c
     white          w
     lightblack     lk
     lightred       lr
     lightgreen     lg
     lightyellow    ly
     lightblue      lb
     lightmagenta   lm
     lightcyan      lc
     lightwhite     lw

     例 前景色を白、背景色を黒にしてjedを起動する
     $ uim-fep -C white:black -e jed
     例 背景色を青にする
     $ uim-fep -C :blue
     例 前景色を黄色にする
     $ uim-fep -C yellow:

  o -c
    カーソル位置の文字を反転表示します。
    kterm, aterm, rxvt, teraterm(カーソル点滅なしの状態)などの端末
    では反転された文字にカーソルがあると反転が消えることがあります。
    このような場合はこのオプションを付けると反転文字にカーソルが
    あるときに反転されるようになります。

  o -i
    ステータスラインを描画しているときやプリエディット(未確定文字列)
    の末尾以外を編集しているときにカーソルを一時的に消します。カー
    ソルの残像が気になるときはこのオプションを付けてください。

  o -o
    プリエディットの表示スタイルをOn The Spotにします。jedなどの背
    景色があるアプリケーションを使うと右端の背景色が消えることがあ
    ります。

  o -S
    GNU screenでフィルタとして使えるようにします。(GNU screen 4.0.2以降)
    例えば、~/.screenrcに

    bind J exec | uim-fep -S
    bind K eval 'exec cat' kill redisplay

    このように書けば、C-a Jでuim-fepをフィルタとして起動し、C-a K
    で終了できるようになります。

    -sオプションにかかわらずモード表示には
    backtickが使われます。

    UIM_FEP_SETMODE, UIM_FEP_GETMODEの値は
    $HOME/.uim.d/fep/setmode-$STY-$WINDOW-screen
    $HOME/.uim.d/fep/getmode-$STY-$WINDOW-screen
    になります。

  o -f str
    $UIM_FEP_SETMODEと$UIM_FEP_GETMODEのファイル名を
    setmode-{str}
    setmode-{str}
    にします。{str}は-fオプションの引数です。
    UIM_FEP_SETMODEとUIM_FEP_GETMODEが置かれるディレクトリは
    ~/.uim.d/fep/です。

  o -d
    候補一覧の表示スタイルをddskkのようにします。

  o -K
    押されたキーの~/.uimでの表記を示します。
    -tオプション以外のオプションは無視されます。

  o -e command arg1 arg2 ...
    起動するコマンドを指定します。このオプション以降の引数は
    commandに渡されます。

  o -h ヘルプメッセージを表示します。

  o -v バージョンを表示します。


* backtickの使い方
  GNU screen 3.9.15以降が必要です。

  uim-fep-tickをPATHの通ったところに置いてください。
  ~/.screenrcに

    backtick 0 0 0 uim-fep-tick
    hardstatus alwayslastline "%0`"

  と書きます。
  screenのウィンドウで

    $ uim-fep -s backtick

  と起動します。

  o uim-fep-tickのオプション
    * -s <file>
      socketのパスを指定できます。相対パスのときは、~/.uim.d/fep/
      からのパスになります。

    * -h ヘルプメッセージを表示します。

    * -v バージョンを表示します。
  
  o uim-fepはscreen内の複数のウィンドウで起動できます。

  o uim-fep-tickはscreenから起動されるため、screenの環境変数が引き継が
    れます。

  o backtickの反応がなくなったら
    $ screen -X backtick 0 0 0 uim-fep-tick
    と起動してください。


* ~/.uimを書くときの注意点
  o キーの表記法についてはREADME.keyを参照してください。

  o Altキーを使うにはAltを押しながら他のキーを押したときに、^[が出力さ
  れるようにします。
  mltermの場合は~/.mlterm/mainに次のように書きます。
    mod_meta_mode=esc
  ktermの場合は~/.Xresourceか~/.Xdefaultsに次のように書きます。
    KTerm*EightBitInput: false

  o "<Alt>F1", "<Alt>right"などが使える端末もあります。

  o shift-spaceは入力できません。

  o prime-wide-latin-key?の"<Control>L"は入力できません。

  o shift-backspaceは入力できません。


* リダイレクトの動作
  標準出力のリダイレクトはuim-fepと子プロセス(シェル)のすべての出力を変更します。

  例: logにすべての出力を書き込む(scriptコマンドと同じ)
  $ uim-fep|tee log

  入力のリダイレクトは子プロセスの標準入力を変更します。

  例: lsの出力をw3mで見る
  $ ls|uim-fep -e w3m


* 問題点
  o プリエディット編集中に端末のサイズが変更されると表示が乱れることが
    あります。

  o screenの中でuim-fepを-s lastlineで使っているとき端末のサイズを変更
    すると稀にscreenが暴走することがあります。

  o 無反応になったり暴走したりしたら
    $ kill -INT <uim-fepのpid>
    このコマンドで直ると思います。ただし変換はできなくなります。


* 注意
  中ボタンクリックやShift+Insertのペーストなどで一度に大量に入力された
  ときは変換せずにそのまま出力されます。
  プリエディットを入力中にペーストすると無効になります。

  端末の右端でプリエディットを開始すると次の行に移ります。 


* 履歴
  o 2005/6/15
    * リダイレクトの動作を変更しました。(上の「リダイレクトの動作」を見てください)

  o 2005/5/16
    * -Kオプションを追加しました。

  o 2005/5/15
    * -dオプションを追加しました。
    * Cygwinで動くようにしました。(EUC-JPのみ対応)
    * DOSプロンプトで動くようにしました。
    * キーの表記を一部変更しました。
      Ctrl + mを"<Control>m"から"return" など
      README.keyを参照してください。

  o 2005/2/11
    * -Sオプションを追加しました。

  o 2004/8/9  0.4.1
    * プリエディット描画の前後で色を保存するようにしました。

  o 2004/8/1  0.4.0
    * -Cオプションを追加しました。

  o 2004/7/29 0.3.9
    * pyで落ちないようにしました。

  o 2004/7/17 0.3.8
    * Solarisでコンパイルできるようにしました。

  o 2004/7/3 0.3.7
    * wcswidthがなくてもコンパイルできるようにしました。
    * 変換候補数の表示を変更しました。(日本語以外では"残り"が表示できないため)

  o 2004/6/29 0.3.6
    * -lオプションを廃止しました。環境変数LANGを使ってください。
    * euc-jpで半角カナを2カラムとして扱っていたバグを修正しました。
    * euc-jp, utf-8以外でも使えるようにしました。
    * -tオプションを追加しました。
    * rsh先でも使えるようにしました。
    
  o 2004/6/21 0.3.5
    * 最下行で起動するとおかしくなるバグを修正しました。(0.3.4のバグ)

  o 2004/6/20 0.3.4
    * プリエディット描画の高速化しました。
    * 行を跨いだ変換でゴミが残らないようにしました。
    * -oオプションを廃止しました。

  o 2004/6/17 0.3.3
    * 致命的なバグを修正しました。(0.3.2で入ったバグです)
    * ウィンドウサイズが変更されたときにステータスラインを再描画するようにしました。
    * プリエディット編集中にウィンドウサイズが変更されたときにプリエディットを
      上書きしてしまうバグを修正しました。

  o 2004/6/13 0.3.2
    * TERM=vt100などでモード表示が消えてしまうバグを修正しました。
    * 開始時に画面をクリアしないようにしました。
    * skkで高速に入力すると表示がおかしくなるバグを修正しました。

  o 2004/6/7 0.3.1
    * skkで"tt"と入力すると"つt"と出力するようにしました。
    * 行を跨いだ変換をできるようにしました。
    * -oオプションを追加しました。
    * primeで表示が乱れるバグを修正しました。

  o 2004/05/31 0.3.0
    --mltermオプションを廃止しました。
    -c, -iオプションを追加しました。

  o 2004/05/29 0.2.9
    ペーストで入力された長い文字列を変換しないようにしました。
    ステータスラインを描画しているときやプリエディットの末尾以外を編集
    しているときにカーソルを一時的に消すようにしました。(効果はあまりないです。)
    terminfoのclearかedが空文字列のとき暴走するバグを修正しました。
    
  o 2004/05/18 0.2.8
    --mltermオプションを追加しました。
    vimで制御できるようにしました。(KoRoNさん)

  o 2004/05/16 0.2.7
    -s lastlineのuim-fepからscreenを起動しても表示が乱れないようにしました。
    uim-fep -s lastline -e screen
    
  o 2004/05/15 0.2.6
    落ちるバグを修正しました。
    anthyで長い文字列を変換するときやのちらつきを少なくしました。
    screenで(プレエディットの編集などで)右端から次の行の左端に移動できるようにしました。
    jfbtermで最下行のステータスラインが白くならないようにしました。

  o 2004/05/10
    0.2.5 画面クリア時に最下行のステータスラインを再描画するようにした。(mattnさん)
    終了時に最下行のステータスラインを消すようにした。(mattnさん)

  o 2004/05/09
    0.2.4 skkでC-j, /, C-j, /の順に押すと何も出力されなくなるバグを修正。

  o 2004/05/06
    0.2.3 uim-0.3.6に対応 (constを付けただけ)
    -vオプションを追加
    ステータスラインを消すときにclr_eolを使うようにした。

  o 2004/05/04
    0.2.2 ステータスラインから候補がはみ出ないようにした。
    uim-fep-tickを-wオプションをuim-fepのオプションにした。
    uim-fep-tickの-lオプションを廃止した。

  o 2004/05/03
    0.2.1 nr-candidate-maxを0以下にしていると落ちるバグを修正。

  o 2004/05/01
    0.2 最下行をステータスラインにしてウィンドウサイズを変更すると最下
    行に移動できてしまうバグを修正。
    同じソケットを使うuim-fep-tickのプロセスを2つ以上できないようにした。
    はみ出た候補も強調するようにした。
    configureのオプションでbacktickの幅を変えれるようにした。

  o 2004/04/26
    0.1.9 連続でcommitされるとおかしくなるのを修正。

  o 2004/04/26
    0.1.8 ステータスライン関係のバグ修正
    uim-fep-tickに-lオプションを追加

  o 2004/04/25
    0.1.7 configureをつけた
    <c-\>などを入力できるようにした。
    ステータスラインの候補がはみ出ても表示が乱れないようにした。
    暴走したときに止めれるようにした。
          
  o 2004/04/18
    0.1.6 primeに対応

  o 2004/04/17
    0.1.5 utf-8(mattnさんのパッチ) backtick

  o 2004/04/12
    0.1.4 バグ修正

  o 2004/04/11
    0.1.3 ステータスライン

  o 2004/04/11
    0.1.2 バグ修正

  o 2004/04/10
    0.1.1 バグ修正

  o 2004/04/09
    0.1 属性とカーソル

  o 2004/04/03
    開発開始

質問、バグ報告などは h013177b@ice.nuie.nagoya-u.ac.jp にお願いします。
