psychtoolbox获取按键KbGet

psychtoolbox获取按键有许多方法,常见的有KbCheck, KbWait, KbStrokeWait, KbPressWait, KbReleaseWait

其中,KbCheck检查键盘所有按键的状态,不打断程序执行,而Wait系列会让程序“卡死”,直到按下了一个按键。往往程序只需要获取一个按键即可,可实际测试下来,用Wait系列精度不够,在两次按键间隔小于0.1秒时,Wait系列的函数不能很好地反映所按下的按键,连续按按键会miss许多。

为此,这里用KbCheck实现了一个KbGet,它可以打断程序执行,直到按下按键为止,并获取这个按下的按键。按键时间间隔可以小于0.05。

复制以下内容后保存成KbGet.m,放在实验程序文件夹下
========================================

function [secs key] = KbGet(limit, varargin)

%[secs key] = KbGet([limit])

%获取一个按键,并返回得到这个按键时的时间

%可以设置limit来限制按键反应时间,超时则返回key = 0

%精度比KbStrokeWait高

%author: zbg 2015-2

if nargin == 0

limit = inf;

end

[keyIsDown, oldsecs, oldkeyCode, deltaSecs] = KbCheck;

x = [];

while numel(x) == 0

[keyIsDown, secs, keyCode, deltaSecs] = KbCheck;

x = find(keyCode > oldkeyCode);

oldkeyCode = keyCode;

if secs - oldsecs > limit

key = 0;

return

end

end

key = x(1);

end

时间: 2024-12-15 06:51:20

psychtoolbox获取按键KbGet的相关文章

WinAPI: GetKeyNameText - 根据键盘消息获取按键名称

unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs; type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);    procedure MyMsg(var msg: TWMKeyDown); message WM_KEYDOWN;  end;

如何获取按键的字码符?

如何获取按键的字码符?添加事件处理程序keydown/keypress/keyup这些事件带有参数event.可以从event.charCode/event.keyCode获取键盘字符function checkInput(event) {            var e = event ? event : window.event;            console.log(e.type); var c;            if (typeof e.charCode == "numb

linux下获取按键响应事件【转】

本文转载自:https://my.oschina.net/u/157503/blog/91548 1.问题 通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序 代码是在unbuntu10.04编译执行通过的 2.input_event描述 在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键.触摸屏.键盘.鼠标等输入事件(event,通过input_event结构体描述)

关于Android悬浮窗要获取按键响应的问题

要在Android中实现顶层的窗口弹出,一般都会用WindowsManager来实现,但是几乎所有的网站资源都是说弹出的悬浮窗不用接受任何按键响应. 而问题就是,我们有时候需要他响应按键,比如电视上的android,我们要它响应遥控器上的音量按键等等之类的.这时就必须要对添加的View进行LayoutParams的相关设置了. 主要的代码就两个地方. 第一,添加的view不可以设置layoutParams.flags=LayoutParams.FLAG_NOT_FOCUSABLE;//否则就完全

获取按键对应的值

document.onkeydown=function(even){ alert(even.keyCode) }

20150218【改进】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 一.使用struct pin_desc 管理按键的值 1.定义结构体 2.将前面我们申请中断时写的(void *)1修改为 &pins_desc[n] 在ioctl中,设置中断中修改 在key_release中释放中修改 3.在中断程序中利用我们定义的struc pins_desc判断并得到按键的值 4.得到按键键值后,唤醒程序,在read函数中返回键值 附上驱动源程序: 1 /***********

20150218【改进信号量】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进信号量]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 前面我们使用POLL查询方式来实现GPIO-IRQ按键中断程序 这里我们来使用信号量,让我们的驱动同时只能有一个应用程序打开. 一.首先在前面代码的基础上来一个简单的信号 1.定义一个全局的整形变量 2.在打开函数中,每次进入打开函数canopen都自减1, 3.当我们不使用时,在realease 中canopen自加1 4.这样就实现了一个简单的信号量,我们编译,测试 当我们使用两个应用程序来

20150218【改进Poll定时查询】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进Poll定时查询]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 按键驱动程序中,如果不使用read函数中使程序休眠的,而是还是使用查询方式的话,可以使用Poll函数,来控制一定时间内,如果有按键发生,则立即返回键值. 同时,poll也可以同时监控多个(比如说按键,鼠标,等)一旦发生事件则立即返回. 我们在linux查看帮助: 从帮助中的说明得知, poll, ppoll - wait for some event on a file descrip

Unity HTC VIVE手柄 按键说明

一.HTC VIVE手柄按键图说明 1 - 菜单键 6 - 系统键(按下后手柄断开连接,再次按下手柄再次连接上) 7 - 扳机键 8 - 握持键 9 - 触摸板键 二.按键的监听方式 1.按键监听方式一:(SteamVR的方式,封装了OpenVR) (1)点击触发:通过Device.GetPressDown / GetPressUp / GetPress获取按键事件 (2)触摸触发:通过device .GetTouchDown / GetTouchUp / GetTouch获取按键事件 2.按键