Anzahl der gerade gedrückten Tasten

RungetSvohu

Bekanntes Mitglied
Hallo Leute,

für mein aktuelles Programm müsste ich abfragen können, wie viele Tasten gerade auf der Tastatur gedrückt sind. Dieser Ansatz funktioniert leider nicht:

Java:
		@Override
		public void keyPressed(KeyEvent key) {
			pressedKeys++;
			}
		}

		@Override
		public void keyReleased(KeyEvent arg0) {
			pressedKeys--;
		}

Grund ist, dass keyPressed immer wieder ausgelöst wird, wenn eine Taste unten bleibt.

Man könnte es jedoch so machen, dass man sich für jeden getKeyCode() individuell merkt, ob diese gerade unten ist oder nicht. Geht es noch leichter?
 

Bernd Hohmann

Top Contributor
Einfacher nicht, aber es gibt einen leichten Weg indem man ein BitSet missbraucht:

Java:
   private BitSet bsKeys = new BitSet(256);

    public void keyPressed(KeyEvent e) {
        bsKeys.set(e.getKeyCode());
    }

    public void keyReleased(final KeyEvent event) {
        bsKeys.clear(e.getKeyCode());
    }

Die Anzahl der gleichzeitig gesetzten Bits (also gedrücken Tasten) bekommst Du dann über .cardinality() des BitSet heraus.

Bernd
 
B

bone2

Gast
PS2 oder USB? Das ganze passiert auf tiefster Hard bzw Softwareebene, und da hat man mit java in seiner vm immer probleme.
Bei PS2 kann man nicht fragen, Interrupt, die Tastatur meldet sich wenn was los ist.
USB benutzt pulling, aber das macht das OS/Mainboard für dich.

klappt es nicht, wenn du bei keypressed die taste die gedrückt wurde speicherst und die wieder aus dem set löscht wenn sie losgelassen wird?
 

Ark

Top Contributor
Vorsicht, viele Tastaturen sind intern bzw. durch ihre Controller derart "verkabelt"/eingeschränkt, dass bestimmte Tastenkombinationen nicht eingegeben werden können. (Man sollte meinen, dass spezielle "Gamer-Tastaturen" dieses Problem nicht haben.) Außerdem gibt es wohl USB-Protokolle, die nur maximal 6 gleichzeitig gedrückte Tasten unterstützen; bei PS/2 soll es keine solche Einschränkung geben.

Einfach mal im Internet suchen: keyboard matrix limit HID USB PS/2

Hier wird das etwas erklärt, dort gibt es auch eine Testseite, wo man direkt im Browser testen kann, welche Kombinationen gehen und welche nicht.

Beispiel: Auf meiner Tastatur werden YXCV (deutsch/Deutschland-Tastatur) zusammen erkannt, XCVB und überhaupt viele andere Kombinationen mit B und eine der unteren Buchstaben nicht. FGB dagegen wird wieder erkannt …

Hier eine Erklärung mit Bildchen.

Ark
 
B

bone2

Gast
(Man sollte meinen, dass spezielle "Gamer-Tastaturen" dieses Problem nicht haben.)
manche mechanische PS/2 haben das Problem nicht
Außerdem gibt es wohl USB-Protokolle, die nur maximal 6 gleichzeitig gedrückte Tasten unterstützen;
immer nur 6, bei jedem USB
bei PS/2 soll es keine solche Einschränkung geben.
auch da ist es vom Layout auf der Tastatur abhängig, ob man Combos drücken kann. Allerdings hat PS2 definitiv kein Problem mit der Anzahl der Tasten, das ganze läuft CPU-nah über interrupts.

SteelSeries 6Gv2 mechanische Gaming Tastatur
n-key-rollover, allerdings geht Windows in die Knie und spackt rum, wenn man mit beiden Händen die ganze Tastatur drückt. :)

