单纯添加或者去除显示器是没问题的…我这两个是正常使…
拔掉显示器之后按快捷键重新自动布局就行…我设置的mod+r
嗯 插拔确实不好使…
单纯添加或者去除显示器是没问题的…我这两个是正常使…
拔掉显示器之后按快捷键重新自动布局就行…我设置的mod+r
嗯 插拔确实不好使…
如果是固定的显示器和固定的摆放位置的话可以写脚本啊。
我目前是这样的,有一个笔记本和一个显示器,如果连接它们时,我会把笔记本竖着固定起来(贫穷使我我这样)看 PDF 之类的。
有两个 i3 的配置文件,一个用于笔记本屏幕,一个用于加显示器的。区别主要是一些绑定按键的区别和工作区的分配。
写的脚本思路大概是这样的:
xrandr | grep " connected " | wc -l
) xrandr --output eDP-1 --mode 1920x1080 --pos 0x0 --rotate normal
xrandr -auto
ln -sf "$I3_CONFIG_1" $HOME/.config/i3/config
如果是两个屏幕
xrandr --output eDP-1 --mode 1600x900 --pos 0x0 --rotate left --output HDMI-2 --mode 1920x1080 --pos 1000x0
ln -sf "$I3_CONFIG_2" $HOME/.config/i3/config
像 eDP-1 之类的好像在不同的显示器上是不同的,包括插不同的线也是。所以这个脚本只能用于一台设备啊。
我这 eDP-1 一直是笔记本屏幕啊,我现在就一个外置显示器,所以需求很简单,如果我设备变多的话,我肯定会考虑在扩充一下脚本的。
1 . 如果用的显示器比较固定,包括摆放位置固定,造成混乱的只有连接线、接口:
1.1 显示屏不一样大,xrandr
的结果有:
eDP-1 connected primary 900x1600+0+0 left (normal left inverted right x axis y axis) 344mm x 193mm
最后的这个实际尺寸可以拿来做做文章。
1.2 其他情况就找 EDID 来识别设备。
2 . 用的显示设备经常不同,摆放位置也不一样的话,我没考虑过,感觉无论用什么桌面/系统都得手动调一下吧。
@nlfiasel 请教下你是怎么设置开机自动启动的,我按照你推荐的这个方法操作,没法成功。 查看状态是报错退出。
手动执行的时候,是可以正常工作的。
系统: Arch Linux + KDE
● xkeysnail.service - xkeysnail
Loaded: loaded (/home/aqua/.config/systemd/user/xkeysnail.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2020-10-28 20:51:50 CST; 625ms ago
Process: 4391 ExecStartPre=/usr/bin/xhost +SI:localuser:root (code=exited, status=0/SUCCESS)
Process: 4392 ExecStart=/usr/bin/xkeysnail -q ~/.config/xkeysnail/config.py (code=exited, status=1/FAILURE)
Main PID: 4392 (code=exited, status=1/FAILURE)
xkeysnail 在 Gnome + Wayland + Arch 下,有一个存在了很久的问题。(排除不同版本的差异, 均有很大机会发生)
在启动 xkeysnail 的时候,会遇到随机某个按键失效。
例如: 第一次重启,空格键失效,下一次重启,a 失效, 再一次, l 失效,
我平常很少重启重启电脑,所以一旦有一次正常,我就用很久,所以还好,
今天因为调试一些东西的目的,多重启了几次,然后,基本上每次进来都这个或那个键不能用
最狠的一次,启动后不行,我就 logout, 再进来另一个键又失效了,再 logout, 我重复了 7 次,都快让整哭了 …
打算明天不用这个了,只用系统集成功能设定 Capslock 为 Ctrl. 右侧 Alt 为 Capslock 算了。
下面是我写的一个脚本,在 Gnome 下可以用的 (无论 X 或 Wayland 均可)
请问下xkeysnail 怎么表示单个Shift
按键。我希望将Shitf 在Emacs 下映射为 C-\
。xkeysnail的如下设置没法生效:
define_keymap(re.compile("Emacs"), {
K("Shift"): K("C-backslash"),
}, "Emacs")
在 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")
在终端使用有些组合键识别不了有没有办法处理?比如有个机器按下m+d
会被搞成5~
。
终端中的emacs也是很多组合键无法使用,关了xkeysnail就好了,每次使用都得关了xkeysanil然后各种键位不适应太上头
你在终端里面用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")
wo X,草率了。了然,谢