命令行手册

Man » gpm 手册在线 - gpm 手册页的详细在线文档

🌍
gpm - 一个剪切粘贴实用程序和虚拟控制台的鼠标服务器

概要

gpm [ 选项 ]

描述

此软件包旨在成为 Linux 控制台上运行的应用程序的有用鼠标服务器。 它基于“selection”软件包,并且其部分代码来自 selection 本身。此软件包旨在作为“selection”的替代品,以实现剪切和粘贴机制;它还提供 其他功能。“selection”软件包提供了第一个使用两个鼠标按钮的 Linux 剪切和粘贴实现,剪切缓冲区仍然称为“selection 缓冲区”,或者在本文档中简称为“selection”。以下信息是从 texinfo 文件中提取的,该文件是首选的信息来源。

`gpm' 可执行文件旨在像守护程序一样运行(因此,`gpmd' 将是一个更好的名称)。 本节旨在描述 `gpm' 的命令行选项,而其内部结构将在下一节中描述。

由于 \`ioctl(TIOCLINUX)' 系统调用中的限制,\`gpm' 必须由超级用户运行。

这些限制已添加到最新的 1.1 内核中,以修复与 selection 和屏幕转储相关的安全漏洞。

服务器可以配置为符合用户的喜好,并且使用鼠标的任何应用程序都将继承服务器的设置。从 1.02 版本到 1.19.2 版本,任何登录到系统控制台的用户都可以使用 -q 选项更改鼠标设置。出于安全原因,现在不再允许这样做。

从 0.97 版本开始,服务器程序将自身置于后台。要停止 `gpm',只需使用 -k cmdline 选项重新调用它,或者 killall gpm 可能是一个更好的选择。

特殊命令

1.10 版本添加了在特定情况下执行特殊命令的功能。特殊 命令默认情况下是重新启动和停止系统,但用户可以指定自己的选择。使用鼠标调用命令对于程序员来说是一个方便的功能,因为它允许在键盘被锁定且没有可用的网络来将系统恢复到正常状态时,执行干净的关机操作。

特殊命令通过三重单击左键和右键来切换——这在正常鼠标使用期间不太可能发生。三重单击最简单的方法是按住其中一个按钮,然后三重单击另一个按钮。当切换特殊处理时,控制台上会出现一条消息(如果您的系统有扬声器,扬声器会发出两次蜂鸣声);如果用户释放所有按钮并在三秒钟内再次按下一个按钮,则将执行与该按钮对应的特殊命令。


默认的特殊命令是:

左键

通过向 init 进程发送信号来重启系统

中键(如果有)

执行 /sbin/shutdown -h now

右键

执行 /sbin/shutdown -r now

^ S 命令行开关启用特殊命令处理,并允许更改这三个特殊命令。要接受默认命令,请使用 -S ""(即指定一个空参数)。要指定自己的命令,请使用冒号分隔的列表来指定与左键、中键和右键关联的命令。如果任何命令为空,则将其解释为“向 init 进程发送信号”。除了执行外部命令之外,还支持此操作,因为有时严重的错误会导致系统无法 fork;在这种罕见的情况下,程序员应该能够以某种方式关闭系统,并且从正在运行的进程中杀死 init 是唯一的办法。

例如,-S ":telinit 1:/sbin/halt' 将杀死 init 与左键关联,将进入单用户模式与中键关联,并将系统停止与右键关联。

系统管理员显然应该小心处理特殊命令,因为 gpm 以超级用户权限运行。特殊命令最适合于其鼠标只能由受信任的人员物理访问的计算机。

命令行选项

可用的命令行选项如下:

-a 加速值

设置当单个鼠标移动事件的长度超过 delta 时(请参阅 -d)使用的加速值。

-A[限制]

启动时禁用选择粘贴。这旨在作为一种安全措施;一种可能的攻击方法是将一个恶意 shell 命令放入选择缓冲区(rm -rf /),包括终止换行符,然后受害者只需单击中键……。从版本 1.17.2 开始,这已经发展成为一种更通用的老化机制;gpm 守护程序可以自动在一段时间不活动后禁用(老化)选择粘贴。要启用此模式,只需提供可选的限制参数(中间没有空格!),该参数被解释为选择有效且可粘贴的时间(以秒为单位)。从版本 1.15.7 开始,提供了一个名为 disable-paste 的小程序。以下内容可以很好地添加到 /etc/profile 中,如果您允许多个用户在您的控制台上工作。

case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac
-b 波特率

设置波特率。

-B 序列

设置按钮序列。123 是默认序列,321 可供左撇子使用,132 可用于双按钮鼠标(尤其是在 Emacs 中)。所有按钮的排列方式都是允许的。

-d 增量

设置增量值。当单个鼠标移动事件的长度超过增量时,将使用加速值作为乘数。(必须大于或等于 2)


-D     启动时不要自动进入后台操作,并将消息记录到标准错误流,而不是 syslog 机制。 这对于调试很有用;在之前的版本中,它是通过编译时选项完成的。

-g 数字
对于滑点设备,通过点击来模拟指定的按钮。 数字必须是 `1`、`2` 或 `3`,并且指的是在执行 `-B` 按钮重新映射之前使用的按钮编号。 此选项适用于 mman 和 ps2 解码。 默认情况下不模拟任何按钮,因为 ps2 点击与某些普通 ps2 鼠标不兼容。

-h     打印命令选项摘要。

-i 间隔
设置用于多重点击的上限时间间隔。 如果按钮释放和按钮按下事件之间的间隔小于限制,则该按键将被视为双击或三击。 时间以毫秒为单位。

-k     终止正在运行的 gpm。 这可由 busmouse 用户在启动 X 之前使用(除非他们使用 `-R` 或从内核中删除了单开限制)。

