2005年9月30日から2005年9月26日までの日記を表示中

2005年 9月 30日 (金)

uim.el

井上さんからパッチキタ━━━━(゜∀゜)━━━━ッ!! 貴重な御意見も賜わりました.感激です.ありがとうございます.

で,新キーマップですが,今日はEscape回りを処理・・・.そしてまたXEmacsではまりました.内部で「ESC」とか「BS」なんかを「escape」とか「backspace」みたいな名前に戻してくれる関数はないのか・・・(;´Д`)? まー,数が限られてるみたいだから手で書いちゃいましたけど・・・.

そういや,前に書いたかもしれない「今フォーカスしているテキストエリアのIMのみ変更」する際のインタフェースですが,変換候補を表示するノリでIM一覧表示して選ぶ枠組とかどうじゃろう,なんてふと思いつきました.何かのキーバインドで,プリエディットと変換候補の形でIM一覧が出てきて,選ぶとプリエディットごと消えるみたいな.これならUIはブリッジ任せにできて,マウスに手をかけずに選べるし・・・でも,何か見栄え悪そうだな(;´Д`).

CDとか

かもさんの「東方連歌想」とFoggy Rootsさんの「東方夜蕾草」を聴きましたよ.連歌想はプレスだったんですねー.普通にとらで売ってるし.全部で12曲入ってますが,ほとんど2分程度と超短いです.すごい割り切りだ(^^;.しかも若干テンポが早いアレンジな感じなんで,逃げるように曲が終わっていく感が(^^;;;.5曲目とか7曲目とかよかったかも.夜蕾草は10曲目とかいい感じでした.お,ジャケットの裏にシリアルナンバーらしき何かが(^^;.

2005年 9月 29日 (木)

東方花映塚とか

通算10プレーくらいになりましたが,未だノーマルさえクリアできないへたれです.いやー,もう一息だと思うんですけどねー.しかし GeForceFX5200 / AthlonXP 3000+ / PC3200 512M x 2 の構成で処理落ちするのにParhelia搭載のよみさんマシンではデフォルト設定で処理落ちしないというではないですか.これは一体・・・.うーん・・・.

そういや,よみさんにまとめて通販お願いしといたFoggy Rootsさんの「東方夜蕾草」がきました.最近まったく試聴せずに買っててやばいです(;´Д`).そしてまた徐々にCDが溜っていく・・・.

Emacs-22

CVSから引っ張ってきたー.vertical-motionが直ってるっぽいです.感激.しかし,いつ正式リリースになるんだこれ・・・.

肉の日

忘れてたし.というか,今のuim.el,ようやく収拾ついてきたとはいえまだ出せるような状況じゃないっす.あー,どうにかGNU Emacsのマウス関連のキーマップ小さくできないものか・・・.

2005年 9月 28日 (水)

uim.elのキーマップとマウスとXEmacs

翻弄されまくりです(;´Д`).キーマップのまわりがえらいことになってます.モードラインとか垂直スクロールバーに関しては,「(define-key uim-mode-map [mode-line] nil)」とか「(define-key uim-mode-map [vertical-scroll-bar] nil)」でまとめてデフォルト外すことができることがわかりました.だったらウィンドウ内のクリックも同じようにしろよ(# ゜Д゜)!という気がします・・・.

続いて,メニューバー(あとツールバー)なんですが,これも選ぶとキーイベントと同じ扱いになるんですね.[open-file]なんてエントリ,lookup-keyしても見付からないにゃーと思ったら,[menu-bar files open-file]という3ストローク扱いで検索しなきゃならんのね・・・.なのに,(this-command-keys)で1個ずつバラバラに読み出されるのはなぜですか(;´Д`).こっちはかなり悩まされましたが,「menu-bar」と「tool-bar」を同様にnilでdefine-keyしてやったら無視されるようになりました.辛い・・・.でも,まあこれで大体GNU EmacsはOKのはず.あ,「switch-frame」も引っかかるのか(;´Д`).

さて,次はXEmacsなんですが,あれ?define-keyでnilにしても,set-keymap-default-bindingで定義したキーバインドが効いちゃいますよ・・・?・・・XEmacsではキーバインドのnilとデフォルトの扱いが違うのかorz.というわけで,マウスイベントとかをnil定義して,デフォルトのキーバインドを無視させるという技が使えません.どうしよう,困ったな・・・.

とりあえずマニュアル読んでみると,イベントの扱いがGNU Emacsとずいぶん違う感じです.この辺はXEmacsの方が人に優しいのか,な?特にマウスイベントが,結構違う感じ.色々実験してみると,どうもGNU Emacsと違ってXEmacsだとマウスイベントもキーイベントと同じように関数から呼び出してうまいこと処理できるっぽいです.というわけで,大変美しくないですが,XEmacsの方は無理にuim-mode-mapからマウス関係の処理を外さずに,代わりにuim.elが内部で処理するようにしました.あー,未定義なキー操作時に(undefined)呼ぶだけじゃエラーになってくれないのがこれまた憎い(;´Д`).

Qt-3.3.5-immodule-20050928

わーい,ってqximinputcontext_x11.cppでQXIMInputContextクラスにtextなんてメンバ無いよとかいわれてこけます・・・.うーん・・・.これ,XIM使わなきゃビルドしなくていいのかな?

gkrelluim-0.0.5

キタ━━━━(゜∀゜)━━━━ッ!! 早速入れて(゜Д゜)ウマー.おろ,デュアルライセンス?

永夜抄パッチ

myuさんが日記で取り上げてくださった結果,く〜はくさん弾幕型さんがニュースとして取り上げてくださりました.何かいきなり人いっぱい来てドキドキです(;´Д`)ハァハァ.く〜はくさんは,普通にちょくちょく見てるところなんで,なんか不思議な感じです(^^;.

2005年 9月 27日 (火)

uim.elとマウス

昨日の続きです.キーマップで「その他のキー入力は全部これね」と指定すると,Emacsではマウス操作も全部「これ」にマップされてしまうという仕様になってるみたいです.つーわけで,放っとくとマウスクリックとかダブルクリックとかドラッグとか,あらゆるマウスに関連するイベントがuim-agentに渡されてしまいますorz.

こんだけなら,スルーされたのをEmacs側でまた処理すればいいんじゃん?という感じなのですが,そこが微妙にうまくいきません.そこそこEmacsで処理はできるんですが,キーと違って順番に発生した複数イベント見てやらないとうまくいかないっぽい感じ?それはいくらなんでもしんどいです.

というわけで,一番簡単なのは,マウス操作はまとめて未定義(nil)にすること・・・.なんですが,Emacsのマウス操作に関する定義は,Metaみたいに別キーマップにわかれてなくて,キーと同じキーマップ上に定義する必要があります.マウスボタンは「mouse-1」「mouse-2」「mouse-3」と3種類ですが,クリック回数に応じて「double」or「triple」がつき,動きによって「down」or「drag」が付きます.更にこれに「Control」,「Shift」,「Meta」,「Alt」,「Super」,「Hyper」が組み合わさるので,結局キーテーブルが脹れあがりることに_|‾|○(元のに比べりゃましですが・・・).「Alt」「Super」「Hyper」は要らないとしても,なんだかなーって感じ.しかもこのへん,XEmacsだとまたちょっと違うっぽいし・・・.ああっΣ(゜д゜lll) !モードラインクリックも拾われるのかよ (;´Д`).keymap.c見ても,特に抜け道みたいのなさそうだし(あってもXEmacsのこと考えると使いたくないし・・・).うごごごごご.

Σ(゜∀゜ )アッ,あるいはマイナモード初期化時に既存のキーマップ見て,マウス関連のところだけ決め打ちで全部nilにして,defadviceでdefine-keyにdefadviceして何か追加される度にuim-mode-mapにはnilを書き足していきゃいいのかな・・・.まあ,こっちの方がましっぽいですけどdefine-key見るだけでいいのかな?・・・と思ったけど,キーマップにデフォルトのエントリがあると,他にどこでも定義されてないようなイベントでも拾っちゃうから全然意味無いしorz.やっぱくまなくマウスイベントつぶすしか無いのか(;´Д`).

まあ,こんな感じでいじっている内に,次々と無駄な処理が削られたり統合されたりしていき,あんま関係ないところで多少コードがすっきりしました(^^;.

2005年 9月 26日 (月)

何!?あ,頭が・・・

うがぁ,何か今日は午後からずっと頭が痛いっす・・・.疲れているときに出るあれか・・・.

uim.elのキーマップ

うーん,そのやり方は,かなり初期の段階で試したんですが,何かの理由があってあきらめた覚えがあります.・・・が,今改めて見直してみると,結構いけそうな気も.というわけで,やってみました.

(defconst uim-emacs-prefix-keys
  '(help-command
    Control-X-prefix
    mode-specific-command-prefix
    ctl-x-4-prefix
    ctl-x-5-prefix
    vc-prefix-map
    ))

(defun uim-init-keymap ()
  (setq uim-mode-map (make-sparse-keymap))
  (setq uim-preedit-map (make-sparse-keymap))
  (define-prefix-command 'uim-escape-map)

  (let ((prefixs uim-emacs-prefix-keys))
    (while prefixs
      (let ((prefix-keys (where-is-internal (car prefixs))))
	(while prefix-keys
	  (define-key uim-mode-map (car prefix-keys) (car prefixs))
	  (setq prefix-keys (cdr prefix-keys))))
      (setq prefixs (cdr prefixs))))

  (if uim-emacs
      (define-key uim-mode-map [(escape)] 'ESC-prefix))

  (cond (uim-xemacs
	 (set-keymap-default-binding uim-escape-map 'uim-process-input)
	 (set-keymap-default-binding uim-mode-map 'uim-process-input)
	 (set-keymap-default-binding uim-preedit-map 'uim-process-input))
	(uim-emacs
	 (define-key uim-escape-map (vector t) 'uim-process-input)
	 (define-key uim-mode-map (vector t) 'uim-process-input)
	 (define-key uim-preedit-map (vector t) 'uim-process-input)))

  (define-key uim-mode-map [27] 'uim-escape-map))

うおお,超小さくなったっ!しかも,今までよりはるかにエレガント!もう過去には戻れません.が,これだとまだいくつか問題が残ってたりします.

  • マウス操作とメニュー操作も拾ってしまうため,これらを例外として登録するか,uim-agentがスルーした後に処理するようにuim-key.elの方を直す必要がある(XEmacsはスルー後処理できるっぽい)
  • XEmacsで,Esc-Esc-Escを実現する方法が不明(XEmacsはキーマップの中が見えないのが辛い・・・)
  • X環境で動かしてるGNU Emacsだと,非プリエディット時に単発Escape押した場合に,エコー領域に「ESC」ではなく「escape」と出て気持ち悪い

とは言え,これで未知のキー入力に対しても対応できるわけで,やっぱこっちの方が全然いいっすね.ちなみに,「keyboard-quit」と「universal-argument」は,以前は非インタラクティブに呼ぶと何かうまく実行できなかったはずなんで例外扱いにしてたんですが,今はちゃんと動く模様.ここで直ったのかな?まあ,例外が減らせてよかったっす・・・.ちなみに,「set-keymap-default-binding」,さっき初めて知りました(;´Д`).

花映塚

その後,うどんげ,魔理沙,咲夜と1回ずつやったんですが,全員8面か9面で終了orz.2順目始めようとしたらブルースクリーンでマシンが落ちました_|‾|○.とりあえず今のマシンだと,デフォルトだと天空のステージが重くてしかたないっす.画面を16bitにすると処理落ちしなくなりますが・・・.ケース小さいからあんま熱いカードいれられないんだよなー.なー.なー・・・.

2005年9月30日から2005年9月26日までの日記を表示中

中の人情報

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

カレンダー

2005年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件のコメント

過去ログ