Windows emacs29.4 有没有办法在init.el里交换C-, M-

RT, 希望只在 init.el里面做最小化的修改 (类似 Macos 的 mac-modifier), 实现 Ctrl->M-, Alt-> C-. 查的资料很多都是用注册表或ahk的, win32-系列的函数好像不能改 ctrl/meta, 不知道大神们有没有好办法.

不用外部工具应该改不了, 还有shift键也改不了, 不过windows键在emacs内可以改, 最近换了个键盘没习惯, 总误按window键, 于是把常用的几个误按如 windows+w 改成和 alt+w 等价

以前用windows的时候 用注册表改过, 可以看看 我之前写的博客 主要看后面部分 windows 的键盘映射 - 拾遗笔记

没有windows 进行验证 盲写了一下, 将这段内容 保存为reg 结尾的文件,双击应该就能导入,重启一下

 Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,38,00,1d,00,1d,00,38,00,00,00,00,00

全局改的方案影响比较大, 感觉最好还是只在emacs内生效就好, emacs外其它软件的操作方式不要影响到(不至于出现别人用不来自己电脑,自己也用不来别人电脑情况)。 而改注册表好像做不到这一点。ahk可以只对emacs生效, 包括emacs -q

最后试了半天还是用的ahk自动启动, 感觉不太能接受全局互换(对于游戏/vmware等操作不习惯), 期待 emacs 能强化相关的 windows 支持吧(虽然现在有win版的emacs已经不容易了)

ahk 能根据进程生效的

嗯我没说清楚; 因为ahk能分进程所以用的ahk而非注册表. Thanks anyway!

1 个赞