Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
24 juin 2005 à 21:50
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 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 ?
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]
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 20091 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]
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 20091 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]
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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
Vous n’avez pas trouvé la réponse que vous recherchez ?