JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Add insert for the primary clipboard to MOD + Shift + Ins.
[st.git] / config.def.h
index a3e87e2..34884c0 100644 (file)
@@ -9,10 +9,14 @@ static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=fals
 static int borderpx = 2;
 static char shell[] = "/bin/sh";
 
-/* double-click timeout (in milliseconds) between clicks for selection */
+/* timeouts (in milliseconds) */
 static unsigned int doubleclicktimeout = 300;
 static unsigned int tripleclicktimeout = 600;
 
+/* frames per second st should at maximum draw to the screen */
+static unsigned int xfps = 60;
+static unsigned int actionfps = 30;
+
 /* TERM value */
 static char termname[] = "st-256color";
 
@@ -66,6 +70,7 @@ static Shortcut shortcuts[] = {
        { MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.i = +1} },
        { MODKEY|ShiftMask,     XK_Next,        xzoom,          {.i = -1} },
        { ShiftMask,            XK_Insert,      selpaste,       {.i =  0} },
+       { MODKEY|ShiftMask,     XK_Insert,      clippaste,      {.i =  0} },
        { MODKEY,               XK_Num_Lock,    numlock,        {.i =  0} },
 };
 
@@ -100,6 +105,12 @@ static Shortcut shortcuts[] = {
  */
 static KeySym mappedkeys[] = { -1 };
 
+/*
+ * Which bits of the state should be ignored. By default the state bit for the
+ * keyboard layout (XK_SWITCH_MOD) is ignored.
+ */
+uint ignoremod = XK_SWITCH_MOD;
+
 /* key, mask, output, keypad, cursor, crlf */
 static Key key[] = {
        /* keysym             mask         string         keypad cursor crlf */
@@ -121,7 +132,10 @@ static Key key[] = {
        { XK_KP_Prior,      ShiftMask,      "\033[5;2~",     0,    0,    0},
        { XK_KP_Prior,      XK_ANY_MOD,     "\033[5~",       0,    0,    0},
        { XK_KP_Begin,      XK_ANY_MOD,     "\033[E",        0,    0,    0},
-       { XK_KP_End,        ShiftMask,      "\033[1;2F",     0,    0,    0},
+       { XK_KP_End,        ControlMask,    "\033[J",       -1,    0,    0},
+       { XK_KP_End,        ControlMask,    "\033[1;5F",    +1,    0,    0},
+       { XK_KP_End,        ShiftMask,      "\033[K",       -1,    0,    0},
+       { XK_KP_End,        ShiftMask,      "\033[1;2F",    +1,    0,    0},
        { XK_KP_End,        XK_ANY_MOD,     "\033[4~",       0,    0,    0},
        { XK_KP_Next,       ShiftMask,      "\033[6;2~",     0,    0,    0},
        { XK_KP_Next,       XK_ANY_MOD,     "\033[6~",       0,    0,    0},
@@ -131,8 +145,12 @@ static Key key[] = {
        { XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0,    0},
        { XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
        { XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
-       { XK_KP_Delete,     ShiftMask,      "\033[3;2~",     0,    0,    0},
-       { XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",       0,    0,    0},
+       { XK_KP_Delete,     ControlMask,    "\033[2J",      -1,    0,    0},
+       { XK_KP_Delete,     ControlMask,    "\033[3;5~",    +1,    0,    0},
+       { XK_KP_Delete,     ShiftMask,      "\033[2K",      +1,    0,    0},
+       { XK_KP_Delete,     ShiftMask,      "\033[3;2~",    -1,    0,    0},
+       { XK_KP_Delete,     XK_ANY_MOD,     "\033[P",       -1,    0,    0},
+       { XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",      +1,    0,    0},
        { XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +2,    0,    0},
        { XK_KP_Add,        XK_ANY_MOD,     "\033Ok",       +2,    0,    0},
        { XK_KP_Enter,      XK_ANY_MOD,     "\033OM",       +2,    0,    0},
@@ -183,12 +201,19 @@ static Key key[] = {
        { XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0,    0},
        { XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
        { XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
-       { XK_Delete,        ShiftMask,      "\033[3;2~",     0,    0,    0},
-       { XK_Delete,        XK_ANY_MOD,     "\033[3~",       0,    0,    0},
+       { XK_Delete,        ControlMask,    "\033[2J",      -1,    0,    0},
+       { XK_Delete,        ControlMask,    "\033[3;5~",    +1,    0,    0},
+       { XK_Delete,        ShiftMask,      "\033[2K",      +1,    0,    0},
+       { XK_Delete,        ShiftMask,      "\033[3;2~",    -1,    0,    0},
+       { XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0,    0},
+       { XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0,    0},
        { XK_Home,          ShiftMask,      "\033[1;2H",     0,    0,    0},
        { XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1,    0},
        { XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1,    0},
-       { XK_End,           ShiftMask,      "\033[1;2F",     0,    0,    0},
+       { XK_End,           ControlMask,    "\033[J",       -1,    0,    0},
+       { XK_End,           ControlMask,    "\033[1;5F",    +1,    0,    0},
+       { XK_End,           ShiftMask,      "\033[K",       -1,    0,    0},
+       { XK_End,           ShiftMask,      "\033[1;2F",    +1,    0,    0},
        { XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0,    0},
        { XK_Prior,         XK_NO_MOD,      "\033[5~",       0,    0,    0},
        { XK_Next,          ShiftMask,      "\033[6;2~",     0,    0,    0},
@@ -281,3 +306,15 @@ static Key key[] = {
        { XK_F35,           XK_NO_MOD,      "\033[23;5~",    0,    0,    0},
 };
 
+/*
+ * Selection types' masks.
+ * Use the same masks as usual.
+ * Button1Mask is always unset, to make masks match between ButtonPress.
+ * ButtonRelease and MotionNotify.
+ * If no match is found, regular selection is used.
+ */
+
+static uint selmasks[] = {
+       [SEL_RECTANGULAR] = Mod1Mask,
+};
+