常用的有两个WindowKeyPressFcn和WindowKeyReleaseFcn,分别表示按下按键和释放按键的响应函数,两者调用形式上是一样的。

1、说明

以indowKeyPressFcn为例,按键响应无论当前焦点在figure上还是控件上,这一点和鼠标响应有所不同。它的响应函数需要至少两个参数,即发生按键的figure和event结构体。

even结构中包含了按键的各种信息,如下图

其中含义如下

Character表示按键实际会显示的字符,如shift+k,则此值为K,只按下shift,则此值为空;

Modifier是一个元胞类型,包含所按所有修饰键的名字,如按下ctrl+shift+a,则此值为{‘shift’ ,’control’};

Key表示按键的名称,如k,a,multiply,delete等。

2、简单的测试程序

%% 测试windowkeypressfcn响应函数

function keypress_test

clc

close all

clear all

%%

fig = figure;

plot(1:10)

set(fig,'windowkeypressfcn',@keypressfcn);

set(fig,'windowkeyreleasefcn',@keyreleasefcn);

function keypressfcn(h,evt)

fprintf('************press \n');

evt

fprintf('************ \n');

end

function keyreleasefcn(h,evt)

fprintf('************release \n');

evt

fprintf('************ \n');

end

end

要注意,由于不可能同时按下两个键,所以多按键是挨个响应的。如按下ctrl+shift+a时,输出打印如下

************press

evt =

Character: ''

Modifier: {'control'}

Key: 'control'

************

************press

evt =

Character: ''

Modifier: {'shift' 'control'}

Key: 'shift'

************

************press

evt =

Character: ''

Modifier: {'shift' 'control'}

Key: 'a'

************

************release

evt =

Character: ''

Modifier: {'shift' 'control'}

Key: 'a'

************

************release

evt =

Character: ''

Modifier: {'control'}

Key: 'shift'

************

************release

evt =

Character: ''

Modifier: {1x0 cell}

Key: 'control'

************

可知按下顺序为control—shift—a,释放顺序为a—shift—control。

3、通过按下按键,从停止位置继续运行

gcf是Current figure handle,调用get函数得到curent figure的CurrentCharacter属性。判断是否按下e键,从而从while中跳出去继续运行。程序如下所示

figure;

pause(1);

while 1

pause(0.1)

if strcmpi(get(gcf,'CurrentCharacter'),'e')

break;

end

end

matlab等待按键响应,matlab中figure对象的按键响应相关推荐

  1. vue项目统一响应_vue中使用$set实现深入响应式原理

    前言:其实使用vue的都知道,vue声明在data中的属性都是响应式的,也就是,我们在修改data中的属性时,一般页面都能实时更新.但是由于 JavaScript 的限制,Vue 不能检测数组和对象的 ...

  2. fiddler 自动响应数据保存_想测试HTTP响应不知道如何开展怎么办?

    切换至Fiddler,点击测试小伙伴在日常工作中.特别是接口测试时,需要经常和HTTP协议打交道,其中服务器返回的响应数据是接口测试的重要组成部分,这就需要各位小伙伴熟练掌握HTTP响应的组成.如何修 ...

  3. matlab中删除照片_matlab中删除对象

    删除对象 (1)delete:删除文件或对象图形 删除文件对象h的格式为:delete('filename')或delete filename 删除图形对象h的格式为:delete(h); 若要无条件 ...

  4. Matlab中figure灯光的设置

    Matlab中figure灯光的设置,如下所示: light('color',option1,'style',option2,'position',option3) option1 可采用RGB三元组 ...

  5. MATLAB中figure的使用

    MATLAB中figure的命名 当我们在MATLAB命令窗输入plot ( ) 时,MATLAB会自动生成一个名为Figure1的图窗,那么我们如何修改它的名字呢. 教程如下: 首先,我们在命令窗口 ...

  6. MATLAB中figure的问题

    一.使MATLAB不显示figure界面: h=figure set(h,'Visible','off'); 二.MATLAB图片批量保存并分别命名 figure('visible','off'); ...

  7. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术

    1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...

  8. 基于MATLAB程序设计的计算器(中)

    今天我们就来分享一下如何用MATLAB中的guide框架设计一款简易+科学型的计算器,下次分享基于APP Designer框架的.其实,这款计算器去年这个时候已经做好了,没来得及分享. 简易计算器的一 ...

  9. matlab 斜坡信号响应,matlab斜坡输入响应

    实验名称 实验报告线性系统时域响应分析 一. 实验目的 1.熟练掌握 step( )函数和 impulse( )函数的使用方法,研究线性系统在单位 阶跃.单位脉冲及单位斜坡函数...... 实验报告 ...

最新文章

  1. 部署Small Business Server 2003服务器之二
  2. java面向对象第一章
  3. Visual C#使用DirectX实现视频播放
  4. Java高并发编程:使用JDK5中同步技术的3个面试题
  5. 前端要给力之:代码可以有多烂?
  6. oraclde存储过程_Oracle存储过程详解(引用)+补充
  7. (七)nodejs循序渐进-模块系统(进阶篇)
  8. Mr.J--Vue之v-for全解析
  9. 《OpenGL编程指南》一第3章 OpenGL绘制方式
  10. 22 C#中的异常处理入门 try catch throw
  11. netty框架实现websocket达到高并发
  12. 开源数字媒体资产管理系统:Razuna安装方法
  13. 2021-06-13并发线程控制方法3种
  14. ​云原生:重新定义云时代的技术标准 | 凌云时刻
  15. yyyy-MM-dd HH:mm:ss和yyyy-MM-dd hh:mm:ss的区别
  16. Delphi视频教程
  17. 遗传算法图解_遗传算法图解指南
  18. 彩虹易支付最新版开源版源码分享
  19. 如何求字符串的长度c语言,C语言中求字符串长度的函数的几种实现方法
  20. 解决win10笔记本睡眠后无法唤醒甚至自动关机的问题

热门文章

  1. 硬盘盘符无法识别或已损坏,别急着格式化
  2. 网络运维现状及发展趋势分析
  3. Upma Xmac 测试 03
  4. 我的自我介绍以及决心书
  5. 套接字编程——基于UDP协议
  6. Nginx技巧:灵活的server_name,Nginx配置一个服务器多个站点 和 一个站点多个二级域名...
  7. 15个PHP库,你值得拥有!(下)
  8. 无法绑定由多个部分组成的标识符“System.Data.DataRowView”
  9. SQLServer2008 Transact_SQL语言基础实例
  10. NYOJ 904 search 二分查找