コードをちまちま

5月になっちまいました。
そういや先月は一度もエントリを書いてねーですな。
別に、単に仕事がいっぱいあっただけです。それ以外は何もありませんでした。
夏までそんな感じっぽいですね。

でまあやっと連休なんですが、ちょこっと開発を再開してました。
具体的には、2.1 のリリース後にいただいた要望の対応です。

・設定ダイアログのプルダウンメニューテキストを編集不可に修正
・Tabキーによるフォーカス移動で時間設定のテキストボックスに移動するよう修正
・時間が無効な値のときOKボタンを押すとエラーダイアログが閉じるだけになるよう修正

何気にTabフォーカスが面倒というか、予想通りリソース修正ではどうにもならずに結構コード追加と相成りました。
あと、チェックボックスからShift+Tabでの移動が出来なくて(フォーカスロストのメッセージが拾えない)、画面レイアウトが若干変わりました。
ぶっちゃけ、優先度と位置を入れ替え。
実験しながらコードをいじってたら、なんかダイアログメッセージハンドラが巨大化してきて、ちとしょぼい感じ。
今やってる仕事が超貧弱メモリ前提で、スタック節約のためにあんま分割すんなと言われてる悪影響が出てるような気がしないでもないです。
なんという貧乏臭さ。
これはリリース前にはちゃんと分割しようと思います。

ただ、この修正だけで新規リリースってのもちょっとアレすぎる気がするのです。
なので、次バージョンのリリースと一緒に取り込もうかと思います。
もしくは何か大きいバグが出たら、その修正版に取り込むかのいずれかで。


さて、実は現在別のアプリの検討を始めてます。
自分が欲しいものを作るというコンセプトですので、当然自分用。
まあぶっちゃけ、壁紙チェンジャなんですけど。
出来がよかったら公開する予定です。


2013/07/16追記
修正版を公開しました。

ChatteringCanceler2.1a beta1リリース

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 4

なるほど(納得、参考になった、ヘー)
ナイス ナイス
ガッツ(がんばれ!)

この記事へのコメント

ISLe
2010年05月03日 16:07
大掛かりな変更になってしまったようで申し訳ないです。
フォーカス移動はWin32でダイアログベースならメッセージループにIsDialogMessageを噛ますだけでモーマンタイなのかと思っていたのですがそうではなかったのですね。
MITU
2010年05月03日 17:36
個人的にはChatteringCancelerにプロセス指定が欲しいところではありますが
MMOとかChatteringCancelerが入ってると不正アプリ扱いされる場合があるので
指定したプロセスだけONなんて出来るとMMOを起動ごとにChatteringCancelerを終了させないで済むんですけどね・・・

>壁紙チェンジャ
うあ 欲しー
期待大
ふぉう
2010年05月03日 18:03
>ISLeさん
まあ、以前から気になってはいたのでいい機会だったと思ってますw

>MITUさん
プロセスでは毎回IDやハンドルが変わって面倒なので、モジュール登録方式がいいかもですね。
無効にするモジュールを登録する感じで。
次リリースの追加機能として検討してみます。

壁紙チェンジャについては、すぐに完成する気がしないので・・・あんま期待されてもw
wahhoi
2010年05月21日 17:28
はじめまして おじゃまします。
窓では使っており非常に重宝しているのですがLinux用に作ったりはできないのでしょうか。わがまま言っているのはわかるのですが言ってみたり。

それと言語は何を使っているのでしょうか?これは興味本位ですが。

これからもがんばってください。
ふぉう
2010年05月23日 22:16
>wahhoiさん
ほんのちょっとだけLinux上の、というよりX上でのマウスデバイスアクセスについて調べてみました。
読み書きはともかく、X-デバイス間のアクセスを横取りする方法が、とりあえず見付かりませんでした。
まぁそれ以前に開発環境がない訳でして、当面は他OS用に移植する予定はありません。
すいません。

あと言語ですが、C++です。
コンパイラはVisual C++ 2008です。でもx64用バイナリはWindowsSDK付属のコンパイラで生成してます。
Win32APIを直接叩く都合上、.Net Frameworkは使っていません。
Mediale
2010年07月19日 12:09
MX-1000にてこのツールを使わせていただいています。

要望なのですが、4ボタンと5ボタンが結局マウスのどのボタンに該当するのかがわからなくて、効果が出ているのか、設定が間違っているのかが判別できません。

Windowsのゲームコントローラ設定画面にボタンのテストモードのようなものがありますよね。ああいうのは難しそうでしょうか…。

勝手な要望で申し訳ありませんが、4ボタンと5ボタンが、マウスのこのボタンだよ~、と分かりさえすれば何でも良いので、このへんの対策をお願いできませんでしょうか。

ふぉう
2010年07月25日 18:57
>Medialeさん
たぶん出来ると思います。
あまりセンスのいい画面を作る自信はないのですが、デザイン精一杯頑張ってみますw
part
2010年08月22日 19:02
開発お疲れ様です。
8000円のマウスが1年も持たずにチャタりだし、先日よりこちらのソフトを使わせていただいてます。
非常に助かっています。
ひとつ提案なのですが、(チャタリングをキャンセルした回数/クリックされた回数)を設定画面の(mSec)の隣あたりにでも表示できませんでしょうか?
ソフト導入直後の動作確認しやすくなり、また時間経過によりチャタリングが酷くなっているかの確認にも使えるんではと思います。(Medialeさんの要望も解決?)
もし気が向きましたらご検討をよろしくお願いします。
ふぉう
2010年08月22日 23:33
>partさん
なるほど・・・統計機能ですか・・・。
いいかもしれませんねー。

