マウスリリース処理

マウスリリース処理

https://st.suckless.org/patches/clipboard/マウスホイールを選択して貼り付けますが、マウスの左ボタンを選択したときにコピーし、マウスの右ボタンをクリックしたときに貼り付ける必要があります。

展開するには、Ctrl-Vを押して貼り付けます。

私はxorg、archlinuxを使います。

この目標を達成する方法は?

答え1

マウスリリース処理

マウスイベントを貼り付けに変換するルーチンはbrelease()次のとおりですx.c

void
brelease(XEvent *e)
{
        if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
                mousereport(e);
                return;
        }

        if (e->xbutton.button == Button2)
                selpaste(NULL);
        else if (e->xbutton.button == Button1)
                mousesel(e, 1);
}

中央ボタンの代わりに右ボタンを貼り付けるには、次のように変更してButton2Button3コンパイルします。

            if (e->xbutton.button == Button3)

キーボードショートカットの定義

キーボードショートカットはshortcutsの配列にありますconfig.h。クリップボードの貼り付けがCtrl- Shift- にマップされましたV

static Shortcut shortcuts[] = {
    /* mask                 keysym          function        argument */
...
    { TERMMOD,              XK_V,           clippaste,      {.i =  0} },

Ctrl-v一部のシェルとエディタではすでに特別な意味を持っているので、端末がそれを傍受したくない既存のショートカットを使用することを好むかもしれません。ただし、この新しいショートカットを使用することにした場合は、次のように行を追加/変更する必要があります。

    { ControlMask,          XK_v,           clippaste,      {.i =  0} },

現在、XK_v小文字の「v」はありませんShift

答え2

@JigglyNagaに感謝します。ただし、現在(2022年8月)、この設定はconfig.def.h/config.hで実行できます。

/*
 * Internal mouse shortcuts.
 * Beware that overloading Button1 will disable the selection.
 */
static MouseShortcut mshortcuts[] = {
        /* mask                 button   function        argument       release */
        { XK_ANY_MOD,           Button3, selpaste,       {.i = 0},      1 },
        { ShiftMask,            Button4, ttysend,        {.s = "\033[5;2~"} },
        { XK_ANY_MOD,           Button4, ttysend,        {.s = "\031"} },
        { ShiftMask,            Button5, ttysend,        {.s = "\033[6;2~"} },
        { XK_ANY_MOD,           Button5, ttysend,        {.s = "\005"} },
};

セルフサービスを貼り付けるために、Button2をButton3に変更しました。マウスの右ボタンをクリックしたときに貼り付け機能を実行するには、これを行うだけです。

マブソサ私はセントが大好きです。このように簡単に設定できる唯一の端末です。

関連情報