Tastenanschlag Zeit messen

Fraagi3

Lt. Junior Grade
Registriert
Okt. 2015
Beiträge
319
Moin,

ich bin auf der Suche nach einem Programm welches mir die zeit in ms anzeigt wie lange eine taste gedrückt wird.
Ich will Herausfinden was die kürzeste Zeit ist. Quasi die release time.

Wäre cool wenn mir jemand helfen kann.
 
Ich glaube das wird nur selbst programmiert im Rahmen von Treiberentwicklung zB bei Linux (ähnlich auch bei Windows) oder Input-Lag Tests zB bei GamersNexus auf Youtube: Automated System Latency Test Methodology
(Hintergrund auch: "Key Release Event" - dokumentiert linux kbd ) .

Bei Input-Lag Tests wird zB mit modifizierter Hardware mit LED + High-Speed Kameras gearbeitet.
Beim "Release" wird die Taste wieder nicht beleuchtet und die Zeit bis zum "OS Event" der in der Anwendung ankommt gemessen.

Im Bios oder Tastatureinstellungen kann im OS die Wiederholrate verändert werden - "keyboard repeat rate, keyboard delay rate".
 
Gibt es den referenz Werte welches die durchschnittliche Zeiten sind die eine taste unten bleibt beim schreiben?
 
Lässt sich auch als Webseite erstellen:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        textarea {
            width: 100%;
            min-height: 10rem;
            font-family: Fira Code, monospace;
        }
        #log {
            min-height: 40rem;
        }
    </style>
</head>
<body>
    <h1>Eingabe</h1>
    <textarea id="input" tabindex="0"></textarea>
    <h1>Log</h1>
    <textarea readonly id="log"></textarea>
    <script>
        let buffer = [];
        let input = document.querySelector("#input");
        let log = document.querySelector("#log");
        const getInfo = function( e, type )
        {
            return {
                when: window.performance.now(),
                key: e.key,
                keyCode: e.keyCode
            };
        }
        input.addEventListener("keydown",function( e )
        {
            let down = getInfo( e, "down" );
            buffer[down.keyCode] = down;
        });
        input.addEventListener("keyup",function(e)
        {
            let up = getInfo( e, "up" );
            let down = buffer[event.keyCode];
            delete buffer[event.keyCode];
            diff = up.when - down.when;
            log.innerHTML = "'" + down.key + "'" + " down to " + "'" + up.key + "'" + " up diff: " + diff + "ms \n" + log.innerHTML;
        });
    </script>
</body>
</html>
Die Frage ist nur, wie präzise es ist, da es ja wegen Spectre ein wenig eingedämmt wurde. Sonst müsste man auf ne andere Umsetzung setzen.
Code:
't' down to 't' up diff: 101ms 
's' down to 's' up diff: 130ms 
'e' down to 'e' up diff: 158ms 
'T' down to 't' up diff: 120ms 
'Shift' down to 'Shift' up diff: 107ms 
' ' down to ' ' up diff: 95ms 
'n' down to 'n' up diff: 95ms 
'i' down to 'i' up diff: 109ms 
'e' down to 'e' up diff: 108ms 
' ' down to ' ' up diff: 134ms 
't' down to 't' up diff: 110ms 
's' down to 's' up diff: 127ms 
'i' down to 'i' up diff: 102ms 
' ' down to ' ' up diff: 123ms 
's' down to 's' up diff: 169ms 
'a' down to 'a' up diff: 155ms 
'D' down to 'd' up diff: 131ms 
'Shift' down to 'Shift' up diff: 236ms
Im Firefox kann man das mittels privacy.reduceTimerPrecision wechseln. Der Log ist mit dem Wert auf true erstellt.
 
Naja - die Taste kann ja durch "Druck" auch länger unten bleiben.
Vielleicht die Videos und etwas Hardwarehintergrund lesen und entscheiden was genau und warum genau gemessen werden soll.
Auf Hardwareebene (innerhalb des Keyboards) gibt es zB je nach Bauart "Entprellung" , Polling Rate und pot. PS2 und. USB Unterschiede. (edit: quelle)

Hier steht zB auch über "keyboard latency"
It’s not a coincidence that the quickest keyboard measured also has the shortest key travel distance by a large margin
 
Ja den Kontakt selbst kannst du natürlich nicht abgreifen, aber auf OS-Ebene, wann eine Taste gedrückt und wann losgelassen wird, was natürlich die ganze Kette impliziert. Wenn man wirklich explizit die Taste selbst prüfen will, brauch man natürlich ein entsprechendes Bastel-Setup mit LED und High-Speed-Kamera.
 
das ist genau was ich gesucht habe! Danke!!
 
Nimm mal lieber das:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        textarea {
            width: 100%;
            min-height: 10rem;
            font-family: Fira Code, monospace;
        }
        #log {
            min-height: 40rem;
        }
    </style>
</head>
<body>
    <h1>Eingabe</h1>
    <textarea id="input" tabindex="0"></textarea>
    <h1>Log</h1>
    <textarea readonly id="log"></textarea>
    <script>
        let buffer = [];
        let input = document.querySelector("#input");
        let log = document.querySelector("#log");
        const getInfo = function( e )
        {
            return {
                when: window.performance.now(),
                key: e.key,
                keyCode: e.keyCode
            };
        }
        input.addEventListener("keydown",function( e )
        {
            let down = getInfo( e );
            if( !buffer[down.keyCode] )
            {
                buffer[down.keyCode] = down;
            }
        });
        input.addEventListener("keyup",function(e)
        {
            let up = getInfo( e );
            let down = buffer[event.keyCode];
            delete buffer[event.keyCode];
            diff = up.when - down.when;
            log.innerHTML = "'" + down.key + "'" + " down to " + "'" + up.key + "'" + " up diff: " + diff + "ms \n" + log.innerHTML;
        });
    </script>
</body>
</html>
Beim Vorherigen wurde das Down-Event beim Press immer überschrieben (Firefox triggert mir bei Press implizit auch Down). Das Halten geht hier nun richtig.
Code:
'd' down to 'd' up diff: 1626ms 
't' down to 't' up diff: 101ms 
's' down to 's' up diff: 112ms 
'e' down to 'e' up diff: 160ms 
'T' down to 't' up diff: 109ms 
'Shift' down to 'Shift' up diff: 92ms 
' ' down to ' ' up diff: 104ms 
'n' down to 'n' up diff: 101ms 
'i' down to 'i' up diff: 102ms 
'e' down to 'e' up diff: 108ms 
' ' down to ' ' up diff: 118ms 
't' down to 't' up diff: 105ms 
's' down to 's' up diff: 126ms 
'i' down to 'i' up diff: 98ms 
' ' down to ' ' up diff: 112ms 
's' down to 's' up diff: 136ms 
'a' down to 'a' up diff: 140ms 
'D' down to 'd' up diff: 106ms 
'Shift' down to 'Shift' up diff: 146ms
 
  • Gefällt mir
Reaktionen: Fraagi3
Zurück
Oben