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.
Psychopy ( http://psychopy.org ) kann dies tun. Es kann dies auf zwei Arten tun.
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
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!
from psychopy.iohub import launchHubServer
funktioniert es super. Danke.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,
])
from psychopy import visual, event, core, data, iohub
und dann do io = iohub.launchHubServer
. Zweitens müssen Sie nicht win.close
anrufen data.file.close
und core.quit
. Dies geschieht automatisch, wenn das Skript geschlossen wird. Drittens definieren Sie einige Variablen neu, zB time
und date
usw. key
Löschen Sie einfach die erste, da sie sowieso "überschrieben" wird.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:
AliceD
Natalie
Ocker
Natalie
Faustus
StrongBad
AliceD
StrongBad