2007年9月26日の日記の1番目の記事へのコメント
■uim.elでシフトスペース
外壁の塗り替えやってて,今日帰ってきたら窓の外にビニールのシートが貼られてたんですが,あろうことかビニールと窓枠を固定するガムテープに窓まで巻き込まれており,窓がまったく開きませんorz.空気悪いよヽ(`Д´)ノ ウワァァァン
・・・と,これくらいしか書くことないねー,とか思ってたらきたぞ超S級のバグ報告.なんとシフト+スペースが効かないらしい・・・本当だ! ・・・もうだめだ_|‾|○
先日の大変更の際に,Emacsの本来の挙動に近づけようと,function-key-mapを参照する際についでにシフトの除去も行うようにしたんですが,よく考えたらfunction-key-mapを参照するのはuim.elにキーが渡る前なわけで,ここでシフトを落としていたらそりゃ効かなくて当たり前・・・.
どういう理由でかわからんのですが,Emacsはこんな変な振る舞いをします.
- shift + return (正確には shift + 13 か)みたいに,シフトつきだとコマンドがバインドされていないけど,シフトなしだとコマンドがバインドされているもの → 最初からシフトを除去して処理される
- shift + F12 みたいに,シフトつきでもシフトなしでもコマンドがバインドされていないようなもの → シフトつきのまま処理されて undefined となる
-
(define-key global-map [S-backspace] 'beginning-of-line)
とかやった場合,シフトを除去せず,shift + backspace として最初から処理する
というわけで,最初にfunction-key-mapを参照する際に同時にシフトを除去するのはやめにして,uimがスルーしてきたら,上の条件を元にどう処理するか決めて,その上でシフトを除去するかどうか判定するようにしました.
1.4.1の頃は,たとえば uim側で F7キーにIMの一時切り換えを割り当てていたりすると,shift + F7 がuimにスルーされた場合,F7 単体で再度 uimに突っ込むことをしていたので,shift + F7 でもIMの一時切り換えができたんですが,これはやめにします.建前としては,他のブリッジになるべくあわせたいのでとかそんなところで・・・.
ちなみに,デフォルト設定だと,Anthyの入力モードをカタカナモードに切り換えるキーとして F7 が設定されてますが,なぜか shift + F7 も効くんですねこれ.・・・今深追いすると死ぬのでこの辺でやめておこう・・・.
2007年9月26日の日記の1番目の記事へのコメント
[コメントを書く]