diff --git a/docs/spmenu.conf b/docs/spmenu.conf index 9ae450c..46acdf4 100644 --- a/docs/spmenu.conf +++ b/docs/spmenu.conf @@ -212,4 +212,374 @@ spmenu = caps = 0; password = 0; } ); + + // Keys + keys = ( { mode = -1; + modifier = "None"; + key = "Enter"; + function = "selectitem"; + argument = "+1"; + } + { mode = -1; + modifier = "Shift"; + key = "Enter"; + function = "selectitem"; + argument = "0"; + } + { mode = -1; + modifier = "None"; + key = "Tab"; + function = "complete"; + argument = "0"; + } + { mode = -1; + modifier = "Ctrl"; + key = "v"; + function = "paste"; + argument = "2"; + } + { mode = -1; + modifier = "Ctrl+Shift"; + key = "v"; + function = "paste"; + argument = "1"; + } + { mode = -1; + modifier = "None"; + key = "Backspace"; + function = "backspace"; + argument = "0"; + } + { mode = -1; + modifier = "Ctrl"; + key = "Backspace"; + function = "deleteword"; + argument = "0"; + } + { mode = -1; + modifier = "Ctrl"; + key = "Left"; + function = "moveword"; + argument = "-1"; + } + { mode = -1; + modifier = "Ctrl"; + key = "Right"; + function = "moveword"; + argument = "+1"; + } + { mode = -1; + modifier = "None"; + key = "Left"; + function = "movecursor"; + argument = "-1"; + } + { mode = -1; + modifier = "None"; + key = "Right"; + function = "movecursor"; + argument = "+1"; + } + { mode = -1; + modifier = "Control+Shift"; + key = "p"; + function = "spawn"; + argument = "setprofile"; + } + { mode = 1; + modifier = "None"; + key = "Esc"; + function = "switchmode"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "i"; + function = "switchmode"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "/"; + function = "switchmode"; + argument = "0"; + } + { mode = 0; + modifier = "Ctrl"; + key = "="; + function = "setimgsize"; + argument = "+1"; + } + { mode = 0; + modifier = "Ctrl"; + key = "-"; + function = "setimgsize"; + argument = "-1"; + } + { mode = 0; + modifier = "None"; + key = "-"; + function = "setimgsize"; + argument = "-10"; + } + { mode = 0; + modifier = "None"; + key = "="; + function = "setimgsize"; + argument = "+10"; + } + { mode = 0; + modifier = "Shift"; + key = "-"; + function = "setimgsize"; + argument = "-100"; + } + { mode = 0; + modifier = "Shift"; + key = "="; + function = "setimgsize"; + argument = "+100"; + } + { mode = 0; + modifier = "Shift"; + key = "0"; + function = "defaultimg"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "r"; + function = "rotateimg"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "p"; + function = "setimgpos"; + argument = "+1"; + } + { mode = 0; + modifier = "Ctrl"; + key = "1"; + function = "setimggaps"; + argument = "-1"; + } + { mode = 0; + modifier = "Ctrl"; + key = "2"; + function = "setimggaps"; + argument = "+1"; + } + { mode = 0; + modifier = "None"; + key = "1"; + function = "setimggaps"; + argument = "-10"; + } + { mode = 0; + modifier = "None"; + key = "2"; + function = "setimggaps"; + argument = "+10"; + } + { mode = 0; + modifier = "Shift"; + key = "1"; + function = "setimggaps"; + argument = "-100"; + } + { mode = 0; + modifier = "Shift"; + key = "2"; + function = "setimggaps"; + argument = "+100"; + } + { mode = 0; + modifier = "None"; + key = "t"; + function = "toggleimg"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "h"; + function = "flipimg"; + argument = "1"; + } + { mode = 0; + modifier = "None"; + key = "v"; + function = "flipimg"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "k"; + function = "moveup"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "j"; + function = "movedown"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "h"; + function = "moveleft"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "l"; + function = "moveright"; + argument = "0"; + } + { mode = 0; + modifier = "Ctrl"; + key = "u"; + function = "moveup"; + argument = "5"; + } + { mode = 0; + modifier = "Ctrl"; + key = "d"; + function = "movedown"; + argument = "5"; + } + { mode = 0; + modifier = "Ctrl"; + key = "k"; + function = "setlines"; + argument = "+1"; + } + { mode = 0; + modifier = "Ctrl"; + key = "j"; + function = "setlines"; + argument = "-1"; + } + { mode = 0; + modifier = "Ctrl+Alt+Shift"; + key = "k"; + function = "setlines"; + argument = "+5"; + } + { mode = 0; + modifier = "Ctrl+Alt+Shift"; + key = "j"; + function = "setlines"; + argument = "-5"; + } + { mode = 0; + modifier = "Ctrl"; + key = "h"; + function = "setcolumns"; + argument = "+1"; + } + { mode = 0; + modifier = "Ctrl"; + key = "h"; + function = "setcolumns"; + argument = "-1"; + } + { mode = 0; + modifier = "Ctrl+Alt+Shift"; + key = "h"; + function = "setcolumns"; + argument = "+5"; + } + { mode = 0; + modifier = "Ctrl+Alt+Shift"; + key = "l"; + function = "setcolumns"; + argument = "-5"; + } + { mode = 0; + modifier = "Ctrl"; + key = "k"; + function = "restoresel"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "u"; + function = "togglehighlight"; + argument = "0"; + } + { mode = 0; + modifier = "Ctrl+Shift"; + key = "h"; + function = "viewhist"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "d"; + function = "clear"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "c"; + function = "clearins"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "Esc"; + function = "quit"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "Home"; + function = "movestart"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "End"; + function = "moveend"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "g"; + function = "movestart"; + argument = "0"; + } + { mode = 0; + modifier = "Shift"; + key = "g"; + function = "moveend"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "Next"; + function = "movenext"; + argument = "0"; + } + { mode = 0; + modifier = "None"; + key = "Prior"; + function = "moveprev"; + argument = "0"; + } + { mode = 0; + modifier = "Alt"; + key = "p"; + function = "navhistory"; + argument = "-1"; + } + { mode = 0; + modifier = "Alt"; + key = "n"; + function = "navhistory"; + argument = "+1"; + } + + ignoreglobalkeys = 1; ), }; diff --git a/libs/conf/config.c b/libs/conf/config.c index 0760dea..cc00707 100644 --- a/libs/conf/config.c +++ b/libs/conf/config.c @@ -608,12 +608,15 @@ conf_init(void) } } - for (int j = 0; j < LENGTH(fl); j++) { - if (!strcmp(fl[j].function, strdup(dest))) { - ckeys[i].func = fl[j].func; - ckeys[i].arg = fl[j].arg; + config_setting_lookup_string(conf, "argument", &dest); + + for (int j = 0; j < LENGTH(al); j++) { + if (!strcmp(al[j].argument, strdup(dest))) { + ckeys[i].arg = al[j].arg; } } + + config_setting_lookup_int(conf, "ignoreglobalkeys", &ignoreglobalkeys); } } diff --git a/libs/key.h b/libs/key.h index 0a4fc0d..59b3720 100644 --- a/libs/key.h +++ b/libs/key.h @@ -16,6 +16,11 @@ typedef struct { unsigned int modifier; } ModList; +typedef struct { + char *argument; + Arg arg; +} ArgList; + typedef struct { char *modif; char *key; @@ -25,67 +30,386 @@ typedef struct { typedef struct { char *function; void (*func)(Arg *); - Arg arg; } FuncList; +// TODO: allow any value instead of this array +static ArgList al[] = { + { "0", {.i = 0 } }, + { "1", {.i = 1 } }, + { "2", {.i = 2 } }, + { "3", {.i = 3 } }, + { "4", {.i = 4 } }, + { "5", {.i = 5 } }, + { "6", {.i = 6 } }, + { "7", {.i = 7 } }, + { "8", {.i = 8 } }, + { "9", {.i = 9 } }, + { "10", {.i = 10 } }, + { "11", {.i = 11 } }, + { "12", {.i = 12 } }, + { "13", {.i = 13 } }, + { "14", {.i = 14 } }, + { "15", {.i = 15 } }, + { "16", {.i = 16 } }, + { "17", {.i = 17 } }, + { "18", {.i = 18 } }, + { "19", {.i = 19 } }, + { "20", {.i = 20 } }, + { "21", {.i = 21 } }, + { "22", {.i = 22 } }, + { "23", {.i = 23 } }, + { "24", {.i = 24 } }, + { "25", {.i = 25 } }, + { "26", {.i = 26 } }, + { "27", {.i = 27 } }, + { "28", {.i = 28 } }, + { "29", {.i = 29 } }, + { "30", {.i = 30 } }, + { "31", {.i = 31 } }, + { "32", {.i = 32 } }, + { "33", {.i = 33 } }, + { "34", {.i = 34 } }, + { "35", {.i = 35 } }, + { "36", {.i = 36 } }, + { "37", {.i = 37 } }, + { "38", {.i = 38 } }, + { "39", {.i = 39 } }, + { "40", {.i = 40 } }, + { "41", {.i = 41 } }, + { "42", {.i = 42 } }, + { "43", {.i = 43 } }, + { "44", {.i = 44 } }, + { "45", {.i = 45 } }, + { "46", {.i = 46 } }, + { "47", {.i = 47 } }, + { "48", {.i = 48 } }, + { "49", {.i = 49 } }, + { "50", {.i = 50 } }, + { "51", {.i = 51 } }, + { "52", {.i = 52 } }, + { "53", {.i = 53 } }, + { "54", {.i = 54 } }, + { "55", {.i = 55 } }, + { "56", {.i = 56 } }, + { "57", {.i = 57 } }, + { "58", {.i = 58 } }, + { "59", {.i = 59 } }, + { "60", {.i = 60 } }, + { "61", {.i = 61 } }, + { "62", {.i = 62 } }, + { "63", {.i = 63 } }, + { "64", {.i = 64 } }, + { "65", {.i = 65 } }, + { "66", {.i = 66 } }, + { "67", {.i = 67 } }, + { "68", {.i = 68 } }, + { "69", {.i = 69 } }, + { "70", {.i = 70 } }, + { "71", {.i = 71 } }, + { "72", {.i = 72 } }, + { "73", {.i = 73 } }, + { "74", {.i = 74 } }, + { "75", {.i = 75 } }, + { "76", {.i = 76 } }, + { "77", {.i = 77 } }, + { "78", {.i = 78 } }, + { "79", {.i = 79 } }, + { "80", {.i = 80 } }, + { "81", {.i = 81 } }, + { "82", {.i = 82 } }, + { "83", {.i = 83 } }, + { "84", {.i = 84 } }, + { "85", {.i = 85 } }, + { "86", {.i = 86 } }, + { "87", {.i = 87 } }, + { "88", {.i = 88 } }, + { "89", {.i = 89 } }, + { "90", {.i = 90 } }, + { "91", {.i = 91 } }, + { "92", {.i = 92 } }, + { "93", {.i = 93 } }, + { "94", {.i = 94 } }, + { "95", {.i = 95 } }, + { "96", {.i = 96 } }, + { "97", {.i = 97 } }, + { "98", {.i = 98 } }, + { "99", {.i = 99 } }, + { "100", {.i = 100 } }, + + { "+0", {.i = +0 } }, + { "+1", {.i = +1 } }, + { "+2", {.i = +2 } }, + { "+3", {.i = +3 } }, + { "+4", {.i = +4 } }, + { "+5", {.i = +5 } }, + { "+6", {.i = +6 } }, + { "+7", {.i = +7 } }, + { "+8", {.i = +8 } }, + { "+9", {.i = +9 } }, + { "+10", {.i = +10 } }, + { "+11", {.i = +11 } }, + { "+12", {.i = +12 } }, + { "+13", {.i = +13 } }, + { "+14", {.i = +14 } }, + { "+15", {.i = +15 } }, + { "+16", {.i = +16 } }, + { "+17", {.i = +17 } }, + { "+18", {.i = +18 } }, + { "+19", {.i = +19 } }, + { "+20", {.i = +20 } }, + { "+21", {.i = +21 } }, + { "+22", {.i = +22 } }, + { "+23", {.i = +23 } }, + { "+24", {.i = +24 } }, + { "+25", {.i = +25 } }, + { "+26", {.i = +26 } }, + { "+27", {.i = +27 } }, + { "+28", {.i = +28 } }, + { "+29", {.i = +29 } }, + { "+30", {.i = +30 } }, + { "+31", {.i = +31 } }, + { "+32", {.i = +32 } }, + { "+33", {.i = +33 } }, + { "+34", {.i = +34 } }, + { "+35", {.i = +35 } }, + { "+36", {.i = +36 } }, + { "+37", {.i = +37 } }, + { "+38", {.i = +38 } }, + { "+39", {.i = +39 } }, + { "+40", {.i = +40 } }, + { "+41", {.i = +41 } }, + { "+42", {.i = +42 } }, + { "+43", {.i = +43 } }, + { "+44", {.i = +44 } }, + { "+45", {.i = +45 } }, + { "+46", {.i = +46 } }, + { "+47", {.i = +47 } }, + { "+48", {.i = +48 } }, + { "+49", {.i = +49 } }, + { "+50", {.i = +50 } }, + { "+51", {.i = +51 } }, + { "+52", {.i = +52 } }, + { "+53", {.i = +53 } }, + { "+54", {.i = +54 } }, + { "+55", {.i = +55 } }, + { "+56", {.i = +56 } }, + { "+57", {.i = +57 } }, + { "+58", {.i = +58 } }, + { "+59", {.i = +59 } }, + { "+60", {.i = +60 } }, + { "+61", {.i = +61 } }, + { "+62", {.i = +62 } }, + { "+63", {.i = +63 } }, + { "+64", {.i = +64 } }, + { "+65", {.i = +65 } }, + { "+66", {.i = +66 } }, + { "+67", {.i = +67 } }, + { "+68", {.i = +68 } }, + { "+69", {.i = +69 } }, + { "+70", {.i = +70 } }, + { "+71", {.i = +71 } }, + { "+72", {.i = +72 } }, + { "+73", {.i = +73 } }, + { "+74", {.i = +74 } }, + { "+75", {.i = +75 } }, + { "+76", {.i = +76 } }, + { "+77", {.i = +77 } }, + { "+78", {.i = +78 } }, + { "+79", {.i = +79 } }, + { "+80", {.i = +80 } }, + { "+81", {.i = +81 } }, + { "+82", {.i = +82 } }, + { "+83", {.i = +83 } }, + { "+84", {.i = +84 } }, + { "+85", {.i = +85 } }, + { "+86", {.i = +86 } }, + { "+87", {.i = +87 } }, + { "+88", {.i = +88 } }, + { "+89", {.i = +89 } }, + { "+90", {.i = +90 } }, + { "+91", {.i = +91 } }, + { "+92", {.i = +92 } }, + { "+93", {.i = +93 } }, + { "+94", {.i = +94 } }, + { "+95", {.i = +95 } }, + { "+96", {.i = +96 } }, + { "+97", {.i = +97 } }, + { "+98", {.i = +98 } }, + { "+99", {.i = +99 } }, + { "+100", {.i = +100 } }, + + { "-0", {.i = -0 } }, + { "-1", {.i = -1 } }, + { "-2", {.i = -2 } }, + { "-3", {.i = -3 } }, + { "-4", {.i = -4 } }, + { "-5", {.i = -5 } }, + { "-6", {.i = -6 } }, + { "-7", {.i = -7 } }, + { "-8", {.i = -8 } }, + { "-9", {.i = -9 } }, + { "-10", {.i = -10 } }, + { "-11", {.i = -11 } }, + { "-12", {.i = -12 } }, + { "-13", {.i = -13 } }, + { "-14", {.i = -14 } }, + { "-15", {.i = -15 } }, + { "-16", {.i = -16 } }, + { "-17", {.i = -17 } }, + { "-18", {.i = -18 } }, + { "-19", {.i = -19 } }, + { "-20", {.i = -20 } }, + { "-21", {.i = -21 } }, + { "-22", {.i = -22 } }, + { "-23", {.i = -23 } }, + { "-24", {.i = -24 } }, + { "-25", {.i = -25 } }, + { "-26", {.i = -26 } }, + { "-27", {.i = -27 } }, + { "-28", {.i = -28 } }, + { "-29", {.i = -29 } }, + { "-30", {.i = -30 } }, + { "-31", {.i = -31 } }, + { "-32", {.i = -32 } }, + { "-33", {.i = -33 } }, + { "-34", {.i = -34 } }, + { "-35", {.i = -35 } }, + { "-36", {.i = -36 } }, + { "-37", {.i = -37 } }, + { "-38", {.i = -38 } }, + { "-39", {.i = -39 } }, + { "-40", {.i = -40 } }, + { "-41", {.i = -41 } }, + { "-42", {.i = -42 } }, + { "-43", {.i = -43 } }, + { "-44", {.i = -44 } }, + { "-45", {.i = -45 } }, + { "-46", {.i = -46 } }, + { "-47", {.i = -47 } }, + { "-48", {.i = -48 } }, + { "-49", {.i = -49 } }, + { "-50", {.i = -50 } }, + { "-51", {.i = -51 } }, + { "-52", {.i = -52 } }, + { "-53", {.i = -53 } }, + { "-54", {.i = -54 } }, + { "-55", {.i = -55 } }, + { "-56", {.i = -56 } }, + { "-57", {.i = -57 } }, + { "-58", {.i = -58 } }, + { "-59", {.i = -59 } }, + { "-60", {.i = -60 } }, + { "-61", {.i = -61 } }, + { "-62", {.i = -62 } }, + { "-63", {.i = -63 } }, + { "-64", {.i = -64 } }, + { "-65", {.i = -65 } }, + { "-66", {.i = -66 } }, + { "-67", {.i = -67 } }, + { "-68", {.i = -68 } }, + { "-69", {.i = -69 } }, + { "-70", {.i = -70 } }, + { "-71", {.i = -71 } }, + { "-72", {.i = -72 } }, + { "-73", {.i = -73 } }, + { "-74", {.i = -74 } }, + { "-75", {.i = -75 } }, + { "-76", {.i = -76 } }, + { "-77", {.i = -77 } }, + { "-78", {.i = -78 } }, + { "-79", {.i = -79 } }, + { "-80", {.i = -80 } }, + { "-81", {.i = -81 } }, + { "-82", {.i = -82 } }, + { "-83", {.i = -83 } }, + { "-84", {.i = -84 } }, + { "-85", {.i = -85 } }, + { "-86", {.i = -86 } }, + { "-87", {.i = -87 } }, + { "-88", {.i = -88 } }, + { "-89", {.i = -89 } }, + { "-90", {.i = -90 } }, + { "-91", {.i = -91 } }, + { "-92", {.i = -92 } }, + { "-93", {.i = -93 } }, + { "-94", {.i = -94 } }, + { "-95", {.i = -95 } }, + { "-96", {.i = -96 } }, + { "-97", {.i = -97 } }, + { "-98", {.i = -98 } }, + { "-99", {.i = -99 } }, + { "-100", {.i = -100 } }, + { "setprofile", {.c = "spmenu_profile --spmenu-set-profile" } }, +}; + static FuncList fl[] = { - { "moveup", moveup, {0} }, - { "movedown", movedown, {0} }, - { "moveleft", moveleft, {0} }, - { "moveright", moveright, {0} }, - { "moveend", moveend, {0} }, - { "movestart", movestart, {0} }, - { "move+", movenext, {0} }, - { "move-", moveprev, {0} }, - { "paste", paste, {.i = 2 } }, - { "pastesel", paste, {.i = 1 } }, - { "restoresel", restoresel, {0} }, - { "clear", clear, {0} }, - { "clearins", clearins, {0} }, - { "viewhist", viewhist, {0} }, - { "moveword-", moveword, {.i = -1 } }, - { "moveword+", moveword, {.i = +1 } }, - { "deleteword", deleteword, {0} }, - { "movecursor-", movecursor, {.i = -1 } }, - { "movecursor+", movecursor, {.i = +1 } }, - { "navhistory-", navhistory, {.i = -1 } }, - { "navhistory+", navhistory, {.i = +1 } }, - { "backspace", backspace, {0} }, - { "selectitem", selectitem, {.i = +1 } }, - { "selectinput", selectitem, {0} }, - { "quit", quit, {0} }, - { "complete", complete, {0} }, - { "imgsize+", setimgsize, {.i = +1 } }, - { "imgsize-", setimgsize, {.i = -1 } }, - { "toggleimg", toggleimg, {0} }, - { "defaultimg", defaultimg, {0} }, - { "rotateimg", rotateimg, {0} }, - { "flipimg", flipimg, {0} }, - { "setimgpos+", setimgpos, {.i = +1 } }, - { "setimgpos-", setimgpos, {.i = -1 } }, - { "setimggaps+", setimggaps, {.i = +1 } }, - { "setimggaps-", setimggaps, {.i = -1 } }, - { "setlines+", setlines, {.i = +1 } }, - { "setlines-", setlines, {.i = -1 } }, - { "setcolumns+", setcolumns, {.i = +1 } }, - { "setcolumns-", setcolumns, {.i = -1 } }, - { "togglehighlight", togglehighlight, {0} }, + { "moveup", moveup }, + { "movedown", movedown }, + { "moveleft", moveleft }, + { "moveright", moveright }, + { "moveend", moveend }, + { "movestart", movestart }, + { "move", movenext }, + { "move", moveprev }, + { "paste", paste }, + { "pastesel", paste }, + { "restoresel", restoresel }, + { "clear", clear }, + { "clearins", clearins }, + { "viewhist", viewhist }, + { "moveword", moveword }, + { "moveword", moveword }, + { "deleteword", deleteword }, + { "movecursor", movecursor }, + { "movecursor", movecursor }, + { "navhistory", navhistory }, + { "navhistory", navhistory }, + { "backspace", backspace }, + { "selectitem", selectitem }, + { "quit", quit }, + { "complete", complete }, + { "imgsize", setimgsize }, + { "imgsize", setimgsize }, + { "toggleimg", toggleimg }, + { "defaultimg", defaultimg }, + { "rotateimg", rotateimg }, + { "flipimg", flipimg }, + { "setimgpos", setimgpos }, + { "setimgpos", setimgpos }, + { "setimggaps", setimggaps }, + { "setimggaps", setimggaps }, + { "setlines", setlines }, + { "setlines", setlines }, + { "setcolumns", setcolumns }, + { "togglehighlight",togglehighlight }, + { "setprofile", spawn }, + { "switchmode", switchmode }, }; // list of modifiers that can be used in the config file static ModList ml[] = { + { "Ctrl+Shift", ShiftMask|ControlMask }, + { "Ctrl+Shift+Super", ShiftMask|ControlMask|Mod4Mask }, + { "Ctrl+Super", Mod4Mask|ControlMask }, + { "Ctrl+Alt", ControlMask|Mod1Mask }, + { "Ctrl+Alt+Shift", ShiftMask|Mod1Mask|ControlMask }, + { "Ctrl+Alt+Shift+Super", ControlMask|Mod1Mask|ShiftMask|Mod4Mask }, + { "Ctrl+Alt+Super", ControlMask|Mod1Mask|Mod4Mask }, + { "Alt+Shift", Mod1Mask|ShiftMask }, { "Shift", ShiftMask }, - { "Lock", LockMask }, { "Ctrl", ControlMask }, { "Alt", Mod1Mask }, { "AltGr", Mod3Mask }, { "Super", Mod4Mask }, { "ShiftGr", Mod5Mask }, + { "None", 0 }, + { "0", 0 }, }; // list of keys that can be used in the config file // expand this array if you want more static KeyList kl[] = { + { "None", 0 }, { "Space", XK_space }, { "Enter", XK_Return }, { "Tab", XK_Tab }, @@ -177,6 +501,13 @@ static KeyList kl[] = { { "Esc", XK_Escape }, { "Pause", XK_Pause }, { "ScrollLock", XK_Scroll_Lock }, + { "Backspace", XK_BackSpace }, + { "Up", XK_Up }, + { "Down", XK_Down }, + { "Left", XK_Left }, + { "Right", XK_Right }, + { "Next", XK_Next }, + { "Prior", XK_Prior }, }; static void updatenumlockmask(void);