在linux上强制putty使用右键粘贴

在linux上强制putty使用右键粘贴

有没有办法putty在 Zorin OS(基于 Ubuntu)上强制允许通过右键单击进行粘贴。

我喜欢 Windows 的行为,当按下右键时,会粘贴选定的内容。

答案1

作为用户 @ateijelo说在他们的答案在 Unix 上不可能使用“Compromise(中扩展,右粘贴)”,因为它尚未实现。我不知道为什么不是,你应该向 Putty 开发人员询问这一点,很可能没有人要求这样做。但是,由于开源的性质,您始终可以修改程序的源代码以满足您的需求并使用它。以下补丁将修改右键单击的默认行为并使其粘贴文本:

diff --git a/unix/gtkwin.c b/unix/gtkwin.c
index 5660ee9..4f2ec2b 100644
--- a/unix/gtkwin.c
+++ b/unix/gtkwin.c
@@ -447,7 +447,7 @@ static Mouse_Button translate_button(Mouse_Button button)
     if (button == MBT_MIDDLE)
         return MBT_PASTE;
     if (button == MBT_RIGHT)
-        return MBT_EXTEND;
+        return MBT_PASTE;
     return 0;                          /* shouldn't happen */
 }

diff --git a/unix/uxsftpserver.c b/unix/uxsftpserver.c
index a90344e..6fab0ba 100644
--- a/unix/uxsftpserver.c
+++ b/unix/uxsftpserver.c
@@ -412,16 +412,6 @@ static void uss_fstat(SftpServer *srv, SftpReplyBuilder *reply,
     }
 }

-#if !HAVE_FUTIMES
-static inline int futimes(int fd, const struct timeval tv[2])
-{
-    /* If the OS doesn't support futimes(3) then we have to pretend it
-     * always returns failure */
-    errno = EINVAL;
-    return -1;
-}
-#endif
-
 /*
  * The guts of setstat and fsetstat, macroised so that they can call
  * fchown(fd,...) or chown(path,...) depending on parameters.

您必须获取 Putty 源代码、应用补丁并重新构建 Putty。这是一个简单的过程。

克隆 Putty 存储库:

git clone git://git.tartarus.org/simon/putty.git && cd putty

将我上面粘贴的补丁保存到 MBT_PASTE.patch 并应用它(如果失败,请直接从下载补丁http://drabczyk.org/MTB_PASTE.patch):

git apply MTB_PASTE.patch

构建腻子:

$ cd unix
$ ../mkfiles.pl  && ../mkauto.sh
$ make -j$(nproc) -f Makefile.gtk LDFLAGS="-Wl,--no-as-needed,-ldl"

在我的机器上构建只需要 6 秒。启动新构建的 Putty 二进制文件:

./putty

您应该会看到所有已保存的会话和设置,就像您使用发行版的包管理器启动系统范围内安装的 Putty 一样。您现在应该能够通过右键单击粘贴选定的文本。如果您不想自己重新编译 Putty 并且您 相信我,你可以从这里获得预编译的二进制文件 http://drabczyk.org/putty

这种方法当然有其缺点。我引入的更改尚未被 Putty 开发人员正式接受,这意味着您现在正在使用 。如果您用此替换随发行版的包管理器安装的 Putty 二进制文件,则每次使用发行版的包管理器更新 Putty 时,它都会被替换(有时您甚至可能没有意识到 Putty 正在更新,例如在运行大规模系统升级时) 。或者,您可以将 Putty 的分叉放在其他地方,例如放在~/bin~/bin的 Putty 的前面$PATH,以便在系统范围的 Putty 二进制文件之前选择该分叉。我也不知道这个小变化会导致哪些不良副作用(如果有的话)。

我也在考虑使用,xdotool但我不确定你是否运行 X 或者 Wayland,我认为修改源代码中的一行更容易。

答案2

按住 CTRL 键并右键单击 Putty 窗口,您可以从菜单中选择“从剪贴板粘贴”或“复制到剪贴板”。足够接近?

答案3

MS-Windows/dos/cmd 终端具有粘贴最后选择绑定到右键单击的功能(如果启用)。 Putty 可能也在做同样的事情。

许多 X11 程序都将此绑定到中键单击。但是,无需通过额外的单击来选择选项。这将与 openssh 一起使用。

虽然我不知道为什么有人会在微软的Windows之外使用PuTTY(它是MS-Windows的一个ssh,可以帮助人们逃脱,并且不如konsole中的 open-ssh-client )。我已经确认,中键单击确实会粘贴到 Debian 10 上的 PuTTY 终端中:

Putty Release 0.70
Build platform: 64-bit Unix (GTK + X11)
Compiler: gcc 8.3.0
Compiled against GTK version 3.24.5
Source commit: 3cd10509a51edf5a21cdc80aabf7e6a934522d47

答案4

虽然我不知道如何强制 putty 在 Linux 上使用右键单击,但我建议(像其他答案一样)如果可能的话,使用更好的程序。

这里的每个人都假设您正在使用 putty 进行 SSH,如果是这种情况,我建议您使用标准终端和 SSH 程序。

但是,如果您使用串行接口,我建议您使用屏幕终端模拟器。例如,我像这样启动它sudo --group dialout screen /dev/ttyUSB0 115200来与我们的串行设备交互。通过这种方法,您只能获得立即窗口,如果您需要访问回滚,则必须使用热键 Ctrl+a,[ 然后您可以使用箭头键来导航历史记录。只需按 Esc 即可退出复制模式并返回到当前行。

使用标准终端,您可以像使用任何其他终端程序一样通过右键单击或热键(如果您的终端支持)进行复制和粘贴。通过屏幕,您还可以获得一大堆功能,这些功能可能有用/没用,具体取决于您需要做什么。

对于 Telnet 和 putty 支持的其他通信,我确信 Linux 有很多类似的替代方案。

如果这不包括您的用例,我建议修改您的问题,让我们真正知道您正在使用腻子做什么,以便我们可以提供最好的建议。

相关内容