web-dev-qa-db-ja.com

クリップボードのコンテンツを入力するカスタムショートカットを作成する

キーボード入力をシミュレートして、クリップボードの内容を許可しないアプリケーション(リモートKVMなど)に「貼り付け」できるようにします。今、私はxdotoolxclipを使用しようとしています:

xdotool type "$(xclip -o)"

このコマンドは、私がターミナルウィンドウにいて、自分でそのコマンドを入力すると機能します。コマンドを実行すると、クリップボードの内容が入力されます。私の目標は、このコマンドをホットキーにバインドして、どのアプリケーションでも機能するようにすることです。

Linux Sendkeys

このホットキーを使用すると、フォーカスがあるウィンドウに対して予期しない動作が発生します。例えばターミナルウィンドウのサイズが縮小します(実際には多少面白いです)。スクリプトとして保存してスクリプトを呼び出すか、sh -cでコマンドをカプセル化すると、同様の結果が発生します。強力なxdotool typeコマンドを実際に使用するにはどうすればよいですか?

5
isuldor

このコマンドには2つの問題があります。 1つ目は、コマンドを実行しようとするときにバインディング内のメタキーが押されないようにする必要があることです。次に、デフォルトでxclipはXA_PrimaryではなくXA_CLIPBOARDバッファーを選択します。したがって、xclipの選択パラメーターとしてclipboardを渡す必要があります。ホットキーコマンドを次のように変更します。

sh -c 'sleep 0.5; xdotool type "$(xclip -o -selection clipboard)"'
6
Alex L.

xdotoolはキー押下を作成し、Ctrlキーをリリースしません...最も簡単な解決策は、遅延を追加することですegsleep 0.5で0.5秒待ってからCtrlを十分な速さで離してください。

3
Pierre Carrier

sh -c 'xdotool type --clearmodifiers-"$(xclip -o -selection clipboard)"'

「--clearmodifiers」はCTRL/ALT/Shiftなどを削除します。スリープが必要ないことを願っています

"-"は、xdotoolオプションの終わりを意味するため、貼り付けられたテストが-doで始まる場合、xdotoolはそれをオプションとして解釈しようとしません。

1
Eschaton

実際には、Ctrl+V(クリップボードのコピーと貼り付け)とShift+Insert(マウスマークと中クリックの貼り付け)でアクセスできる2つのバッファーがあります。

クリップボードを共有するために適切に接続されたセッションがある場合、2つのうちの1つは自動的に動作するはずです。

0
Nick Andrik