Freeware zum Messen der Tastendruckdauer

Ich suche nach Freeware, um die Dauer eines Tastendrucks oder Mausklicks zu messen, beides würde funktionieren. Hat jemand eine Idee?

Matlab-Toolboxen sind für mich leider nutzlos.

Schade, dass Matlab für Sie nicht von Nutzen ist - Die PTB-3-Toolbox enthält Funktionen speziell zum Aufzeichnen von Tastenanschlägen, die sogar ziemlich genaue Reaktionszeitmessungen auf einem Windows-Betriebssystem ermöglichen. Es gibt jedoch andere Benutzer auf dieser Website, die möglicherweise hilfreich sind. Mal sehen, was kommt!
Danke vielmals! Es ist zumindest gut zu wissen, dass dies funktionieren würde, wenn sonst niemand eine Idee hat.
Was würde dies beim Studium der Psychophysik verwenden?
Es kann für Dinge verwendet werden, an denen in diesem Artikel gearbeitet wurde, "Eingabedauer des Tastendrucks geändert nach submaximalen isometrischen Fingerübungen", oder ich habe auch die Schreibgeschwindigkeit für jedes Zeichen gesehen. Ich verwende es für etwas anderes, mein Gerät codiert Reize als Tastaturanschläge, daher kann ich verschiedene Reize unterscheiden und die Anwendungszeit messen.
@Nathalie sind Ihre Indizes von Interesse die gleichen wie die, die in Studien zur Dynamik von Tastenanschlägen verwendet werden, z. B. Flugzeit, Verweilzeit?
@ AliceD PTB-3 läuft auf Octave, ist also eine gültige Antwort.
@StrongBad - Tut es das? Dank dafür! Ich könnte dann doch noch meine 2 Cent dazu geben :D
@AliceD Ich werde dir eine positive Stimme geben, nachdem du diese Kommentare beantwortet und aufgeräumt hast;)

Antworten (3)

Psychopy ( http://psychopy.org ) kann dies tun. Es kann dies auf zwei Arten tun.

  1. Mit iohub. Iohub ist eine unglaublich leistungsstarke Methode, um Informationen über jede Art von Eingabe in Ihr System zu erhalten, von Tastatur, Maus, Eye-Trackern usw. Sie können die Dokumentation für Tastatur hier einsehen .

    from psychopy.iohub import launchHubServer
    io = launchHubServer()
    keyboard = io.devices.keyboard  # handy name
    
    print 'start pressing a key now'
    key_info = keyboard.waitForReleases()[0]  # Just grab first release, even if there are multiple
    print 'Press time was', key_info.duration
    print '... and BTW, all key event info was', key_info
    
  2. Pyglet verwenden:

    from psychopy import visual, event, core
    win = visual.Window()  # Disadvantage: you need to have a window open to record it.
    clock = core.Clock()
    
    # Start listening
    print 'start pressing a key now'
    key, time = event.waitKeys(timeStamped=True)[0]
    clock.reset()  # Key down time
    while event.getKeys():
        pass
    print 'key lasted', clock.getTime(), 'seconds'
    

Wenn das Messen von Tastenanschlägen das einzige ist, was Sie brauchen, kann Psychopy ein bisschen schwer sein, da es für die Durchführung vollständiger Experimente gedacht ist, aber es wird die Arbeit erledigen!

Ich fing gerade an, diese Frage in Bezug auf PsychoPy zu beantworten :) +1
Danke schön! Habe zuerst die Pyglet-Lösung ausprobiert, weil das Öffnen eines neuen Fensters für mich noch besser ist. Es funktioniert perfekt!
Beim ersten Versuch ist ein Fehler beim Start des Hub-Servers aufgetreten. Nach dem Einbinden from psychopy.iohub import launchHubServerfunktioniert es super. Danke.
Ich habe mich gefragt, ob es einen Unterschied in der Genauigkeit zwischen diesen beiden Lösungen gibt. Ich habe danach gesucht, aber keine Daten für Windows gefunden. Weiß jemand etwas darüber?

