Problem with Key capture

redeux

Mitglied
Hi!

Hab ein riesiges Problem wobei ich leider 0 Ahnung hab woran das liegen könnte... Auch google hat mir nichts dazu ausgespuckt (bzw. konnte ich die Suche nicht richtig einschränken).

Und zwar: ich habe ein kleines Projekt, bei dem ich 5 Tasten zur Verfügung hab und dann mit einer weiteren Taste bestätige. Dafür habe ich die Tasten asdfg genommen und die Leertaste als Bestätigung. Nun muss ich beim Bestätigen erkennen, welche Tasten gedrückt sind (dabei sollen Kombinationen möglich sein)

Also beim Key-event pressed den Button abgespeichert, und bei release gelöscht. Funktioniert auch bei allen Tastenkombinationen die die Tasten asdf beinhalten. Allerdings gibt es Probleme wenn ich die Taste f und g zugleich drücken will (bzw. drücke ich sie hintereinander, aber erkannt wird immer nur die zuerst gedrückte).

Problem gibts dabei erst ab 3 Tasten. Alleine bzw. in Kombination mit einer beliebigen Taste funktioniert alles (sogar f + g). Aber ab 3 gibts Probleme:

Kann man sich in etwa so vorstellen:

a+s+d = ok
a+s+f = ok
a+s+g = ok
a+d+f = ok
a+d+g = ok
a+f+g = fehler
s+d+f = ok
s+f+g = ok (bei Taste s funktioniert f+g komischerweise...)
d+f+g = fehler

Bei allen 5 Tasten fehlt sowieso immer eine (entweder f oder g, je nachdem was zuletzt gedrückt)

Hab auch schon ein eigenes Projekt gemacht, nur um das zu testen, kam das selbe dabei raus. Hab auch schon 3 Tastaturen und 2 verschieden Rechner hinter mir, hat auch nix gebracht.

2 Tastaturen angeschlossen, asdf auf der einen, g auf der anderen gedrückt = das funktioniert.

Hoffe ihr könnt mir dabei weiterhelfen.

Lg
 
Ich hoffe das passt, is ein einfaches Form mit nem Textfeld (txtOutput):

Code:
    private TreeSet<Character> pressedKeys = new TreeSet<Character>();

    private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
        pressedKeys.add(evt.getKeyChar());
        showKeys();
    }                               

    private void formKeyReleased(java.awt.event.KeyEvent evt) {                                 
        pressedKeys.remove(evt.getKeyChar());
        showKeys();
    }                                

    private void showKeys() {
        StringBuilder sb = new StringBuilder();
        for (Character c : pressedKeys) {
        sb.append(c);
        }
        txtOutput.setText(sb.toString());
    }

txtOutput is mein Textfeld im Form, das is eigentlich der ganze Code den ich eingefügt hab... Funktioniert auch alles bis auf die oben aufgezählten Kombinationen.
 
So - hab ne neue Erkenntnis, auf einem Mac Pro funktioniert es ohne Problem (auf 2 Macs getestet). Auf einem Asus Eee Netbook funktionierte die 3er Combo d+f+g nicht, alle anderen 3er Combos funktionierten (die 4er und 5er jedoch nicht).

Hat keiner einen Lösungsvorschlag? Vl einen Vorschlag wie man das anders implementieren könnte?
 

Neue Themen


Zurück
Oben