一部のアプリケーションではShift + InsertがCLIPBOARDから貼り付けられ、他のアプリケーションではPRIMARYが貼り付けられます


29

キーボードショートカットを使用して、プライマリ選択(マウスで選択したテキストなど)から貼り付けるにはどうすればよいですか?Shift+Insertアプリケーションに応じて、PRIMARYまたはCLIPBOARDから一貫して貼り付けます。

バックグラウンド:

Ctrl+C選択したテキストをCLIPBOARDにコピーし、マウス選択でPRIMARYにコピーします。CLIPBOARDからCtrl+V貼り付け、PRIMARY から貼り付けmouse-middle-clickます。

端末エミュレーター(gnome-terminal)で、CLIPBOARDからを使用して貼り付けCtrl+Shift+Vます。(mouse-middle-clickまだPRIMARYから貼り付けます。)

キーボードショートカットを使用してPRIMARYから貼り付けます。gnome-terminalでは、これはShift+Insertですが、geditとFirefoxでは、Shift+InsertCLIPBOARDから貼り付けられます。CLIPBOARDから一貫して貼り付けるショートカットと、PRIMARYから一貫して貼り付ける別のショートカットが必要です。

Ubuntu 14.04とxmonadおよびFirefox 34.0を実行しています

回答:


30

あなたが言及したすべてのアプリがありgtk+、それが答えに非常に簡単ですので、アプリをなぜにあるので... 全て gtk+(アプリの1を除く)、Shift+ Insertすなわち、それはと同等だ-クリップボードからペーストCtrl+ V。ショートカットはgtkentry.c(2022行目)およびgtktextview.c(1506行目)にハードコーディングされています。

gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
                "paste-clipboard", 0);

また、に記載されてGTK + 3リファレンスマニュアルの下でGtkEntry

The “paste-clipboard” signal
void
user_function (GtkEntry *entry,
               gpointer  user_data)
The ::paste-clipboard signal is a keybinding signal which gets emitted
to paste the contents of the clipboard into the text view.
The default bindings for this signal are Ctrl-v and Shift-Insert.

私の知る限り、これは他のDE(KDEQtキーバインディングを参照QTextEdit Class)とWindows OS 1との一貫性のために行われました。唯一の例外はあります。長い議論の後、開発者は(他の端末との一貫性のため)、+ でPRIMARYから貼り付け、+ + でCLIPBOARDから貼り付けることを決定しました(ただし、いくつかのショートカットをカスタマイズするオプションがあります)。
gnome-terminalgnome-terminalShiftInsertCtrlShiftV


どのようにあなたはキーボードショートカットを選択して貼り付けない...簡単な方法はありません。

最も簡単な方法は、実行するスクリプトにショートカットを割り当てることですxdotool click 2(中マウスボタンのクリックをシミュレートします)。これは動作しますが(すべてまたはほとんどのDEおよびツールキットで動作するはずです)、マウスカーソルが実際にテキスト入力ボックス上にある場合にのみ動作し、そうでない場合は失敗します。

別の比較的簡単な方法は、システムで使用可能な場合、Gnome Accessibilityを使用することです。また、テンキーの存在も必要です。Universal Access>>に移動しPointing & Clickingて有効にしMouse Keysます。NumLockオフになっていることを確認してください。次に、テンキーを使用してカーソルを移動し、クリックします。マウスの中ボタンのクリックをシミュレートするには、*(アスタリスク)を押して(および離す)、次に5(短いガイドがあります)を押します。このソリューションは常にgtk+環境で機能するようです。欠点はGnome Accessibility、テンキーが必要なことです。また、ショートカットをカスタマイズすることもできません。

興味深いソリューションがgnome-bugzillaで提案されました(バグ643391)。(アップデート2018:問題は今、移動されたここに。)これは、いくつかのソースファイルにパッチを適用して構成オプションを設定する必要があり~/.config/gtk-3.0/gtk.css(または~/.gtkrc-2.0のためのgtk+2つのアプリケーション)。私は個人的には試していませんが、フィードバックはポジティブです。

理想的には、ソースファイルにパッチを適用し、"paste-selection"シグナルを定義してからの代わりにShift+ Insertにバインドします。Andyのコード(上記のバグレポートに添付)は、その方法のガイドとして役立つ可能性があります。それでも、アプリにしか影響しません(私は人間ではないので、アプリの動作を変更する方法がわかりません)。"paste-selection""paste-clipboard"gtk+KDE/QtQt


1:(IBMのCUAは言うまでもありません)


2
その説明をありがとう。残念なことに、これ以上の解決策はありません。PRIMARYの一貫したキーボードショートカットがたくさんありません。マウスエミュレーションの回避策は、ショートカットのポイントがマウスに対処する必要を回避することであるため、あまり役に立ちません。
didi_X8

1

ごめんなさい。評判のためにコメントを書くことができないので、答えとして書きます。それは直接的な解決策ではありませんが、私を助けます...

情報の組み合わせを使用できます。

  1. gtkテーマを編集し、必要に応じてキーバインドを許可します

  2. themeのcssでgtk 3.0キーバインドを作成する例

  3. gtk keybindingsとunbindをオーバーライドする例

  4. gnome-terminalのキーバインドを変更する例

  5. CLIPBOARDをCUTBUFFERに同期するためのデフォルトオプションを使用したautocutselの自動起動(これはオプションです)。このリンクは、問題に関する情報専用です。

  6. clipmanを使用して、自動同期を選択せず​​に、複数のバッファー(PRIMARYおよびCLIPBOARD)にアクセスします(双方向の自動同期が間違っています)。

そこで、gtkテーマを選択し、テーマCSSを、コピー-クリップボード(Ctrl + Insert)およびペースト-クリップボード(Shift + Insert)信号に必要なキーバインドに変更します。


1
これらのリンクの内容を取得し、情報を結合する場合、これは良い答えの始まりかもしれません。現状では、それは単なるリンクのコレクションであり、削除されるリスクにさらされています。回答に直接入力できるように情報を入力してください。そうすれば、あなたは賛成票を獲得するはずです(それにより、コメントするのに十分な評判が得られます)。ありがとう!
Toby Speight
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.