greasemonkeyでキー入力をもらう

前にキー入力の取り方が微妙なんじゃないかとか書いた*1けど。最近、Fast look up JP and ENのソースをじーっと見てたら、意外と普通にやってる気もしたのでメモ。この辺はブラウザ依存が激しいし、キー入力の辺りだけ取り出したりしてるので、この方法でいいのかは不明だけど、まあ面倒な事は考えないで色々試してみた。

適当に試してみたもの。いつも直ぐキーコード忘れるので、ついでに調べるよう
Alt+kでキーコードテスト

// ==UserScript==
// @name           key_test
// @namespace      himadatanode
// @include        *
// ==/UserScript==


//keycodeを調べる用
function keyCode(evt){
	var keyc = "keyCode:" + evt.keyCode;
	var alt  = "  alt:" + evt.altKey;
	var ctrl = " Ctrl:" + evt.ctrlKey;
	if(evt.keyCode != 18 && evt.keyCode != 17 && evt.keyCode != 16){
		alert(keyc +  alt + ctrl);
	}
	return false;
}
// alt:18 ctrl:17 shift:16
document.addEventListener("keydown",toggleTest,true);


//キー調べるのをtoggleさせるよう
var keytestflag = false;
function toggleTest(evt){
	if(evt.keyCode == 75 && evt.ctrlKey == false && evt.altKey == true){
		if(keytestflag == false){
			keytestflag = true;
			document.addEventListener("keydown",keyCode,false);}
		else {
			keytestflag = false;
			document.removeEventListener("keydown",keyCode,false);}
	}
}

後、こことかが参考になりそう
http://jsajax.com/Articles.aspx?aid=393