2007年9月22日の日記を表示中

2007年 9月22日 (土)

uim.el

1.4.1をクリーンインストールして,何が変わったか確認してみたところ,ここ最近潰したバグの殆どが1.4.1では存在しないバグであったという驚愕の事実が発覚.この機能は1.4.1ではちゃんと動かなかったんだぜ・・・と思ってたものの多くは,実はこれでC-xとかを完全に自前で処理するようになったところで使えなくなってしまったっぽい.ふ,不覚・・・orz.

というわけで,あんなにこねくりまわしたのに,ユーザから見た 1.4.1 からの進化点は多分これだけ・・・(´・ω・`)

  • event-apply-*-modifier 系の処理に対応
    (define-key function-key-map [Scroll_Lock]
                                 'event-apply-control-modifier)
    
    とかすれば Scroll_Lock を使った2ストロークの Ctrlの入力が可能になるので,tkngさんの左手の小指も安心だ!
  • delete-selection-modeに対応
  • とりあえずEmacs-23.xでも起動するようにしてみた
  • XEmacs でも C-x C-h が効くようになった
  • XEmcas で,shifted-motion-keys-select-region (シフト+矢印で領域を選択する機能) が利用可能になった
  • function-key-mapの扱い方が間違っていたのを修正
    (define-key global-map [M-return] `move-beginning-of-line) 
    (define-key global-map [134217741] `move-end-of-line)
    
    とかしたときに,uim.elがONだと M-return でカーソルが行末に行ってしまう問題が無くなったけど,そんなマニアックなことをする人がいるとは思えない.
  • Emacs22で,uim-input-pad-jaで文字を入力した際の,undo後のカーソル位置がおかしくなるバグを修正

ちなみに,上記を抽出している際に,またバグを1個見つけてしまいました_|‾|○.Emacs21で「C-x 8 ~ a」とやるとエラーになります.日本語環境だと「C-x 8 ~ a」と打った時点で次の文字の入力を促す状態になって,たとえば「x」と入れると「笘」とか入力されたりするんですが(こんな機能誰が使うんだろうって感じですが),「(command-execute [24 56 126 97]) とかやると,中で呼ばれるkeyboard.cのread_charなる関数が,キーボードマクロの中で呼び出されてると認識して,キーを読み取らずに -1 を返してしまうためおかしなことににに.

これ,C-xをuimが奪わない 1.4.1 だとちゃんと動くんですよね orz.あとEmacs20ではEmacs22と同じように,普通に「ã」が入力されます.Emacs21が次の1文字を要求するとかするから発生する問題か・・・

対策ですが,今のところ 「(define-key uim-mode-map [24] nil)」 として,再びC-xをuim.elが奪うようにするくらいしか思いつきません・・・.どうしたものか.

uim.elでかな入力云々

しつこく考えてみました.Xmodmapで211(「ろ」)か133(「ー」)のどちらかに,0x5c以外のkeysymを割り当ててもよい,という前提での話です.

  1. Xサーバ上で,「ろ」のkeysymに,Xmodmap で 0x1eを割り当てる
    xmodmap -e "keycode 211 = 0x1e underscore kana_RO"
    
  2. uim.el の uim-process-input 内の
    ((equal send-vector [30])    (setq send-vector [C-~]))
    
    を消して
    ((equal send-vector [92])    (setq send-vector [2213]))
    ((equal send-vector [30])    (setq send-vector [92]))
    
    に置き換えておく
  3. .emacsか何かで,global-mapで [30] (0x1eに対応) に「\」を割り当てておく
    (define-key global-map [30] "\\")
    

一応これで,uim-modeがoffの時は「\」が入り,uim-modeがONになったときは「ろ」と「ー」を使い分けることができます (XEmacsはもうちょっといじらないとダメ).

最大の問題は,これをやってしまうとEmacs以外のアプリケーションで「ろ」のキーが使えなくなってしまうという点.ウィンドウマネージャでフォーカスが入ったときと外れたときに,任意のコマンドを実行してくれるやつがあったりすると,Emacsにフォーカスが入っている間だけ上記のhackが有効になって(゜Д゜)ウマーなんですけど,そんなのあんのかな.

2007年9月22日の日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2007年9月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