Wenn ich eine beliebige Taste gedrückt halte, sendet der PC so viele Befehle, als wenn ich mehrmals hintereinander die Taste drücke? (Windows10)

4 Antworten

Spiele funktionieren hier etwas anders als "normale" Programme mit grafischer Oberfläche.

Bei letzteren kann man die Wiederholfrequenz anpassen, aber Spiele nutzen eine völlig andere API, sodass man hier eigentlich nichts ändern kann, sofern es nicht im Spiel vorgesehen ist.


alex34523 
Beitragsersteller
 06.07.2017, 14:42

Und das ist das Problem. Wenn ich ''W'' gedrückt halte entstehen bei Schreibprogrammen automatisch viele Buchstaben, das ist ja auch normal. Wenn ich jedoch in einem x beliebigen Spiel eine Taste gedrückt halte, kommt diese Aktion auch mehrmals zum Vorschein anstatt nur einmal. Wie beim Menü, was sich dann viele Mal öffnet und schließt obwohl ich die Taste nur einmal gedrückt halte.

TeeTier  06.07.2017, 17:03
@alex34523

Das klingt danach, als ob die Entwickler einen Timeout für die Tastenwiederholung zu gering angesetzt haben. Wenn du bei deinem Spiel also keine Einstellmöglichkeit findest, wird man da vermutlich auch nichts machen können.

Wenn ich eine beliebige Taste gedrückt halte,
sendet der PC so viele Befehle, als wenn ich mehrmals hintereinander
die Taste drücke?

Jein... Wenn du die Taste drückst, wird zunächst ein KeyDown (Taste unten) Signal abgesetzt, dann (das Interval ist ggf. von einigen Einstellungen abhängig), wenn die Taste gehalten wird, im regelmäßigen Interval ein KeyHold bzw. KeyRepeat (Taste gehalten / Taste wiederholt) Signal und sobald die Taste losgelassen wird gibts noch KeyUp (Taste oben).

In einem "normalen" Programm, wird für gewöhnlich mit KeyDown und KeyHold gearbeitet, z.B. um mehrere Buchstaben hintereinander zu "tippen".

Bei manchen Spielen dagegen wird das etwas anders gehandhabt, da hast du z.B. eine Hauptschleife, in der folgendes steht: "Wenn die Taste XYZ gedrückt und das Menü sichtbar ist, blende das Menü aus; Wenn allerdings nur die Taste XYZ gedrückt ist, dann zeige das Menü an." diese Anweisung wird dann in jedem Durchlauf der Haupschleife ausgeführt, also je nach dem alle 50~250 Millisekunden plus/minus irgedwas...

Im Grunde läufs also so ab: KeyDown, kurze Wartezeit, KeyHold, KeyHold, ..., KeyUp

Wie genau das jeweilige Programm/Spiel diese Signale verarbeitet hängt dabei davon ab, wie es programmiert wurde...

Das kommt auf die eingestellte Tastenwiederholfrequenz an. Wenn du sehr schnell drückst bist du wahrscheinlich schneller als wenn du die Taste hälst.

Wenn du es nur 1 mal drückst udn abwartest, sollte es sich doch auch nur 1 mal schliessen. Wenn du 10 mal drückst weil es dir nicht schnell genug geht, Schiesst und öffnet er halt dementsprechend oft.


alex34523 
Beitragsersteller
 06.07.2017, 14:23

Ich gib nochmal ein anderes Beispiel vllt wird es dann deutlicher.

Wenn ich ''w'' gedrückt halte um mich mit einem Charakter fortzubewegen, hält er an und läuft weiter. Dann hält er wieder an und läuft weiter. Diese Aktion läuft innerhalb von 1 Sekunde mehrmals ab