【问题标题】:How to check TWO key pressed in Matlab?如何检查 Matlab 中按下的两个键?
【发布时间】:2014-07-30 14:26:28
【问题描述】:

我有一个带有许多按钮的 Matlab GUI。现在我想为按钮设置一些快照。 实际上我可以检查一个按钮,它工作正常。 我的问题是如何检查是否会按下两个按钮?

类似 CTRL + KEY 的东西。 它不能是 CTRL 键 =) 它可以是任何组合键。

感谢您的帮助。 对不起我的英语。

要检查一个键,我使用以下代码:

key1 = get(gcf,'CurrentKey');

if(strcmp (key1 ,'k'))
%CODE HERE
end

我尝试过这样的事情(对于键 k 和 q):

key2 = get(gcf,'CurrentKey');

keystr = [key1 + key2];

if(strcmp(keystr, 'kq'))
%CODE HERE
end

如果您按下键盘上的另一个按钮,key1 的值会发生变化。 所以 && 运算符永远不会被填满。

【问题讨论】:

  • 您使用什么代码来检查是否按下了一个按钮?我对此知之甚少,但不是简单的 && 运算符在这里工作吗?

标签: matlab keypress matlab-figure matlab-guide


【解决方案1】:

它不是完全通用的,但我认为这应该可以解决问题:

先判断控件是否被按下as shown by @Pursuit(可能对几个键有效)

modifiers = get(gcf,'currentModifier');        
ctrlIsPressed = ismember('control',modifiers);

然后只需检查当前密钥,就像您已经做的那样并组合结果。最后它可能看起来像这样:

modifiers = get(gcf,'currentModifier');        
key1 = get(gcf,'CurrentKey');

if(strcmp (key1 ,'k')) && ismember('control',modifiers)
    %CODE HERE
end

【讨论】:

  • 这是一个不错的解决方案。但是在每次尝试时,如果我按下控制键并且按下另一个键,我都会得到一个 0。
  • @user3510014 如果您只按控制键,您是否设法让它工作?如果不是,请检查链接的问题,看看你有什么不同。
  • 我只使用了控制键。链接问题中的评论是什么意思(如果已知,请使用实际数字)?
  • 如果我检查修饰符的值,它是一个空单元格数组-
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
相关资源
最近更新 更多