最近の Sleipnir × KeePass 使用状況

[追記 2014 Nov. 1st 02:15]
本エントリの環境を一部変更したことなど書いた。
KeePass の利用方法で一月前と変わったところ - (TooLab.)Lab. 研究日誌

[追記終了]

やる気がおきなかった

このネタ一月前くらいには書こうと思って下書きまで行ってたんですが、そこでブラウザ落ちて全部飛んだので放置になってましたw

今日、某パスワードマネージャの iOS 版が無料キャンペーン始めたんだけど、実際はストア側のミスでしたってのがあって、
ふと書きかけで投げてたなと思い出したのでした。

相変わらずメインブラウザは Sleipnir2 です。
4、6も最近は停滞気味な印象があるので2(あるいは1.66)の機能追加していってくれないかなぁ。
まぁ、6は何かあるのかもしれないけど。*1

何度か書いてますし、タイトルにもありますが私の愛用のパスワードマネージャは KeePass です。
で、ぷにる2では cocoa さんの KeePassWand 使ってるって書いてました。
が、今は少し変わってましてその辺を書いていこうかなと。

現在の利用設定

基本的には KeePass 側は何も変更してません。
KeePassWand をサブ的にはまだ使っていることもあるしね。


どう使うように変わったかというと、このようにコンテキストメニューから使う感じです。
毎度いちいちサジタリウスドックのボタンにマウスカーソルを持ってく事がなくなった分だけ省エネ?ですねw

では、以下設定の仕方です。
当然、Sleipnir2 限定です。

1. IME オフを F16 に割り当てる
以下、当然自己責任でやってね。
日本語環境では IME の状態(オン/オフ)が鬼門で、以前 KeepassWand の補助スクリプト書いたときは CSSime-mode プロパティを使ってました。
現在は2ちゃんねるパスワード管理ツール Part2の>>607(ミラー) を参考にしています。

607 :名無しさん@お腹いっぱい。:2010/04/18(日) 10:32:59 ID:+1FlIMS00

KeePassでIMEがONになっているときに、
パスワードを自動入力すると、あわわわってなる問題。
俺はこうやって解決したよ。

まず、KeePassの自動入力で、最初に{F16}を押すようにした。
F16キーなんて誰も押せないだろう? だから使ってないだろう?

そして、IMEの設定でF16キーにIME OFFを割り当てた。

ただ、IME の設定を変えるのは好きくないので AHK スクリプトで代用しています。

#include IME.ahk
#include IME_SET.ahk

F16::
	IME_OFF("A")
return

インクルードファイルは適当に検索して探してね。
自分専用スクリプトの一部を抜粋しただけで、単体では未検証。
インクルードファイルの中身見た感じインクルードするのは後者だけで良いかもしれない。
まぁ、よく分からない人は IME の設定弄った方が良いかもね。


2. キーストロークをエミュレートするアクションを作る
私はSAE/さえ使ってます。
上で AHK 使ってるんで、そちらでも構わないんですけどね。*2
なんとなくw

以下は KeePass のグローバルホットキーを KeePassWand の例示の通りに設定している場合です。
違う設定をしている場合は適宜修正してください。
表示名と説明も例なので好きなの付けて良いです。



[追記(2014 Sep. 18th 14:50)]
F16 キー押下をエミュレートするアクションについて書くのを忘れていたw

表示名 EmuF16
説明 F16 キーをエミュレート
@KeyPress(0x7F)
@KeyUp(0x7F)

[追記終了]


表示名 KeePassGlobalAutoType
説明 Ctrl + Shift + Alt + A
@Eval(SAE_EmuF16)
@KeyPress(0x11)
@KeyPress(0x10)
@KeyPress(0x12)
@KeyPress(0x41)
@KeyUp(0x41)
@KeyUp(0x12)
@KeyUp(0x10)
@KeyUp(0x11)


表示名 KeePassShowWindow
説明 Ctrl + Shift + Alt + K
@KeyPress(0x11)
@KeyPress(0x10)
@KeyPress(0x12)
@KeyPress(0x4b)
@KeyUp(0x4b)
@KeyUp(0x12)
@KeyUp(0x10)
@KeyUp(0x11)


表示名 KeePassSelectedEntryAutoType
説明 Ctrl + Shift + Alt + Z
@Eval(SAE_EmuF16)
@KeyPress(0x11)
@KeyPress(0x10)
@KeyPress(0x12)
@KeyPress(0x5a)
@KeyUp(0x5a)
@KeyUp(0x12)
@KeyUp(0x10)
@KeyUp(0x11)

これは別に使ってないんだけど一応w


3. コンテキストメニューの編集
一度ぷにる2を再起動させてアクションを使用可能にします。
Sleipnir オプション > ユーザー インタフェース > メニューエディタ >> ブラウザコントロール」する方法でも構いません。
が、今回は直接編集の方で。
[追記(2014 Sep. 18th 01:18)]
ファイル名は 「BrwsCtxtMenuCtlAddPopup.xml」 です。
[追記終了]

<?xml version="1.0"?>
<root>
	<folder name="ROOT" >
		<item name="KeePass - Show Window" action="SAE_KeePassShowWindow" />
		<item name="KeePass - Global Auto-Type" action="SAE_KeePassGlobalAutoType" />
		<item name="KeePass - Password Auto-Type" action="KeePassPasswordAutoType" />
	</folder>
</root>

name 属性はお好みで。
SAE/さえの表示名変えた人などは action 属性のところを適宜修正してください。
KeePassPasswordAutoType アクションはこの後作ります。

4. UA スクリプトを作る
個人的に某サイトで毎度やる作業に「イーッ!!」となったので作りました。
ログイン状態であっても何らかの作業時に本人確認のためにパスワードだけ求めるサイト用です。
この場合毎度 KeePass ウィンドウを表示させて、該当のエントリを探して、パスワードをコピーして、(時間内に)貼り付けて…って操作が必要で面倒いのです。
Amazon のように ID(メールアドレス) 部分もテキストボックスだと、トリプルクリックで全選択状態にした後、自動入力でもおkなんですけどね。

KeePassPasswordAutoType.js

(function() {
	var d = document; ae = d.activeElement;
	
	ae.setAttribute("tabindex", 256);
	
	var ipt = d.createElement("input");
	ipt.id = "dummy2keepass";
	ipt.type = "text";
	ipt.style.width = 0;
	ipt.setAttribute("tabindex", 255);
	ae.parentNode.insertBefore(ipt, ae);
	
	d.getElementById("dummy2keepass").focus();
	
	sleipnir.api.ExecuteAction("SAE_KeePassGlobalAutoType");
	
})();

パスワードボックスの前にダミーのテキストボックスを作って、互いを taabindex 属性で連番にして、ダミーのテキストボックスにフォーカスを当て自動入力を実行するという流れです。
まぁ、いくつかのサイトでしか試してないんでちゃんと動かなかったらゴメンナサイ。

次回予定

KeePass で他のブラウザ含めての良いネタがあるのでそれを書こうかな。
できれば、近日中にw
[追記(2014 Sep. 30th 23:05)]
書きました。
KeePass プラグインの(適当)紹介
[追記終了]

*1:単純に7にメジャーアップデートだったらどうしようw

*2:AHK 使う場合は exe 化して、UA スクリプトから呼び出せばいいかと