一次選択を貼り付けるためのキーボードショートカット


40

プライマリ選択を貼り付けるための標準または従来のキーボードショートカットはありますか?

クリップボードの内容破壊することなく、テキストを選択して別のアプリに移動して貼り付けたいです。マウスに移動してポインタを見つけ、目的の場所に配置して、中クリックするよりも、キーボードに指を置いたままにします。

従来のものがない場合、またはアプリケーション固有で多くの人がサポートしていない場合、これをグローバルに機能させるための回避策はありますか?(または、少なくともより多くのアプリケーションで。)


2
:同じ可能性のある任意のディストリビューションunix.stackexchange.com/questions/11889/...
チロSantilli新疆改造中心法轮功六四事件

FWIW、Shift-Insertを使用してキーボードから(マウスボタンを使用せずに)プライマリ選択を貼り付け、ctrl-insert / ctrl-shift-insertを使用してクリップボード選択をコピー/貼り付け
Jonathan Hartley

@JonathanHartley私にとっては、プライマリ選択ではなくクリップボードからシフトペーストを挿入します
jberryman

回答:


32

仮想キープレスを送信することは私にとってはうまくいきませんが(コメントを参照)、その答えは私に似た解決策を探す気になりました。「テキスト」イベントを送信するxvkbdと、物理キーボードの現在の状態が無視されます。

sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null'

xvkbd -textいくつかのバックスラッシュシーケンスを使用しているため、エスケープして踊るのではなく-file動作します。 xvkbdまた、修飾子に関する警告テキストも出力しますが、この使用法とは無関係であるように見えます(しかし、私はそれを見たくありませんでした~/.xsession-errors)。

System> Preferences> Keyboard Shortcutsを使用して、これをショートカットにバインドしました。

xselおよびxvkbdパッケージをインストールする必要があることに注意してください。

sudo apt-get install xsel xvkbd

3
神聖なバナナ!できます!すごいね。Ubuntuはデフォルトでこれを設定する必要があります。
エリックジョンソン

8
私にとっては、sh -c 'xsel | xvkbd -file - 2>/dev/null'動作するように-xsendeventを使用して動作させる必要がありました。
sup

ちなみに、このコマンドを単一のキーショートカットに割り当てる必要がありました(幸いなことに、ThinkVantageボタンはThinkpadで何もしません-ctrl + alt + vは奇妙な動作をし、の一部のみを貼り付けましたxsel)。
sup

2
これは、2つの問題を除いて非常にうまく機能します。(1)フォーカスを失ったときに非表示にするように設定したドロップダウンターミナル(Guake)を使用します。このスクリプトを実行すると、ターミナルから一時的にフォーカスが削除され、非表示になります。(2)2バイト文字のUTF-8文字をうまく処理しません。たとえば、「éòü」を選択した場合、スクリプトを使用すると「éòü」と印刷されます。
スパラフーク

2
2番目のバグはにあるようxvkbdです。xselプライマリ選択の「éòü」で正常に動作しxvkbdますが、上記のスクリプトのように失敗します。(またxvkbd -text "éòü"、ここでは何も出力しませんが、失敗します。)
スパルホーク

7

これは、プログラムxdotoolクリックしてインストール)と xselクリックしてインストール)を組み合わせて使用​​することで取得でき ます

xdotoolウィンドウへの入力をシミュレートできます。xselPRIMARY選択の内容を出力します(デフォルト)。次のシェル1つのライナーがトリックを行います。

 xdotool type `xsel`

System-> Preferences-> Keyboard shortcutsメニュー項目を使用してこれを任意のキーにバインドするには、シェル呼び出しでラップする必要があります。

 sh -c 'xdotool type --clearmodifiers -- "`xsel`"'

入力はxdotool一部のプログラムでは機能しません。xdotoolのドキュメントのメモを参照してください。


アクティブなテキストボックスとカーソルの位置がその正確な位置にない限り機能しません。確かに機能しません。実際、これがウィンドウマネージャの境界を数えると、「ウィンドウタイトルの中間クリック」アクションが実行されますが、これはまったく異なります。

@ロジャーありがとう、テキストを修正しました。私はこれを行うには良い方法があるのかどうか好奇心:私自身は...かなりの時間のための-key「ペースト」を探している
リッカルドMurri

まあ、私は努力を感謝しますが、これはまだ動作しません。マウスの位置を心配したい場合は、最初にマウスを使用するだけです。:)

@ロジャー:それは2回目の正しいことを得た:xdotool + xselはそれを行います。(まあ、少なくとも私のために動作します。)
リカルドムリ

2
--clearmodifiersオプションが必要です。それ以外の場合は、キーボードショートカットの解放とxdotoolの実行の間に競合状態があります。10.04のリポジトリのxdotoolはこのオプションに合わせて更新されていません。自分でダウンロードしてビルドする必要がありました。ただし、-clearmodifiersは修飾子に奇妙な影響を与えるようです。最終的に、キーボードショートカットでxdotoolを機能させる方法がわかりません(ただし、テキストを実質的に入力するのに適しています)。

