web-dev-qa-db-ja.com

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

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

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

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

39
Roger Pate

仮想キープレスの送信は私には機能しません( comments を参照)。しかし、その答えは私に似たソリューションを探すように促しました。 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
32
Roger Pate

これは、プログラム xdotoolクリックしてインストール )と xselクリックしてインストール =)。

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

 xdotool type `xsel`

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

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

xdotoolと入力しても、一部のプログラムでは機能しません。 xdotool documentation のメモを参照してください。

7
Riccardo Murri

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

5
Anne

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

2
Robert Jakob

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

xdotool click --delay 0 --clearmodifiers 2
  • xdotoolは、xvkbdとは異なり、マルチバイト文字列(p.e. 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`"'

次に、それらをless 300ms未満で解放し、テキストが表示されるまで0.5秒待つ必要があります。

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

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

1
Chema

貼り付けをシミュレートするソリューションに問題がありましたPRIMARY選択を、代わりにcopiesPRIMARY選択をCLIPBOARDにコピーします。ショートカットを使用した後、アプリケーションに応じて、Ctrl+VCtrl+Shift+V、またはShift+Insertを使用して、通常の方法でCLIPBOARDを貼り付けます。

PRIMARY選択をCLIPBOARDにコピーするコマンドは

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

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

他のソリューションの問題の概要:xsel | xvkbd ...およびxsel | xdotool ...のソリューションを試しましたが、それらがシミュレートされているためうまく機能しないことがわかりましたtyping文字ごとにPRIMARY選択文字。これはpastingとは異なります。クリック。問題には次のものがあります。大きな選択が一度に1文字ずつ挿入されるまでに長い遅延があります。 「貼り付け」を元に戻すには、文字ごとに元に戻す必要がありますが、遅いです。 「デッドキー」を使用している場合、すべてが台無しになります。 「貼り付け」"eëを生成します。 xvkdbはUnicode文字を正しく処理しません。

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

1
ntc2

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

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

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

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

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

0
ilkerk