Xorg

使用鍵盤粘貼 X 選擇(不是剪貼板內容)

  • June 7, 2021

我希望能夠使用鍵盤粘貼 X 選擇。目前我必須使用滑鼠中鍵來執行此操作。

我認為偽造滑鼠中鍵按下相當容易,但這樣的解決方案還需要將滑鼠指針移動到文本插入符號的位置。

有一個更好的方法嗎?

在一些預設的 linux 設置中,Shift+Insert將執行X-selection-paste. 正如您所指出的,這與命令明顯不同,X-clipboard-paste命令的綁定通常因應用程序而異。如果這在這裡不起作用,可以嘗試其他幾個鍵:

  • Ctrl+V
  • Ctrl+ Shift+V
  • Ctrl+ Shift+Insert

不去?您的桌面環境或視窗管理器可能沒有配置它們,這很複雜,因為——即使是在一個 DE 或 WM 的旗幟下——每個工具包(例如 GTK、Qt 等)很可能有不同的預設綁定。一些程序(例如gvim)甚至有自己的內部複製寄存器,這些寄存器不一定與它們執行的圖形環境同步。最重要的是,即使程序確實使用 X 剪貼板系統,X 也有多個系統可供選擇。最基本的兩個是選擇緩衝區——它總是包含最後選擇的東西(當它沒有選擇時執行)——和複製緩衝區——通常需要將東西專門複製到其中。要在後一個系統中進行顯式複制,您可以嘗試以下任何一種方法:

  • Ctrl+C
  • Shift+ Ctrl+C
  • Ctrl+Insert

如果這些都不能神奇地為您工作,那麼您可以採用兩種方法。

  1. *有一個應用程序!*™ 使用各種剪貼板管理器程序之一為您處理此問題。最受歡迎的似乎是ParcelliteGlippy,但您可以在此處查看其他替代方案。另請參閱有關高級剪貼板管理器的問題
  2. 自己破解。

所以假設你想破解它。

除了編寫自己的程式碼和利用 X api,用於這項工作的黑客工具是幾個小命令行實用程序,可以讓你進入 X 的思維。只是一個小視窗提醒你,整個視圖太可怕了.

第一個工具是xsel. 這個小工作人員會在任何給定時間吐出 X 的選擇緩衝區中的任何內容。

現在你需要把它放到你的程序中。有兩種選擇。一種是xdotool允許您模擬向 Xorg 輸入系統發送事件。您可以使用它的type方法xdotool type foo_bar來模擬在游標處鍵入“foo_bar”。結合起來,你會得到這樣的東西:

$ xdotool type $(xsel)

另一種是xvkbd從較低的子系統發送鍵盤事件。您可以在 STDIN 上通過管道將擊鍵輸入其中。結合xsel,你會得到這樣的東西:

$ xsel | xvkbd -xsendevent -file -

偉大的。現在讓那個鍵綁定來執行這些東西。如果您執行 Gnome-2,您可以在System -> Preferences -> Keyboard shortcuts中添加自定義快捷方式。如果你使用不同的 DE 或 WM,這個 excersize 留給讀者。

最後一點是,當將命令綁定到鍵盤快捷鍵時,通常只需要一個命令,而不是像我們上面使用的那樣通過管道連接兩個命令。您可以通過將管道命令作為命令字元串 argumetn 呼叫到新的 shell 來完成此操作,如下所示:

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'

引用自:https://unix.stackexchange.com/questions/11889