命令来读取所有当前按下键盘键
38视图(30天)
显示旧的评论
回答(5)
Guillaume
2017年7月6日
编辑:Guillaume
2017年7月6日
否则,在Windows上,您必须调用Win32 API
GetKeyboardState
通过
loadlibrary
或一个墨西哥人文件。请注意,
GetKeyboardState
只会注意到关键变化,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));