2011-02-01 12 views
1

Mozillaエクステンションをビルドしていて、sendKeyEvent関数を使用してウィンドウのキーストロークを送信する必要があります。私はウィンドウに1回のキーストロークを送信すると動作しますが、マルチキーストロークパターン(つまり、Shift + 3で#文字を送信)を送信しようとすると機能しません。誰もがウィンドウに複数のキーを送信する方法を考えていますか?私は、次のコードを試してみましたが、それは動作していないようです:Mozilla/FirefoxエクステンションでsendKeyEventを使用してコンビネーションキーストロークを送信する

var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils); 
utils.sendKeyEvent("keydown", 51, 51, 4); 
utils.sendKeyEvent("keypress", 51, 51, 4); 
utils.sendKeyEvent("keyup", 51, 51, 4); 

私はウェブを研究したが、私は、マルチキーの組み合わせのいずれかの例を見つけることができません。

UP:私がこの質問をした理由は、私がカスタムFF拡張モジュールをビルドしてウェブサイトとやり取りするためです。ウェブサイトにはいくつかのショートカットキーがあり、拡張機能ではショートカットキーイベントをいくつかトリガーしたいと考えています。このようなショートカットの1つは、SHIFT + 3(シャープ記号)です。だから私は、彼らが次のようなものを持っていると信じてサイト上:

function key_event(evt) 
{ 
    if(evt.keyCode == 16) { 
     if(evt.keyCode == 51){ 
      FIRE EVENT 
     } 
    } 
} 

今、誰もがsendKeyEventがそれをトリガーしていないようですので、私はJavaScriptでこのイベントをトリガーすることができる方法を知っていますか?私の最初の考えは、SHIFTキーを押して3キーを押す間隔を設定するwhileループを作成することです。ある時点では、同時に起動する必要がありますか?これが最善の方法であるかどうかはわかりません。どんな指導/アイデアも大歓迎です!

お時間をいただきありがとうございます。

+0

、あなたはそのASCIIコードを送信しようとしたのですか?つまり、51の代わりに** 35 **を使用します。 –

+0

こんにちはブロック、提案のおかげで、残念ながらそれは動作しませんでした。 1)サイトが聞いている、2)キーイベントをトリガするために何が起こる必要があるのか​​考えてみよう – thiesdiggity

+0

ちょっと@Brock、あなたは男です!あなたのソリューションは実際に働いた、上記の私のコメントについては申し訳ありません。それを回答として追加したい場合、私はそれを解決済みとしてマークし、あなたにクレジットを与えます。再度、感謝します! – thiesdiggity

答えて

1

Octothorpe( "#character")の場合、そのASCIIコードを送信してみてください。つまり、のような51

何かの代わりに35を使用:シャープ( "#文字")については

utils.sendKeyEvent("keypress", 35, 35, 4); 
関連する問題