大写键是不是不能当前导键,如不能,原因是?

用户定义快捷键一般是用 C-c 当前导键(前缀?)

有没有可能让大写键代替这个 C-c呢(不考虑和ESC互换,大写时可以按 SHIFT代替),比如按一下大写键,再按任意一个字母执行一条command

搜索了下没有类似的回答,也许是个白痴到没人想问的问题?我来当吧,问下哈

ps:论坛里其他帖里有个楼层说emacs是检测不到大写,我也有点困惑,一些网页测试击键的页面不是都能检测到,Emacs反而不行?

用其它软件把 capslock 映射成 super、hyper 之类的按键就行了

3 个赞

我也想问的,按一下大写键,再按任意一个字母执行一条command ,这个很好实现,但实现这个的同时没法用shift正常输入大写字母,为此我改变了 输入大写字母的方式

可以在 Emacs 外部用键盘映射工具把 capslock 的 click 映射成 ESC,hold 映射成 Control。

再在 Emacs 内修改 esc-map。这样一个实体按键就有了两重功能。

;; roam map

(general-create-definer roam-leader-def :prefix “;”)

(roam-leader-def 'normal 'override “;” 'org-roam-node-find)

(roam-leader-def 'normal 'override “f” 'deadgrep)

(roam-leader-def 'normal 'override “t” 'translate-at-cursor)

也许这就是你想要的效果. 也就是说, 点一次" ; ", 再点另一个键, 就运行一个函数.

没有,但 emacs 除了 C/M 还有 S(shift),H(hyper),A(alt),s(super)可以用。把大写键map过去就好w

请问映射过去后是不是就可以按一下 Hyper(不按;的原因是还会输入;号,而Hyper现代键盘都没有不用考虑冲突,就像

,跟着按一下 a,执行命令,就像下面这样【不过要改成通用的】

是的,这就是想要的效果,那怎么才能在一般的 buffer 里实现呢

高手能给个链接或示例吗

ps: 试了下linux下映射大写键为Hyper,还没验证成功

上面我那段也是抄别人的. 尽管里面有 org-roam-def, 这只是个符号, 可以换成 xyz 也是一回事儿, 配置是全局性的. 在一般的 buffer 里都有效.

因为我用 doom emacs, 所以正常情况下 “;” 不会和编辑状态下的 “;” 混淆. 且右手小拇指的 home key, 也极其省时省力. 简直是天人之作. 要为发明这个配置的同学点个大大的赞.

我觉得你的苦恼, 是因为不用 doom emacs, 哈哈. …

在 doom emacs 里面, 各种前导键的配置, 嗨到飞起.

我不用 Linux,用的 macOS。

vanila emacs 刚刚摸到一点点门,还是不doom了

; 号做前导符挺好的,输入法里也有用;号实现功能的,真需要输入;号时就按两次即可

估计不用 doom 实现是不是要自定义一个 mode,但又需要与其他 mode 合拍,这个还不会我

doom的所谓的"前导"键是配合 evil 和 general.el 实现的。你不用 evil 也可以用 general.el

谢谢思路,我去找找有没有相关资料

可以试一下 Linux 下的键盘映射工具

比如用 keyd 的话,可以这样配置

[main]
capslock = overload(layer(emacs-hyper), esc)

[emacs-hyper]
a = macro(C-x @ h a)
b = macro(C-x @ h b)
c = macro(C-x @ h c)
d = macro(C-x @ h d)
...

有个想法。直接用键盘映射工具把 Caps 映射成 C-c,其他啥都不变怎么样?