Unix键盘上特殊键的组合emacs键序列

问题描述 投票:1回答:1

我在带有10个特殊键的FreeBSD 12工作站上具有unix keyboard

Stop  Again
Props Undo
Front Copy
Open  Paste
Find  Cut

并尝试在图形模式下的Emacs 26.3下将它们用于快捷方式。一些键符号名称通过X11驱动程序映射到XF86-Key名称,例如:

Copy   - XF86Copy
Cut    - XF86Cut
Paste  - XF86Paste

和一些键符号名称保留在Sun-Key名称空间中,例如:

Props  -  SunProps
Front  -  SunFront
Open   -  SunOpen.

我想使用SunFront键来调用Emacs下的某些菜单项,但是对于此类序列的扩展版本却得到了奇怪的结果。两个键绑定定义

(global-set-key [SunFront] 'buffer-menu-open)
(global-set-key [(control SunFront)] 'buffer-menu-open)

工作正常,打开缓冲区菜单。但是,如果我尝试扩展序列:

(global-set-key [(control SunFront) (control b)] 'buffer-menu-open)

我得到了错误

global-set-key: Key sequence <C-SunFront> C-b starts with non-prefix key <C-SunFront>

。另一方面,顺序:

(global-set-key [(control XF86Copy) (control b)] 'buffer-menu-open)

效果很好,并打开了预期的菜单。为SunFront设置定义emacs密钥序列的正确方法是什么?

emacs configuration key-bindings
1个回答
0
投票

您收到的错误是因为您已经(在相同的键映射中)将[(control SunFront)]绑定到命令,所以新的define-key将覆盖该定义。您可以通过在添加新def之前显式覆盖旧def来消除错误:

(global-set-key [(control SunFront)] nil)
(global-set-key [(control SunFront) (control b)] 'buffer-menu-open)

但是您最可能需要做的是改为删除以前的绑定。

© www.soinside.com 2019 - 2024. All rights reserved.