[Anthy-dev 572] Re: uimのキーバインド定義を簡単に

Back to archive index

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*****



Anthy-dev メーリングリストの案内
Back to archive index