[Anthy-dev 1669] Re: uim-pref上でのキー表現

Back to archive index

Etsushi Kato ekato****@ees*****
2005年 1月 29日 (土) 11:36:18 JST


こんにちは、加藤です。

ぼくとしては、それぞれの IM (*.scm) のキー設定やコード
はこれまでのまま変更せずに、uim-pref 内部での表示と、その個人設定への
反映において差異を吸収することを考えていたので、ちょっと話が食い違って
いるのかもしれません。

一応コメントです。

On Sat, Jan 29, 2005 at 05:40:58AM +0900,
YamaKen <yamak****@bp*****> wrote:

> At Fri, 28 Jan 2005 18:11:14 +0900,
> ekato****@ees***** wrote:
> > 
> > On Fri, Jan 28, 2005 at 11:58:42AM +0900,
> > YamaKen <yamak****@bp*****> wrote:
> > 
> > > ・アルファベットキーはuim-pref上では常に大文字で表す
> > > ・アルファベットキーに対する<Shift>の暗黙無視を行わない
> > > ・アルファベットキーに対しては大文字・小文字を無視する
> 
> > SKK 的にはかなり気持悪く感じます。特にアスキーモードに移行する l が。
> > <Shift>L もちょっといやですね。
> > 
> > ぼくだったら、uim-pref 上の表示として
> > 
> > o アルファベットキーのみでは、case を区別する。
> > o modifier 付きのキーでは case を区別せず小文字で表記する (<Control>j
> >   のように)
> > 
> > とするかもしれません。
> 
> ちょっと考えてみたんですが、ルールが複雑になりすぎると思います。
> 
> Caps Lockがonの状態では"l"を入力しようとするとShiftを押す事にな
> るため、"<Shift>l"として渡ってきます。このため、1つの表現でCaps
> Lock on/offの両方に対応しようとすると、caseの区別に加えて<Shift> 
> の無視を暗黙に行う必要があります。

そうです。shift mask については他の modifier mask が無くアルファベット
キーのみのときは、その mask を無視して、アルファベットの case を区別す
るということを意図していました。

つまり、"l" が欲しいのであれば、caps lock 無してあれば、l キーを押して
uim-pref 上に "l" を得る、caps lock 有りであれば、shift キー と l キー
を押して、uim-pref 上に "l" を得る。


> 一方、このルール上で"J"に加えて<Control>が押されている事を検出し
> ようとすると"<Control><Shift>j"と表現される事になります。この場
> 合は"J"の場合とは逆にcaseが無視され、さらにユーザが目にする表現
> に<Shift>が加わります。

そうですか?

これまでの uim の挙動として、modifier が有る場合には caps lock があっ
てもなくても同様に機能するように <Control>j と <Control>J は区別しない
よう両方とも同じ意味として *.scm に設定してありますよね。

そうであれば、"J" + <Control> というのは、"j" + "<Control>" でもいいわ
けで、uim-pref 上で "<Control>j" という表記でかまわないと思います。
意味的にも、ユーザとしては、caps lock 有っても無くても、Control キーと
j キーの組み合わせを意図しているわけですから、表示と食い違いはありませ
ん。

この場合に、 「shift を押す」というのは、shift mask を付けるという意味
ですから、caps lock が有っても無くても (アルファベットの case を無視し
て)、<Control><shift>j という別の意味のキー設定になり、uim-pref 上に
"<Control><shift>j" と表示されて問題ありません。

> <Control>を加えただけでこのような表現の変化が生じると、一貫性の
> 無さによりユーザの理解を妨げる事になると思います。

ちょっと良くわかりませんでした。

> 上記の"l"の例はskkでは起こり得ないシチュエーションですが、anthy
> でskk風モード遷移を使っている場合にはCaps Lockしたまま操作する場
> 合に発生します。

確かにこの場合は (アルファベットキーのみで case を無視した挙動が欲し
い場合)、l の case を区別すると問題になりますね。ユーザに明示的に、"L"
も追加してもらうという方法になるでしょうか。


> 一方で加藤さんの言う気持悪さというのも理解できるので、以下のよう
> な妥協案はどうでしょうか。
> 
> ・アルファベットキーはuim-pref上では常に *小文字* で表す
> ・アルファベットキーに対する<Shift>の暗黙無視を行わない
> ・アルファベットキーに対しては大文字・小文字を無視する
> 
> 要は最初の案の「常に大文字」を「常に小文字」に変えただけです。
> 違和感は減ると思いますがどうでしょうか。
> 
> "L" → "<Shift>l"
> "l" → "l"
> <Control>j,<Control>J → <Control>j
> <Shift>space          → <Shift>space

小文字であれば大丈夫です。


-- 
Etsushi Kato
ekato****@ees*****



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