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

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

キーボードショートカットを使用してデフォルトの選択項目(マウスで選択したテキストなど)から貼り付ける方法は?Shift+InsertPRIMARYまたはCLIPBOARDから貼り付ける場合、アプリケーションによっては一貫性がありません。

背景:

Ctrl+C選択したテキストをクリップボードにコピーし、マウス選択もメインテキストにコピーします。 CLIPBOARDで貼り付け、Ctrl+VPRIMARYで貼り付けますmouse-middle-click

ターミナルエミュレータ(gnome-terminal)でCLIPBOARDから貼り付けますCtrl+Shift+V。 (PRIMARYからmouse-middle-click残りに貼り付けます。)

キーボードショートカットを使ってPRIMARYから貼り付けたいです。 gnome-terminalではありますが、Shift+InsertgeditとFirefoxではShift+InsertCLIPBOARDで貼り付けることです。常にCLIPBOARDで貼り付けるショートカットキーと、常にPRIMARYで貼り付ける別のショートカットが必要です。

xmonadとFirefox 34.0を使用してUbuntu 14.04を実行しています。

ベストアンサー1

おっしゃったアプリはみんなgtk+アプリだから答えが簡単ですねなぜ...なぜならみんな gtk+アプリケーション(一つだけ除く)、Shift+クリップボードから貼り付け - つまり、+Insertと同じです。ショートカットがハードコードされています。CtrlVgtkentry.c(ライン2022)とgtktextview.c(ライン1819):

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との一貫性のために行われますKDEQtQTextEdit Class )とWindowsオペレーティングシステム1
唯一の例外はいgnome-terminal。長い議論の後、開発者は(他の端末との一貫性を維持するために)gnome-terminal+はPRIMARYで貼り付ける必要があり、Shift++はCLIPBOARDで貼り付ける必要があると判断しました(一部のショートカットをカスタマイズすることを選択できます)。InsertCtrlShiftV


についてはどのように選択項目を貼り付けるためにキーボードショートカットを使用しますか?簡単な方法はありません。

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

別の比較的簡単な方法は、Gnomeアクセシビリティを利用することです(システムで利用可能な場合)。数字キーパッドも必要です。Universal Access>>に移動してPointing & Clicking有効にしますMouse KeysNumLock閉じていることを確認してください。その後、テンキーを使用してカーソルを移動してクリックできます。マウスの中央クリックをシミュレートするには、(アスタリスク)を押してから*放します5(簡単な説明です)。ガイド)。このソリューションはgtk+特定の環境で常に機能しているようです。欠点は、Gnome Accessibility数字キーパッドが必要であることです。また、ショートカットをカスタマイズすることはできません。

興味深い解決策を思い出しましたgnome-bugzilla(バグ 643391)。 (更新2018:今質問が移動されました。ここ.) 一部のソースファイルにパッチを適用し~/.config/gtk-3.0/gtk.css(または~/.gtkrc-2.02つのgtk+アプリケーション)、設定オプションを設定する必要があります。個人的に使ったことはありませんが、反応は肯定的です。

理想的には、ソースファイルにパッチを適用してシグナルを定義し、代わりに"paste-selection"+ShiftInsertバインドすることができます(上記のバグレポートに添付されています)。これを行う方法のガイドとして機能できます。それにもかかわらず、これはアプリケーションにのみ影響します(私はそのような人ではないので、アプリケーションの動作を変更する方法がわかりません)。"paste-selection""paste-clipboard"gtk+KDE/QtQt


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

おすすめ記事