AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 567563
Accepted
Freedo
Freedo
Asked: 2020-02-15 01:52:24 +0800 CST2020-02-15 01:52:24 +0800 CST 2020-02-15 01:52:24 +0800 CST

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

  • 772

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

我喜欢windows的行为,当按下右键时,粘贴选定的东西。

keyboard-shortcuts putty
  • 6 6 个回答
  • 5328 Views

6 个回答

  • Voted
  1. Best Answer
    Arkadiusz Drabczyk
    2020-02-27T09:06:10+08:002020-02-27T09:06:10+08:00

    正如用户 @ateijelo在他们的回答中所说,在 Unix 上无法使用“妥协(中间扩展,右粘贴)”,因为它没有实现。我不知道为什么不是,您应该向 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。虽然这是一个简单的过程。

    克隆腻子存储库:

    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 开发人员正式接受,这意味着您现在正在使用 fork。如果您使用发行版的包管理器替换安装的 Putty 二进制文件,则每次使用发行版的包管理器更新 Putty 时都会替换它(有时您甚至可能没有意识到 Putty 正在更新,例如在运行大规模系统升级时) . 或者,您可以将 Putty 的 fork 放在其他地方,例如放在并添加到您的~/bin前面,以便在系统范围的 Putty 二进制文件之前选择 fork。我也不知道这个小小的变化会导致哪些不想要的副作用(如果有的话)。~/bin$PATH

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

    • 2
  2. Michael D.
    2020-02-25T11:15:07+08:002020-02-25T11:15:07+08:00

    按住 CTRL + 右键单击​​腻子窗口将允许您从菜单中选择“从剪贴板粘贴”或“复制到剪贴板”。足够接近?

    • 1
  3. ateijelo
    2020-02-28T10:43:12+08:002020-02-28T10:43:12+08:00

    好的,根据@arkadiusz-drabczyk 的回答,我将详细说明如何在 Debian 上制作自己的 PuTTY 版本:

    在 apt 源文件中启用源 URI。这可以通过许多发行版中的 UI 来完成:

    在此处输入图像描述

    或者通过确保 /etc/apt/sources.list 中有如下所示的行:

    deb-src http://deb.debian.org/debian/ stable main contrib non-free
    

    一旦你有了这些,请按照下列步骤操作:

    mkdir putty
    cd putty
    sudo apt-get update
    sudo apt-get install wget
    sudo apt-get build-dep putty
    apt-get source putty
    cd putty-0.70
    sed -i 's/return MBT_EXTEND/return MBT_PASTE/' unix/gtkwin.c
    dpkg-buildpackage -b --no-sign
    cd ..
    sudo dpkg -i putty_0.70-6_amd64.deb putty-tools_0.70-6_amd64.deb
    

    检查它所说的位置0.70并更改为适合您的版本。这应该会安装您修改后的 PuTTy。

    • 1
  4. ctrl-alt-delor
    2020-02-22T01:39:37+08:002020-02-22T01:39:37+08:00

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

    许多 X11 程序都有这个绑定到中键。但是,无需通过额外的单击来选择选择。这将适用于 openssh。

    虽然我不知道为什么有人会在 Microsoft 的 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
    
    • 0
  5. ateijelo
    2020-02-25T15:59:10+08:002020-02-25T15:59:10+08:00

    我不带来好消息。文档是这样说的:

    Windows 通常只有两个鼠标按钮,因此在 Windows 上运行时,PuTTY 是可配置的。在 PuTTY 的默认配置(“妥协”)中,右键粘贴,中间按钮(如果有的话)扩展选择。

    如果您有一个三键鼠标并且您已经习惯了 xterm 排列,您可以使用“鼠标按钮的操作”控件来选择它。

    实际上,配置还有一个附加部分:

    在此处输入图像描述

    并且即使您MouseIsXterm=1在保存会话的配置文件中设置了该选项,PuTTY 也仅在 Windows 中运行时才会关注它。mouse_is_xterm在源文件windows.c中搜索。

    如果你经常使用 Linux,我建议你训练你的肌肉记忆到中键粘贴,当你在 Windows 中使用 PuTTY 时,也这样做。它是所有 Linux 终端的标准,如果你试图改变它,你将面临一场艰苦的战斗。一些终端可能允许,但大多数不允许。

    • 0
  6. TheBeardedQuack
    2020-02-25T08:06:55+08:002020-02-25T08:06:55+08:00

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

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

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

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

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

    如果这不涵盖您的用例,我建议修改您的问题,让我们知道您在使用 putty 做什么,以便我们提供最佳建议。

    • -1

相关问题

  • 如何停止使用 Kazam 录制

  • 将 CAPS+hjkl 绑定到方向键;大写到 ESC

  • 睡眠快捷指令 lubuntu?

  • 在 Vim 中删除到命令行末尾

  • 如何使用 PuTTY 通过 ssh 将本地文件传输到远程服务器?[复制]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve