命令来读取所有当前按下键盘键

38视图(30天)
罗兰·斯坦格
罗兰·斯坦格 2017年7月6日
回答: 布鲁诺陈德良 2021年9月10日
嗨,我没有找到一个合适的答案……有一个简单的方法不使用回调函数获得当前按下键盘上的键。
最好的,罗兰
2的评论
罗兰·斯坦格
罗兰·斯坦格 2017年7月6日
编辑:罗兰·斯坦格 2017年7月6日
很好的功能!谢谢你,。然而,并不是什么我在寻找:-)。函数壳不等待一个输入,但阅读目前按下键。例如:a = whichKeysArePressed ()
一个=
1×2细胞数组
“3”“k”
的情况下,“3”和“k”键目前由用户按下。

登录置评。

回答(5)

Guillaume
Guillaume 2017年7月6日
编辑:Guillaume 2017年7月6日
基matlab本身,这是不可能的。可能存在的东西 心理的工具箱
否则,在Windows上,您必须调用Win32 API GetKeyboardState 通过 loadlibrary 或一个墨西哥人文件。请注意, GetKeyboardState 只会注意到关键变化,matlab本身已经见过。
另一个选择是使用. net GetKeyStates 从matlab。net更容易叫,但是你必须使用此函数遍历所有的关键地位。类似(完全未测试的代码,我没有matlab在这台电脑上):
Net.addAssembly (“System.Windows.Input”);
阿奇= System.Windows.Input.Key.A;%使用任意键的枚举类型
键= System.Enum.GetValues (akey.GetType);%得到所有枚举的成员
keynames = System.Enum.GetNames (akey.GetType);
keystates = arrayfun(@(关键)bitand (System.Windows.Input.Keyboard.GetKeyStates(关键),
System.Windows.Input.KeyStates.Down),
键);
编辑 :测试与matlab计算机后,上面有虫子的数量,两个主要的是你不能 arrayfun . net数组,和一些通过键可能不是有效的键 GetKeyStates 。在任何情况下,因为我们遍历键,您可以使用 IsKeyDown 简单的语法。所以,没有错误:
NET.addAssembly (“PresentationCore”);
阿奇= System.Windows.Input.Key.A;%使用任意键的枚举类型
键= System.Enum.GetValues (akey.GetType);%得到所有枚举的成员
keynames =细胞(System.Enum.GetNames (akey.GetType)) ';
iskeyvalid = true(钥匙。长度,1);
iskeydown = false(钥匙。长度,1);
keyidx = 1: keys.Length
试一试
iskeydown (keyidx) = System.Windows.Input.Keyboard.IsKeyDown(键(keyidx));
iskeyvalid (keyidx) = false;
结束
结束
一旦你上面运行一次(有效键)的列表你可以得到钥匙的状态更简单:
iskeydown (iskeyvalid) = arrayfun (@ (keyidx) System.Windows.Input.Keyboard.IsKeyDown(键(keyidx)),找到(iskeyvalid));
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年7月6日
我不知道当前状态的艺术,但早在以前的键盘只能可靠区分两个压键通常超出了修饰键。接触电网使用,使用的财产,如果任何三分一个矩形的键被按下键盘不能辨别 哪一个 三四个。
键盘本身通常编码 事件 而不是按键:“在这个循环,如此这般的一个关键是压力和其他关键被释放”。键的设置在任何时候被认为是一组键的按键事件见过但键释放事件还没有出现。

登录置评。


布鲁诺陈德良
布鲁诺陈德良 2021年9月10日
这个文件交换让我很受用 Hebirobotics
不需要工具箱,不需要打开一个图()来捕获keypressed回调。
为了简化安装,下载和使用github上编译的版本。


罗兰·斯坦格
罗兰·斯坦格 2017年7月6日
非常感谢你的suggenstions。完美:-)。我将在下周有时间来测试!

balandong
balandong 2020年3月23日
可以考虑这个FEX提交KbTimer。它是墨西哥人基础从而很快

类别

找到更多的在桌面帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!