Медиа / FN ключи в Java - PullRequest
       28

Медиа / FN ключи в Java

3 голосов
/ 04 октября 2011

В настоящее время я разрабатываю мультимедийное приложение на Java, используя привязки gstreamer для Java.Все идет хорошо, за исключением одного небольшого вопроса, касающегося клавиатуры, в частности клавиш мультимедиа (например, воспроизведение / пауза, назад, далее).

У меня есть Действия, которые отлично работают как кнопки / пункты меню для этих функций, инадеялся разрешить использование клавиш, которые есть на некоторых клавиатурах (часто на ноутбуках).Однако я не смог найти andthing в 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();  
    }

}

1 Ответ

4 голосов
/ 04 октября 2011

Если клавиши e.getKeyChar() и e.getKeyCode() ничего не возвращают при нажатии этих клавиш, я не знаю другого способа получить эти события через стандартную библиотеку Java, кроме с использованием JNI чтобы получить коды на более низком уровне.

Вы, кажется, находитесь на правильном пути, пытаясь получить коды клавиш при нажатии клавиши, и именно так вы бы открыли коды клавиш, когда не знаете, какая правильная константа в Java.

Кроме этого, этот вопрос предлагает некоторые возможности (хотя я не уверен, работает ли он только с устройствами Microsoft IntelliType или он будет работать кроссплатформенно). Например, когда я использую клавиатуру Microsoft IntelliType на моем Mac, клавиши мультимедиа работают нормально.

...