声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2515|回复: 6

[共享资源] [分享/转贴]在matlab捕捉F1等热键

[复制链接]
发表于 2011-10-30 18:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 coohit 于 2016-7-20 10:40 编辑

基本上, 个人水平/专业有限, 虽当过这裡的版主, 但自认为所知有限!
在学时, 仅学过fortran5程式语言, 其他语言也不知那时代是否存在! 工作后, 因需求才陆续接触到其他程式语言(basic/dBase/C/pascal...), 也用过一时, 都已不熟了!
可能时效的因素(当然也因愈来愈懒), 渐渐以matlab为主了, 但总是有需求才去学习使用, 所以知道的有限, 之前为了管理责任, 才想到该补足到处取经! 记的那时即发现了simwe有不少matlab高手, 只可惜好像积分等级不够或不会操作, 无法直接查询那些高手的帖来学习!
昨晚公私有空档又去逛了下, 竟发现已可直接查询了! 高兴了看了一些并学习下

话不多说了, 先分享一下连bainhome都尊崇的高手taohe的一个帖子

   
今天是2004年,猴年正月初一,先祝大家新春快乐,万事如意。
趁着节日放假,得空写了这个函数。特此分享给SimWe里喜欢matlab的朋友们。这是首发,本人只在SimWe发布,如要转载,请注明出处。谢谢合作。
  
我们知道,在迄今为止的matlab发行版本中,我们无法捕捉F1等特殊功能健的动作。这也是在国际matlab讨论作里时常有人问但却没有解决的问题。我们当然可以等待Mathworks在matlab的下一个版本中解决这个问题。而我这里提供的这个函数,就是以mex形式,调用Windows API函数,来达到捕捉F1等热键的目的。当然这个解决办法只能用在Windows平台。
附件包含以下几个文件:
wgfcnkey.dll
wgfcnkey.m
testfcnkey.m
testfcnkey.fig  
fcnkeyfunc.m
readme.txt  
这里是中英文的readme.txt:
wgfcnkey.dll ---- A mex file, which captures pressing of fucntion keys  
                        (F1, F2, ..., F12) in matlab applications on Windows  
                       platforms. For the usage, use this function in the  
                       implementation of the KeyPressFcn function. Based on  
                       the returned value, you'll know whether a function  key was pressed.  
  
wgfcnkey.m ---- Help file for wgfcnkey.dll
  
testfcnkey.m
testfcnkey.fig  
fcnkeyfunc.m ---- A simple matlab gui application to test wgfcnkey.dll.  
                        To start, run testfcnkey in matlab, and press a function  
                         or any other key.
  
===================================================================wgfcnkey.dll ---- 个matlab mex 文件,可以用来在matlab程序中捕捉用户按下
                        的特殊功能健:F1, F2, ..., F12. 使用时,在你的应用程序的
                         KeyPressFcn的函数体里,是用wgfcnkey,根据其返回值,判断
                        是否有功能健被按下。
  
wgfcnkey.m ---- wgfcnkey.dll的帮助文件。
  
testfcnkey.m
testfcnkey.fig
fcnkeyfunc.m ---- 一个简单的matlab图形界面程序,用来测试wgfcnkey.dll。运行
                         方法:在matlab里执行testfcnkey.m,然后按下某个功能健或者
                      其他的任意健。

记得将pdf改为zip! 182349-wgfcnkey.pdf (5.43 KB, 下载次数: 4)

回复
分享到:

使用道具 举报

 楼主| 发表于 2011-10-30 18:51 | 显示全部楼层
本帖最后由 ChaChing 于 2011-10-30 18:53 编辑

另一高手cwit的回帖

通过多次测试,发现两个很简单的方法获取F1键等功能键。
方法1:在“KeyPressFcn“里面提取figure的”CurrentKey“属性,可以得到”f1“~“f12”等功能键,以及一般的数字键和字母键。
方法2:编辑fiugre的“HelpFcn”属性,按下F1键时将自动调用这个属性指向的函数。
发表于 2011-10-30 19:07 | 显示全部楼层
本帖最后由 VibrationMaster 于 2011-10-30 19:08 编辑

果然是高!
我的书怎么样?
告诉老友:本人终于变成了中国振动工程学会的理事了--祝贺一下
 楼主| 发表于 2011-10-30 20:46 | 显示全部楼层
本帖最后由 ChaChing 于 2011-10-30 20:46 编辑
中国振动工程学会的理事! 真的需要祝贺一下! 虽然这也是应该的
如此论坛大喜事, 一时高兴本想来个"论坛公告"告知大伙, 但忍住问下可否!?
发表于 2011-10-30 21:03 | 显示全部楼层
回复 4 # ChaChing 的帖子

不发了--虽然自己心中还是按捺不住高兴
 楼主| 发表于 2011-10-30 21:57 | 显示全部楼层
在高兴之餘, 就分享一下类似功能经验(捕捉所打键)
如同1F所说, 个人是较懒些, 都是有需求才去学习使用!
十来年前, 做讯号处理后续程序时, 需要重覆选取左/右边界范围, 及选定后续处理方式, 才发现ginput有个button功能!
button is a vector of integers indicating which mouse buttons you pressed (1 for left, 2 for middle, 3 for right), or ASCII numbers indicating which keys on the keyboard you pressed.
发表于 2012-12-20 20:07 | 显示全部楼层
学习学习
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-2 19:25 , Processed in 0.082795 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表