Suckless-Terminal
st 終端不尊重我的快捷方式設置
我安裝了剪貼板更新檔,並在我的
config.h
#define MODKEY Mod1Mask #define TERMMOD (Mod1Mask|ShiftMask)
和
{ ShiftMask, XK_Insert, clippaste, {.i = 0} }, { TERMMOD, XK_c, clipcopy, {.i = 0} }, { TERMMOD, XK_v, clippaste, {.i = 0} }, { MODKEY, XK_p, selpaste, {.i = 0} },
有趣的是
Shift+Insert
,中鍵點擊滑鼠讓我從剪貼板粘貼,但使用TERMMOD
andMODKEY
from above 的組合不能。TERMMOD
使用和MODKEY
(例如放大/縮小、列印螢幕、滾動)的其他快捷方式起作用。我嘗試使用其他組合,Ctrl+Shift+c/v
但沒有樂趣。相同的組合適用於 xterm、urxvt 和 alacritty(我還沒有詳盡地測試過其他模擬器)。任何人都可以闡明一下嗎?
在source的預設鍵綁定中
st
,綁定使用XK_V
(注意大寫)。{ TERMMOD, XK_C, clipcopy, {.i = 0} }, { TERMMOD, XK_V, clippaste, {.i = 0} }, { TERMMOD, XK_Y, selpaste, {.i = 0} },
嘗試將您的小寫更改
XK_v
回那個(同時保持您的新值TERMMOD
)。解釋
XK_v
並XK_V
在 X11 包含文件中定義為 0x76 和 0x56keysymdef.h
。它們被認為是不同的按鍵。您可以使用該xev
工具進行測試:沒有
Shift
:KeyRelease event, serial 47, synthetic NO, window 0x4c00001, root 0x4cf, subw 0x0, time 433723403, (134,121), root:(1235,171), state 0x0, keycode 55 (keysym 0x76, v), same_screen YES, XLookupString gives 1 bytes: (76) "v" XmbLookupString gives 1 bytes: (76) "v" XFilterEvent returns: False
按住
Shift
,相同的keycode
結果不同keysym
。KeyPress event, serial 47, synthetic NO, window 0x4c00001, root 0x4cf, subw 0x0, time 433724571, (134,121), root:(1235,171), state 0x1, keycode 55 (keysym 0x56, V), same_screen YES, XLookupString gives 1 bytes: (56) "V" XmbLookupString gives 1 bytes: (56) "V" XFilterEvent returns: False
當您
XK_v
與TERMMOD
, 和TERMMOD
contains一起使用時ShiftMask
,您是在告訴st
您要在v
收到小寫字母時粘貼Shift
。但是當你持有 時Shift
,X 伺服器會發送一個大寫的V
鍵。這不是st
要找的東西,所以它什麼也不做。