patch-co - pkgsrc-localpatches - leot's pkgsrc LOCALPATCHES
(HTM) hg clone https://bitbucket.org/iamleot/pkgsrc-localpatches
(DIR) Log
(DIR) Files
(DIR) Refs
---
patch-co
---
1 --- /dev/null 2018-03-15 11:44:42.305684300 +0100
2 +++ config.h 2018-03-15 11:45:52.641324882 +0100
3 @@ -0,0 +1,462 @@
4 +/* See LICENSE file for copyright and license details. */
5 +
6 +/*
7 + * appearance
8 + *
9 + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
10 + */
11 +static char *font = "Droid Sans Mono:size=13";
12 +static int borderpx = 2;
13 +
14 +/*
15 + * What program is execed by st depends of these precedence rules:
16 + * 1: program passed with -e
17 + * 2: utmp option
18 + * 3: SHELL environment variable
19 + * 4: value of shell in /etc/passwd
20 + * 5: value of shell in config.h
21 + */
22 +static char *shell = "/bin/sh";
23 +char *utmp = NULL;
24 +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
25 +
26 +/* identification sequence returned in DA and DECID */
27 +char *vtiden = "\033[?6c";
28 +
29 +/* Kerning / character bounding-box multipliers */
30 +static float cwscale = 1.0;
31 +static float chscale = 1.0;
32 +
33 +/*
34 + * word delimiter string
35 + *
36 + * More advanced example: " `'\"()[]{}"
37 + */
38 +char *worddelimiters = " ";
39 +
40 +/* selection timeouts (in milliseconds) */
41 +static unsigned int doubleclicktimeout = 300;
42 +static unsigned int tripleclicktimeout = 600;
43 +
44 +/* alt screens */
45 +int allowaltscreen = 1;
46 +
47 +/* frames per second st should at maximum draw to the screen */
48 +static unsigned int xfps = 120;
49 +static unsigned int actionfps = 30;
50 +
51 +/*
52 + * blinking timeout (set to 0 to disable blinking) for the terminal blinking
53 + * attribute.
54 + */
55 +static unsigned int blinktimeout = 800;
56 +
57 +/*
58 + * thickness of underline and bar cursors
59 + */
60 +static unsigned int cursorthickness = 2;
61 +
62 +/*
63 + * bell volume. It must be a value between -100 and 100. Use 0 for disabling
64 + * it
65 + */
66 +static int bellvolume = 0;
67 +
68 +/* default TERM value */
69 +char *termname = "xterm";
70 +
71 +/*
72 + * spaces per tab
73 + *
74 + * When you are changing this value, don't forget to adapt the »it« value in
75 + * the st.info and appropriately install the st.info in the environment where
76 + * you use this st version.
77 + *
78 + * it#$tabspaces,
79 + *
80 + * Secondly make sure your kernel is not expanding tabs. When running `stty
81 + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by
82 + * running following command:
83 + *
84 + * stty tabs
85 + */
86 +unsigned int tabspaces = 8;
87 +
88 +/* Terminal colors (16 first used in escape sequence) */
89 +static const char *colorname[] = {
90 + /* 8 normal colors */
91 + "black",
92 + "red3",
93 + "green3",
94 + "yellow3",
95 + "blue2",
96 + "magenta3",
97 + "cyan3",
98 + "gray90",
99 +
100 + /* 8 bright colors */
101 + "gray50",
102 + "red",
103 + "green",
104 + "yellow",
105 + "#5c5cff",
106 + "magenta",
107 + "cyan",
108 + "white",
109 +
110 + [255] = 0,
111 +
112 + /* more colors can be added after 255 to use with DefaultXX */
113 + "#cccccc",
114 + "#555555",
115 +};
116 +
117 +
118 +/*
119 + * Default colors (colorname index)
120 + * foreground, background, cursor, reverse cursor
121 + */
122 +unsigned int defaultfg = 7;
123 +unsigned int defaultbg = 0;
124 +static unsigned int defaultcs = 256;
125 +static unsigned int defaultrcs = 257;
126 +
127 +/*
128 + * Default shape of cursor
129 + * 2: Block ("█")
130 + * 4: Underline ("_")
131 + * 6: Bar ("|")
132 + * 7: Snowman ("☃")
133 + */
134 +static unsigned int cursorshape = 2;
135 +
136 +/*
137 + * Default columns and rows numbers
138 + */
139 +
140 +static unsigned int cols = 80;
141 +static unsigned int rows = 24;
142 +
143 +/*
144 + * Default colour and shape of the mouse cursor
145 + */
146 +static unsigned int mouseshape = XC_xterm;
147 +static unsigned int mousefg = 7;
148 +static unsigned int mousebg = 0;
149 +
150 +/*
151 + * Color used to display font attributes when fontconfig selected a font which
152 + * doesn't match the ones requested.
153 + */
154 +static unsigned int defaultattr = 11;
155 +
156 +/*
157 + * Internal mouse shortcuts.
158 + * Beware that overloading Button1 will disable the selection.
159 + */
160 +static MouseShortcut mshortcuts[] = {
161 + /* button mask string */
162 + { Button4, XK_ANY_MOD, "\031" },
163 + { Button5, XK_ANY_MOD, "\005" },
164 +};
165 +
166 +/* Internal keyboard shortcuts. */
167 +#define MODKEY Mod1Mask
168 +#define TERMMOD (ControlMask|ShiftMask)
169 +
170 +static Shortcut shortcuts[] = {
171 + /* mask keysym function argument */
172 + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} },
173 + { ControlMask, XK_Print, toggleprinter, {.i = 0} },
174 + { ShiftMask, XK_Print, printscreen, {.i = 0} },
175 + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
176 + { TERMMOD, XK_Prior, zoom, {.f = +1} },
177 + { TERMMOD, XK_Next, zoom, {.f = -1} },
178 + { TERMMOD, XK_Home, zoomreset, {.f = 0} },
179 + { TERMMOD, XK_C, clipcopy, {.i = 0} },
180 + { TERMMOD, XK_V, clippaste, {.i = 0} },
181 + { TERMMOD, XK_Y, selpaste, {.i = 0} },
182 + { ShiftMask, XK_Insert, selpaste, {.i = 0} },
183 + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
184 +};
185 +
186 +/*
187 + * Special keys (change & recompile st.info accordingly)
188 + *
189 + * Mask value:
190 + * * Use XK_ANY_MOD to match the key no matter modifiers state
191 + * * Use XK_NO_MOD to match the key alone (no modifiers)
192 + * appkey value:
193 + * * 0: no value
194 + * * > 0: keypad application mode enabled
195 + * * = 2: term.numlock = 1
196 + * * < 0: keypad application mode disabled
197 + * appcursor value:
198 + * * 0: no value
199 + * * > 0: cursor application mode enabled
200 + * * < 0: cursor application mode disabled
201 + * crlf value
202 + * * 0: no value
203 + * * > 0: crlf mode is enabled
204 + * * < 0: crlf mode is disabled
205 + *
206 + * Be careful with the order of the definitions because st searches in
207 + * this table sequentially, so any XK_ANY_MOD must be in the last
208 + * position for a key.
209 + */
210 +
211 +/*
212 + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
213 + * to be mapped below, add them to this array.
214 + */
215 +static KeySym mappedkeys[] = { -1 };
216 +
217 +/*
218 + * State bits to ignore when matching key or button events. By default,
219 + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
220 + */
221 +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
222 +
223 +/*
224 + * Override mouse-select while mask is active (when MODE_MOUSE is set).
225 + * Note that if you want to use ShiftMask with selmasks, set this to an other
226 + * modifier, set to 0 to not use it.
227 + */
228 +static uint forceselmod = ShiftMask;
229 +
230 +/*
231 + * This is the huge key array which defines all compatibility to the Linux
232 + * world. Please decide about changes wisely.
233 + */
234 +static Key key[] = {
235 + /* keysym mask string appkey appcursor */
236 + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1},
237 + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1},
238 + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1},
239 + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1},
240 + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0},
241 + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1},
242 + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1},
243 + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0},
244 + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1},
245 + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1},
246 + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0},
247 + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1},
248 + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1},
249 + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0},
250 + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1},
251 + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1},
252 + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0},
253 + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
254 + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0},
255 + { XK_KP_End, ControlMask, "\033[J", -1, 0},
256 + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0},
257 + { XK_KP_End, ShiftMask, "\033[K", -1, 0},
258 + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0},
259 + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0},
260 + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0},
261 + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0},
262 + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0},
263 + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0},
264 + { XK_KP_Insert, ControlMask, "\033[L", -1, 0},
265 + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0},
266 + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
267 + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
268 + { XK_KP_Delete, ControlMask, "\033[M", -1, 0},
269 + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0},
270 + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0},
271 + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0},
272 + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0},
273 + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
274 + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0},
275 + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0},
276 + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0},
277 + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0},
278 + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0},
279 + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0},
280 + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0},
281 + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0},
282 + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0},
283 + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0},
284 + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0},
285 + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0},
286 + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0},
287 + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0},
288 + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0},
289 + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0},
290 + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0},
291 + { XK_Up, ShiftMask, "\033[1;2A", 0, 0},
292 + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0},
293 + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0},
294 + { XK_Up, ControlMask, "\033[1;5A", 0, 0},
295 + { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0},
296 + { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0},
297 + { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0},
298 + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1},
299 + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1},
300 + { XK_Down, ShiftMask, "\033[1;2B", 0, 0},
301 + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0},
302 + { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0},
303 + { XK_Down, ControlMask, "\033[1;5B", 0, 0},
304 + { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0},
305 + { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0},
306 + { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0},
307 + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1},
308 + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1},
309 + { XK_Left, ShiftMask, "\033[1;2D", 0, 0},
310 + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0},
311 + { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0},
312 + { XK_Left, ControlMask, "\033[1;5D", 0, 0},
313 + { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0},
314 + { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0},
315 + { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0},
316 + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1},
317 + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1},
318 + { XK_Right, ShiftMask, "\033[1;2C", 0, 0},
319 + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0},
320 + { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0},
321 + { XK_Right, ControlMask, "\033[1;5C", 0, 0},
322 + { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0},
323 + { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0},
324 + { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0},
325 + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1},
326 + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1},
327 + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0},
328 + { XK_Return, Mod1Mask, "\033\r", 0, 0},
329 + { XK_Return, XK_ANY_MOD, "\r", 0, 0},
330 + { XK_Insert, ShiftMask, "\033[4l", -1, 0},
331 + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0},
332 + { XK_Insert, ControlMask, "\033[L", -1, 0},
333 + { XK_Insert, ControlMask, "\033[2;5~", +1, 0},
334 + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
335 + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
336 + { XK_Delete, ControlMask, "\033[M", -1, 0},
337 + { XK_Delete, ControlMask, "\033[3;5~", +1, 0},
338 + { XK_Delete, ShiftMask, "\033[2K", -1, 0},
339 + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0},
340 + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0},
341 + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
342 + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0},
343 + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0},
344 + { XK_Home, ShiftMask, "\033[2J", 0, -1},
345 + { XK_Home, ShiftMask, "\033[1;2H", 0, +1},
346 + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1},
347 + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1},
348 + { XK_End, ControlMask, "\033[J", -1, 0},
349 + { XK_End, ControlMask, "\033[1;5F", +1, 0},
350 + { XK_End, ShiftMask, "\033[K", -1, 0},
351 + { XK_End, ShiftMask, "\033[1;2F", +1, 0},
352 + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0},
353 + { XK_Prior, ControlMask, "\033[5;5~", 0, 0},
354 + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0},
355 + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
356 + { XK_Next, ControlMask, "\033[6;5~", 0, 0},
357 + { XK_Next, ShiftMask, "\033[6;2~", 0, 0},
358 + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0},
359 + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0},
360 + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0},
361 + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0},
362 + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0},
363 + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0},
364 + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0},
365 + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0},
366 + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0},
367 + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0},
368 + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0},
369 + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0},
370 + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0},
371 + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0},
372 + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0},
373 + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0},
374 + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0},
375 + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0},
376 + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0},
377 + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0},
378 + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0},
379 + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0},
380 + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0},
381 + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0},
382 + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0},
383 + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0},
384 + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0},
385 + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0},
386 + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0},
387 + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0},
388 + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0},
389 + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0},
390 + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0},
391 + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0},
392 + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0},
393 + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0},
394 + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0},
395 + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0},
396 + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0},
397 + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0},
398 + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0},
399 + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0},
400 + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0},
401 + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0},
402 + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0},
403 + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0},
404 + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0},
405 + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0},
406 + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0},
407 + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0},
408 + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0},
409 + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0},
410 + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0},
411 + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0},
412 + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0},
413 + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0},
414 + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0},
415 + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0},
416 + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0},
417 + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0},
418 + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0},
419 + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0},
420 + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0},
421 + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0},
422 + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0},
423 + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0},
424 + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0},
425 + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0},
426 + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0},
427 + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0},
428 + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0},
429 + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0},
430 + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0},
431 + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0},
432 + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0},
433 + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0},
434 + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0},
435 + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0},
436 + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0},
437 + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0},
438 + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0},
439 + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0},
440 + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0},
441 + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0},
442 + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0},
443 + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0},
444 + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0},
445 +};
446 +
447 +/*
448 + * Selection types' masks.
449 + * Use the same masks as usual.
450 + * Button1Mask is always unset, to make masks match between ButtonPress.
451 + * ButtonRelease and MotionNotify.
452 + * If no match is found, regular selection is used.
453 + */
454 +static uint selmasks[] = {
455 + [SEL_RECTANGULAR] = Mod1Mask,
456 +};
457 +
458 +/*
459 + * Printable characters in ASCII, used to estimate the advance width
460 + * of single wide characters.
461 + */
462 +static char ascii_printable[] =
463 + " !\"#$%&'()*+,-./0123456789:;<=>?"
464 + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
465 + "`abcdefghijklmnopqrstuvwxyz{|}~";