web-dev-qa-db-ja.com

LinuxでPuTTYに右クリックによる貼り付けを強制する

Zorin OS(Ubuntuベース)でPuTTYに右クリックで貼り付けを強制する方法はありますか?.

私は、右クリックが押されたときに選択されたものが貼り付けられるウィンドウの動作が好きです。

4
Freedo

ユーザーとして @ 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を再ビルドする必要があります。しかし、それは簡単なプロセスです。

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

PuTTYをビルドします。

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

私のマシンではビルドに6秒しかかかりません。新しく構築されたPuTTYバイナリを起動します。

./PuTTY

ディストリビューションのパッケージマネージャーを使用してシステム全体にインストールされたPuTTYを起動した場合と同じように、保存されたすべてのセッションと設定が表示されます。これで、選択したテキストを右クリックで貼り付けることができるはずです。自分でPuTTYを再コンパイルしたくない場合、trust私はここからプリコンパイルされたバイナリを取得できます http:// drabczyk.org/PuTTY

もちろん、この方法には欠点があります。私が紹介した変更はPuTTY開発者に正式に受け入れられていません。つまり、現在 fork を使用しているということです。ディストリビューションのパッケージマネージャーでインストールされたPuTTYバイナリをこれに置き換えると、ディストリビューションのパッケージマネージャーを使用してPuTTYを更新するたびに置き換えられます(大規模なシステムアップグレードを実行しているときなど、PuTTYが更新されていることに気付かないこともあります)。 。または、PuTTYのフォークを別の場所、たとえば~/binに配置し、~/bin$PATHの前に追加して、システム全体のPuTTYバイナリの前にフォークが選択されるようにすることもできます。また、この小さな変更が原因で発生する可能性のある望ましくない副作用があるかどうかもわかりません。

私はxdotoolの使用についても考えていましたが、XとWaylandのどちらを実行しているかわからないので、ソースコードの1行を変更する方が簡単です。

2

@ arkadiusz-drabczykの回答に基づいて、Debianで独自のバージョンのPuTTYを作成する方法を具体化します。

AptソースファイルでソースURIを有効にします。これは、多くのディストリビューションのUIで実行できます。

enter image description here

または、/ 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
ateijelo

MS-Windows/dos/cmdターミナルには、右クリックにバインドされた(最後の選択を貼り付ける)機能があります(有効な場合)。 PuTTYも同じように動作している可能性があります。

多くの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
ctrl-alt-delor

Ctrlキーを押しながらPuTTYウィンドウを右クリックすると、メニューから[クリップボードから貼り付け]または[クリップボードにコピー]を選択できます。十分近い?

0
Michael D.

良い知らせは持っていません。ドキュメント はこれを言います

多くの場合、Windowsには2つのマウスボタンしかないため、Windowsで実行すると、PuTTYを構成できます。 PuTTYのデフォルト設定(「妥協」)では、右のボタンが貼り付けられ、中央のボタン(ある場合)が選択を拡張します。

3ボタンマウスを使用していて、xtermの配置に既に慣れている場合は、「マウスボタンのアクション」コントロールを使用して選択できます。

実際、configには追加のセクションがあります。

enter image description here

また、保存されたセッションの構成ファイルでMouseIsXterm=1オプションを設定した場合でも、PuTTYはWindowsで実行されている場合にのみ注意を払います。ソースファイル windows.cmouse_is_xtermを検索します。

Linuxを頻繁に使用している場合は、マッスルメモリを中ボタン貼り付けにトレーニングすることをお勧めします。WindowsでPuTTYを使用する場合も同様にしてください。これはすべてのLinux端末の標準であり、変更しようとすると困難な戦いになります。一部の端末では許可される場合がありますが、ほとんどの場合は許可されません。

0
ateijelo