如何将 F9-F12 发送到在 Terminal.app 内运行的 curses 程序?

如何将 F9-F12 发送到在 Terminal.app 内运行的 curses 程序?

F9-F12 是 Mac OS X 使用的,我不想摆脱它们,我只是希望能够偶尔将 F9-F12 发送到终端内的程序(主要是 F9/F10)。

一些程序mc支持序列 Escape 9 作为 F9 的同义词等,但它并不通用。

有没有什么办法可以做到呢?

答案1

fn-Cmd-F9 在运行 Mountain Lion 10.8 的 MacBook Pro 上的 Terminal.app 中用作 F9。

答案2

您可以运行 AppleScript(例如将其包装在服务在 Automator 中使用运行 AppleScript行动,与没有输入终端) 执行以下操作:

tell application "System Events" 
    tell expose preferences to set the properties of the all windows shortcut to {function key:F1}
    key code 101 # press F9
    tell expose preferences to set the properties of the all windows shortcut to {function key:F9}
end tell

这将暂时为绑定到 F9 的快捷键分配不同的快捷键,按 F9,然后恢复设置。其他 Expose 首选项的设置名称如下:

all windows shortcut
application windows shortcut
show desktop shortcut
dashboard shortcut 

F9至F12的键码如下:

F9 101
F10 109
F11 103
F12 111

您可以在以下位置为服务分配键盘快捷键系统偏好设置 » 键盘 » 键盘快捷键 » 服务您需要学习另一个快捷键(例如Command-F9),但至少您可以按下一个键来启动操作。有关使用 F 键的快捷键,请参阅这个答案


您也可以配置热键/宏应用程序,例如巴特勒cat -v按下您在停用快捷方式时按下某个 F 键时获得的退出序列。

$ cat -v
^[[20~^[[21~^[[23~^[[24~

这些依次是 F9 到 F12。

在 Butler 中,F9 如下所示:

在此处输入图片描述

我按Ctrl-[[20~输入该序列。在我的键盘布局中,~Shift-backtick,这就是为什么转移修饰符可见。无论如何都可以工作。

配置一个快捷方式,然后您就可以按下它来获取转义序列:

在此处输入图片描述

在 中有效mc,目前我不记得有其他带 F 键的 CLI 程序。但它不是mc特定的转义序列,因此它可能在其他程序中有效。


或者,许多命令行应用程序理解Esc, 1(序列)的意思F1,通过Esc, 0意思F10

答案3

您可以禁用以下键盘快捷键F12

键盘偏好设置 > 键盘快捷键

答案4

这是我用来获取 CoRD(Mac 远程桌面)的两步过程:

  1. 系统偏好设置 > 键盘 > 键盘 > 选中“将所有 F1、F2 等键用作标准功能键”
  2. 系统偏好设置 > 键盘 > 快捷方式 > 取消选中“显示桌面”、“显示仪表板”

第一步就是 @taw 在一条评论中提到的;它使功能键 f1-f10 正常工作。第二步阻止 OSX 拦截 f11 和 f12 键的按下。

相关内容