跳转至内容

蓝牙鼠标

来自 ArchWiki

本文介绍与蓝牙鼠标相关的配置和故障排除步骤。本文信息建立在主 Bluetooth 文章的基础上,并假定用户已按照该文章中的安装、配置或故障排除步骤进行操作。

配置

Apple Magic Mouse 滚动速度

如果滚动速度太慢,您可以尝试

# modprobe -r hid_magicmouse
# modprobe hid_magicmouse scroll_acceleration=1 scroll_speed=55

滚动速度可以设置为 0 到 63。

如果速度符合您的要求,可以在 /etc/modprobe.d/ 中使更改永久生效

/etc/modprobe.d/hid_magicmouse.conf
options hid_magicmouse scroll_acceleration=1 scroll_speed=55

Apple Magic Mouse 中键点击

如果您觉得中键点击太灵敏,可以禁用它

# modprobe -r hid_magicmouse
# modprobe hid_magicmouse emulate_3button=0

如果此设置符合您的要求,可以在 /etc/modprobe.d/ 中使更改永久生效

/etc/modprobe.d/hid_magicmouse.conf
options hid_magicmouse emulate_3button=0

鼠标配对与双系统启动

当您双系统启动 Windows 和 Linux 时,您可能会发现自己一遍又一遍地重新配对蓝牙鼠标。每次切换操作系统时都会发生这种情况,因为当您配对设备时,您的蓝牙服务会生成一组唯一的配对密钥。根本原因在于,这组配对密钥无法在两个操作系统之间共享。

首先,您的计算机存储蓝牙设备的 MAC 地址和配对密钥。其次,您的蓝牙设备存储您计算机的 MAC 地址和匹配的密钥。这通常工作正常,但您的蓝牙端口的 MAC 地址在 Linux 和 Windows 上是相同的(它在硬件级别设置)。但是,当您在 Windows 或 Linux 中重新配对设备时,它会生成一个新的密钥。该密钥会覆盖蓝牙设备上先前存储的密钥。Windows 会覆盖 Linux 的密钥,反之亦然。

要解决此问题,请参阅 Bluetooth#Dual boot pairing

如果使用蓝牙 LE 设备,请使用 python 脚本,稍作修改以适应 Arch Linux,该脚本最初在 [1] 中讨论。

故障排除

鼠标延迟

如果您遇到鼠标延迟,可以尝试提高轮询率。有关更多信息,请参阅 Mouse polling rate

您可以尝试在 BlueZ 中设置鼠标的最小/最大延迟,请参阅 [2]

/var/lib/bluetooth/您的适配器 MAC 地址/您的鼠标 MAC 地址/info 中添加或修改以下部分(相应地调整路径)

[ConnectionParameters]
MinInterval=6
MaxInterval=9
Latency=44
Timeout=216

此外,您还可以使用 hcitool(在 bluez-deprecated-tools 包中)来更改设备的延迟参数

# HANDLE="$(hcitool con | grep '<Bluetooth Mouse mac address>' | awk '{print $5}')"  # get the device handle
# hcitool lecup --handle $HANDLE --latency 0 --min 6 --max 8

请注意,此方法仅对当前连接有效。如果鼠标断开连接,您将需要再次执行。

或者,您可以通过 debugfs 更改默认延迟设置。请参阅 /sys/kernel/debug/bluetooth/hci0/conn_{latency,{min,max}_interval}

此示例将解决延迟问题,但您必须先取消配对然后重新配对鼠标

# echo 0 > /sys/kernel/debug/bluetooth/hci0/conn_latency
# echo 6 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
# echo 7 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval

USB 接收器问题

如果您在使用 USB 接收器时遇到问题,您可能还想尝试

# modprobe -v rfcomm

此时,您应该会得到一个 hci0 设备,并且

# hcitool dev

有时设备不会立即激活。尝试使用以下命令启动接口

# hciconfig hci0 up

并如上所示搜索设备。

鼠标总是断开连接

如果鼠标停止工作,但在重新启动蓝牙后又能正常工作,或者鼠标在闲置几秒钟后似乎“进入睡眠状态”(至少对于某些型号的 Dell XPS 13 是这样 [3]),您可能需要为选定的设备 禁用 USB 自动挂起

问题也可能出在设备超时和 HID 设置上。请参阅 #Thinkpad Bluetooth Laser Mouse problems

如果您使用的是 Logitech 设备,可以通过遵循 #Problems with the Logitech BLE mouse (M557, M590, M720, anywhere mouse 2, etc) 中的过程来解决此问题。

Thinkpad 蓝牙激光鼠标问题

如果您发现 Thinkpad 蓝牙激光鼠标每隔几秒钟就会快速连接然后(几毫秒后)断开连接(当您移动鼠标或按下按钮时),请尝试使用密码 0000 进行配对,而不是无密码配对。

如果上述方法无效,问题可能出在设备超时设置上。编辑/创建文件 /etc/bluetooth/input.conf 并进行以下更改

# Configuration file for the input service
# This section contains options which are not specific to any
# particular interface
[General]

# Set idle timeout (in seconds) before the connection will be disconnect and
# the input device is removed.
# Defaults: 0 (disabled)
IdleTimeout=0

# Enable HID protocol handling in userspace input profile
# Defaults to true (Use UHID instead of kernel HIDP)
UserspaceHID=true

这些更改将防止设备超时,以便保持连接。第二个设置启用了蓝牙设备的用户空间 HID 处理。但是,两者默认都应如此设置。重新启动 bluetooth.service 来测试更改。您也可能需要重启并重新配对设备。

Kensington Expert Wireless Trackball 问题

Kensington Expert Wireless Trackball 的默认轮询率在 200ms 范围内,这会导致延迟。要解决此问题,请在 /var/lib/bluetooth/您的适配器 MAC 地址/您的鼠标 MAC 地址/info 中添加或修改 [ConnectionParameters] 部分(根据您的鼠标蓝牙地址调整路径),如上所示,特别是将延迟降低到一个较小的值,甚至 0

Logitech BLE 鼠标问题 (M557, M590, M720, Anywhere Mouse 2 等)

在某些情况下,鼠标已配对但使用时不动。设备需要被信任并解除屏蔽。首先打开终端并运行 bluetoothctl

  1. 关闭蓝牙
    [bluetooth] # power off
  2. 打开蓝牙,然后根据需要启用鼠标上的配对模式
    [bluetooth] # power on
  3. 列出可用的蓝牙设备,您需要复制鼠标设备 ID XX:XX:XX:XX:XX:XX
    [bluetooth] # scan on
  4. 如果已配对,则取消配对设备
    [bluetooth] # remove XX:XX:XX:XX:XX:XX
  5. 将设备置于配对模式(通常通过长按按钮)。它将被扫描并显示。请注意,设备 ID 可能会(略有)变化,因此请复制扫描显示的设备 ID。
  6. 信任该设备
    [bluetooth] # trust XX:XX:XX:XX:XX:XX
  7. 将鼠标与计算机配对
    [bluetooth] # pair XX:XX:XX:XX:XX:XX
  8. 将计算机与鼠标连接
    [bluetooth] # connect XX:XX:XX:XX:XX:XX
  9. 解除屏蔽设备控制
    [M585/M590] # unblock
  10. 关闭并重新打开蓝牙。

如果鼠标未立即工作,只需关闭并重新打开鼠标电源。

在某些情况下,可能还需要加载 uhid 内核模块

参见