[トップ][一覧][最近の更新]

archives/2007/01/04

OpenBSD/uim

Category of OpenBSD
Category of uim

uimその後

OpenBSD/2006/12/30/uimの続き。

http://slashdot.jp/~YamaKenZ/journal/387552 にて捕捉。

タレコんだのだれだ?私じゃないよ。

ipv6対応について

1.5.0へ取り込まれるとのこと。

ところで、getaddrinfoの無い古いシステム向けの代替関数実装ってありますでしょうか? 現状のuimは移植性に関してかなりいい加減なんですが、SigSchemeの導入を起点として非POSIXな組み込み環境等にも対応できるようなまっとうなコードにしていきたいと思っています。なので、伝統的socket APIへの汎用のwrapperが存在しない場合はHAVE_GETADDRINFOで実装を切り換えられるようなコードへの書き変えをお願いできないでしょうか?

skk.c以外でもネットワークを利用する可能性があることを勘案すると、 下手に#ifdefを加えるよりもgetaddrinfoをuimに追加した方がいいと思います。 openssh-portableの openbsd-compat/fake-rfc2553.{h,c} をコードツリーに追加し、両コード上のHAVE_*をuim/config.h.inに追加すれば、 opensshの動く処理系上での動作が保証されることになるでしょう。

一応パッチを更新しておきました:files:patch-uim_skk_c

今回のパッチは無駄な空白の削除と、接続にipv4, ipv6のどちらかを強制させるかどうかをuim-prefで設定できるようにする変更を含みます。

インジケータについて

あ、すいません。既にbridgeのインジケータをいじるという前提の話でしたね。 context-propagate-prop-list-updateの中でcontext-current-modeの結果に応じてbridge-show-input-state?をいじれば動きそうな感じです。

こうですか!?わかりません><

$ cat ~/.uim
;; -*- scheme -*-

(define bridge-show-input-state? #f)
(define bridge-show-input-state-time-length 0)

(define context-propagate-prop-list-update
  (lambda (context)
    (let* ((widgets (context-widgets context))
           (branches (map widget-compose-live-branch
                          widgets))
           (widget-config-tree (apply string-append branches)))
      (if (eq? (context-current-mode context) 0)
          (set! bridge-show-input-state? #f)
          (set! bridge-show-input-state? #t))
      (im-update-prop-list context widget-config-tree))))

うまく動作するように見えるのですが、 直接入力へ戻るときに、インジケータが消えてくれません(しかも内容が|あ|のまま)。 たいていのソフトではフォーカスを移してやると消えますが、 firefoxに至ってはアクティブウインドウを切り替えないと消えません。

wmはfvwm, pwm, twm, mwmでこの現象が再現されました。