gpt4 book ai didi

matlab控制+图上回车键

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:51 25 4
gpt4 key购买 nike

我想在用户按住控制键并按下数字窗口上的回车键时进行捕获。注意:这是编辑器中“评估当前部分”的默认键。

参见下面的示例代码:

function test
f = figure;
f.KeyPressFcn = @myKeyPressFcn;
end
function myKeyPressFcn ( hFig, event )
cm = hFig.CurrentModifier();
if ~isempty ( cm )
fprintf ( 'CurrentKey: %s:%s\n', cm{1}, hFig.CurrentKey );
else
fprintf ( 'CurrentKey: %s\n', hFig.CurrentKey );
end
end

要重现以上内容,请将其保存在编辑器的事件文件中并运行该函数 - 需要打开编辑器(这很重要!!)。

图形处于事件状态时,按任意键 -> 所选键将写入终端窗口。但是,如果您按住 Control 并按回车(返回)键,那么这不会被捕获,而是 Matlab 会尝试在编辑器中“评估当前部分”(或以前称为的单元格)(无论图中是否有重点)。这当然会引发错误...

我已经联系了 Matlab 支持,这是“预期行为!”。我可以(几乎)明白为什么它可能是演示的好主意 - 但对于在 Matlab 中运行的专业应用程序,我个人认为这个“功能”是一个错误!!

注释

  1. 当编辑器关闭时,图中捕获了 control+enter
  2. 在部署的应用程序中,control+enter 被捕获。
  3. 如果我手动更改“评估当前部分”快捷方式,则会捕获 control+enter。

我已经尝试了很多方法来解决这个问题,但都没有奏效,例如隐藏编辑器或将编辑器启用状态设置为 false(这些都不是可接受的解决方案 - 我试图看看我可以开始做什么一个小测试用例...):

function test
desktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jEditor = desktop.getGroupContainer('Editor').getTopLevelAncestor;
jEditor.setVisible(false);
jEditor.setEnable(false);
f = figure
f.KeyPressFcn = @myKeyPressFcn;
uiwait(f);
jEditor.setVisible(true);
jEditor.setEnable(true);
end

我让它工作的唯一方法是在启动 GUI 时关闭所有编辑器文件,然后在 GUI 关闭时再次打开它们(这不是一个可接受的解决方案...... - 原因相当明显!! )

我确实想过尝试临时修改“Evaluate Current Section”的快捷键(Preferences-Keyboard-Shortcuts)->但是还没想出办法从命令行来做,然后再设置回去完成后再次。如果速度很快,您可以在用户按下并释放控制键时执行此操作。

那我在问什么:

如果可能的话,我需要一个适用于任何地方的任何人的解决方案——就好像我能让它起作用一样,它将包含在 my Matlab GUI Toolbox 中的一个新的附加功能中。 . - 全世界的人都在使用。

  1. 您知道如何从命令行修改键盘快捷键吗?如果是的话,您知道吗?
  2. 还有其他建议吗?
  3. 我的另一个想法是将我的快捷方式更改为不同的组合键 - 但这样做的乐趣在哪里! :)(如果某处某个用户将当前单元格的执行更改为我的新组合,我仍然会遇到问题...)

附言感谢您阅读到这里! :)

最佳答案

你为什么不去 home> Preferences > keyboard > Shortcut 并在那里改变它?

你只需要在页面顶部的黑框里按Ctrl + Enter搜索相关命令,这里是Evaluate Current Section,随便改。

请记住,您只需要拆分窗口(取消停靠它们)。然后,当您单击 Ctrl + Enter 时,它将执行您想要的任何操作。

希望此回答对您有所帮助。

关于matlab控制+图上回车键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com