pyim+librime能做到shift切换中英文吗

感觉切换中英文有点不方便

2 个赞

暂时做不到, 我一般很少用shift切换,我一般用探针自动切换

请问探针这个怎么操作

不可以,因为Emacs不能对单个modifier设置按键

如果使用 Linux 的话,可以把 Shift 键映射成 F[num] 键中的一个,然后在 Emacs 中绑定这个 F[num] 键。

敢问大佬,中英文混输的时候是怎么切换的,总是按C-\有点儿不方便

看看 pyim README: pyim 高级功能

Mac里也可以,还能更简单点,把Shift映射成Ctrl-\,不需要在Emacs再绑定一个新快捷键。而且可以限定只在Emacs里生效,不会对其它程序产生影响 。

2 个赞

已经参考着配置上了,本来是不想在 mac 下依赖 karabiner 这类改键工具的(不喜欢它屏蔽系统布局,和潜在的升级风险),奈何单应用生效这一点的确够香

这两天也遇到了这个需求,linux下提供一个个人试过的方案,对于把Shift映射成Ctrl+\的方案我这不大好使,例如C-c D这种命令会变成C-c C-\ d… 我是用xdotool输入组合的快捷键,比如

xdotool search --name "Doom Emacs" key ctrl+backslash

然后把这条命令绑定到不用的键比如F19,之后用

xcape -e "Shift_L=F19"

映射shift的抬起事件就行了…只不过我是调用的 pyim-convert-string-at-point ,感觉这样更好一点

有的键盘上面有menu,可以绑那个,默认是M-x

怎么配置的啊?

可以参考我的配置文件

很赞,搞定了。。。

#linux #doom 更新一下… xkeysnail真香… 原先是这位的分支 , 他添加了分应用定义multipurpose的功能

不过后续使用遇到了一点问题…然后我修改了一下 multipurpose 的逻辑…目前用起来木有发现什么问题,下面是我改的那个

然后我的配置是:

# config.py (xkeysnail 的配置文件
define_multipurpose_modmap({
    Key.CAPSLOCK: [Key.ESC, Key.LEFT_CTRL],
})
define_conditional_multipurpose_modmap(re.compile(r'Emacs'), {
    Key.CAPSLOCK: [Key.ESC, Key.LEFT_CTRL],
    Key.LEFT_SHIFT: [Key.F13, Key.LEFT_SHIFT],
})

;; emacs的设置 (我用的doom以及我的系统F13是发送XF86Tools
(map! :g "<XF86Tools>" 'pyim-convert-string-at-point)

有个问题, 比如你本来想 Capslock + a -> Ctrl + a, 但是改变主意, 释放 Capslock, 结果发送了 Escape, 能不能设个时间变量, 按键长于这个时间, 就是 Ctrl, 不发送 Escape.

更新了,我也有这个需求…默认设的是一秒,但是只是不发送Escape, ctrl我再改下,应该添一行代码就行

…仔细一想这个设定好像没什么意义

1 个赞

发送ctrl :joy:

用你改的xkeysnail搞定了,可以支持define_conditional_multipurpose_modmap

如果把 shift 映射了, evil mode 岂不是对大写的键都没法用了? 而且也不再能用 shift 切换大小写了? 我倒是想用这一招, 但感觉带来的麻烦比方便还多.