basyura's blog

あしたになったらほんきだす。

keyhac - エラー発生時にコンソールを表示しない

キーカスタマイズツールの keyhac を大変ありがたく常用している。非常に柔軟で便利なのだけど、一点だけ気になるところがある。エラー発生時にコンソールが表示される。

エラー

ERROR : 予期しないエラーが発生しました : _onKeyDown

Traceback (most recent call last):
  File ".\keyhac_keymap.py", line 577, in strToMod
KeyError: '<C'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\keyhac_keymap.py", line 1335, in setInput_FromString
  File ".\keyhac_keymap.py", line 579, in strToMod
ValueError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\keyhac_keymap.py", line 975, in _onKeyDown
  File ".\keyhac_keymap.py", line 914, in _keyAction
  File ".\keyhac_keymap.py", line 1342, in setInput_FromString
ValueError

こういったエラーが発生した場合にコンソールウインドウが表示される。表示されるけど、 "だから何?" で操作には特に影響が無いのでウインドウを閉じる。日に何回か出る。無視して表示したままにしてもいいのだけど無駄に表示されているのを見ると閉じてしまう。気になる。そもそも表示されないで欲しい。

ソースコードがあるので何日かかけてビルドできるようにしたけど、結果的にはそんなことしなくてよかった。

python コードを直す

keyhac の実行フォルダに library.zip があるので、これを解凍する。 解凍後に作られた library フォルダを library.zip にリネームする。 * .pyc の代わりに対応する .py ファイルを置けば良い。

diff --git a/keyhac_consolewindow.py b/keyhac_consolewindow.py
index 779493b..cf59b01 100644
--- a/keyhac_consolewindow.py
+++ b/keyhac_consolewindow.py
@@ -434,7 +434,7 @@ class ConsoleWindow(ckit.TextWindow):
         class Stderr:
             def write( writer_self, s ):
                 writeCommon(s)
-                self.show(True,False)
+                //self.show(True,False)

         if not self.debug:

今回は keyhac_consolewindow.py を直して格納するだけ。

まとめ

また一つ便利になった。

が、ここまで書いて気がついたけどコメント行は # じゃないのか?内部エラー出てるのかもしれないけど、期待通りになっている (エラーコンソールが表示されない)。