From fujieda @ users.sourceforge.jp Mon Jul 4 22:11:36 2011 From: fujieda @ users.sourceforge.jp (Kazuhiro Fujieda) Date: Mon, 04 Jul 2011 22:11:36 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?SU1FGyRCJE5AKThmGyhC?= In-Reply-To: <4E1193F9.2010209@gmail.com> (co's message of "Mon\, 4 Jul 2011 19\:21\:12 +0900 \(JST\)") References: <9437360$118277$5db4733d8ff0e9ea@freeml-www08> <4E107DC1.8010400@gmail.com> <4E1193F9.2010209@gmail.com> Message-ID: 藤枝です。 場所を移して続けます。 >>> On Mon, 4 Jul 2011 19:21:12 +0900 (JST) >>> co said: > WindowsのIMM32エミュレーションの実装がいい加減なせいで(?)、 > ImmGetIMEFileNameではTSFの名称が空になってしまうのが原因だと思います。 それなら判定用の名前と設定の名前がどちらも"IME"になるので、"IME" の設定が「XKeymacsを無効にする」ならIMEで入力時はXKeymacsが無効に なってもよさそうなのですが、そうはなりません。 ところが、coさんのコードを入れてIMEのdescriptionを取得すると、 名前は"IME"のままなのに期待通りの動作をします。これが僕には謎です。 たぶん、僕が何か見落としてるんだと思いますが。 -- Kazuhiro Fujieda fujieda @ users.sourceforge.jp From cogood @ gmail.com Mon Jul 4 23:02:15 2011 From: cogood @ gmail.com (co) Date: Mon, 04 Jul 2011 23:02:15 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?SU1FGyRCJE5AKThmGyhC?= In-Reply-To: References: <9437360$118277$5db4733d8ff0e9ea@freeml-www08> <4E107DC1.8010400@gmail.com> <4E1193F9.2010209@gmail.com> Message-ID: <4E11C7E7.9050101@gmail.com> coです > それなら判定用の名前と設定の名前がどちらも"IME"になるので、"IME" > の設定が「XKeymacsを無効にする」ならIMEで入力時はXKeymacsが無効に > なってもよさそうなのですが、そうはなりません。 > > ところが、coさんのコードを入れてIMEのdescriptionを取得すると、 > 名前は"IME"のままなのに期待通りの動作をします。これが僕には謎です。 なるほど、そういう意味でしたか。これは謎ですね……。 イベント発生のたびに文字列で判定しているはずですから、 空白1文字分異なってるとか、そういう類だったりして……。 今回の件とぜんぜん関係ないですが、名前の判定と聞いて、オリジナル版の XKeymacsには、ウィンドウのタイトル名を部分的に文字列比較するような処理が 残っていたことを思い出しました。 うろ覚えですが、確か私の改造版では判定処理を試しにごっそり削ってみたんですが 特に問題なく動いてたように思います。 # 最近は他のプログラムに手を出してしまいXKeymacsの改造から離れてしまいました。 # 私の改造版、書き換えすぎてしまってキーマクロのあたりが激しくエンバグ # してたりするんですが、なかなか直す時間が取れてません(汗 # あんまり力になれず申しわけないです。 -- co From fujieda @ users.sourceforge.jp Wed Jul 6 08:49:28 2011 From: fujieda @ users.sourceforge.jp (Kazuhiro Fujieda) Date: Wed, 06 Jul 2011 08:49:28 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?SU1FGyRCJE5AKThmGyhC?= In-Reply-To: <4E11C7E7.9050101@gmail.com> (co's message of "Mon\, 04 Jul 2011 23\:02\:15 +0900") References: <9437360$118277$5db4733d8ff0e9ea@freeml-www08> <4E107DC1.8010400@gmail.com> <4E1193F9.2010209@gmail.com> <4E11C7E7.9050101@gmail.com> Message-ID: 藤枝です。 >>> On Mon, 04 Jul 2011 23:02:15 +0900 >>> co said: >> ところが、coさんのコードを入れてIMEのdescriptionを取得すると、 >> 名前は"IME"のままなのに期待通りの動作をします。これが僕には謎です。 > > なるほど、そういう意味でしたか。これは謎ですね……。 > イベント発生のたびに文字列で判定しているはずですから、 > 空白1文字分異なってるとか、そういう類だったりして……。 なんか古いコードのままでも動くときは動きますね。謎です。 IMEの名称は表示されたほうが親切ですし、古いコードは簡潔ではないの で、TSFによるdescriptionの取得を入れて、IMEの情報を取得するコード を書き直しました。 著作権の所在を明確にするために、このcommitの作者はcoさんにしたい と思いますがよろしいでしょうか? https://github.com/fujieda/xkeymacs/commit/720d229604240203c63b0e92c70ba3d9d3b902ca 問題なければmasterにマージします。 coさんの元のコードとの大きな違いは、WDKに入っているMFCのCStringに wchar_t の変換機能がなかったので、WideCharToMultiByteを使うように したことです。 > 今回の件とぜんぜん関係ないですが、名前の判定と聞いて、オリジナル版の > XKeymacsには、ウィンドウのタイトル名を部分的に文字列比較するような処理が > 残っていたことを思い出しました。 > うろ覚えですが、確か私の改造版では判定処理を試しにごっそり削ってみたんですが > 特に問題なく動いてたように思います。 実行ファイルが同じでウィンドウのタイトルが違う場合の動作が変わっ てしまうので、これはまずいです。 > # 最近は他のプログラムに手を出してしまいXKeymacsの改造から離れてしまいました。 > # 私の改造版、書き換えすぎてしまってキーマクロのあたりが激しくエンバグ > # してたりするんですが、なかなか直す時間が取れてません(汗 > # あんまり力になれず申しわけないです。 大丈夫です。よい部分だけ取り込みますから。コンソールプログラムの 名称の判定の改良はcoolなので、ぜひ取り込みたいと思ってます。 -- Kazuhiro Fujieda fujieda @ users.sourceforge.jp From cogood @ gmail.com Wed Jul 6 10:17:55 2011 From: cogood @ gmail.com (co) Date: Wed, 06 Jul 2011 10:17:55 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?SU1FGyRCJE5AKThmGyhC?= In-Reply-To: References: <9437360$118277$5db4733d8ff0e9ea@freeml-www08> <4E107DC1.8010400@gmail.com> <4E1193F9.2010209@gmail.com> <4E11C7E7.9050101@gmail.com> Message-ID: <4E13B7C3.6070702@gmail.com> coです。 > 著作権の所在を明確にするために、このcommitの作者はcoさんにしたい > と思いますがよろしいでしょうか? こちらの名前まで入れていただけるとはたいへん恐縮です。ありがとうございます。 このcommitの通りで問題ないと思います。 藤枝さんのコードでしたら何の不安もありませんし、こうした確認の手間を 取らせてしまうのが心苦しいので、今後は確認なしでサクっと入れてしまって 構わないです。ぜひ開発に専念していただければと思います。 > 実行ファイルが同じでウィンドウのタイトルが違う場合の動作が変わっ > てしまうので、これはまずいです。 なるほど…。 コンソール以外で同じ実行ファイルに複数のプロファイルを 用意する、というのは今のGUIではできないという認識でいたので、 この手の処理は、GUI側を整備してから改めて組み直したほうが 良いんじゃないかな〜みたいに漠然と考えてました。 # 確かWindowTextTypeという変数で管理してるあたりです。 # あ、さらに思い出したのですが # GUIのリソースにもなんかタイトル名云々という # 未使用のチェックボックスが残っていたような。 > 大丈夫です。よい部分だけ取り込みますから。コンソールプログラムの > 名称の判定の改良はcoolなので、ぜひ取り込みたいと思ってます。 おお、ありがとうございます。管理者.exeみたいな誤判定がなくなるので Vista以降の環境の方には嬉しい改良になってくれると思います。 よろしくお願いいたします。 ちなみに個人的にXKeymacsで一番良く使ってる機能は、コンソールでのYankでして コンソールのYankを高速化する改造は、藤枝さんのフック方式と組み合わ せれば確実に輝いてくれるはず…! ここを確実に動かそうと悪銭苦闘の末断念してたところでしたので、 最初に藤枝さんのフック方式を見たとき衝撃を受けました。いやーすばらしい発想です。 -- co From fujieda @ users.sourceforge.jp Sun Jul 10 01:42:56 2011 From: fujieda @ users.sourceforge.jp (Kazuhiro Fujieda) Date: Sun, 10 Jul 2011 01:42:56 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?GyRCJSYlIyVzJUklJiROJT8bKEI=?= =?iso-2022-jp?b?GyRCJSQlSCVrJE49aE19GyhC?= In-Reply-To: <4E13B7C3.6070702@gmail.com> (co's message of "Wed\, 06 Jul 2011 10\:17\:55 +0900") References: <4E13B7C3.6070702@gmail.com> Message-ID: 藤枝です。 >>> On Wed, 06 Jul 2011 10:17:55 +0900 >>> co said: >> 実行ファイルが同じでウィンドウのタイトルが違う場合の動作が変わっ >> てしまうので、これはまずいです。 > > なるほど…。 > コンソール以外で同じ実行ファイルに複数のプロファイルを > 用意する、というのは今のGUIではできないという認識でいたので、 > この手の処理は、GUI側を整備してから改めて組み直したほうが > 良いんじゃないかな〜みたいに漠然と考えてました。 > > # 確かWindowTextTypeという変数で管理してるあたりです。 > # あ、さらに思い出したのですが > # GUIのリソースにもなんかタイトル名云々という > # 未使用のチェックボックスが残っていたような。 僕の勘違いでした。確かにウィンドウのタイトルに関する処理は、現状 では有効ではないです。リソースにある「タイトルが〜のときのみ適用」 というGUIが有効にならないと意味がないですね。 ユーザからそういう機能の要望があったときに改めて実装することにし て、今は関連するコードを削除したほうがいいかもしれません。 この機能はどうされるつもりだったのでしょうか?>大石さん 実装はあるけど設定するGUIがない機能には、他にAtIbeamCursorOnlyが あります。これはレジストリを激しく汚すしメモリも食うので削除する ことにしています。 -- Kazuhiro Fujieda fujieda @ users.sourceforge.jp From oishi @ cam.hi-ho.ne.jp Sun Jul 10 06:44:07 2011 From: oishi @ cam.hi-ho.ne.jp (oishi) Date: Sun, 10 Jul 2011 06:44:07 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?GyRCJSYlIyVzJUklJiROJT8bKEI=?= =?iso-2022-jp?b?GyRCJSQlSCVrJE49aE19GyhC?= In-Reply-To: References: <4E13B7C3.6070702@gmail.com> Message-ID: <20110710054305.D587.74D2211D@cam.hi-ho.ne.jp> 大石です。 長文で失礼します。 On Sun, 10 Jul 2011 01:42:56 +0900 Kazuhiro Fujieda wrote: > この機能はどうされるつもりだったのでしょうか?>大石さん 4 年半前のことで全く記憶にないのですが、 下記のメールの内容が参考になるかと思います。 === メール添付 ここから === ----------------------- Original Message ----------------------- From: oishi To: xkeymacs @ freeml.com Cc: oishi @ cam.hi-ho.ne.jp Date: Fri, 06 Jan 2006 07:50:17 +0900 Subject: [xkeymacs:1525] 特定のウィンドウのみ独自の設定を使用する方法 ---- こんにちは、大石です。 以前、あるアプリケーションでウィンドウのタイトルに 特定の文字列を含むときだけ、異なる設定を適用したいという話がありましたが、 XKeymacs 3.26 において限定的ながらできるようになりました。 たとえば、メモ帳のウィンドウのタイトルが "foo.txt - メモ帳" のときのみ 独自の設定を割り当てることは、以下の手順で行えます。 1. XKeymacs のプロパティダイアログでメモ帳に独自の設定を使用するようにし foo.txt に対して適用したい設定を行う。 # 古いバージョンの XKeymacs で設定したままでは、下記の値がないかもしれません 2. レジストリを開き HKEY_CURRENT_USER\Software\Oishi\XKeymacs2\notepad.exe にある WindowText を * から foo.txt - メモ帳 に変更し、 WindowTextType を Ignore から Match Full に変更する 3. XKeymacs のプロパティダイアログを開き、何もせずに OK ボタンを押す # レジストリの変更を読み込むため ウィンドウテキストが foo で始まる時には常に適用したいときには WindowText を foo* に、WindowTextType を Forward Match にしてください。 foo を含む時には常に適用したいときには WindowText を *foo* に、WindowTextType を Match にしてください。 *.txt - メモ帳 と Backward Match の組み合わせも期待通りに動くはずです。 現在の制限として、 一つのアプリケーションに複数の独自の設定を持たせることはできません。 また、上記の設定方法は恐らく将来変更されます。 一つのアプリケーションに複数の独自の設定を持たせることができるようにしたり ダイアログから設定を行えるようにするにはもうしばらく時間がかかりそうなので、 開発途中の機能ですが、お知らせさせていただきました。 興味のある方は利用してみてください。 === メール添付 ここまで === > 実装はあるけど設定するGUIがない機能には、他にAtIbeamCursorOnlyが > あります。これはレジストリを激しく汚すしメモリも食うので削除する > ことにしています。 この機能は "テキストボックス内のテキストの編集時だけ xkeymac の Ctrl-D を on にしたい" という要望を受け、実装しました。 詳細は下記のメールが参考になると思います。 === メール添付 ここから === ----------------------- Original Message ----------------------- From: oishi To: xkeymacs @ freeml.com Cc: oishi @ cam.hi-ho.ne.jp Date: Sun, 25 Nov 2007 19:54:35 +0900 (JST) Subject: [xkeymacs:0032] Re:ご相談、Ctrl-D 使い分け ---- こんばんは、大石です。 On Sun, 25 Nov 2007 03:56:04 +0900 (JST) hnaoki @ mug.biglobe.ne.jp wrote: > 現在の xkeymacs は > プロパティ->詳細タブの画面にてコマンド毎にキーを設定することが > できますが、 > ここで、コマンド毎に「常時有効 or マウスカーソルが I の時のみ有効」の > 設定ができればベストではないかと思います。 > いかが思われますでしょうか? ダイアログから設定できるようにしても良いのですが、 以下の理由からアンドキュメントな機能としたいと思います。 - ほとんどの人には必要ない - 複製は M-w C-y で行うことが Emacs 的に自然 もし hnaoki-san 以外にもこの機能を利用したい方が多いようでしたら ダイアログから設定できるようにしたいと思います。 この機能をダイアログから利用したい方がいらっしゃいましたら お知らせ下さい。> みなさま そのようなわけで、XKeymacs 3.45 でこそっと実装しました。 http://www.cam.hi-ho.ne.jp/oishi/xkeymacs345.zip http://www.cam.hi-ho.ne.jp/oishi/xkeymacssrc345.zip たとえば以下のようにすることで、利用できます。 - XKeymacs 3.45 を起動 - PowerPoint を起動 - XKeymacs のプロパティダイアログのコンボボックスで "Microsoft PowerPoint (POWERPNT.EXE)" を選択し、 "独自の設定を使用する" ラジオボタンを選択し、 OK ボタンを押す (Excel など他のアプリケーションでもこの機能を使いたいならば同様のことをする) - XKeymacs を終了する - レジストリエディタを起動する - 次の場所に at ibeam cursor only という名前の DWORD 値を作成し、値を 1 にする HKEY_CURRENT_USER\Software\Oishi\XKeymacs2\POWERPNT.EXE\delete-char\Ctrl+D (Excel など他のアプリケーションでもこの機能を使いたいならば同様のことをする) # 上記の設定をエクスポートすると、以下のようになります --- [HKEY_CURRENT_USER\Software\Oishi\XKeymacs2\POWERPNT.EXE\delete-char\Ctrl+D] "at ibeam cursor only"=dword:00000001 --- - XKeymacs 3.45 を起動 このように設定することにより、PowerPoint 上で C-d を実行すると、 マウスのカーソルが I のときだけ delete-char として働き、 それ以外のときには XKeymacs としてはなにも行わず PowerPoint に Ctrl+D が渡るようになります。 コマンド毎に設定するようにしても良かったのですが、 汎用性が高いに如くは無かろうということで、 ショートカットキー毎に設定するようにしました。 いくつかの特殊なコマンドでは期待通りに動かないのですが、 C-d など大抵のコマンドでは問題なく動くと思います。 もし、使いたいコマンドで期待通りに動かないことがあればお知らせ下さい。 また、上述のレジストリエディタで行った設定は、 XKeymacs のプロパティダイアログで OK ボタンを押すとクリアされてしまいますが そう頻繁に設定を変えることもないかと思うので、制限事項とさせてください。 === メール添付 ここまで === 上記 2 点の機能をはじめ、XKeymacs にはいくつか undocumented な機能が存在します。 undocumented にした主な理由として、一部の利用者の要望に応じ実装してみたが、 一般的な利用者に混乱を招きかねないので GUI の実装を控えた、もしくは、 単に GUI の実装をさぼった、ということが挙げられます。 利用者からの要望/バグの指摘は、 氷山の一角であり多くの人が欲っして/困っているタイプと 世界中で恐らくは彼/彼女だけが欲っして/困っているタイプの 2 つに 大概は用意に判別できて、特に後者に対しどのように対応するかは 開発者のポリシーに依存する部分だと思います。 私は可能な限り、後者の要望に対しても前向きに対応するようにしてきました。 その理由として、大きく見ると、一人でも利用者が増えれば、不具合の報告や 要望をくれる人が増え、その実装を手伝ってくれる人も増え、 結果的により短期間で XKeymacs がより良いものになる可能性が (たとえ僅かにしろ) 増加するのではないかと考えた (というよりはむしろ期待した) ことが背景としてあり、 個別に考えても、ほとんどの人が使わない機能のために レジストリを激しく汚したりメモリを食っても、一般の利用者は気付かないので、 その機能の実装により幸せになる人が一人でもいれば良いと考えたことがあります。 これはあくまで "大石はそう考えていた" というだけで、 XKeymacs の今後の開発方針に対し私の考えを押しつけるつもりはありません。 勝手ながら undocumented な機能を削除する際について一点だけお願いがあります。 全てとまでは言わないまでも大半の undocumented の機能は メーリングリストで紹介されており、現在も利用している方がいる可能性があります。 undocumented な機能ではありますが、それらの機能を削除する際は、 利用者が XKeymacs を version up してそれまで使っていた機能が使えなくなって びっくりすることを避けるために、メーリングリストで新 version を案内する際に 新機能の紹介などと併わせ undocumented な機能を削除したことも紹介して 頂ければと思います。 undocumented な機能の利用者が必ずしも現在も (ほとんどメールが流れない) メーリングリストに参加しているとも限らないことから、 当初本メールに "version の履歴 (現在の release_J.txt 相当のところなど) にも 削除したことを明記して頂ければ……" と書いていたのですが、 よく読み直すと undocumented な機能の削除のみ document 化するのも アンバランスな気がするので、その辺りの取り扱いは一任します。 以上、御参考まで。 -- oishi @ cam.hi-ho.ne.jp http://www.cam.hi-ho.ne.jp/oishi/ From fujieda @ users.sourceforge.jp Sun Jul 10 17:10:37 2011 From: fujieda @ users.sourceforge.jp (Kazuhiro Fujieda) Date: Sun, 10 Jul 2011 17:10:37 +0900 Subject: [Xkeymacs-dev-ja] =?iso-2022-jp?b?GyRCJSYlIyVzJUklJiROJT8bKEI=?= =?iso-2022-jp?b?GyRCJSQlSCVrJE49aE19GyhC?= In-Reply-To: <20110710054305.D587.74D2211D@cam.hi-ho.ne.jp> (oishi@cam.hi-ho.ne.jp's message of "Sun\, 10 Jul 2011 06\:44\:07 +0900") References: <4E13B7C3.6070702@gmail.com> <20110710054305.D587.74D2211D@cam.hi-ho.ne.jp> Message-ID: 藤枝です。 ていねいなお返事ありがとうございます。事情がよくわかりました。 WindowTextTypeとWindowTextについては添付していただいたメールの説 明の通りにおおむね通り動きます。実際にはWindowTextTypeの設定は必 要なかったりしますが。 AtIbeamCursorOnlyはメールの説明ではレジストリがXKeymacs2になって いますが、実際にはXKeymacsを見に行ってしまうため説明通りには動き ません。したがって誰も利用できていない可能性が高いです。 僕としては、有用性が明らかではない文書化されていない機能はいった ん削除して、ユーザから要望が再び出た時点で改めて実装し直して、文 書化する方向でいきたいと思っています。 文書化されていない機能の削除はrelease{,_J}.txt、およびリリースの アナウンスで明記します。 -- Kazuhiro Fujieda fujieda @ users.sourceforge.jp