ChatteringCanceler2.2 β2リリース
先日リリースした2.2β1ですが、バグが発覚したので修正しました。
今回もDropboxでの公開です。
でも、Vectorには公開しないとかいいつつ、Vectorに説明とリンクは貼り付けてあったりします。
https://www.dropbox.com/s/sejn8688qqwrykq/ChatteringCanceler2.2.b2.zip?dl=0
変更一覧
・ボタンの左右を入れ替え、かつイベントディレイ/ハイブリッド方式の場合にボタンが入れ替わらない問題を再対策
(2.1aリリース時にマージ漏れしていた)
なんとも情けないバグですが、どうもリポジトリ移行の時に修正マージが漏れたようです。
バージョン管理システムを使ってるってだけで安心してはいけないということがよく分かりますね(自虐
仕事ではやったことのないようなミスをしていたようです・・・。
まあ、つまり修正したことのあるバグということで、修正そのものは思い出してしまえばあっさり完了しました。
このバージョンでβは終わりにして、正式版にしたい気持ちでいっぱいです。
例のごとく、何かしら不審な挙動が有りましたら、コメントにて連絡いただければ幸いです。
今回もDropboxでの公開です。
でも、Vectorには公開しないとかいいつつ、Vectorに説明とリンクは貼り付けてあったりします。
https://www.dropbox.com/s/sejn8688qqwrykq/ChatteringCanceler2.2.b2.zip?dl=0
変更一覧
・ボタンの左右を入れ替え、かつイベントディレイ/ハイブリッド方式の場合にボタンが入れ替わらない問題を再対策
(2.1aリリース時にマージ漏れしていた)
なんとも情けないバグですが、どうもリポジトリ移行の時に修正マージが漏れたようです。
バージョン管理システムを使ってるってだけで安心してはいけないということがよく分かりますね(自虐
仕事ではやったことのないようなミスをしていたようです・・・。
まあ、つまり修正したことのあるバグということで、修正そのものは思い出してしまえばあっさり完了しました。
このバージョンでβは終わりにして、正式版にしたい気持ちでいっぱいです。
例のごとく、何かしら不審な挙動が有りましたら、コメントにて連絡いただければ幸いです。
この記事へのコメント
現在 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数はかんけいしていたりするのでしょうか。
2.1リリース時に入れた処理で、現状では仕様です。
[History.txt]の2.1で「IntelliPointでサイドボタンにダブルクリックを割当てると機能しない問題を対策」とあるのがそれです。
どうやら諸刃の剣のようですので、次バージョンでは選択出来るようにした方が良さそうです。
それと対応OSですが、32bitのみなのは用意したバイナリの話で、64bit版Windowsで普通に機能します。
書き方が明らかに悪かったので、これも次回修正します。
ご指摘ありがとうございました。
もう1つ要望なのですが、 自分のマウスがあれからさらに悪化してしまったらしく、右クリックしたはずが同時に左クリックされたと認識されてしまうので、
他のマウスボタンであっても指定時間未満のクリックであればキャンセルするオプションのようなものを実装していただけると非常にありがたく思います。
(もう マウスを買い替えろってことでしょうね。。)
この度windows10にOSをアップグレードしたところ、縦768pxの私の端末では、設定画面のOKボタンがギリギリ押せる幅になってしまいました。
優先度は低で全く問題無いと思いますが、対応してもらえたらうれしいです。
「英訳していただけたら助かります」
と書いてあったので訳してみました
(一部 https://translate.google.com/?hl=ja これ使いました
https://www.dropbox.com/s/x60lyszvfwyc578/Readme.txt?dl=0
ありがとうございます!!
早速ダウンロードしました。
近々ちょっと手を入れて公開しようかなという気持ちなので、たぶん使わせていただくことになると思います。
公開を楽しみにしていただきます。
もう一つバグ報告なのですが、
C言語の関数にあるGetAsyncKeyStateを使ったプログラムだとうまくキャンセル出来ていない場合があるようです。
対策をしていただけると非常にありがたく思います。
GetAsyncKeyStateを使ったパターンというのがどういうのかいまいち分かりません。
どういう感じなのか教えていただけませんか。
GetAsyncKeyStateの戻り値の最上位ビットでマウスボタンを押しているかどうかが分かるので、それを利用して独自にクリック判定しているプログラムにはChatteringCancelerが機能しないということでしょうか。ドライバレベルの対応が必要になる話ですよね。
そこで、再びチャタリングキャンセラーのご厄介になっています
作者様、便利なソフトありがとうございます
僭越ながら少し希望を書き込ませていただきます
現状のログとは別に、統計情報などをログ出力してくれるととてもありがたいです
例えば、1時間毎にどれほどのクリックがチャタリングキャンセラーによって破棄されたか や
統計記録中、どの程度の割合でキャンセルされたのか等です
キャンセル判定された際の詳細記録もあると助かります
ご検討いただければ幸いです
さて、設定ファイルの保存先がインストールフォルダー以外になってしまう不具合が見つかりましたので報告いたします。
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メモリに保存されずに困っていますので、設定ファイル等の保存先をカレントフォルダーではなく実行ファイルの親フォルダーに修正していただければ助かります。
%APPDATA%\ChatteringCancelerといったユーザーアカウントごとのフォルダーに保存するタイプの、システムへの固定インストールする人向けのバージョンも作っていただければ幸いです。
というのは、現在のポータブル版をシステムに固定インストールしてマルチユーザー環境で使用する際、UACを一時的に無効にしたりするとバーチャルストアも無効になってしまうため設定が変わってしまうトラブルを引き起こします。
このため当方では、まずマスターイメージとしてとりあえずC:\Program Files (x86)\ChatteringCancelerフォルダーにファイルを配置して、構成ファイルのNTFSシンボリックリンクを各ユーザーの
%APPDATA%\ChatteringCancelerフォルダーに配置して、設定ファイルなどがこのフォルダーに生成されるようにして、バーチャルストアに依存しないマルチユーザー環境を実現しています。
当然、管理にかなりの手間がかかってしまうため、マルチユーザーに対応した固定インストール向けのバージョンがあればずいぶん助かります。
ご検討よろしくお願いします。
報告ありがとうございます。
なるほど・・・通常(という表現もアレなのですが)わざわざカレントディレクトリを変えて起動とかはしない想定でしたので、まあそれやられたら確かにそうなるわなという感じです。
マルチユーザ向けとあわせて検討します。
というかマルチユーザで共通設定となると、たぶんレジストリを使うのが一番確実な気はするのです。
ただまあ、今はMSもあまりレジストリを推奨してないようですが。
現在2.2β2では32bit版のみのためバーチャルストア機能によりだましだましマルチユーザー対応できますが、今後64bit版を復活させるとなるとバーチャルストア機能が働かないため否応なくアプリ側でマルチユーザーに対応させたバージョンを作らざるを得なくなってきます。
その場合は各ユーザーごとの設定としてChatteringCanceler.iniやログなどのファイルをカレントユーザーのプロファイルフォルダー以下に保存すればいいと思います。理想は%APPDATA%以下、つまりC:\Users\<ユーザー名>\AppData\Roaming フォルダーに会社名のフォルダーを作り、さらにその中にアプリ名のフォルダーを作ってそこにファイルを保存することです。Roamingフォルダーのパスは確か取得用のAPIがあったはずです。APIが使えないorわからない場合は環境変数%APPDATA%を展開しても取得できます。
また、全ユーザーの共通設定を保存する場所は%ALLUSERSPROFILE %以下、すなわちC:\ProgramData 以下に<会社名>\<アプリ名>フォルダーを作ってここに保存することになります。当然この全ユーザー共通設定は操作に管理者権限が必要となります。
このように固定インストール版の場合は、所定のフォルダーにiniファイルなどを保存する形でよいと思います。無理にレジストリを使用してしまうと、ユーザー側で設定のバックアップ・リストアが面倒になってしまいます。
また、固定インストール版を作る場合はInnoSetupなどのインストーラーを用いて配布すればよいでしょう。
実行ファイルのあるフォルダに設定ファイルが作成されなくて困るのではあれば、実行ファイルのフルパスを取得してカレントディレクトリを実行ファイルのあるフォルダに変更して実行するバッチファイルを作って使えばChatteringCancelerに限らず同様の仕様を持つアプリケーションへの対策になります。
startコマンドでカレントディレクトリを変更するバッチファイルを介してChatteringCancelerを起動するようにすれば、構成ファイルの配置を変更するのにいちいちユーザー毎に操作する必要もないですよ。
でも、Readme.txtには「設定は、インストールディレクトリにあるiniファイルへ保存されます。」と書かれているので、やはりReadme.txtを修正するかChatteringCanceler.exe側の仕様を変更した方がよいと思います。
投稿用に用意したもので、わたしが実際に使っているものとは異なります。
---
@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"
---
ありがとう^^
できましたら対応ボタン数を増やした(当方使用のは「11ボタン式)のが欲しいです
現在、タスクスケジューラから「最上位の特権で実行する」として「C:\APP\ChatteringCanceler\ChatteringCanceler.exe」から実行していますが、起動時に設定ファイルの場所を見つけられずにエラーになる時があるので「C:\APP\ChatteringCanceler\」を開始オプションに追加して設定ファイルが実行ファイルと同じところになるようにしたところエラーが出辛くなりました。
ですが、未だに時折「C:\Windows\SysWOW64\」に読みに行く時があるらしくエラーが出るのは変わりません。
設定ファイルの場所を指定するオプションの追加をお願いできませんでしょうか?
よろしくお願いします。
要望になります。
ログ出力に関してですが
可能であればタイムスタンプの表示有無を実装してほしいです。
チャタリングしているからログが出ているのでしょうが実際どのタイミングで出ていたのかを確認したいためです。
お手数をおかけして申し訳ございませんが何卒宜しくお願いします。
おかげさまで本当に助かりました<(_ _)>