YamaKen
yamak****@bp*****
2004年 2月 18日 (水) 09:17:53 JST
ヤマケンです。 キーバインドの定義ですが、数日前から"<Control>a"のようなGtk風表 記と"C-a"のようなEmacs風の両方を受け付けるようにしてあります。各 人テストして頂けるとありがたいです。 At Wed, 04 Feb 2004 18:37:44 +0900, yamak****@bp***** wrote: > > At Wed, 4 Feb 2004 17:52:38 +0900, > tkng****@xem***** wrote: > > > > On Tue, 03 Feb 2004 07:22:42 +0900 > > YamaKen <yamak****@bp*****> wrote: > > > > > それと、上記のいずれにするにしてもcase insensitiveをどう表記する > > > か考えないといけませんね。ちょっと短かめにして<IgnoreCase>とかで > > > しょうか。 > > > > 新しく言葉を作るのは、外してるかもしれないリスクを考えるとあんまり望ま > > しくないと思います。 > > <Alt>も<A>も<CaseInsensitive>も<I>も、関数側では全て受け入れる様にして > > おいて、内部では短い省略表記を使う、マニュアルにはわかりやすいように長い > > 表記を使う、というのはどうでしょう?全然決定版になってないですけど。 > 省略記法には反対です。 > > <Alt>のように省略無しで書くと初見の人にも自己説明的に意味を教え > てくれますが、<A>にはその効果がないだけでなく、A- に比べて記述も > コードも面倒で既存の記法からの連想("<Alt>"ならGtk、"A-"なら > Emacs)も効きません。一見さんに「uimの設定ってわかりやすそう」と > 思わせるためにも省略を許さない方がいいと思います。 こうは言ったものの、Emacs風の短い表記を許さないというのは「わかっ てる人」にとってのユーザビリティを確実に下げてしまうので、妥協案 ですが以下のようなルールはどうかと思い直しました。 ・"<Control>a" と "C-a" の両方の表記を受け付ける ・ただし "<C>a" や "Control-a" のような表記は混乱の元になるので 受け付けない ・マニュアルやコード中での表記は "<Control>a" の方に統一する。初 見の人への敷居の低さを重視 ユーザに対してはやっぱり<IgnoreCase>のような生の仕組が見えている のは混乱の元なので、生の仕組に触れる make-key-predicate の他に以 下のようにユーザレベルで使うための関数を別に用意するといいんでは ないかと思いました。 (define-key generic-go-left-key? "C-b") ;内部で<IgnoreCase>追加 ご意見お願いします。 > <IgnoreCase>はEmacsとかでそれなりに使われてるから大丈夫なんじゃ > ないかと思いますが… 違和感ありますかね? とりあえず現在は<IgnoreCase>と<IgnoreShift>が定義されています。 Emacs風表記ではそれぞれ"I-"と"J-"になります。 参考までに、Gtk風とEmacs風の表記はそれぞれ以下のようになります。 ;; Gtk風 (define generic-go-left-key? (make-key-predicate '(left-key? "<Control><IgnoreCase>b"))) (define generic-go-right-key? (make-key-predicate '(right-key? "<Control><IgnoreCase>f"))) (define generic-beginning-of-preedit-key? (make-key-predicate '("home" "<Control><IgnoreCase>a"))) (define generic-end-of-preedit-key? (make-key-predicate '("end" "<Control><IgnoreCase>e"))) (define generic-on-key? (make-key-predicate '("<Shift>space" "zenkaku-hankaku"))) (define generic-off-key? (make-key-predicate '("<Shift>space" "zenkaku-hankaku"))) ;; Emacs風 (define generic-go-left-key? (make-key-predicate '(left-key? "C-I-b"))) (define generic-go-right-key? (make-key-predicate '(right-key? "C-I-f"))) (define generic-beginning-of-preedit-key? (make-key-predicate '("home" "C-I-a"))) (define generic-end-of-preedit-key? (make-key-predicate '("end" "C-I-e"))) (define generic-on-key? (make-key-predicate '("S-space" "zenkaku-hankaku"))) (define generic-off-key? (make-key-predicate '("S-space" "zenkaku-hankaku"))) ------------------------------- ヤマケン yamak****@bp*****