USB vs PS/2 PS/2 oder USB? Vorurteil oder Einbildung?
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
BeginnerJava Anzahl der 5 % - Zuwächse ausgeben Allgemeine Java-Themen 6
M Wie übergebe ich den Zähler für die Anzahl Rekursionsschritte korrekt? Allgemeine Java-Themen 2
S BlockingQueue mit dynamischer Anpassung der Anzahl von Producer und Consumer Threads Allgemeine Java-Themen 1
S Iterable<?> anzahl der Element Allgemeine Java-Themen 14
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
M Relative Anzahl an verschachtelten Forschleifen Allgemeine Java-Themen 8
The Pi Anzahl der Gewichtscheiben berechnen Allgemeine Java-Themen 11
P Threads Parallelisierte DB-Abfragen mit variabler Anzahl an Threads Allgemeine Java-Themen 4
Soloeco BubbleSort Anzahl der Vertauschungen Allgemeine Java-Themen 9
J Anzahl geöffneter Plugins Allgemeine Java-Themen 3
A Anzahl an Threads Systemweit Allgemeine Java-Themen 2
J Anzahl von Möglichkeiten zur Verteilung von Kugeln in Behälter Allgemeine Java-Themen 3
P Erste Schritte Dynamische Anzahl von verschachtelten Schleifen Allgemeine Java-Themen 5
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
L Ermitteln der Anzahl an Lösungen von quatratischen Gleichungen (Sieb von Atkin) Allgemeine Java-Themen 1
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
P Anzahl vo Einträgen in verschiedenen Sets Allgemeine Java-Themen 3
J ermitteln der Anzahl der Monate Allgemeine Java-Themen 7
M Anzahl der Durchläufe einer Funktion errechnen Allgemeine Java-Themen 6
G Anzahl Primzahlen im Intervall Allgemeine Java-Themen 3
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
M Anzahl Farbwerte (RGB) im Array speichern - Problem Allgemeine Java-Themen 13
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
D unbekannte Anzahl checkboxes Allgemeine Java-Themen 2
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
Iron Monkey Anzahl der Monate ermitteln Allgemeine Java-Themen 17
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
R ArrayList -- Maximale Anzahl an Elementen Allgemeine Java-Themen 2
O Große Anzahl Bilder laden Allgemeine Java-Themen 7
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
V Java-Objekt. wie groß maximal ? anzahl der einträge Allgemeine Java-Themen 4
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
MQue Anzahl der Ziffern Allgemeine Java-Themen 13
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
MQue Anzahl der Kommastellen Allgemeine Java-Themen 6
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
F Anzahl der nachkommastellen bestimmen nur wie? Allgemeine Java-Themen 10
M Aktualisieren eines Chatprofils (Anzahl Minuten) Allgemeine Java-Themen 4
G Variable Anzahl JTextfleder Allgemeine Java-Themen 3
S Bandbreite/Anzahl Pakete messen Allgemeine Java-Themen 3
V String formatiert ausgeben ( gleiche Anzahl von Ziffern ) Allgemeine Java-Themen 5
padde479 Anzahl Methodenaufrufe Allgemeine Java-Themen 7
J Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile? Allgemeine Java-Themen 4
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
W PrepareStatement und Anzahl der Datensätze Allgemeine Java-Themen 2
rambozola anzahl zeichen in konsole eclipse begrenzt? Allgemeine Java-Themen 5
G anzahl "verwendeter" elemente eines arrays ermitte Allgemeine Java-Themen 2
M Anzahl der Threads pro Programm? Allgemeine Java-Themen 3
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7
V Anzahl der Zeilen in einem File Allgemeine Java-Themen 3
K anzahl laufender Threads Allgemeine Java-Themen 3
S Highlighting der gerade ausgeführten Codezeilen Allgemeine Java-Themen 10
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
L Leerzeichen zu string hinzufügen, um eine gerade zahl zu erhalten Allgemeine Java-Themen 9
J Textdatei auslesen, die gerade benutzt wird Allgemeine Java-Themen 8
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
P Pfad der gerade ausgeführten Jar-Datei auslesen Allgemeine Java-Themen 2
G Wie kriegt Klasse2 die Info, was Klassse1 gerade "macht Allgemeine Java-Themen 7
Nils_Langner Wo bin ich gerade? Reflections Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben