Estoy buscando software gratuito para medir la duración de una pulsación de tecla o un clic del mouse, ambos funcionarían. ¿Alguien tiene alguna idea?
Lamentablemente, las cajas de herramientas de Matlab no me sirven.
Psychopy ( http://psychopy.org ) puede hacer esto. Puede hacerlo de dos maneras.
Usando iohub. Iohub es una forma increíblemente poderosa de obtener información sobre cualquier tipo de entrada a su sistema, desde el teclado, el mouse, los rastreadores oculares, etc. Puede ver la documentación para el teclado aquí .
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
Usando cochinillo:
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'
Si medir las pulsaciones de teclas es lo único que necesita, la psicocopia puede ser un poco pesada ya que está diseñada para ejecutar experimentos completos, ¡pero hará el trabajo!
from psychopy.iohub import launchHubServer
funciona muy bien. Gracias.Gracias a Jonas Londelov, pude reescribir el script para medir varias teclas hasta que se presiona esc y escribir la duración de la tecla, la clave y la información en una hoja de Excel. Puede que no esté muy bien escrito para un principiante de Python, pero es útil. Quizás alguien más lo necesite.
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
y luego haz io = iohub.launchHubServer
. En segundo lugar, no es necesario llamar a win.close
, data.file.close
y core.quit
. Esto sucederá automáticamente cuando se cierre el script. En tercer lugar, redefine algunas variables, por ejemplo, time
y date
, key
etc. Simplemente elimine la primera ya que se "sobrescribe" de todos modos.Si la precisión es importante, tal vez pruebe el TScope con licencia GPL, que es una biblioteca C; hay un artículo al respecto (por desgracia para la versión anterior) con un número moderado de citas. También se mantiene ( la versión actual es 5 ) y tienen un ejemplo que mide la duración de la pulsación de tecla . Es bastante fácil de usar, ya que incluye todo lo que necesita en Windows, incluida una versión personalizada de Notepad ++ con accesos directos para compilar y ejecutar un programa. Lo curioso es que los ejemplos de la web parecen faltar en el paquete de 145Mb, pero funcionan compilados con él.
No tengo ninguna cámara de alta velocidad para probar la precisión, pero a partir de una prueba rápida en mí mismo, no vi grandes desviaciones. Usando un teclado PS / 2 de carrera larga, obtengo alrededor de 95 ms de tiempo de prensa (que parece estar a la par con el documento que mencionó ). Con un teclado USB de trazo corto, obtengo tan solo 55 ms, si me enfoco específicamente en solo hacer trazos cortos (y esto parece tener el costo del tiempo de reacción, necesito "prepararme" para hacer un trazo realmente corto ; en tecleo normal sigo teniendo la costumbre de pulsar más tiempo, aunque este teclado no lo necesita). Aquí hay un ejemplo de lo último:
aliced
natalia
oker
natalia
fausto
fuertemalo
aliced
fuertemalo