5

私はこの同じ質問に対する答えを探していましたが、+ がプライマリ選択を貼り付けるように働いているというこの答えを見つけました。私は私のために働いています。よりシンプル。ShiftInsert


Ubuntuでは、デフォルトではShift + Insertが通常のクリップボードを、主選択ではなくCtrl + vのように貼り付けます。どのディストリビューションを使用していますか?
パブロA

2

呼び出しxdotool click --clearmodifiers 2は、マウスの中ボタンのクリックをシミュレートします。これは(少なくとも私にとっては)xselを使用するよりもずっとうまく機能します。入力する前にマウスを配置する必要がありますが...


2

Debian Jessie 8.7で機能する別のxdotoolの提案(2017年1月):

xdotool click --delay 0 --clearmodifiers 2
  • xdotoolは、xvkbdとは異なり、マルチバイト文字列(pe UTF-8)を処理します。
  • xdotool click実際のクリックをシミュレートするため、マウスの位置に貼り付けるために自分でクリックする必要はありませんxdotool type。または、またはxvkbd を使用した場合のようになります。

唯一の問題は--clearmodifiers、クリックをシミュレートした後に使用する修飾子(Ctrl / Alt / Shift / Meta)を「押し戻す」ことです。でもで--delay 0(代わりに12msのの)、コマンドの実行には少しかかります。終了する前にキーを離すと、モディファイアは再び「押され」、実際のキーをもう一度押して離すまでそこに留まります。

そのため、モディファイヤを使用している場合、モディファイヤをリリースするには少し「遅い」(50ms?)である必要があります。

これをテストするには、キーボードショートカットをセットアップし、それをテキストエディターで使用してから、キー(a、矢印など)を押します。文字は小文字で表示されます。他に何かが起こった場合、速度が速すぎて修飾子がスタックします(大文字の場合はShift、すべてのテキストを選択した場合はCtrl、メニューを開いた場合はAlt)。修飾子をもう一度押して放し、リセットします。

速すぎる場合は、ilkerkの提案を使用できます。

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

その後、300ms 以内にそれらをリリースし、テキストが表示されるまで0.5秒待つ必要があります。

また、を使用xdotool typeすると、マウスポインターではなく、テキストカーソル位置に入力するようにテキストを挿入できます。click通常のミドルクリックの動作を好む場合に変更できます。

(新規投稿者がコメントで広がったパズルのピースを再びピースする必要がないように、この投稿を作成しました)


現在Arch Linuxで動作します
MountainX

1

私は解決策で問題なかった貼り付けシミュレーPRIMARYので代わりに、私はショートカットを追加し、選択をそのコピーPRIMARYを選択CLIPBOARD。私のショートカットを使用した後、私は貼り付けるCLIPBOARDと、通常の方法でCtrl+VCtrl+Shift+VまたはShift+Insert、アプリケーションに応じて。

PRIMARY選択範囲をコピーするコマンドCLIPBOARD

sh -c 'xsel --output --primary | xsel --input --cliboard'

Ctrl+InsertGnomeのショートカット設定で(任意に)バインドしますSystem Settings -> Devices -> Keyboard

他のソリューションとの問題の概要:私が試したxsel | xvkbd ...xsel | xdotool ...ソリューションを、彼らはシミュレートするので、彼らは非常にうまく動作しませんでした入力PRIMARYと同じではない文字によって選択文字を貼り付けるミドルクリックでそれを。問題には次のものがあります。大きな選択が一度に1文字ずつ挿入されるまでに長い遅延があります。「貼り付け」を元に戻す場合は、文字ごとに元に戻す必要がありますが、遅いです。あなたは「死んだキー」を使用しているならば、すべてが台無しに取得し、例えば「貼り付け」"e作り出しますë。はxvkdbUnicode文字を正しく処理しません。

警告:このソリューションは既存のCLIPBOARDコンテンツを上書きしますが、OPは既存のCLIPBOARDコンテンツを保持するソリューションを求めました。


これにより、元のクリップボードの内容が保存され、後で再設定されますか?または、元のクリップボードの内容を破棄して、クリップボードの内容を破棄せずに貼り付ける」という質問の一部に失敗しますか?
Xen2050

@ Xen2050はい、これはCLIPBOARDを破壊します。答えにメモを追加します。
ntc2 19:52

0

私は同じ問題を抱えていましたが、インターネット検索はあまり役に立ちませんでした。OPが述べたように、クリック2をシミュレートする問題は迷惑です。

上記の提案されたxdotoolxsel の問題は、xdotool「タイピング」を開始するとき、まだ別のキーを押していることです。それは、必ずしも出力の結果とは限りません。たとえば、「挿入」キーにバインドするとxdotool、指が「挿入」キーを押している間にキーが送信され、何も発生しません。

以下は、キープレスにバインドするための回避策です。

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

完璧ではありませんが機能しています。これで、キーを押す(およびキーを押す)の選択を完了する0.3秒があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.