use*_*006 12 bash terminal ubuntu tmux byobu
我正在使用osX上的终端应用程序连接到ubuntu(我认为是12.04).我的终端默认设置为xerm-256.在此模式下,终端在按下F2时发送\ 033OQ序列.但是对于Shift-F2或Control-F2没有映射.Shift-Left,Shift-Right,Control-Left,Control-Right等也没有设置序列.我需要其中一些键来在各种程序中不时地操作功能.以例如byobu为例.Shift-F2和Control-F2用于垂直和水平分割屏幕.在tmux中,箭头键与shift和control一起用于调整窗格大小.
我的问题是我不知道终端应该发送什么序列.我如何找出这些序列应该是什么?我知道我可以按Control-v然后按一个键来获取正在接收的代码,但这不是我需要的.我不需要查看正在发送的序列.我需要知道我需要发送什么序列.
例如,我的左箭头发送^ [OD.我的Control-Left发送^ [[5D].但是我的上下键没有区别.我发送^ [OB和Control-down也发送^ [OB.与我的密钥相同的问题.无论有没有班次都是一样的.
是否有一个包含所有键和代码的列表,特别是修改器,如shift,control,alt/option?
如何找出预期的序列是什么,以便我可以发送所需的内容?
Chr*_*sen 17
由于您宣传您正在使用xterm(通过您的TERM值),您很可能希望安排发送xterm将为这些密钥发送的序列.xterm的ctlseqs文档描述了PC样式功能键部分底部的这些特定修改键序列:
... xterm识别功能键修饰符,它是在控制序列的最后一个字符之前附加的参数.
Run Code Online (Sandbox Code Playgroud)2 Shift 3 Alt 4 Shift + Alt 5 Control 6 Control + Shift ?
F5发送^[[15~
,所以Shift- F5应该发送^[[15;2~
(即;2
在最终字符之前添加)
箭头键和前四个功能键有点不同.他们经常使用基于SS3的序列(从...开始^[O
); ^[[
由于SS3序列不能具有参数,因此需要将这些更改为基于CSI的等价物(从...开始).此外,键的正常序列通常不具有数字参数,因此1
还添加了占位符(?)参数:
Up发送^[[A
或^[OA
,所以Shift+ Up应该发送^[[1;2A
(即切换到CSI,并1;2
在最终字符之前添加)
F1发送^[OP
,所以Shift+ F1应该发送^[[1;2P
(即切换到CSI,1;2
在最终字符之前添加)
您可能还想查看各种终端仿真器的源代码,看看他们做了什么.例如,tmux的相关位在其xterm-keys.c
文件中.
由于您的终端仿真器尚未发送您想要支持的所有序列,因此您必须对其进行配置才能执行此操作.OS X,Terminal附带的内置终端仿真器有一些预先配置的按键,但您可能需要自己添加大部分按键.您可以通过调用终端 > 首选项...菜单项,选择顶级设置选项卡,选择适当的配置文件,然后切换到其键盘选项卡来访问键列表.从那里,您可以添加和删除键定义.例如,您可以定义F2
使用shift
到send string to shell:
(原文如此),然后键入ESC后跟[1;2Q
到字符串文本框(的ESC将显示为\033
,这没关系).
注意:更改Option- Right和Option- 的定义Left可能会影响某些程序(例如shell和Emacs)如何处理这些键击.默认配置发送ESC-f和ESC-b,它们是用于后向词和前向词的Emacs样式击键,许多程序默认会理解这些键击.这个配置对我来说似乎是倒退的; 应该将shell(和其他程序)配置为识别正确的修改箭头键序列.
您可能还想尝试不同的终端模拟器.iTerm 2内置支持大多数这些修改过的密钥(可能不是Control + Fn变体),因此手动配置的次数较少.
另外请注意,OS X有一些定义了一些全系统的快捷键Control- Fx组合(见系统偏好设置,键盘,键盘快捷键,键盘和文本输入).您必须禁用其中一些快捷方式,以确保终端或iTerm有机会"看到"您所需的组合键.
归档时间: |
|
查看次数: |
5164 次 |
最近记录: |