2011-10-04 104 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