#键盘 #鼠标 #x11 #数位板 #鼠标按钮 #显示服务器

应用 x11-input-supercharger

添加系统级类似 Windows 的滚动模式和键盘条件点击

9 个版本 (4 个重大变更)

0.5.0-alpha2019年3月25日
0.4.0 2018年9月9日
0.3.1 2018年8月22日
0.2.2 2018年8月16日
0.1.1 2018年8月15日

#1934命令行工具

每月 21 次下载

MIT 许可证

57KB
600 代码行

X11 输入加速器

添加系统级

  • 自动滚动模式 - 点击(中键)按钮并拖动光标滚动,再次点击以退出模式(可以自定义使用不同的按钮或需要按住按钮)
  • 使用键盘键进行点击,仅在选中输入设备上次使用后 x 毫秒内有效

适用于鼠标或数位板用户。

滚动模式需要选定的按钮未被绑定(示例)。

从 0.3.0 版本开始,键盘快捷键无法正确捕获。因此,如果您想例如将左键绑定到 2,并通过按 Ctrl+2(Ctrl+左键)在新标签页中打开链接,请先在浏览器设置中解除 Ctrl+2 的绑定。

示例配置 - Wacom Bamboo 数位板

# Windows-like auto-scrolling. Press `button_id` to start scrolling,
# then move your mouse up or down. The longer the distance between the
# cursor and the starting point, the faster you scroll. Remove/comment
# out whole section if you don't want it.
[scroll]
# Device with buttons. Use `xinput list` and `xinput test-xi2 --root` to
# determine.
device = "Wacom Bamboo Pen stylus"
# Change it if you have many devices with the same name.
subdevice = 0
# `hold = false` means click once to enable, click once to disable.
# Recommended `false` on tablets, as it's annoying when you connectivity
# while using `hold = true`.
hold = false
# Scrolling speed. Has different effect on different screen resolutions.
# Recommended to set `speed` to high value and decrease system-wide
# scrolling speed as much as possible. Equation: `speed`×`distance`[px]
# ÷1_000_000_000 = emulated mouse wheel rolls.
speed = 600000
# Which button toggles scrolling. Button 2 is the middle mouse button.
# Button 3 is upper button on Wacom Bamboo Pen.
button_id = 3
# Whether to show crosshair/indicator at cursor original position
# (when the scrolling started)
indicator = true
indicator_size = 5
# Whether to stop scrolling when keyboard event occurs
cancel_on_keypress = true

# Click using keyboard. Active only until `timeout_ms` has passed since
# the last time any of grabbed devices was used. Remove/comment out
# whole section if you don't want it.
[keyboard_click]
# Device that moves or has buttons, used to determine timeout. Use
# `xinput list` and `xinput test-xi2 --root` to determine.
device = "Wacom Bamboo Pen stylus"
# Change it if you have many devices with the same name.
subdevice = 0
# How much time must pass until keys go back to normal.
timeout_ms = 500
# Key that emulates left mouse button.
# **DO NOT USE TOGGLE BUTTON (CapsLock etc.)**
key_lmb = 25 # W
# Key that emulates right mouse button.
# **DO NOT USE TOGGLE BUTTON (CapsLock etc.)**
key_rmb = 26 # E
# Key that will be used for temporary purposes.
# **DO NOT USE TOGGLE BUTTON (CapsLock etc.)**
key_unused1 = 106 # numpad /
# Key that will be used for temporary purposes.
# **DO NOT USE TOGGLE BUTTON (CapsLock etc.)**
key_unused2 = 63 # numpad *

示例配置 - 鼠标

使用上述配置,但将 xinput_grep 替换为例如“游戏鼠标”,并将 stylus_button_id 替换为某个按钮 ID。中键按钮 ID 是 2,但那需要您以某种方式解除其粘贴功能。如果您鼠标有这些额外按钮,我建议使用它们。按钮 ID 4 和 5 保留用于滚动事件。您可以使用 xinput test-xi2 --root 检查按钮 ID。

安装

首先,安装 GTK 3.18+(Ubuntu 16.04 及更高版本默认安装),xdotoolxmodmap

发行版页面 下载二进制文件,或通过复制源代码并运行 cargo build --release 来构建它,或者使用 cargo install x11-input-supercharger 让 Cargo 下载源代码并将二进制文件放入 PATH。需要 Rust 稳定工具链。

在启动程序时,Config.toml 必须位于当前工作目录中。

杂项

控制台(终端模拟器)在选中时不喜欢按键。请使用Gnome终端。

该程序抓取root X11输入设备。

代码很丑陋,该程序有时在关闭时崩溃(但似乎不会使系统处于损坏状态)。

KSysGuard显示该程序在Intel i5 6300HQ上使用0-1%的CPU时间。

如果该程序在您的系统上不稳定,请检查版本0.2.x。它们使用文本解析器而不是X11 API。然而,当时使用了不同的键盘抓取解决方案,这导致基于Chromium的程序出现滞后。请参阅旧树中的旧README。

提示:自动启动

将以下命令添加到自动启动命令中

bash -c 'cd /path/to/folder/with/config/ && /path/to/x11-input-supercharger & disown'

提示:光标速度

xinput set-prop "Wacom Bamboo Pen stylus" "Device Accel Constant Deceleration" 1.6

您可以将该命令添加到自动启动命令中。

致谢

感谢Linux杂志的Bruce Byfield的关于Wacom的文章。

感谢Linux Wacom项目开发者使Linux上的Wacom成为输入设备成为可能。

感谢所有X11开发者为他们创造的出色工具。

依赖关系

~15–23MB
~424K SLoC