読者です 読者をやめる 読者になる 読者になる

B(ug)log

開発とかぼやきとかLINEスタンプとか http://line.me/S/sticker/1245783 職探し中

UIAssistant 0.3.5.1 公開(Bugfix)

機能的な変更はなく、バグ修正のみです。

ダウンロード

以下からどうぞ。

github.com

主な修正点

  • フォルダのアクセス権を確認して、設定ファイルを配置する場所を決定するように変更

以前までは、 UAC が有効の状態で Program Files 等に UIAssistant を配置した場合 、書き込みのアクセス権限がないため、設定ファイル、ログファイルが出力できない状態でした。

なので、以下のような優先順位で設定ファイルの保存先を決定するようにしました。(上の方が優先度高)

  1. UIAssistant を格納しているフォルダ内
  2. C:\Users\ユーザ名\AppData\Roaming\UIAssistant\ 内

なぜ AppData 内を優先していないかと言うと、実行ファイルも設定ファイルもひとまとめになるポータブルなのが単純に好みなだけです。インストーラを利用するようになったら、また違うのですけれど。

UIAssistant 0.3.4.0 公開(Vim,Emacs的な何か)

過去記事でも書きましたが、WindowsキーバインドVim-like、Emacs-like にできるようなプラグインを作成していました。

UIAssistant 次回作(Vim, Emacs 的なサムシング) - B(ug)log
Windows の Vim あるいは Emacs 化計画 - B(ug)log
UIAssistant 0.2.3.1 公開と今後の展望 - B(ug)log

いろいろやっていて、「このままだといつまでたっても公開できない」状態になっていたので、思いきって公開しました。

ダウンロードは GitHub からどうぞ↓

github.com

特徴

  • キーの入れ替えが可能
    one shot modifier 的なものも
  • 組み込みコマンドの実行が可能
    Vim の f をマネするコマンドとか
  • 他のプラグインを呼び出し可能
    a キーで Hit a hint を呼べたり、hjkl キーで空間ナビゲーションできたりとか

空間ナビゲーションと同様にデフォルトではキーバインドが設定されていないため、タスクトレイアイコン→右クリック→設定画面→ホットキーにて設定してください。下図の赤枠内を参考になるかと思います。

f:id:u338steven:20160602204337p:plain

コマンド名

km: Keybinds Maniacs の開始

引数やオプションはありません。 デフォルトの状態で Vim-like に使用したい場合、Escape キーではなく Ctrl + [ がキャンセルキーになっています。

設定方法

プラグインの設定画面からいろいろできますが、詳細は後日書きます。(今日は、ちからつきました)

f:id:u338steven:20160602204349p:plain

↑このリストボックスの一行目の意味:
Space キーを LeftShift に入れ替えるよ。ただ、Space キー単独で押した場合(One shot)は、Space キー扱いするよ。いわゆる SandS ってやつです。 このとき、Space + J を押下した場合、UIAssistant 内部では LeftShift + J としては扱われませんのでご注意ください。

各モードをざっくりと

  • Normal
    Vim の Normal モードモドキ (Windowsキーバインド無効)
  • Insert
    Vim の Insert モードモドキ (Windowsキーバインドが有効)
  • Emacs
    Emacs キーバインドモドキ
  • EmacsC-x
    Emacs の C-x プレフィックスキー を仮想的に実現(Emacs モード時に LeftCtrl + x 押下するとこのモードに遷移します)
  • Custom1-4
    ユーザ独自のモードを作成できます。現状ではモードの追加はできませんので、特殊なことをしたい方はこちらをご利用ください。

なにか質問、バグ報告等ありましたら

ここのコメントなり、Twitter なり、GitHub なりで連絡いただければ。

u338.steven (@u338steven) | Twitter
Issues · u338steven/UIAssistant · GitHub

質問があった箇所は追記していく予定です。場合によっては別記事にするかもしれませんが。

UIAssistant 0.2.3.1 公開と今後の展望

機能的な変更はなく、パフォーマンス改善、バグ修正のみです。
主な修正点は以下の通りです。

  • 設定画面のパフォーマンス改善
  • キー入力時のパフォーマンス改善
  • Issue #1 の修正
    • 特定の挙動をする仮想デスクトップソフト使用時に UIAssistant のウィンドウが表示されなかった

ダウンロードは以下からどうぞ。 github.com

今後の展望 Ver.0.3 に向けて

以前の記事にあるとおり、キーバインドを変態的に変更できるプラグインをご用意する予定です。

UIAssistant 次回作(Vim, Emacs 的なサムシング) - B(ug)log
Windows の Vim あるいは Emacs 化計画 - B(ug)log

プラグイン仮名称: Keybinds Maniacs

特徴

  • キーの入れ替えが可能
    • one shot modifier 的なものも
  • 組み込みコマンドの実行が可能
    • Vimf をマネするコマンドとか
  • 他のプラグインを呼び出し可能
    • a キーで Hit a hint を呼べたり、hjkl キーで空間ナビゲーションできたりとか

現状では、それなりに動いていますが、問題は設定画面です。
以下のようにごちゃごちゃしていますし使いにくいです。
(それ以前に、まだ設定画面はまともに動いていなかったり)

f:id:u338steven:20160521204916p:plain

GUI は難しい……。

AutomationElement.FocusedElement が失敗する

u338steven.hateblo.jp

以前上記の記事でふれた WinForms の場合にコントロールの情報取得がうまくいかなかった理由が判明しました。表題の通りです。正確には、AutomationElement.FocusedElement で空の AutomationElementインスタンス(null ではなく、プロパティ値が全て初期値の状態)が取得できてしまうケースがありました。

とりあえず分かったこと

  • AutomationElement.FocusedElement を使用している
  • なんちゃって UI スレッド上で処理している (これが原因っぽい)
  • ワーカースレッド上で実行してみると問題ないっぽい

なんちゃって UI スレッドとは以下の記事の「別 UI スレッド」のことです。

u338steven.hateblo.jp

なんちゃって UI スレッド上だとなんで失敗するかは調べてもわかりませんでした。ウィンドウメッセージとか見ても分からず……。いったい何を取得しようとしているのか。何もない空間を見つめる猫のような奇妙さを感じます。

長時間調査しても原因不明だったので、この件はしばらく放置して様子見します。ワーカースレッド上で実行する分には対処できているっぽいので。