説明する

説明する

クリップボードパッチをインストールし、マイコンピュータに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

おすすめ記事