2012-02-16 7 views
2

トピックから問題に対応する解決策はありますか?例えばを押すとWindowsキー+スペース、私が取得:"Windowsキー" + "他のキー" - Javaは "他のキー"を検出しません

keyTypedに:Windowsの

が、私はそれがあるべき推測:

keyTypedに:Windowsの
keyTypedに:スペース
keyReleased:Windowsの
keyReleased:スペース

マイコード:

 <Java component>.addKeyListener(new KeyListener() { 

     @Override 
     public void keyTyped(KeyEvent e) { 
      e.consume(); 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
      System.out.println("keyTyped: " + KeyEvent.getKeyText(e.getKeyCode())); 
      e.consume(); 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
      System.out.println("keyReleased: " + KeyEvent.getKeyText(e.getKeyCode())); 
      e.consume(); 
     } 
    }); 

ありがとう!

答えて

4

WINDOWS + Spaceは、Windowsシステムの有効なグローバルホットキーです。したがって、プログラムに通知しません。また、WINDOWSキーがホットキーではないため(リリース時にのみ展開されます)、最初のストロークを検出します。それがあなたにはリリースされない理由です。

Javaでシステム全体のフックが許可されているのかどうかはわかりませんが、おそらくJNIを使​​いこなす必要があります。

+0

私はJNAを知っています。しかし、私はイベント/フックに関連する作業コードを書くことはできません。 – peter

関連する問題