zw963
21
xkeysnail 在 Gnome + Wayland + Arch 下,有一个存在了很久的问题。(排除不同版本的差异, 均有很大机会发生)
在启动 xkeysnail 的时候,会遇到随机某个按键失效。
例如: 第一次重启,空格键失效,下一次重启,a 失效, 再一次, l 失效,
我平常很少重启重启电脑,所以一旦有一次正常,我就用很久,所以还好,
今天因为调试一些东西的目的,多重启了几次,然后,基本上每次进来都这个或那个键不能用
最狠的一次,启动后不行,我就 logout, 再进来另一个键又失效了,再 logout, 我重复了 7 次,都快让整哭了 …
打算明天不用这个了,只用系统集成功能设定 Capslock 为 Ctrl. 右侧 Alt 为 Capslock 算了。
下面是我写的一个脚本,在 Gnome 下可以用的 (无论 X 或 Wayland 均可)
1 个赞
请问下xkeysnail 怎么表示单个Shift
按键。我希望将Shitf 在Emacs 下映射为 C-\
。xkeysnail的如下设置没法生效:
define_keymap(re.compile("Emacs"), {
K("Shift"): K("C-backslash"),
}, "Emacs")
wsug
23
没用xkeynail,不过类似这样的问题我也困惑好久了,emacs识别shift键按下该怎么写?我定义了很多shift开头的快捷键键,都是直接用的大写字母
在 Windows 系统通过 AHK 很容易实现 单个 Shift 或者 Ctrl 映射为其他组合键。
我这样做只是为了在 Linux 系统下输入法的切换方式统一。
define_multipurpose_modmap
可以分别设置一个键单独按下和与其他键一起按下时的行为,我把空格映射到了 Ctrl
:
define_multipurpose_modmap({
Key.SPACE: [Key.SPACE, Key.LEFT_CTRL]
})
这种搞法似乎只能映射到 Key.XXX
而不是 K("XXX")
,不过你的这个需求可以先把单按 Shift
映射到键盘上没有的键比如 F13
,再把 F13
映射到 C-\
。
多谢。你的这个思路确实可以解决我的问题。再请教下,define_multipurpose_modmap 能否指定只在Emacs 生效?
还有个 define_conditional_multipurpose_modmap
,似乎可以指定启用这个映射 condition
感谢 @dimlight1998 终于可以在系统和Emacs 都用 Shift来切换输入法了
这里我 映射 左Shift —> F19 ,F19 —> C-\. Xkeysnail 设置如下:
define_conditional_multipurpose_modmap(lambda wm_class: wm_class in ("Emacs"), {
Key.LEFT_SHIFT: [Key.F19, Key.LEFT_SHIFT],
})
define_keymap(re.compile("Emacs"), {
K("F19"): K("C-Backslash"),
}, "Emacs")
1 个赞
在终端使用有些组合键识别不了有没有办法处理?比如有个机器按下m+d
会被搞成5~
。
终端中的emacs也是很多组合键无法使用,关了xkeysnail就好了,每次使用都得关了xkeysanil然后各种键位不适应太上头
你可以在通用映射中排除终端,并针对终端进行单独的映射。可以参考下我的配置文件,我在 Arch 下面用的终端是Konsole。
你在终端里面用Emacs 的话,就不要在终端用xkesnail 了。
你下面这个设置应该就会影响Emacs的相关按键。
建议注释掉这段。
define_keymap(re.compile("XTerm"), {
K("C-x"): {
# C-x C-c (exit)
K("C-c"): K("M-f4"),
K("c"): K("M-f4"),},
}, "Xterm")