2016年11月14日月曜日

Keyhac for Windows ver 1.76

Keyhac for Windows ver 1.76をリリースしました。

https://sites.google.com/site/craftware/keyhac-en

1.76
  • Fixed an issue that Keyhac cannot exit correctly when ListWindow is opened.
  • Fixed an issue that the task tray icon disappears after explorer crashes and reboots.

6 件のコメント:

  1. config.pyのactivateOrExecuteNotepadを一部改変して以下のような関数とホットキーを作っています。

    def check_run(path, class_name=""):
    wnd = Window.find(class_name, None)
    if wnd:
    if wnd.isMinimized():
    wnd.restore()
    wnd = wnd.getLastActivePopup()
    wnd.setForeground()
    else:
    executeFunc = keymap.ShellExecuteCommand(None, path, "", "")
    executeFunc()

    keymap_global["A-C"] = lambda: check_run("C:/Program Files/Mozilla Firefox/firefox.exe", "MozillaWindowClass")


    firefoxがアクティベートされないのですがこれは仕様でしょうか?他のソフトでは問題なくアクティベートされます。
    お時間があればお答え頂けると助かります。よろしくお願いします。

    返信削除
    返信
    1. 以下で動きます。インデントなくなると思いますが、分かりますか?

      def check_run(path, class_name=""):
      wnd = find_window(class_name)
      if wnd:
      if wnd.isMinimized():
      wnd.restore()
      wnd.getLastActivePopup().setForeground()
      else:
      keymap.ShellExecuteCommand(None, path, "", "").executeFunc()

      def find_window(class_name):
      def get_window(wnd, arg):
      nonlocal window
      if wnd.isVisible() and not wnd.getOwner():
      if wnd.getClassName() == class_name:
      window = wnd
      return False
      return True

      window = None
      Window.enum(get_window, None)
      return window

      keymap_global["A-C"] = lambda: check_run(r"C:/Program Files/Mozilla Firefox/firefox.exe", "MozillaWindowClass")

      削除
    2. ありがとうございます.
      ぜひ使わせて頂きます.

      削除
    3. 既にgithubのissueの方で修正済みのようですが、ShellExecuteの行が間違っていました。正解は以下となります。

      keymap.ShellExecuteCommand(None, path, "", "")()

      また、MozillaWindowClassというクラスネームはThunderbirdでも使われているようです。ですので、プログラム名も含めてチェックするなどの対策が必要なようです。

      一応、報告します。

      削除
  2. レポートをありがとうございます。確かにFirefoxがアクティブ化されないようです。
    今のところ、何故そうなるのかわかっていません。調査します。

    返信削除
  3. 初めまして、当方ちょっと特殊ですが、英語はdvorak、日本語はqwertyのJISかな入力を行なっている者です。keyhacを使用させていただき、keymap.wnd.setImeStatus(flag) や keymap.updateKeymap()により、ime on/offに割り当てたキー押下時にime offでdvorakに、ime onでqwertyにとダイナミックに配列を変更することができています。しかし、windows7やwindows10ではアプリウィンドウごとにimeの状態を保持していて、他のアプリでimeのon/offを変えた後に元のアプリに戻ると、不用意にime offでqwertyになっているとか、ime onでdvorakになっているということがしばしばあります。
    対策としてもし何か、アプリが切り替わるたびにそのアプリのime状態に合わせて自動的に配列を戻せるようなイベントドリブン的な方法やアイデアなどがありましたらご教授いただけませんでしょうか。

    返信削除