スクリーンキャスト用のキーストローク表示アプリ
前にMacRuby でスクリーンキャスト用のキーストローク表示スクリプトを書いたんですが、それを Swift で書きなおして機能を追加したりしてアプリにしました。
追加の機能:パスワードフィールドで自動非表示
基本的に AXSecureTextField への入力って、そもそもアクセシビリティのコールバックにこない?っぽいのですが、一部のアプリでは飛んできてしまったり、よくわからない挙動をします。
なので、こちらのツール側で、パスワードフィールドかどうかを判定して非表示に切り替えています。
と書くと簡単なんですが、実際一番やりたい Google Chrome ではデフォルトではアクセシビリティオブジェクトが生成されないみたいな罠があったり (VoiceOver が有効でなければアクセシビリティオブジェクトを作らない)、やっかいです。
あとよくやるパスワード入力といえば sudo ですが、ローカルについては sudo のプロセスが生きている限り自動的に非表示にするようにできるのですが、リモートではうまくできる方法が思いついていません (Terminal.app の画面内容をちゃんととれればヒューリスティックに判定できそうなんですが、screen 内だとそもそもとれないので諦めた)
Mac App Store
github で公開しつつ Mac AppStore に試しに出してみたいなと思っていたんですが、そもそもアクセシビリティAPIで他のアプリにちょっかいを出すアプリは、Mac AppStore で要求される App Sandbox 内では正常に動作しないみたいなので諦めました。
つまりアクセシビリティ機能を向上するためのアプリ (Assistive app) というのは Mac AppStore では出せないってことっぽいですね。純正の VoiceOver でも使ってろってことなんでしょうかね。
関連エントリー
- Mac で VoiceOver が起動しているかどうかを判定する方法 / または Google Chrome を強制的にアクセシビリティ有効にする方法 自分のアプリケーション (AXApplication ) の AXEnhancedUserInterface (bool) を調べて、1 が...
- Mac のアクセシビリティAPIで何が取得できるか簡単に調べられる UIElementInspector UIElementInspector は Apple が提供している開発ツールで、マウスカーソル直下にあるアクセシビリティオブジェクトについ...
- Swift で Mac の ScriptingBridge を無理矢理つかう ちょいちょい「環境設定」→「セキュリティとプライバシー」→「アクセシビリティ」を開かせたいケースがあるが、openURL とかで Secur...
- CopyHook というペーストボードの中身をいじるツールを作った https://github.com/cho45/CopyHook ペーストボードにコピーが行われたときに、JavaScript で何かする...
- MacRuby でスクリーンキャスト用のキー履歴表示ツールを作る よくあるツールなんだけど、なかなか希望に叶うものというと見つけにくく、どうせなら自分で書いたらいいかと思ったので書いてみた。やってみたら割と...