설명하다

설명하다

클립보드 패치를 설치했고 내 컴퓨터에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및 조합을 사용하면 MODKEY그렇지 않습니다. 및 (예: 확대/축소, 화면 인쇄, 스크롤)을 사용하는 TERMMOD다른 단축키도 작동합니다. MODKEY다른 조합을 사용해 보았 Ctrl+Shift+c/v으나 재미가 없었습니다. 동일한 조합이 xterm, urxvt 및 alacritty에서 작동합니다(다른 에뮬레이터를 철저하게 테스트하지는 않았습니다).

누구든지 이것을 설명할 수 있나요?

답변1

내부에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_vXK_VX11 포함 파일에서는 0x76 및 0x56으로 정의 됩니다 keysymdef.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눌렀을 때 소문자가 나올 때 붙여넣고 싶다는 뜻입니다. 그러나 누르고 있으면 X 서버가 대문자 키를 보냅니다. 그것은 우리가 원하는 것이 아니므로 아무 것도 하지 않습니다.TERMMODTERMMODShiftMaskstvShiftShiftVst

관련 정보