-l 字符集
选择用于 `inword()` 查找的表。 字符集参数是一个字符列表。 `-' 用于指定范围,而 `\` 用于转义下一个字符或提供八进制代码。 只有可见字符才能出现在字符集中,因为控制字符不能出现在文本模式视频内存中,因此无法进行选择。

-m 文件名
选择要打开的鼠标文件。 必须在 `-t` 和 `-o` 之前。

-M     启用多模式。 守护程序将读取两个不同的鼠标设备。 任何后续选项都将引用第二个设备,而任何之前的选项都将用于第一个设备。 此选项会自动强制启用重复器 (`-R`) 选项。

-o 额外选项列表
此选项的工作方式类似于 `mount` 的 `-o` 选项;它用于指定特定于每种鼠标类型的“额外选项”列表。 该列表以逗号分隔。 `dtr`、`rts` 或 `both` 选项由串行初始化使用,以切换与早期 gpm 版本兼容的调制解调器线路;但是,请注意,将 `-o dtr` 与非纯串行鼠标类型一起使用可能会导致错误。 顺便说一下,请在 `-m` 和 `-t` 之后使用 `-o`。

-p     强制在选择时使指针可见。 这是 `selection-1.7` 的行为,但有时会令人困惑。 默认情况下,不显示指针,这有时也会令人困惑。

-r 数字
将响应度设置为运动的百分比(1 到 100,默认值为 10)。 可以使用较低的数字来减慢光标移动速度,这不能用于加快鼠标移动速度,请参阅 `-a`。

-R[名称]
使 `gpm` 充当重复器:在图形模式下接收到的任何鼠标数据都将以协议名称的形式输出到 `/dev/gpmdata` 文件中,协议名称作为可选参数给出(不能有空格!)。 理论上,你可以使用与 `-t` 选项相同的名称,尽管将一些协议重复可能需要一段时间才能实现。 此外,你可以指定 `raw` 作为名称,以逐字节地重复鼠标数据,而不进行任何协议转换。 如果省略名称,则默认值为 `msc`。 在重复器模式下使用 gpm,你可以配置 X 服务器以使用其 fifo 作为鼠标设备。 此选项对于 bus-mouse 用户来说,可以用来覆盖单开限制。 此外,这是一种简单的方法来管理那些愚蠢的双模式鼠标,它们迫使你在更改视频模式时按住中间按钮。 此选项由 `-M` 选项强制启用。

-s 数字
设置鼠标设备的采样率。

-S 命令
启用特殊命令处理,并可选地指定自定义命令,命令之间用冒号分隔。请参阅上面的详细描述以获取有关特殊命令的信息。

-t 名称
设置鼠标类型。使用 `\-t help'` 获取允许的类型列表。在通过 `-m` 选项选择鼠标设备后,使用 `-t`。

-v
打印版本信息并退出。

-2
强制使用两个按钮。这意味着,如果有中间按钮,则将其视为右键。

-3
强制使用三个按钮。默认情况下,鼠标被视为一个双键鼠标,直到按下中间按钮。如果有三个按钮,则使用右键来扩展选择,而使用中间按钮来粘贴选择。注意:如果在双键鼠标上使用 `-3` 选项,则将无法粘贴选择。

操作

要选择文本,请按住左键并拖动鼠标。要在相同或另一个控制台中粘贴文本,请按中间按钮。右键用于扩展选择,类似于 xterm 中的操作。

双键鼠标使用右键来粘贴文本。

双击和三击可以选择整个单词和整行。建议使用 -p 选项以获得最佳的视觉反馈。

如果行末尾有一个尾随空格,并且该行没有其他文本,则该行的其余部分将自动被选中。如果选择了多行,则将从选择缓冲区中删除每行中高亮显示的尾随空格。

对虚拟控制台中显示的任何输出都会清除屏幕上高亮的选定内容,以维护显示的完整性,但粘贴缓冲区的内容不受影响。

如果控制终端置于图形模式(例如,运行 X11 时),则禁用选择机制,并在恢复文本模式时重新启用。请参阅下面的“BUG”部分。

BUG

^ pm 服务器可能与 X 交互时存在问题:如果鼠标是单开设备(即,总线鼠标),则应在启动 X 之前停止 gpm,或使用 -R 选项(参见上面的内容)。要停止 gpm,只需调用 gpm -k。这个问题不适用于串行鼠标。

不能在同一系统上运行两个 gpm 实例。如果有两个鼠标,请使用 -M 选项(参见上面的内容)。


当当前控制台处于图形模式时,gpm 会休眠,直到返回文本模式(除非使用了 -R 选项)。因此,它不会响应客户端。 此外,不太可能出现“渴望使用鼠标”的客户端在隐藏的控制台中出现。

与 gpm 捆绑在一起的客户端未更新,因此在使用它们时存在潜在的安全风险。

作者

Andrew Haylett <_>(原始选择代码) Ian Zimmerman <_>(旧维护者) Alessandro Rubini <_>(旧维护者(仍然提供很多帮助)) Nico Schottelius <_>(维护者)

许多贡献者,包括选择代码和 gpm。

维护者

当前的维护者是 Nico Schottelius。如果没有 Alessandro Rubini 和邮件列表的帮助,我将无法维护 gpm。开发邮件列表可以通过 _ 访问。有关列表的更多信息,请参阅 gpm 源代码分发文件中包含的 README 文件。

文件

/var/run/gpm.pid 正在运行的 gpm 的 PID
/dev/gpmctl 客户端的控制套接字
/dev/gpmdata 由一个重复器(`-R` 选项)守护进程写入的 FIFO。

参见

gpm-types(7)  描述了 gpm 支持的当前指针类型。

关于 gpm 的 info 文件,其中提供了更完整的信息,并解释了如何编写 gpm 客户端。