What does “s-[keyname]” refer to in Emacs, and how do I tell Emacs to ignore it?

房东的猫 提交于 2019-12-04 08:56:07

问题


Background information:

I'm on a Mac, and I've just upgraded to Emacs 23.1 via http://emacsformacosx.com/. There are a few issues, notably the lack of full screen ability.

I've attempted to get around this last issue by installing Megazoomer, which adds a global input manager bound to Cmd-return. This causes the currently forward application to maximise. However, Emacs reports that <s-return> is undefined. I've never seen an s-[key] mentioned before, and Google isn't forthcoming with an answer.

So, two parts:

  1. What does s-[key] mean? This is purely for my satisfaction; and
  2. Can I tell Emacs to ignore this key combination and let the key combination carry through to the system (so that hopefully I can have full screen Emacs back again)?

EDIT: so 1) is resolved, and as to 2) I've got: (global-set-key (kbd "<s-return>") 'ignore), which at least stops the error. However, Emacs still swallows the key combination, which isn't ideal.


回答1:


It's the Super key, like M- is the Meta key (alt key on a PC keyboard, Command key on your keyboard) and C- is the Control key.

I have of course never actually seen a super key on my keyboard... they are from a long gone era. Wikipedia has an image of this impressive "Space Cadet keyboard" which has all the modifiers you'll ever need:




回答2:


With plain Emacs 23.1 on a Macbook Pro, I can map the right option key to super by

(setq ns-right-option-modifier 'super)

Your other choice seems to be the function key, which would be ns-function-modifier. However, fn might have other uses, whereas Emacs’ default is to map ns-right-option-modifier to ’left (ie, the same effect as the left option key, which I at any rate need to get the # character!), so the right option key is to some extent redundant.

Left-handers may want to reverse this.




回答3:


For the question about what the s-[key] means, on ubuntu box it means the Windows® shaped key. What it means on the OSX systems, I do not know.

As for maximizing windows, could you try this? (It should work, iif OSX runs an X server somewhere underneath it all)

(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)))

This little snippet is what I use to toggle fullscreen on my *nix computers. And yanking from X's clipboard is a neat ability to have.

As for how to set keybindings, use global-set-key for mode independent keybindings. (Add it to your .emacs file if you want it to be permanent.)




回答4:


(setq ns-command-modifier nil)

That is supposed to do what you want. However, it's having somewhat unpredictable behaviour on machine when I test it, so be warned.



来源:https://stackoverflow.com/questions/1354469/what-does-s-keyname-refer-to-in-emacs-and-how-do-i-tell-emacs-to-ignore-it

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!