夏休みはコードをまったくいじらず終わってしまったので、この夏リリースってのはちょっと無理ぽいですが。
ボタンのTestモードとあわせて次回検討します。
s$
2010年09月07日 15:58
こんにちは。愛用させていただいております。
基本的には中クリックがなんとかなればいいので、他のボタンは気にしていませんが、中クリックに関しては(かつ私の環境に関しては)、設定を100msecほどに伸ばすといいようです。

さて、バグということでもなく、私の環境だけかもしれないのですが、このソフトを起動した(常駐した)状態で、CPUに負荷がかかっていると、マウスカーソルの動作が引っかかるようになります。
起動していない状態では、CPUが100%になっていてもマウスカーソルは特に制限なく動けるのですが、このソフトの動作がマウスの割り込みを阻害してしまっているのでしょうか。
現象から判断する限り、このソフトの優先度を「下げて」やればいいような気もするのですが、2.1で追加された優先順位設定には「下げる」側はないようなので。
タスクマネージャから直接下げればいいのかもしれませんが、やっていません。

もし何らかの対策、対応がとれるようであれば、ご検討いただけると幸いです。
ふぉう
2010年09月13日 23:06
>s$さん
ちょっと遭遇したことのない現象ですので、もしまた発生したときにタスクマネージャから試しに下げてみていただけませんか?
こちらでも余裕ができましたら再現テストをしてみますが、なにぶん忙しい日が続いていまして、近いうちにという確約もできない有様です。
個人的には、優先度を上げる方向で解消するんじゃないかとは思っています。
s$
2010年09月22日 19:45
マウスの動作が引っかかる件ですが、結論からいうと、優先度を下げても意味がなく、上げる方向でした。
それも「通常(高)」ではだめで、「高」ないし「リアルタイム」にすると、引っかかりが(完全にとはいってない気もしますが)なくなりました。
おっしゃるとおりでしたね。

ちなみに、どうやらやみくもにCPUが100%になっているとだめなわけではなく、本ソフトをインストールしているPCにはマカフィーのVirusScan(Enterprise 8.5)が入っているのですが、これのおそらくオンアクセススキャンであるところの mcshield.exe が支配しているときにマウスの動作を阻害しにかかっているようでした。

さしあたり優先度を「高」にして様子をみてみます。
fool
2010年10月16日 12:53
初めまして、ChatteringCancelerの不具合を報告させて頂きます。

マウスのプロパティの「主と副のボタンを切り替える」が真の時に、「イベントディレイ方式」の挙動がおかしいようです。
ボタンの左右を反転したメッセージを出す必要があるようです。
「主と副のボタンを切り替える」の値は以下のレジストリキーにあります。
HKEY_CURRENT_USER\Control Panel\Mouse\SwapMouseButtons
ふぉう
2010年11月01日 13:31
うっはー長期にわたって放置しちゃいました。
すいませぬ。

>s$さん
ひとまずそれで様子見をお願いします。
システムコールをフックするプログラムですので、セキュリティソフトには目をつけられやすいのは確かです。
プログラムごとに許可する設定があるならば、そこでChatteringCancelerを許可しておくというのも手かと思います。

>foolさん
ボタンの左右は考慮外でした。なるほど。
次回修正時に取り込もうと思います。
ありがとうございました。
2012年01月26日 21:28
初めまして、よろしくです。

ChatteringCanceler関連の投稿・コメントから1年ちょっとになるようなのでまだ携わっておられるか分からないんですが、一応ダメ元で質問させていただきます。

バグかもしれませんし、私が何か素朴な間違いをしているかもしれませんが、一回チャタリングで返品交換してもらったLogicoolがまたチャタり出して今日ダウンロードさせていただいてインストールしてみました。ログを見て分かったのは、私のマウスのチャタリングは2パターンあることで、それは

(1)意図的なDOWN-UP後、約16ms後DOWN、約16ms後UPというのと、
(2)意図的なDOWN-UP後、0ms後DOWN、約16msか31ms後UPというパターンです。

パターン(1)のチャタリングは問題なく直してくれますが、パターン(2)のはそのまま通っちゃいます。ログでは例えば以下のようになります。

DOWN,2668,0,450,598,0,0
UP,62,0,450,598,0,0
DOWN,0,0,450,598,0,0
UP,16,0,450,598,0,0

0msの間隔でDOWNというのは具体的にどうなっているか分かりませんが(例えばその前の押下期間中にチャタリングが発生するがマウス内の回路がそれを次のUP後までバッファリングしているとか?当てずっぽうですが)、そういった極端に短い間隔でのチャタリングを破棄することはできないのでしょうか?

長らく眠っているスレを蘇らせてしまって申し訳ありません。

この記事へのトラックバック

  • ChatteringCanceler2.1a beta1リリース

    Excerpt: 大変長らくお待たせいたしました。 気付いたら2.1のリリースから3年以上経過してたわけで、自分でもびっくりですよ。 その間に色々バグのご報告やら何やらいただきましたんで、何とかなりそうな修正をあら.. Weblog: ヨン様と呼ばないで! racked: 2013-07-16 00:01