“s- [keyname]”在Emacs中引用了什么,我如何告诉Emacs忽略它?

时间:2009-08-30 18:02:06

标签: macos emacs elisp

背景资料:

我在Mac上,我刚刚通过http://emacsformacosx.com/升级到Emacs 23.1。有一些问题,特别是缺乏全屏能力。

我试图通过安装Megazoomer来解决最后一个问题,这会添加一个绑定到Cmd-return的全局输入管理器。这导致当前正向应用程序最大化。但是,Emacs报告<s-return> is undefined。我以前从未见过s-[key],而谷歌也没有得到答案。

所以,两部分:

  1. s-[key]是什么意思?这纯粹是为了我的满意;和
  2. 我可以告诉Emacs忽略这个组合键并让组合键进入系统(希望我可以再次使用全屏幕Emacs)吗?
  3. 编辑:所以1)已解决,并且2)我得到:(global-set-key (kbd "<s-return>") 'ignore),至少可以阻止错误。然而,Emacs仍然吞下了关键组合,这并不理想。

4 个答案:

答案 0 :(得分:22)

这是Super key,就像M-是Meta键(PC键盘上的alt键,键盘上的Command键),C-是Control键。

我当然从来没有真正看到过键盘上的超级钥匙......它们来自一个漫长的时代。维基百科有一个令人印象深刻的"Space Cadet keyboard"的图像,其中包含您需要的所有修饰符:

答案 1 :(得分:8)

使用Macbook Pro上的普通Emacs 23.1,我可以通过

将正确的选项键映射到super
(setq ns-right-option-modifier 'super)

您的其他选择似乎是功能键,即ns-function-modifier。但是, fn 可能还有其他用途,而Emacs的默认设置是将ns-right-option-modifier映射到’left(即效果与左选项键相同,无论如何需要获得#字符!),因此正确的选项密钥在某种程度上是多余的。

左撇子可能想要扭转这种局面。

答案 2 :(得分:2)

关于s- [key]含义的问题,在ubuntu框中它表示Windows®形状的键。在OSX系统上它意味着什么,我不知道。

至于最大化窗口,你能尝试一下吗? (它应该工作,如果OSX在它下面的某个地方运行X服务器)

(if (equal (window-system) 'x)
  (progn
   (defun toggle-fullscreen ()
     "Toggles fullscreen"
     (interactive)
     (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
              '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
     (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
              '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))) 

   (global-set-key (kbd "C-c C-y") 'x-clipboard-yank)
   (global-set-key (kbd "M-RET") 'toggle-fullscreen)))

我使用这个小片段在我的* nix计算机上切换全屏。从X的剪贴板中扯下来是一种很好的能力。

至于如何设置键绑定,请使用global-set-key进行与模式无关的键绑定。 (如果您希望它是永久性的,请将其添加到.emacs文件中。)

答案 3 :(得分:1)

(setq ns-command-modifier nil)

应该做你想做的事。但是,当我测试它时,它在机器上有一些不可预测的行为,所以请注意。