Dank Jonas Londelov konnte ich das Skript zum Messen mehrerer Tasten umschreiben, bis esc gedrückt wird, und die Tastendauer, die Taste und die Informationen in eine Excel-Tabelle schreiben. Es ist vielleicht nicht sehr gut geschrieben, ich bin ein Python-Anfänger, aber es ist nützlich. Vielleicht braucht es noch jemand.

from __future__ import division
from psychopy import visual, event, core, data, iohub
from psychopy.iohub import launchHubServer 
io = iohub.launchHubServer
import csv
io = launchHubServer()
keyboard = io.devices.keyboard  # handy name
count = 0
keyinfo = ""
duration = 0
key = ""
time = core.getTime()
date = data.getDateStr(format='%Y_%b_%d_%H%M')#(format="%Y_%m_%d %H:%M (Year_Month_Day Hour:Min)")

io.clearEvents('all')
win = visual.Window([400, 400])
msg = visual.TextStim(win, text='press a key\n < esc > to quit')
msg.draw()
win.flip()

datafile = open("touch duration.csv", "wb") #$not overwriting but longer
writer = csv.writer(datafile, delimiter=";")
# create output file header
writer.writerow([
    date,
    "round", 
    "keyinfo", 
    "duration",
    "key",
    ])

while key not in ['escape', 'esc']:
    key_info = keyboard.waitForReleases()[0]  # Just grab first release, even if there are multiple
    count += 1
    key = key_info.key
    keyinfo = key_info
    duration = key_info.duration
    key = key_info.key
    print 'round number:' , count
    print key_info
    print 'Press time was', key_info.duration
    print 'key', key_info.key
    writer.writerow([
    "",
    count, 
    keyinfo, 
    duration,
    key,
    ])
Sie können dies vereinfachen. Zuerst nur eine import-Zeile: from psychopy import visual, event, core, data, iohubund dann do io = iohub.launchHubServer. Zweitens müssen Sie nicht win.closeanrufen data.file.closeund core.quit. Dies geschieht automatisch, wenn das Skript geschlossen wird. Drittens definieren Sie einige Variablen neu, zB timeund dateusw. keyLöschen Sie einfach die erste, da sie sowieso "überschrieben" wird.
Vielen Dank, ich habe die Antwort bearbeitet, um Ihre Korrekturen aufzunehmen.

Wenn Genauigkeit wichtig ist, versuchen Sie es vielleicht mit dem unter der GPL stehenden TScope, einer C-Bibliothek; Es gibt ein Papier darüber (leider für die alte Version) mit einer mäßigen Anzahl von Zitaten. Es wird auch gepflegt ( aktuelle Version ist 5 ) und sie haben ein Beispiel, das die Dauer des Tastendrucks misst . Es ist einfach zu bedienen, da es alles enthält, was Sie unter Windows benötigen, einschließlich einer angepassten Version von Notepad ++ mit Verknüpfungen zum Kompilieren und Ausführen eines Programms. Das Seltsame ist, dass die Beispiele von der Website im 145-Mb-Paket zu fehlen scheinen, aber damit kompiliert funktionieren.

Ich habe keine Hochgeschwindigkeitskamera, um die Genauigkeit zu testen, aber bei einem kurzen Test an mir selbst konnte ich keine großen Abweichungen feststellen. Mit einer PS/2-Tastatur mit langem Hub bekomme ich etwa 95 ms Druckzeit (das scheint dem von Ihnen erwähnten Papier ebenbürtig zu sein ). Mit einer USB-Tastatur mit kurzem Hub komme ich auf nur 55 ms, wenn ich mich speziell darauf konzentriere, nur kurze Hübe zu machen (und dies scheint auf Kosten der Reaktionszeit zu gehen, ich muss mich irgendwie "vorbereiten", um einen wirklich kurzen Hub zu machen ; beim normalen Tippen habe ich immer noch die Angewohnheit, länger zu drücken, obwohl diese Tastatur es nicht braucht). Hier ist ein Beispiel für das Spätere:

Geben Sie hier die Bildbeschreibung ein