emacsclient 超级键或 iterm2 中的超键

emacsclient 超级键或 iterm2 中的超键

标题说的是:我想切换到使用 emacs-server / emacs-client 模型,而不是使用 Mac OS X 的 GUI。我使用 iTerm2。我想将功能键 (fn) 映射到 super 或 hyper。

我尝试使用 KeyRemap4MacBook - 但没有成功。

更新:

看起来我可以使用event-apply-super-modifierevent-apply-hyper-modifier,由定义function-key-map

我可以让 Fn 键发出一个使用的键代码,比如KeyCode::F18,然后让 iTerm2 将其转换为一些转义字符,比如:

Esc+[+J或类似的东西。

更新(2015 年 4 月 13 日):

我认为这https://apple.stackexchange.com/questions/144481/sending-controlalt-char-to-terminal-in-iterm2非常有趣。可能有一种方法可以配置 iterm2 以发送适当的控制键,类似于@toolbear74 的答案。

答案1

不令人满意的解决方法

该序列C-x @ s-…相当于s-…,例如C-x @ s-t相当于s-t。结合iTerm2快捷键:

  1. 创建全局或配置文件的快捷方式⌘…设置为Send hex code,例如⌘t => Send hex code
  2. 指定以下形式的十六进制代码:0x18 0x40 MOD KEY其中分别MOD0x68或 ,并且是要用或修改的键。例如映射到:0x73hsKEYhypersuper⌘ts-t

    ⌘t => 0x18 0x40 0x73 0x74
    
  3. 对每个你想要的快捷方式重复此操作...嗯...

失败的实验#1

在 iTerm 中:

  1. 将左和右 Option 键全局配置为左 Option
  2. 将左、右命令键全局配置为右选项
  3. 在配置文件中,将左选项配置为+ESC,将右选项配置为Meta

通过这种方式重新映射可以有效地禁用所有 iTerm 键盘快捷键……嗯……

在 Emacs 中:

使用右选项(R⌥)会导致字符的第 8 位被设置,据我所知,这是表示 META 键按下的旧方式(当键盘有实际的 META 键时)。

但是,我没能让 Emacs 利用这种区别做一些有用的事情。考虑到META-t=>t的第 8 位是八进制的,364我尝试过:

(global-set-key (kbd "[R⌥-t]") (lambda () (interactive) (message "woot #1")))
(global-set-key (kbd "\364") (lambda () (interactive) (message "woot #2")))

[R⌥-t]当我按下该键序列时,缓冲区中显示的单个字符在哪里,以图形方式表示\364但表现为单个字符。

值得注意的是,无论有没有按键绑定,无论我何时按下,R⌥-temacs 中都不会显示任何内容,直到我按下另一个键,emacs 才会显示\364字符,然后解释第二次按键。例如,R⌥-t a=>\364a<point>R⌥-t LEFT=> <point>\364,但仅在a按下或左箭头后才显示。

您只需执行上述第 3 步并R⌥直接使用即可进行实验。

相关内容