ChatteringCanceler2.2 β2リリース

先日リリースした2.2β1ですが、バグが発覚したので修正しました。
今回もDropboxでの公開です。
でも、Vectorには公開しないとかいいつつ、Vectorに説明とリンクは貼り付けてあったりします。

https://www.dropbox.com/s/sejn8688qqwrykq/ChatteringCanceler2.2.b2.zip?dl=0

変更一覧
・ボタンの左右を入れ替え、かつイベントディレイ/ハイブリッド方式の場合にボタンが入れ替わらない問題を再対策
 (2.1aリリース時にマージ漏れしていた)

なんとも情けないバグですが、どうもリポジトリ移行の時に修正マージが漏れたようです。
バージョン管理システムを使ってるってだけで安心してはいけないということがよく分かりますね(自虐
仕事ではやったことのないようなミスをしていたようです・・・。
まあ、つまり修正したことのあるバグということで、修正そのものは思い出してしまえばあっさり完了しました。
このバージョンでβは終わりにして、正式版にしたい気持ちでいっぱいです。

例のごとく、何かしら不審な挙動が有りましたら、コメントにて連絡いただければ幸いです。

ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 10

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
ナイス ナイス ナイス ナイス ナイス ナイス ナイス ナイス

この記事へのコメント

qpwakaba
2015年10月23日 21:53
こんにちは、以前ホイールを押した時に同時にほかのボタンが押されるのを防ぎたいという要望を出したものです。実装ありがとうございます。

現在 v2.2 b2 を使っているのですが、明らかに設定値より短い間隔でチャタリングによるクリックが発生してしまっているにもかかわらず、検知されないということが何度も起きてしまっていて、疑問に思っています。

ある程度感覚があり、かつ設定値より短い場合
(1000ms設定で カチカチと1秒未満の間隔で意識的にクリックした場合)
は ちゃんとキャンセルされているのですが、
ほとんど0msに近いようなクリックの場合、キャンセルどころかログにも残らないで スルーされてしまっているようです。
これは技術的にどうにもならないものなのですか?


と、もう1つ 質問なのですが、
readmeに書いてある

対象OS
WindowsVista/7/8/8.1/10
(32Bitのみ)
※Windows10にて確認

というのは 64bit OS(かつ64bitアプリ)では動作しないという意味ですか? それとも動作保障なし の意味ですか?

64bit OSを使ってますが、上の通り、1000ms設定の時にキャンセルされることを確認しているので OSのbit数は関係ないものかと思っていますが アプリケーションのbit数はかんけいしていたりするのでしょうか。
2015年10月31日 15:41
>qpwakabaさん
2.1リリース時に入れた処理で、現状では仕様です。
[History.txt]の2.1で「IntelliPointでサイドボタンにダブルクリックを割当てると機能しない問題を対策」とあるのがそれです。
どうやら諸刃の剣のようですので、次バージョンでは選択出来るようにした方が良さそうです。

それと対応OSですが、32bitのみなのは用意したバイナリの話で、64bit版Windowsで普通に機能します。
書き方が明らかに悪かったので、これも次回修正します。
ご指摘ありがとうございました。
qpwakaba
2015年11月14日 14:59
ありがとうございます。 次のアップデートを楽しみにさせていただきます。

もう1つ要望なのですが、 自分のマウスがあれからさらに悪化してしまったらしく、右クリックしたはずが同時に左クリックされたと認識されてしまうので、
他のマウスボタンであっても指定時間未満のクリックであればキャンセルするオプションのようなものを実装していただけると非常にありがたく思います。

(もう マウスを買い替えろってことでしょうね。。)
uhihappipa
2016年04月03日 01:30
いつも大変便利に使わせていただいています。
この度windows10にOSをアップグレードしたところ、縦768pxの私の端末では、設定画面のOKボタンがギリギリ押せる幅になってしまいました。
優先度は低で全く問題無いと思いますが、対応してもらえたらうれしいです。
あうん
2016年06月28日 10:38
XPで動くやつってもう置いてないですか?
ふぉう
2017年11月01日 22:11
>>h1j1k1さん
ありがとうございます!!
早速ダウンロードしました。
近々ちょっと手を入れて公開しようかなという気持ちなので、たぶん使わせていただくことになると思います。
h1j1k1
2017年11月02日 19:00
ありがとうございます。
公開を楽しみにしていただきます。

もう一つバグ報告なのですが、
C言語の関数にあるGetAsyncKeyStateを使ったプログラムだとうまくキャンセル出来ていない場合があるようです。
対策をしていただけると非常にありがたく思います。
ふぉう
2017年11月14日 20:09
>>h1j1k1さん
GetAsyncKeyStateを使ったパターンというのがどういうのかいまいち分かりません。
どういう感じなのか教えていただけませんか。
ISLe
2017年11月22日 16:07
>GetAsyncKeyStateを使ったパターン
GetAsyncKeyStateの戻り値の最上位ビットでマウスボタンを押しているかどうかが分かるので、それを利用して独自にクリック判定しているプログラムにはChatteringCancelerが機能しないということでしょうか。ドライバレベルの対応が必要になる話ですよね。
2017年12月05日 12:58
とうとう私のM570tもチャタリング発生してしまいました
そこで、再びチャタリングキャンセラーのご厄介になっています
作者様、便利なソフトありがとうございます

僭越ながら少し希望を書き込ませていただきます
現状のログとは別に、統計情報などをログ出力してくれるととてもありがたいです
例えば、1時間毎にどれほどのクリックがチャタリングキャンセラーによって破棄されたか や
統計記録中、どの程度の割合でキャンセルされたのか等です
キャンセル判定された際の詳細記録もあると助かります

ご検討いただければ幸いです
fzok4234
2018年03月11日 13:33
大変便利なアプリの開発ありがとうございます。

さて、設定ファイルの保存先がインストールフォルダー以外になってしまう不具合が見つかりましたので報告いたします。

Readme.txtには設定ファイルなどはインストールフォルダーに生成されるという趣旨のことが書かれていましたが、実際にはChatteringCanceler.exeのプロセスのカレントフォルダーに生成されてしまっています。

例えば、C:\test1フォルダーにChatteringCanceler.exeとMouseHook.dllを配置したとします。そしてコマンドプロンプトを開いてこのフォルダーにパスを通しておきます。

>set Path=C:\test1;%Path%

次に、C:\test2フォルダーを作ってカレントフォルダーをここにします。

>md "C:\test2"
>cd "C:\test2"

そして、ChatteringCancelerを起動します。

>ChatteringCanceler

ChatteringCancelerの設定を行ったあと終了させます。

すると、設置ファイルのChatteringCanceler.iniが本来のインストールフォルダーのC:\test1ではなくChatteringCancelerのプロセスのカレントフォルダーである
C:\test2に生成されてしまっています。

当方ではコマンドプロンプト等を多用したりショートカットファイルの作業フォルダーを変更したりするため、ChatteringCancelerをUSBメモリに入れて持ち運ぶ際に設定がUSBメモリに保存されずに困っていますので、設定ファイル等の保存先をカレントフォルダーではなく実行ファイルの親フォルダーに修正していただければ助かります。


fzok4234
2018年03月11日 13:35
あと、追加の要望ですが、設定ファイルなどをバーチャルストアに依存することなく、例えば
%APPDATA%\ChatteringCancelerといったユーザーアカウントごとのフォルダーに保存するタイプの、システムへの固定インストールする人向けのバージョンも作っていただければ幸いです。

というのは、現在のポータブル版をシステムに固定インストールしてマルチユーザー環境で使用する際、UACを一時的に無効にしたりするとバーチャルストアも無効になってしまうため設定が変わってしまうトラブルを引き起こします。

このため当方では、まずマスターイメージとしてとりあえずC:\Program Files (x86)\ChatteringCancelerフォルダーにファイルを配置して、構成ファイルのNTFSシンボリックリンクを各ユーザーの
%APPDATA%\ChatteringCancelerフォルダーに配置して、設定ファイルなどがこのフォルダーに生成されるようにして、バーチャルストアに依存しないマルチユーザー環境を実現しています。

当然、管理にかなりの手間がかかってしまうため、マルチユーザーに対応した固定インストール向けのバージョンがあればずいぶん助かります。

ご検討よろしくお願いします。

ふぉう
2018年03月20日 00:04
fzok4234さん
報告ありがとうございます。
なるほど・・・通常(という表現もアレなのですが)わざわざカレントディレクトリを変えて起動とかはしない想定でしたので、まあそれやられたら確かにそうなるわなという感じです。
マルチユーザ向けとあわせて検討します。
というかマルチユーザで共通設定となると、たぶんレジストリを使うのが一番確実な気はするのです。
ただまあ、今はMSもあまりレジストリを推奨してないようですが。
fzok4234
2018年03月20日 13:15
回答ありがとうございます。

現在2.2β2では32bit版のみのためバーチャルストア機能によりだましだましマルチユーザー対応できますが、今後64bit版を復活させるとなるとバーチャルストア機能が働かないため否応なくアプリ側でマルチユーザーに対応させたバージョンを作らざるを得なくなってきます。

その場合は各ユーザーごとの設定としてChatteringCanceler.iniやログなどのファイルをカレントユーザーのプロファイルフォルダー以下に保存すればいいと思います。理想は%APPDATA%以下、つまりC:\Users\<ユーザー名>\AppData\Roamingフォルダーに会社名のフォルダーを作り、さらにその中にアプリ名のフォルダーを作ってそこにファイルを保存することです。Roamingフォルダーのパスは確か取得用のAPIがあったはずです。APIが使えないorわからない場合は環境変数%APPDATA%を展開しても取得できます。

また、全ユーザーの共通設定を保存する場所は%ALLUSERSPROFILE%以下、すなわちC:\ProgramData以下に<会社名>\<アプリ名>フォルダーを作ってここに保存することになります。当然この全ユーザー共通設定は操作に管理者権限が必要となります。

このように固定インストール版の場合は、所定のフォルダーにiniファイルなどを保存する形でよいと思います。無理にレジストリを使用してしまうと、ユーザー側で設定のバックアップ・リストアが面倒になってしまいます。
fzok4234
2018年03月20日 13:21
なお、現在の実行ファイルと同じフォルダーにiniファイルやログなどを保存するバージョンは、USBメモリーなどにインストールして持ち歩くためのポータブル版として存続させるのがいいです。

また、固定インストール版を作る場合はInnoSetupなどのインストーラーを用いて配布すればよいでしょう。
ISLe
2018年03月29日 17:36
ユーザー設定ファイルをカレントディレクトリに生成する仕様で、共通のフォルダに配置するのも個別のフォルダに配置するのもユーザー毎に自由に選べるので良いと感じます。

実行ファイルのあるフォルダに設定ファイルが作成されなくて困るのではあれば、実行ファイルのフルパスを取得してカレントディレクトリを実行ファイルのあるフォルダに変更して実行するバッチファイルを作って使えばChatteringCancelerに限らず同様の仕様を持つアプリケーションへの対策になります。

startコマンドでカレントディレクトリを変更するバッチファイルを介してChatteringCancelerを起動するようにすれば、構成ファイルの配置を変更するのにいちいちユーザー毎に操作する必要もないですよ。
fzok4234
2018年03月30日 12:49
一応、暫定的にカレントフォルダーをインストールフォルダーに変更してからChatteringCancelerを起動するバッチファイルを使って運用しています。

でも、Readme.txtには「設定は、インストールディレクトリにあるiniファイルへ保存されます。」と書かれているので、やはりReadme.txtを修正するかChatteringCanceler.exe側の仕様を変更した方がよいと思います。

ISLe
2018年03月30日 16:52
OneDriveで設定ファイルをリアルタイムに同期できなくなるのはデメリットと感じますが、間違った仕様に基づいた使い方だと言われればそうですね。
ISLe
2018年03月30日 17:01
いちおうバッチファイルのサンプルを書いておきます。
投稿用に用意したもので、わたしが実際に使っているものとは異なります。

---
@rem 実行ファイルのあるフォルダをカレントにして起動
@echo off
setlocal
set "APP_PATH=.\ChatteringCanceler\ChatteringCanceler.exe"
call :GETPATH "%APP_PATH%"
start "" /d "%GETPATH%" "%APP_PATH%"
goto :EOF

:GETPATH
set "GETPATH=%~dp1"
goto :EOF
---

---
@rem 実行ファイルはプログラムフォルダに、設定ファイルはユーザー毎のアプリケーションデータフォルダに
@rem (データフォルダが無ければ作る処理は省略)
start "" /d "%APPDATA%\ChatteringCanceler" "C:\Program Files (x86)\ChatteringCanceler\ChatteringCanceler.exe"
---
ゴールド
2018年09月05日 06:52
これのおかげでストレスがなくなりました。
ありがとう^^

できましたら対応ボタン数を増やした(当方使用のは「11ボタン式)のが欲しいです
user
2019年02月25日 16:14
いつも有難く使わせていただいています。
現在、タスクスケジューラから「最上位の特権で実行する」として「C:\APP\ChatteringCanceler\ChatteringCanceler.exe」から実行していますが、起動時に設定ファイルの場所を見つけられずにエラーになる時があるので「C:\APP\ChatteringCanceler\」を開始オプションに追加して設定ファイルが実行ファイルと同じところになるようにしたところエラーが出辛くなりました。
ですが、未だに時折「C:\Windows\SysWOW64\」に読みに行く時があるらしくエラーが出るのは変わりません。
設定ファイルの場所を指定するオプションの追加をお願いできませんでしょうか?
よろしくお願いします。
appletea
2020年02月04日 14:48
いつも有難く使わせていただいています。
要望になります。
ログ出力に関してですが
可能であればタイムスタンプの表示有無を実装してほしいです。

チャタリングしているからログが出ているのでしょうが実際どのタイミングで出ていたのかを確認したいためです。

お手数をおかけして申し訳ございませんが何卒宜しくお願いします。
み~な
2020年07月24日 12:35
ご多分に漏れず、マウスのクリックが瞬殺トリプルクリックになってしまい、ゲームはロックアップするわブラウザはタブがいっぱい無駄に開くわ・・・新しくマウスを買ったもののクリック感はいいけど移動感がいまいち。で、設定ソフトがないかしら?と探していたらこちらのソフトを見つけました。結論からいえばマウス、新調しなくてよかったかも??(笑)

おかげさまで本当に助かりました<(_ _)>

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