2011-10-04 105 views
3

我目前正在使用java的gstreamer綁定在java中開發媒體應用程序。除了關於鍵盤的一個小問題,特別是媒體鍵(例如播放/暫停,返回,下一個)之外,一切都進行得很順利。java中的媒體/ fn鍵

我有這些功能的按鈕/菜單項正常工作,並希望允許使用某些鍵盤上的鍵(通常在筆記本電腦上)。但是,我無法在java.awt.event.KeyEvent中找到用於表示這些鍵的東西。我試着運行下面的代碼片段,它對大多數密鑰(包括f1-12)都能正常工作,但在'fn'被持有時沒有響應'fn'和媒體密鑰。

有誰知道如何讓這些鍵工作?

代碼:

import javax.swing.*; 
import java.awt.event.*; 

public class Key extends JFrame{ 

    public Key(){ 

     JTextField f = new JTextField(50); 
     f.addKeyListener(new KeyAdapter(){ 
      public void keyPressed(KeyEvent e){ 
       System.out.printf("%s : %d \n", e.getKeyChar(), e.getKeyCode()); 
      } 
     }); 
     setContentPane(f); 
     pack(); 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setVisible(true); 

    } 

    public static void main(String[] args){ 
     new Key(); 
    } 

} 

回答

4

如果按那些鍵,並e.getKeyChar()e.getKeyCode()不返回任何東西,我不知道任何其他方式獲得通過標準的Java庫的事件,其他而不是using JNI以獲得較低級別的代碼。

您似乎正處於正確的軌道上,試圖在按下按鍵時獲取關鍵代碼,當您不知道Java中適當的常量時,如何發現關鍵代碼。

除此之外,this question似乎提供了一些可能性(雖然我不確定這隻適用於Microsoft IntelliType設備,或者它可以跨平臺工作)。例如,當我在我的Mac上使用Microsoft IntelliType鍵盤時,媒體鍵似乎工作得很好。

+0

我很害怕你會這樣說:/我想問一句 – James

+0

嗯,更新了我的答案。你可能能夠使用JIntelliType的東西。 – jefflunt