如题。
现在手头有 68 键的键盘。但右手按 Ctrl 键时经常误触成 左方向键。所以我希望把 左方向键 映射成 Ctrl。
Windows系统中可以用 autohotkey 进行改键,且只在 emacs 程序中生效。
我想问能否在 emacs 内部实现这个功能。 如果不行的话,在 Linux 中如何设置改键使其只对 emacs 生效。
如题。
现在手头有 68 键的键盘。但右手按 Ctrl 键时经常误触成 左方向键。所以我希望把 左方向键 映射成 Ctrl。
Windows系统中可以用 autohotkey 进行改键,且只在 emacs 程序中生效。
我想问能否在 emacs 内部实现这个功能。 如果不行的话,在 Linux 中如何设置改键使其只对 emacs 生效。
给 Emacs 加 hook 函数, 每次 frame 被聚焦时 执行你的 autohotkey 脚本, 失焦时中断那个进程.
但我没试过, 只是给你提供一种可能的思路.
谢谢!我主要想寻找 只用 emacs 的解决方案。
autohotkey 自带只对特殊程序生效的功能,实现起来是比较简单的
emacs内部实现的话,应该做不到,但可以left模拟ctrl的功能,你这么写(global-set-key (kbd "<left>") '())
,然后写
(global-set-key (kbd "<left>p") 'previous-line);与ctrl+p一致
(global-set-key (kbd "<left>n") 'next-line);下移动光标
(global-set-key (kbd "<left>f") 'forward-char);向前移动一个字符
(global-set-key (kbd "<left>b") 'backward-char);向后移动一个字符
我最初用shift模拟ctrl的功能 ,就是这么改出来的,但这样比较麻烦,建设还是用 外部程序改键
我找到一个部分实现的方法: key bindings - My left pinky hurts. Can I press another key to act as Control? - Emacs Stack Exchange
(define-key function-key-map (kbd "<left>") 'event-apply-control-modifier)
(global-unset-key (kbd "<left>"))
但这时 左方向键 并不是修饰键,所以此时一直按着 左方向键,相当于不停地按 ctrl.
第二行要写kbd吧
是的,大意了,因为最终没有用这个改键方法,所以回答的时候没检查