KeyListener sous fedora core 3

Résolu
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 24 juin 2005 à 21:50
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 25 juin 2005 à 09:11
hello,





bon voici un petit code source le plus banal possible mais qui me pose des problemes:



import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;



import javax.swing.JFrame;

import javax.swing.SwingUtilities;



import static java.lang.System.out;



public class Test extends JFrame implements KeyListener{

private static final long serialVersionUID = 1802199483736051124L;

public Test(){

super("Test");

setSize(300, 300);

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

addKeyListener(this);

setVisible(true);

}

public static void main(String [] args){

SwingUtilities.invokeLater(new Runnable(){

public void run(){

new Test();

}

});

}

public void keyPressed(KeyEvent e) {

switch(e.getKeyCode()){

case KeyEvent.VK_RIGHT:

out.println("right pressed");

break;

default : break;

}

}

public void keyReleased(KeyEvent e) {

switch(e.getKeyCode()){

case KeyEvent.VK_RIGHT:

out.println("right released");

break;

default : break;

}

}

public void keyTyped(KeyEvent e) {}

}


Avant toute chose, le problème, à ma connaissance, ne se pose que sous
fedora core 3 (problème testé sous Windows XP, et Mandrake10)

En faît, sous fedora, lors d'une pression sur la touche "flèche droite"
ou une autre, je passe automatiquement par un keyReleased; je précise
qu'il s'agit d'une pression continue (la touche reste enfoncée, et
n'est pas relâchée)



Est-ce un bug de Java qui ne gère pas les Events sous fedora core3
comme il faut ? Y'a-t-il d'autres distributions qui posent problème
avec les keyEvent ?



Faut-il prévoir des drivers jni pour la gestion du clavier ?




WORA

5 réponses

cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
25 juin 2005 à 00:08
Donc c'est bien ce que je disais, c'est en fait le comportement normal sous un serveur X. Ça le fait sous Solaris et sous Linux.

C'est référencé comme un bug depuis maintenant pas mal de temps (juin
1998 !!!!), et c'est toujours sans solution officielle (voir http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4153069)



c'est quelque chose d'assez gênant nottament dans les jeux...



il faudrait voir si les keyPressed et keyReleased sont envoyés
régulièrement (c'est sans doute vrai, mais avec les priorités
d'execution, ça doit quand même pas mal fluctuer). Si c'est le cas, il
y a peut-être moyen de faire quelque chose de pas propre avec un timer,
même si ça impliquerait un petit temps de latence au moment où tu
relèves la touche...



sinon, JNI



A+
Dobel
[Une
fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour
trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
3
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
24 juin 2005 à 23:06
Je ne pense pas que ça vienne de la distribution... Plus probablement de l'environnement graphique...

En tout cas, pas de problème sur ma Gentoo ni sur les Fedora core 1 de mon école...

Dobel
[Une
fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour
trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
24 juin 2005 à 23:15
Je précise que j'ai fait ça sous X.org, avec une version 1.4.2



Il faut aussi remarqué que sous Windows et sous environnement X, la gestion des évennements clavier est différente.

Par exemple, sous win, si tu enfonces une touche, la maintiens, puis la
relâches, tu as normalement un seul keypressed, et un keyreleassed à la
fin.

Sous X, le comportement habituel, c'est un keypressed, puis après un
certain temps, une succession de keyreleassed, keypressed tant que tu
n'as pas relâché la touche.



D'après ce que j'ai compris, tu dis ne pas avoir de keypressed lorsque
tu enfonces et maintient la touche, ce qui est en effet anormal

Dobel
[Une
fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour
trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
24 juin 2005 à 23:40
merci de repondre,



Dobel dit :

D'après ce que j'ai compris, tu dis ne pas avoir de keypressed
lorsque tu enfonces et maintient la touche, ce qui est en effet anormal




nan mais enfaite j'ai un keypressed et une suite de keyreleased et
keypressed alors que la touche reste enfoncé ce qui reste lourds alors
que j'ai un comportement specifique lors d'un keypressed et un autre
lors d'un keyreleased.........



à ce jour la seul soluce trouvé est le dev d'un driver en C implementé par jni mais ca implique pas mal de contrainte

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 juin 2005 à 09:11
hello,



oki merci pour les ptites info je vais pouvoir commencer à me faire une raison maintenant lol


WORA
0
Rejoignez-nous