| ofs | hex dump | ascii |
|---|
| 0000 | 56 69 6d 9f 55 6e 44 6f e5 00 03 ee 69 87 4b 86 8a 73 f1 43 04 0d 37 52 15 d8 f3 13 2a 9e cd c6 | Vim.UnDo....i.K..s.C..7R....*... |
| 0020 | bd 62 a2 cd 76 a4 47 d1 65 e6 e0 00 00 01 ee 00 00 00 00 00 00 01 d3 00 00 00 00 00 00 00 01 00 | .b..v.G.e....................... |
| 0040 | 00 00 02 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 00 6a 0a fc 2e 04 01 00 00 00 | .......................j........ |
| 0060 | 02 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 | .._............................. |
| 0080 | 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 47 00 00 00 00 00 00 00 00 00 00 00 56 00 00 | .................G...........V.. |
| 01e0 | 00 00 00 00 00 00 6a 0a fc 2c 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 | ......j..,...................... |
| 0200 | 00 01 47 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 17 | ..G....#include.<X11/Xlib.h>.... |
| 0220 | 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 14 23 69 6e 63 6c | #include.<X11/keysym.h>....#incl |
| 0240 | 75 64 65 20 3c 78 63 62 2f 78 63 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 78 63 62 | ude.<xcb/xcb.h>....#include.<xcb |
| 0260 | 2f 78 70 72 6f 74 6f 2e 68 3e 00 00 00 00 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e | /xproto.h>........#include.<errn |
| 0280 | 6f 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 00 00 00 13 23 69 | o.h>....#include.<fcntl.h>....#i |
| 02a0 | 6e 63 6c 75 64 65 20 3c 6c 69 6d 69 74 73 2e 68 3e 00 00 00 10 23 69 6e 63 6c 75 64 65 20 3c 70 | nclude.<limits.h>....#include.<p |
| 02c0 | 77 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 13 | wd.h>....#include.<signal.h>.... |
| 02e0 | 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 | #include.<stdarg.h>....#include. |
| 0300 | 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e | <stdio.h>....#include.<stdlib.h> |
| 0320 | 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 14 23 69 6e 63 6c | ....#include.<string.h>....#incl |
| 0340 | 75 64 65 20 3c 73 74 72 69 6e 67 73 2e 68 3e 00 00 00 18 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 | ude.<strings.h>....#include.<sys |
| 0360 | 2f 69 6e 6f 74 69 66 79 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 65 6c | /inotify.h>....#include.<sys/sel |
| 0380 | 65 63 74 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 6f 63 6b 65 74 2e 68 | ect.h>....#include.<sys/socket.h |
| 03a0 | 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 74 61 74 2e 68 3e 00 00 00 16 23 69 | >....#include.<sys/stat.h>....#i |
| 03c0 | 6e 63 6c 75 64 65 20 3c 73 79 73 2f 74 79 70 65 73 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 | nclude.<sys/types.h>....#include |
| 03e0 | 20 3c 73 79 73 2f 75 6e 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 | .<sys/un.h>....#include.<sys/wai |
| 0400 | 74 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 00 00 | t.h>....#include.<unistd.h>..... |
| 0420 | 00 00 15 23 64 65 66 69 6e 65 20 4d 41 58 5f 42 49 4e 44 53 20 35 31 32 00 00 00 18 23 64 65 66 | ...#define.MAX_BINDS.512....#def |
| 0440 | 69 6e 65 20 4d 41 58 5f 43 4d 44 5f 4c 45 4e 20 31 30 32 34 00 00 00 22 23 64 65 66 69 6e 65 20 | ine.MAX_CMD_LEN.1024..."#define. |
| 0460 | 53 4f 43 4b 5f 50 41 54 48 20 22 2f 74 6d 70 2f 70 69 73 73 2e 73 6f 63 6b 22 00 00 00 00 00 00 | SOCK_PATH."/tmp/piss.sock"...... |
| 0480 | 00 24 23 64 65 66 69 6e 65 20 4d 4f 44 5f 53 48 49 46 54 20 58 43 42 5f 4d 4f 44 5f 4d 41 53 4b | .$#define.MOD_SHIFT.XCB_MOD_MASK |
| 04a0 | 5f 53 48 49 46 54 00 00 00 22 23 64 65 66 69 6e 65 20 4d 4f 44 5f 43 41 50 53 20 58 43 42 5f 4d | _SHIFT..."#define.MOD_CAPS.XCB_M |
| 04c0 | 4f 44 5f 4d 41 53 4b 5f 4c 4f 43 4b 00 00 00 25 23 64 65 66 69 6e 65 20 4d 4f 44 5f 43 54 52 4c | OD_MASK_LOCK...%#define.MOD_CTRL |
| 04e0 | 20 58 43 42 5f 4d 4f 44 5f 4d 41 53 4b 5f 43 4f 4e 54 52 4f 4c 00 00 00 1e 23 64 65 66 69 6e 65 | .XCB_MOD_MASK_CONTROL....#define |
| 0500 | 20 4d 4f 44 5f 41 4c 54 20 58 43 42 5f 4d 4f 44 5f 4d 41 53 4b 5f 31 00 00 00 22 23 64 65 66 69 | .MOD_ALT.XCB_MOD_MASK_1..."#defi |
| 0520 | 6e 65 20 4d 4f 44 5f 4e 55 4d 4c 4f 43 4b 20 58 43 42 5f 4d 4f 44 5f 4d 41 53 4b 5f 32 00 00 00 | ne.MOD_NUMLOCK.XCB_MOD_MASK_2... |
| 0540 | 20 23 64 65 66 69 6e 65 20 4d 4f 44 5f 53 55 50 45 52 20 58 43 42 5f 4d 4f 44 5f 4d 41 53 4b 5f | .#define.MOD_SUPER.XCB_MOD_MASK_ |
| 0560 | 34 00 00 00 00 00 00 00 2e 23 64 65 66 69 6e 65 20 43 4c 45 41 4e 5f 4d 41 53 4b 20 28 7e 28 4d | 4........#define.CLEAN_MASK.(~(M |
| 0580 | 4f 44 5f 4e 55 4d 4c 4f 43 4b 20 7c 20 4d 4f 44 5f 43 41 50 53 29 29 00 00 00 00 00 00 00 10 74 | OD_NUMLOCK.|.MOD_CAPS))........t |
| 05a0 | 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 0f 20 20 75 69 6e 74 31 36 5f 74 20 6d 6f | ypedef.struct.{......uint16_t.mo |
| 05c0 | 64 3b 00 00 00 18 20 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 65 79 63 6f 64 65 3b 00 00 | d;......xcb_keycode_t.keycode;.. |
| 05e0 | 00 18 20 20 63 68 61 72 20 63 6d 64 5b 4d 41 58 5f 43 4d 44 5f 4c 45 4e 5d 3b 00 00 00 0a 7d 20 | ....char.cmd[MAX_CMD_LEN];....}. |
| 0600 | 42 69 6e 64 69 6e 67 3b 00 00 00 00 00 00 00 1e 73 74 61 74 69 63 20 78 63 62 5f 63 6f 6e 6e 65 | Binding;........static.xcb_conne |
| 0620 | 63 74 69 6f 6e 5f 74 20 2a 63 6f 6e 6e 3b 00 00 00 19 73 74 61 74 69 63 20 78 63 62 5f 77 69 6e | ction_t.*conn;....static.xcb_win |
| 0640 | 64 6f 77 5f 74 20 72 6f 6f 74 3b 00 00 00 00 00 00 00 2f 73 74 61 74 69 63 20 78 63 62 5f 67 65 | dow_t.root;......./static.xcb_ge |
| 0660 | 74 5f 6b 65 79 62 6f 61 72 64 5f 6d 61 70 70 69 6e 67 5f 72 65 70 6c 79 5f 74 20 2a 6b 62 6d 61 | t_keyboard_mapping_reply_t.*kbma |
| 0680 | 70 3b 00 00 00 1f 73 74 61 74 69 63 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 62 6d 61 70 | p;....static.xcb_keycode_t.kbmap |
| 06a0 | 5f 6d 69 6e 3b 00 00 00 1f 73 74 61 74 69 63 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 62 | _min;....static.xcb_keycode_t.kb |
| 06c0 | 6d 61 70 5f 6d 61 78 3b 00 00 00 00 00 00 00 23 73 74 61 74 69 63 20 42 69 6e 64 69 6e 67 20 62 | map_max;.......#static.Binding.b |
| 06e0 | 69 6e 64 69 6e 67 73 5b 4d 41 58 5f 42 49 4e 44 53 5d 3b 00 00 00 16 73 74 61 74 69 63 20 69 6e | indings[MAX_BINDS];....static.in |
| 0700 | 74 20 62 69 6e 64 5f 63 6f 75 6e 74 3b 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 76 6f 6c 61 | t.bind_count;.......$static.vola |
| 0720 | 74 69 6c 65 20 73 69 67 5f 61 74 6f 6d 69 63 5f 74 20 67 5f 71 75 69 74 3b 00 00 00 26 73 74 61 | tile.sig_atomic_t.g_quit;...&sta |
| 0740 | 74 69 63 20 76 6f 6c 61 74 69 6c 65 20 73 69 67 5f 61 74 6f 6d 69 63 5f 74 20 67 5f 72 65 6c 6f | tic.volatile.sig_atomic_t.g_relo |
| 0760 | 61 64 3b 00 00 00 27 73 74 61 74 69 63 20 76 6f 6c 61 74 69 6c 65 20 73 69 67 5f 61 74 6f 6d 69 | ad;...'static.volatile.sig_atomi |
| 0780 | 63 5f 74 20 67 5f 72 65 73 74 61 72 74 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 63 68 61 | c_t.g_restart;........static.cha |
| 07a0 | 72 20 67 5f 63 66 67 5b 35 31 32 5d 3b 00 00 00 15 73 74 61 74 69 63 20 63 68 61 72 20 2a 2a 67 | r.g_cfg[512];....static.char.**g |
| 07c0 | 5f 61 72 67 76 3b 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 | _argv;.......$static.void.handle |
| 07e0 | 5f 73 69 67 6e 61 6c 28 69 6e 74 20 73 69 67 29 20 7b 00 00 00 26 20 20 69 66 20 28 73 69 67 20 | _signal(int.sig).{...&..if.(sig. |
| 0800 | 3d 3d 20 53 49 47 54 45 52 4d 20 7c 7c 20 73 69 67 20 3d 3d 20 53 49 47 49 4e 54 29 00 00 00 0f | ==.SIGTERM.||.sig.==.SIGINT).... |
| 0820 | 20 20 20 20 67 5f 71 75 69 74 20 3d 20 31 3b 00 00 00 15 20 20 69 66 20 28 73 69 67 20 3d 3d 20 | ....g_quit.=.1;......if.(sig.==. |
| 0840 | 53 49 47 55 53 52 31 29 00 00 00 11 20 20 20 20 67 5f 72 65 6c 6f 61 64 20 3d 20 31 3b 00 00 00 | SIGUSR1)........g_reload.=.1;... |
| 0860 | 15 20 20 69 66 20 28 73 69 67 20 3d 3d 20 53 49 47 55 53 52 32 29 00 00 00 12 20 20 20 20 67 5f | ...if.(sig.==.SIGUSR2)........g_ |
| 0880 | 72 65 73 74 61 72 74 20 3d 20 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 22 73 74 61 74 69 63 20 | restart.=.1;....}......."static. |
| 08a0 | 76 6f 69 64 20 72 65 66 72 65 73 68 5f 6b 65 79 6d 61 70 28 76 6f 69 64 29 20 7b 00 00 00 0e 20 | void.refresh_keymap(void).{..... |
| 08c0 | 20 66 72 65 65 28 6b 62 6d 61 70 29 3b 00 00 00 42 20 20 78 63 62 5f 67 65 74 5f 6b 65 79 62 6f | .free(kbmap);...B..xcb_get_keybo |
| 08e0 | 61 72 64 5f 6d 61 70 70 69 6e 67 5f 63 6f 6f 6b 69 65 5f 74 20 63 6b 20 3d 20 78 63 62 5f 67 65 | ard_mapping_cookie_t.ck.=.xcb_ge |
| 0900 | 74 5f 6b 65 79 62 6f 61 72 64 5f 6d 61 70 70 69 6e 67 28 00 00 00 3d 20 20 20 20 20 20 63 6f 6e | t_keyboard_mapping(...=......con |
| 0920 | 6e 2c 20 6b 62 6d 61 70 5f 6d 69 6e 2c 20 28 75 69 6e 74 38 5f 74 29 28 6b 62 6d 61 70 5f 6d 61 | n,.kbmap_min,.(uint8_t)(kbmap_ma |
| 0940 | 78 20 2d 20 6b 62 6d 61 70 5f 6d 69 6e 20 2b 20 31 29 29 3b 00 00 00 20 20 20 78 63 62 5f 67 65 | x.-.kbmap_min.+.1));......xcb_ge |
| 0960 | 6e 65 72 69 63 5f 65 72 72 6f 72 5f 74 20 2a 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 37 20 20 6b 62 | neric_error_t.*e.=.NULL;...7..kb |
| 0980 | 6d 61 70 20 3d 20 78 63 62 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 5f 6d 61 70 70 69 6e 67 5f 72 | map.=.xcb_get_keyboard_mapping_r |
| 09a0 | 65 70 6c 79 28 63 6f 6e 6e 2c 20 63 6b 2c 20 26 65 29 3b 00 00 00 0a 20 20 69 66 20 28 65 29 20 | eply(conn,.ck,.&e);......if.(e). |
| 09c0 | 7b 00 00 00 0c 20 20 20 20 66 72 65 65 28 65 29 3b 00 00 00 03 20 20 7d 00 00 00 01 7d 00 00 00 | {........free(e);......}....}... |
| 09e0 | 00 00 00 00 3a 73 74 61 74 69 63 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 65 79 73 79 6d | ....:static.xcb_keycode_t.keysym |
| 0a00 | 5f 74 6f 5f 6b 65 79 63 6f 64 65 28 78 63 62 5f 6b 65 79 73 79 6d 5f 74 20 73 79 6d 29 20 7b 00 | _to_keycode(xcb_keysym_t.sym).{. |
| 0a20 | 00 00 0d 20 20 69 66 20 28 21 6b 62 6d 61 70 29 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 | .....if.(!kbmap)........return.0 |
| 0a40 | 3b 00 00 00 00 00 00 00 46 20 20 63 6f 6e 73 74 20 78 63 62 5f 6b 65 79 73 79 6d 5f 74 20 2a 74 | ;.......F..const.xcb_keysym_t.*t |
| 0a60 | 61 62 6c 65 20 3d 20 78 63 62 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 5f 6d 61 70 70 69 6e 67 5f | able.=.xcb_get_keyboard_mapping_ |
| 0a80 | 6b 65 79 73 79 6d 73 28 6b 62 6d 61 70 29 3b 00 00 00 27 20 20 69 6e 74 20 6b 70 6b 20 3d 20 6b | keysyms(kbmap);...'..int.kpk.=.k |
| 0aa0 | 62 6d 61 70 2d 3e 6b 65 79 73 79 6d 73 5f 70 65 72 5f 6b 65 79 63 6f 64 65 3b 00 00 00 00 00 00 | bmap->keysyms_per_keycode;...... |
| 0ac0 | 00 33 20 20 66 6f 72 20 28 69 6e 74 20 6b 63 20 3d 20 6b 62 6d 61 70 5f 6d 69 6e 3b 20 6b 63 20 | .3..for.(int.kc.=.kbmap_min;.kc. |
| 0ae0 | 3c 3d 20 6b 62 6d 61 70 5f 6d 61 78 3b 20 6b 63 2b 2b 29 20 7b 00 00 00 3d 20 20 20 20 63 6f 6e | <=.kbmap_max;.kc++).{...=....con |
| 0b00 | 73 74 20 78 63 62 5f 6b 65 79 73 79 6d 5f 74 20 2a 72 6f 77 20 3d 20 74 61 62 6c 65 20 2b 20 28 | st.xcb_keysym_t.*row.=.table.+.( |
| 0b20 | 6b 63 20 2d 20 6b 62 6d 61 70 5f 6d 69 6e 29 20 2a 20 6b 70 6b 3b 00 00 00 21 20 20 20 20 66 6f | kc.-.kbmap_min).*.kpk;...!....fo |
| 0b40 | 72 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c 20 6b 70 6b 3b 20 69 2b 2b 29 00 00 00 18 20 | r.(int.i.=.0;.i.<.kpk;.i++)..... |
| 0b60 | 20 20 20 20 20 69 66 20 28 72 6f 77 5b 69 5d 20 3d 3d 20 73 79 6d 29 00 00 00 21 20 20 20 20 20 | .....if.(row[i].==.sym)...!..... |
| 0b80 | 20 20 20 72 65 74 75 72 6e 20 28 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 29 6b 63 3b 00 00 00 03 | ...return.(xcb_keycode_t)kc;.... |
| 0ba0 | 20 20 7d 00 00 00 0b 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 32 73 | ..}......return.0;....}.......2s |
| 0bc0 | 74 61 74 69 63 20 75 69 6e 74 31 36 5f 74 20 70 61 72 73 65 5f 6d 6f 64 69 66 69 65 72 73 28 63 | tatic.uint16_t.parse_modifiers(c |
| 0be0 | 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 29 20 7b 00 00 00 13 20 20 75 69 6e 74 31 36 5f 74 20 | onst.char.*str).{......uint16_t. |
| 0c00 | 6d 6f 64 20 3d 20 30 3b 00 00 00 3a 20 20 69 66 20 28 73 74 72 63 61 73 65 73 74 72 28 73 74 72 | mod.=.0;...:..if.(strcasestr(str |
| 0c20 | 2c 20 22 73 75 70 65 72 22 29 20 7c 7c 20 73 74 72 63 61 73 65 73 74 72 28 73 74 72 2c 20 22 6d | ,."super").||.strcasestr(str,."m |
| 0c40 | 6f 64 34 22 29 29 00 00 00 15 20 20 20 20 6d 6f 64 20 7c 3d 20 4d 4f 44 5f 53 55 50 45 52 3b 00 | od4"))........mod.|=.MOD_SUPER;. |
| 0c60 | 00 00 1f 20 20 69 66 20 28 73 74 72 63 61 73 65 73 74 72 28 73 74 72 2c 20 22 73 68 69 66 74 22 | .....if.(strcasestr(str,."shift" |
| 0c80 | 29 29 00 00 00 15 20 20 20 20 6d 6f 64 20 7c 3d 20 4d 4f 44 5f 53 48 49 46 54 3b 00 00 00 3c 20 | ))........mod.|=.MOD_SHIFT;...<. |
| 0ca0 | 20 69 66 20 28 73 74 72 63 61 73 65 73 74 72 28 73 74 72 2c 20 22 63 74 72 6c 22 29 20 7c 7c 20 | .if.(strcasestr(str,."ctrl").||. |
| 0cc0 | 73 74 72 63 61 73 65 73 74 72 28 73 74 72 2c 20 22 63 6f 6e 74 72 6f 6c 22 29 29 00 00 00 14 20 | strcasestr(str,."control"))..... |
| 0ce0 | 20 20 20 6d 6f 64 20 7c 3d 20 4d 4f 44 5f 43 54 52 4c 3b 00 00 00 38 20 20 69 66 20 28 73 74 72 | ...mod.|=.MOD_CTRL;...8..if.(str |
| 0d00 | 63 61 73 65 73 74 72 28 73 74 72 2c 20 22 61 6c 74 22 29 20 7c 7c 20 73 74 72 63 61 73 65 73 74 | casestr(str,."alt").||.strcasest |
| 0d20 | 72 28 73 74 72 2c 20 22 6d 6f 64 31 22 29 29 00 00 00 13 20 20 20 20 6d 6f 64 20 7c 3d 20 4d 4f | r(str,."mod1"))........mod.|=.MO |
| 0d40 | 44 5f 41 4c 54 3b 00 00 00 0d 20 20 72 65 74 75 72 6e 20 6d 6f 64 3b 00 00 00 01 7d 00 00 00 00 | D_ALT;......return.mod;....}.... |
| 0d60 | 00 00 00 35 73 74 61 74 69 63 20 69 6e 74 20 67 72 61 62 5f 6b 65 79 28 75 69 6e 74 31 36 5f 74 | ...5static.int.grab_key(uint16_t |
| 0d80 | 20 6d 6f 64 2c 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 63 29 20 7b 00 00 00 16 20 20 75 | .mod,.xcb_keycode_t.kc).{......u |
| 0da0 | 69 6e 74 31 36 5f 74 20 6d 6f 64 73 5b 34 5d 20 3d 20 7b 00 00 00 0a 20 20 20 20 20 20 6d 6f 64 | int16_t.mods[4].=.{..........mod |
| 0dc0 | 2c 00 00 00 24 20 20 20 20 20 20 28 75 69 6e 74 31 36 5f 74 29 28 6d 6f 64 20 7c 20 4d 4f 44 5f | ,...$......(uint16_t)(mod.|.MOD_ |
| 0de0 | 4e 55 4d 4c 4f 43 4b 29 2c 00 00 00 21 20 20 20 20 20 20 28 75 69 6e 74 31 36 5f 74 29 28 6d 6f | NUMLOCK),...!......(uint16_t)(mo |
| 0e00 | 64 20 7c 20 4d 4f 44 5f 43 41 50 53 29 2c 00 00 00 2f 20 20 20 20 20 20 28 75 69 6e 74 31 36 5f | d.|.MOD_CAPS),.../......(uint16_ |
| 0e20 | 74 29 28 6d 6f 64 20 7c 20 4d 4f 44 5f 4e 55 4d 4c 4f 43 4b 20 7c 20 4d 4f 44 5f 43 41 50 53 29 | t)(mod.|.MOD_NUMLOCK.|.MOD_CAPS) |
| 0e40 | 2c 00 00 00 04 20 20 7d 3b 00 00 00 00 00 00 00 1f 20 20 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 | ,......};..........for.(int.i.=. |
| 0e60 | 30 3b 20 69 20 3c 20 34 3b 20 69 2b 2b 29 20 7b 00 00 00 1a 20 20 20 20 78 63 62 5f 76 6f 69 64 | 0;.i.<.4;.i++).{........xcb_void |
| 0e80 | 5f 63 6f 6f 6b 69 65 5f 74 20 63 6b 20 3d 00 00 00 38 20 20 20 20 20 20 20 20 78 63 62 5f 67 72 | _cookie_t.ck.=...8........xcb_gr |
| 0ea0 | 61 62 5f 6b 65 79 5f 63 68 65 63 6b 65 64 28 63 6f 6e 6e 2c 20 31 2c 20 72 6f 6f 74 2c 20 6d 6f | ab_key_checked(conn,.1,.root,.mo |
| 0ec0 | 64 73 5b 69 5d 2c 20 6b 63 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ds[i],.kc,...G.................. |
| 0ee0 | 20 20 20 20 20 20 20 20 20 20 20 58 43 42 5f 47 52 41 42 5f 4d 4f 44 45 5f 41 53 59 4e 43 2c 20 | ...........XCB_GRAB_MODE_ASYNC,. |
| 0f00 | 58 43 42 5f 47 52 41 42 5f 4d 4f 44 45 5f 41 53 59 4e 43 29 3b 00 00 00 39 20 20 20 20 78 63 62 | XCB_GRAB_MODE_ASYNC);...9....xcb |
| 0f20 | 5f 67 65 6e 65 72 69 63 5f 65 72 72 6f 72 5f 74 20 2a 65 20 3d 20 78 63 62 5f 72 65 71 75 65 73 | _generic_error_t.*e.=.xcb_reques |
| 0f40 | 74 5f 63 68 65 63 6b 28 63 6f 6e 6e 2c 20 63 6b 29 3b 00 00 00 0a 20 20 20 20 69 66 20 28 65 29 | t_check(conn,.ck);........if.(e) |
| 0f60 | 00 00 00 0e 20 20 20 20 20 20 66 72 65 65 28 65 29 3b 00 00 00 03 20 20 7d 00 00 00 0b 20 20 72 | ..........free(e);......}......r |
| 0f80 | 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1e 73 74 61 74 69 63 20 76 6f 69 64 | eturn.0;....}........static.void |
| 0fa0 | 20 75 6e 67 72 61 62 5f 61 6c 6c 28 76 6f 69 64 29 20 7b 00 00 00 28 20 20 66 6f 72 20 28 69 6e | .ungrab_all(void).{...(..for.(in |
| 0fc0 | 74 20 69 20 3d 20 30 3b 20 69 20 3c 20 62 69 6e 64 5f 63 6f 75 6e 74 3b 20 69 2b 2b 29 20 7b 00 | t.i.=.0;.i.<.bind_count;.i++).{. |
| 0fe0 | 00 00 21 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 20 3d 20 62 69 6e 64 69 6e 67 73 5b 69 5d 2e | ..!....uint16_t.m.=.bindings[i]. |
| 1000 | 6d 6f 64 3b 00 00 00 2b 20 20 20 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 63 20 3d 20 62 | mod;...+....xcb_keycode_t.kc.=.b |
| 1020 | 69 6e 64 69 6e 67 73 5b 69 5d 2e 6b 65 79 63 6f 64 65 3b 00 00 00 00 00 00 00 18 20 20 20 20 75 | indings[i].keycode;............u |
| 1040 | 69 6e 74 31 36 5f 74 20 6d 6f 64 73 5b 34 5d 20 3d 20 7b 00 00 00 0a 20 20 20 20 20 20 20 20 6d | int16_t.mods[4].=.{............m |
| 1060 | 2c 00 00 00 24 20 20 20 20 20 20 20 20 28 75 69 6e 74 31 36 5f 74 29 28 6d 20 7c 20 4d 4f 44 5f | ,...$........(uint16_t)(m.|.MOD_ |
| 1080 | 4e 55 4d 4c 4f 43 4b 29 2c 00 00 00 21 20 20 20 20 20 20 20 20 28 75 69 6e 74 31 36 5f 74 29 28 | NUMLOCK),...!........(uint16_t)( |
| 10a0 | 6d 20 7c 20 4d 4f 44 5f 43 41 50 53 29 2c 00 00 00 2f 20 20 20 20 20 20 20 20 28 75 69 6e 74 31 | m.|.MOD_CAPS),.../........(uint1 |
| 10c0 | 36 5f 74 29 28 6d 20 7c 20 4d 4f 44 5f 4e 55 4d 4c 4f 43 4b 20 7c 20 4d 4f 44 5f 43 41 50 53 29 | 6_t)(m.|.MOD_NUMLOCK.|.MOD_CAPS) |
| 10e0 | 2c 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1f 20 20 20 20 66 6f 72 20 28 69 6e 74 20 | ,........};............for.(int. |
| 1100 | 6a 20 3d 20 30 3b 20 6a 20 3c 20 34 3b 20 6a 2b 2b 29 00 00 00 2e 20 20 20 20 20 20 78 63 62 5f | j.=.0;.j.<.4;.j++)..........xcb_ |
| 1120 | 75 6e 67 72 61 62 5f 6b 65 79 28 63 6f 6e 6e 2c 20 6b 63 2c 20 72 6f 6f 74 2c 20 6d 6f 64 73 5b | ungrab_key(conn,.kc,.root,.mods[ |
| 1140 | 6a 5d 29 3b 00 00 00 03 20 20 7d 00 00 00 12 20 20 78 63 62 5f 66 6c 75 73 68 28 63 6f 6e 6e 29 | j]);......}......xcb_flush(conn) |
| 1160 | 3b 00 00 00 01 7d 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 76 6f 69 64 20 73 70 61 77 6e 28 | ;....}.......$static.void.spawn( |
| 1180 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 6d 64 29 20 7b 00 00 00 15 20 20 70 69 64 5f 74 20 70 69 | const.char.*cmd).{......pid_t.pi |
| 11a0 | 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 0e 20 20 69 66 20 28 70 69 64 20 3c 20 30 29 00 00 00 | d.=.fork();......if.(pid.<.0)... |
| 11c0 | 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 11 20 20 69 66 20 28 70 69 64 20 3d 3d 20 30 29 20 | .....return;......if.(pid.==.0). |
| 11e0 | 7b 00 00 00 0d 20 20 20 20 73 65 74 73 69 64 28 29 3b 00 00 00 34 20 20 20 20 65 78 65 63 6c 28 | {........setsid();...4....execl( |
| 1200 | 22 2f 62 69 6e 2f 73 68 22 2c 20 22 73 68 22 2c 20 22 2d 63 22 2c 20 63 6d 64 2c 20 28 63 68 61 | "/bin/sh",."sh",."-c",.cmd,.(cha |
| 1220 | 72 20 2a 29 4e 55 4c 4c 29 3b 00 00 00 0d 20 20 20 20 5f 65 78 69 74 28 31 29 3b 00 00 00 03 20 | r.*)NULL);........_exit(1);..... |
| 1240 | 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 23 73 74 61 74 69 63 20 69 6e 74 20 61 64 64 5f 62 69 | .}....}.......#static.int.add_bi |
| 1260 | 6e 64 69 6e 67 28 63 68 61 72 20 2a 6d 73 67 29 20 7b 00 00 00 23 20 20 69 66 20 28 21 73 74 72 | nding(char.*msg).{...#..if.(!str |
| 1280 | 6e 63 6d 70 28 6d 73 67 2c 20 22 72 65 6c 6f 61 64 22 2c 20 36 29 29 20 7b 00 00 00 11 20 20 20 | ncmp(msg,."reload",.6)).{....... |
| 12a0 | 20 67 5f 72 65 6c 6f 61 64 20 3d 20 31 3b 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 | .g_reload.=.1;........return.0;. |
| 12c0 | 00 00 03 20 20 7d 00 00 00 00 00 00 00 24 20 20 69 66 20 28 21 73 74 72 6e 63 6d 70 28 6d 73 67 | .....}.......$..if.(!strncmp(msg |
| 12e0 | 2c 20 22 72 65 73 74 61 72 74 22 2c 20 37 29 29 20 7b 00 00 00 12 20 20 20 20 67 5f 72 65 73 74 | ,."restart",.7)).{........g_rest |
| 1300 | 61 72 74 20 3d 20 31 3b 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 03 20 20 7d | art.=.1;........return.0;......} |
| 1320 | 00 00 00 00 00 00 00 21 20 20 63 68 61 72 20 2a 73 65 70 20 3d 20 73 74 72 73 74 72 28 6d 73 67 | .......!..char.*sep.=.strstr(msg |
| 1340 | 2c 20 22 7c 7c 7c 22 29 3b 00 00 00 0b 20 20 69 66 20 28 21 73 65 70 29 00 00 00 0e 20 20 20 20 | ,."|||");......if.(!sep)........ |
| 1360 | 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 00 00 00 00 0b 20 20 2a 73 65 70 20 3d 20 30 3b 00 00 00 | return.-1;..........*sep.=.0;... |
| 1380 | 14 20 20 63 68 61 72 20 2a 63 6f 6d 62 6f 20 3d 20 6d 73 67 3b 00 00 00 16 20 20 63 68 61 72 20 | ...char.*combo.=.msg;......char. |
| 13a0 | 2a 63 6d 64 20 3d 20 73 65 70 20 2b 20 33 3b 00 00 00 00 00 00 00 23 20 20 63 68 61 72 20 2a 6c | *cmd.=.sep.+.3;.......#..char.*l |
| 13c0 | 61 73 74 20 3d 20 73 74 72 72 63 68 72 28 63 6f 6d 62 6f 2c 20 27 2b 27 29 3b 00 00 00 0c 20 20 | ast.=.strrchr(combo,.'+');...... |
| 13e0 | 69 66 20 28 21 6c 61 73 74 29 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 00 | if.(!last)........return.-1;.... |
| 1400 | 00 00 00 0c 20 20 2a 6c 61 73 74 20 3d 20 30 3b 00 00 00 17 20 20 63 68 61 72 20 2a 6b 65 79 20 | ......*last.=.0;......char.*key. |
| 1420 | 3d 20 6c 61 73 74 20 2b 20 31 3b 00 00 00 00 00 00 00 24 20 20 4b 65 79 53 79 6d 20 73 79 6d 20 | =.last.+.1;.......$..KeySym.sym. |
| 1440 | 3d 20 58 53 74 72 69 6e 67 54 6f 4b 65 79 73 79 6d 28 6b 65 79 29 3b 00 00 00 16 20 20 69 66 20 | =.XStringToKeysym(key);......if. |
| 1460 | 28 73 79 6d 20 3d 3d 20 4e 6f 53 79 6d 62 6f 6c 29 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 | (sym.==.NoSymbol)........return. |
| 1480 | 2d 31 3b 00 00 00 00 00 00 00 2c 20 20 78 63 62 5f 6b 65 79 63 6f 64 65 5f 74 20 6b 63 20 3d 20 | -1;.......,..xcb_keycode_t.kc.=. |
| 14a0 | 6b 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 63 6f 64 65 28 73 79 6d 29 3b 00 00 00 0a 20 20 69 66 20 | keysym_to_keycode(sym);......if. |
| 14c0 | 28 21 6b 63 29 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 00 00 00 00 28 20 | (!kc)........return.-1;.......(. |
| 14e0 | 20 75 69 6e 74 31 36 5f 74 20 6d 6f 64 20 3d 20 70 61 72 73 65 5f 6d 6f 64 69 66 69 65 72 73 28 | .uint16_t.mod.=.parse_modifiers( |
| 1500 | 63 6f 6d 62 6f 29 3b 00 00 00 00 00 00 00 28 20 20 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 30 3b | combo);.......(..for.(int.i.=.0; |
| 1520 | 20 69 20 3c 20 62 69 6e 64 5f 63 6f 75 6e 74 3b 20 69 2b 2b 29 20 7b 00 00 00 3e 20 20 20 20 69 | .i.<.bind_count;.i++).{...>....i |
| 1540 | 66 20 28 62 69 6e 64 69 6e 67 73 5b 69 5d 2e 6d 6f 64 20 3d 3d 20 6d 6f 64 20 26 26 20 62 69 6e | f.(bindings[i].mod.==.mod.&&.bin |
| 1560 | 64 69 6e 67 73 5b 69 5d 2e 6b 65 79 63 6f 64 65 20 3d 3d 20 6b 63 29 20 7b 00 00 00 31 20 20 20 | dings[i].keycode.==.kc).{...1... |
| 1580 | 20 20 20 73 74 72 6e 63 70 79 28 62 69 6e 64 69 6e 67 73 5b 69 5d 2e 63 6d 64 2c 20 63 6d 64 2c | ...strncpy(bindings[i].cmd,.cmd, |
| 15a0 | 20 4d 41 58 5f 43 4d 44 5f 4c 45 4e 29 3b 00 00 00 0f 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 | .MAX_CMD_LEN);..........return.0 |
| 15c0 | 3b 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 00 00 00 00 21 20 20 62 69 6e 64 69 | ;........}......}.......!..bindi |
| 15e0 | 6e 67 73 5b 62 69 6e 64 5f 63 6f 75 6e 74 5d 2e 6d 6f 64 20 3d 20 6d 6f 64 3b 00 00 00 24 20 20 | ngs[bind_count].mod.=.mod;...$.. |
| 1600 | 62 69 6e 64 69 6e 67 73 5b 62 69 6e 64 5f 63 6f 75 6e 74 5d 2e 6b 65 79 63 6f 64 65 20 3d 20 6b | bindings[bind_count].keycode.=.k |
| 1620 | 63 3b 00 00 00 36 20 20 73 74 72 6e 63 70 79 28 62 69 6e 64 69 6e 67 73 5b 62 69 6e 64 5f 63 6f | c;...6..strncpy(bindings[bind_co |
| 1640 | 75 6e 74 5d 2e 63 6d 64 2c 20 63 6d 64 2c 20 4d 41 58 5f 43 4d 44 5f 4c 45 4e 29 3b 00 00 00 00 | unt].cmd,.cmd,.MAX_CMD_LEN);.... |
| 1660 | 00 00 00 14 20 20 67 72 61 62 5f 6b 65 79 28 6d 6f 64 2c 20 6b 63 29 3b 00 00 00 0f 20 20 62 69 | ......grab_key(mod,.kc);......bi |
| 1680 | 6e 64 5f 63 6f 75 6e 74 2b 2b 3b 00 00 00 0b 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 | nd_count++;......return.0;....}. |
| 16a0 | 00 00 00 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 6d 61 6b 65 5f 73 6f 63 6b 65 74 28 76 6f | .......static.int.make_socket(vo |
| 16c0 | 69 64 29 20 7b 00 00 00 2b 20 20 69 6e 74 20 66 64 20 3d 20 73 6f 63 6b 65 74 28 41 46 5f 55 4e | id).{...+..int.fd.=.socket(AF_UN |
| 16e0 | 49 58 2c 20 53 4f 43 4b 5f 53 54 52 45 41 4d 2c 20 30 29 3b 00 00 00 00 00 00 00 1a 20 20 73 74 | IX,.SOCK_STREAM,.0);..........st |
| 1700 | 72 75 63 74 20 73 6f 63 6b 61 64 64 72 5f 75 6e 20 61 64 64 72 3b 00 00 00 21 20 20 6d 65 6d 73 | ruct.sockaddr_un.addr;...!..mems |
| 1720 | 65 74 28 26 61 64 64 72 2c 20 30 2c 20 73 69 7a 65 6f 66 28 61 64 64 72 29 29 3b 00 00 00 1c 20 | et(&addr,.0,.sizeof(addr));..... |
| 1740 | 20 61 64 64 72 2e 73 75 6e 5f 66 61 6d 69 6c 79 20 3d 20 41 46 5f 55 4e 49 58 3b 00 00 00 3f 20 | .addr.sun_family.=.AF_UNIX;...?. |
| 1760 | 20 73 74 72 6e 63 70 79 28 61 64 64 72 2e 73 75 6e 5f 70 61 74 68 2c 20 53 4f 43 4b 5f 50 41 54 | .strncpy(addr.sun_path,.SOCK_PAT |
| 1780 | 48 2c 20 73 69 7a 65 6f 66 28 61 64 64 72 2e 73 75 6e 5f 70 61 74 68 29 20 2d 20 31 29 3b 00 00 | H,.sizeof(addr.sun_path).-.1);.. |
| 17a0 | 00 00 00 00 00 14 20 20 75 6e 6c 69 6e 6b 28 53 4f 43 4b 5f 50 41 54 48 29 3b 00 00 00 33 20 20 | ........unlink(SOCK_PATH);...3.. |
| 17c0 | 62 69 6e 64 28 66 64 2c 20 28 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 29 26 61 64 64 | bind(fd,.(struct.sockaddr.*)&add |
| 17e0 | 72 2c 20 73 69 7a 65 6f 66 28 61 64 64 72 29 29 3b 00 00 00 11 20 20 6c 69 73 74 65 6e 28 66 64 | r,.sizeof(addr));......listen(fd |
| 1800 | 2c 20 31 36 29 3b 00 00 00 00 00 00 00 0c 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 01 7d 00 | ,.16);..........return.fd;....}. |
| 1820 | 00 00 00 00 00 00 24 73 74 61 74 69 63 20 69 6e 74 20 63 6c 69 65 6e 74 28 63 6f 6e 73 74 20 63 | ......$static.int.client(const.c |
| 1840 | 68 61 72 20 2a 6d 73 67 29 20 7b 00 00 00 1a 20 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 | har.*msg).{......struct.sockaddr |
| 1860 | 5f 75 6e 20 61 64 64 72 3b 00 00 00 21 20 20 6d 65 6d 73 65 74 28 26 61 64 64 72 2c 20 30 2c 20 | _un.addr;...!..memset(&addr,.0,. |
| 1880 | 73 69 7a 65 6f 66 28 61 64 64 72 29 29 3b 00 00 00 1c 20 20 61 64 64 72 2e 73 75 6e 5f 66 61 6d | sizeof(addr));......addr.sun_fam |
| 18a0 | 69 6c 79 20 3d 20 41 46 5f 55 4e 49 58 3b 00 00 00 3f 20 20 73 74 72 6e 63 70 79 28 61 64 64 72 | ily.=.AF_UNIX;...?..strncpy(addr |
| 18c0 | 2e 73 75 6e 5f 70 61 74 68 2c 20 53 4f 43 4b 5f 50 41 54 48 2c 20 73 69 7a 65 6f 66 28 61 64 64 | .sun_path,.SOCK_PATH,.sizeof(add |
| 18e0 | 72 2e 73 75 6e 5f 70 61 74 68 29 20 2d 20 31 29 3b 00 00 00 00 00 00 00 2a 20 20 69 6e 74 20 73 | r.sun_path).-.1);.......*..int.s |
| 1900 | 20 3d 20 73 6f 63 6b 65 74 28 41 46 5f 55 4e 49 58 2c 20 53 4f 43 4b 5f 53 54 52 45 41 4d 2c 20 | .=.socket(AF_UNIX,.SOCK_STREAM,. |
| 1920 | 30 29 3b 00 00 00 3d 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 28 73 2c 20 28 73 74 72 75 63 74 20 | 0);...=..if.(connect(s,.(struct. |
| 1940 | 73 6f 63 6b 61 64 64 72 20 2a 29 26 61 64 64 72 2c 20 73 69 7a 65 6f 66 28 61 64 64 72 29 29 20 | sockaddr.*)&addr,.sizeof(addr)). |
| 1960 | 3c 20 30 29 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 00 00 00 00 1d 20 20 77 | <.0)........return.1;..........w |
| 1980 | 72 69 74 65 28 73 2c 20 6d 73 67 2c 20 73 74 72 6c 65 6e 28 6d 73 67 29 29 3b 00 00 00 0b 20 20 | rite(s,.msg,.strlen(msg));...... |
| 19a0 | 63 6c 6f 73 65 28 73 29 3b 00 00 00 0b 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 | close(s);......return.0;....}... |
| 19c0 | 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 67 65 74 5f 63 66 67 28 76 6f 69 64 29 20 7b | .....static.void.get_cfg(void).{ |
| 19e0 | 00 00 00 29 20 20 73 74 72 75 63 74 20 70 61 73 73 77 64 20 2a 70 77 20 3d 20 67 65 74 70 77 75 | ...)..struct.passwd.*pw.=.getpwu |
| 1a00 | 69 64 28 67 65 74 75 69 64 28 29 29 3b 00 00 00 47 20 20 73 6e 70 72 69 6e 74 66 28 67 5f 63 66 | id(getuid());...G..snprintf(g_cf |
| 1a20 | 67 2c 20 73 69 7a 65 6f 66 28 67 5f 63 66 67 29 2c 20 22 25 73 2f 2e 63 6f 6e 66 69 67 2f 70 69 | g,.sizeof(g_cfg),."%s/.config/pi |
| 1a40 | 73 73 2f 70 69 73 73 72 63 22 2c 20 70 77 2d 3e 70 77 5f 64 69 72 29 3b 00 00 00 01 7d 00 00 00 | ss/pissrc",.pw->pw_dir);....}... |
| 1a60 | 00 00 00 00 22 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 61 72 | ...."int.main(int.argc,.char.*ar |
| 1a80 | 67 76 5b 5d 29 20 7b 00 00 00 10 20 20 67 5f 61 72 67 76 20 3d 20 61 72 67 76 3b 00 00 00 00 00 | gv[]).{......g_argv.=.argv;..... |
| 1aa0 | 00 00 2b 20 20 69 66 20 28 61 72 67 63 20 3e 20 31 20 26 26 20 21 73 74 72 63 6d 70 28 61 72 67 | ..+..if.(argc.>.1.&&.!strcmp(arg |
| 1ac0 | 76 5b 31 5d 2c 20 22 62 69 6e 64 22 29 29 00 00 00 1b 20 20 20 20 72 65 74 75 72 6e 20 63 6c 69 | v[1],."bind"))........return.cli |
| 1ae0 | 65 6e 74 28 61 72 67 76 5b 32 5d 29 3b 00 00 00 00 00 00 00 2d 20 20 69 66 20 28 61 72 67 63 20 | ent(argv[2]);.......-..if.(argc. |
| 1b00 | 3e 20 31 20 26 26 20 21 73 74 72 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 72 65 6c 6f 61 64 22 | >.1.&&.!strcmp(argv[1],."reload" |
| 1b20 | 29 29 00 00 00 1c 20 20 20 20 72 65 74 75 72 6e 20 63 6c 69 65 6e 74 28 22 72 65 6c 6f 61 64 22 | ))........return.client("reload" |
| 1b40 | 29 3b 00 00 00 00 00 00 00 2e 20 20 69 66 20 28 61 72 67 63 20 3e 20 31 20 26 26 20 21 73 74 72 | );..........if.(argc.>.1.&&.!str |
| 1b60 | 63 6d 70 28 61 72 67 76 5b 31 5d 2c 20 22 72 65 73 74 61 72 74 22 29 29 00 00 00 1d 20 20 20 20 | cmp(argv[1],."restart"))........ |
| 1b80 | 72 65 74 75 72 6e 20 63 6c 69 65 6e 74 28 22 72 65 73 74 61 72 74 22 29 3b 00 00 00 00 00 00 00 | return.client("restart");....... |
| 1ba0 | 16 20 20 73 74 72 75 63 74 20 73 69 67 61 63 74 69 6f 6e 20 73 61 3b 00 00 00 1d 20 20 6d 65 6d | ...struct.sigaction.sa;......mem |
| 1bc0 | 73 65 74 28 26 73 61 2c 20 30 2c 20 73 69 7a 65 6f 66 28 73 61 29 29 3b 00 00 00 20 20 20 73 61 | set(&sa,.0,.sizeof(sa));......sa |
| 1be0 | 2e 73 61 5f 68 61 6e 64 6c 65 72 20 3d 20 68 61 6e 64 6c 65 5f 73 69 67 6e 61 6c 3b 00 00 00 1f | .sa_handler.=.handle_signal;.... |
| 1c00 | 20 20 73 69 67 61 63 74 69 6f 6e 28 53 49 47 49 4e 54 2c 20 26 73 61 2c 20 4e 55 4c 4c 29 3b 00 | ..sigaction(SIGINT,.&sa,.NULL);. |
| 1c20 | 00 00 20 20 20 73 69 67 61 63 74 69 6f 6e 28 53 49 47 54 45 52 4d 2c 20 26 73 61 2c 20 4e 55 4c | .....sigaction(SIGTERM,.&sa,.NUL |
| 1c40 | 4c 29 3b 00 00 00 20 20 20 73 69 67 61 63 74 69 6f 6e 28 53 49 47 55 53 52 31 2c 20 26 73 61 2c | L);......sigaction(SIGUSR1,.&sa, |
| 1c60 | 20 4e 55 4c 4c 29 3b 00 00 00 20 20 20 73 69 67 61 63 74 69 6f 6e 28 53 49 47 55 53 52 32 2c 20 | .NULL);......sigaction(SIGUSR2,. |
| 1c80 | 26 73 61 2c 20 4e 55 4c 4c 29 3b 00 00 00 00 00 00 00 21 20 20 63 6f 6e 6e 20 3d 20 78 63 62 5f | &sa,.NULL);.......!..conn.=.xcb_ |
| 1ca0 | 63 6f 6e 6e 65 63 74 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b 00 00 00 42 20 20 72 6f 6f 74 20 3d | connect(NULL,.NULL);...B..root.= |
| 1cc0 | 20 78 63 62 5f 73 65 74 75 70 5f 72 6f 6f 74 73 5f 69 74 65 72 61 74 6f 72 28 78 63 62 5f 67 65 | .xcb_setup_roots_iterator(xcb_ge |
| 1ce0 | 74 5f 73 65 74 75 70 28 63 6f 6e 6e 29 29 2e 64 61 74 61 2d 3e 72 6f 6f 74 3b 00 00 00 00 00 00 | t_setup(conn)).data->root;...... |
| 1d00 | 00 0c 20 20 67 65 74 5f 63 66 67 28 29 3b 00 00 00 00 00 00 00 1b 20 20 69 6e 74 20 73 65 72 76 | ....get_cfg();..........int.serv |
| 1d20 | 20 3d 20 6d 61 6b 65 5f 73 6f 63 6b 65 74 28 29 3b 00 00 00 2a 20 20 69 6e 74 20 78 66 64 20 3d | .=.make_socket();...*..int.xfd.= |
| 1d40 | 20 78 63 62 5f 67 65 74 5f 66 69 6c 65 5f 64 65 73 63 72 69 70 74 6f 72 28 63 6f 6e 6e 29 3b 00 | .xcb_get_file_descriptor(conn);. |
| 1d60 | 00 00 00 00 00 00 13 20 20 77 68 69 6c 65 20 28 21 67 5f 71 75 69 74 29 20 7b 00 00 00 13 20 20 | .........while.(!g_quit).{...... |
| 1d80 | 20 20 69 66 20 28 67 5f 72 65 6c 6f 61 64 29 20 7b 00 00 00 13 20 20 20 20 20 20 67 5f 72 65 6c | ..if.(g_reload).{..........g_rel |
| 1da0 | 6f 61 64 20 3d 20 30 3b 00 00 00 13 20 20 20 20 20 20 75 6e 67 72 61 62 5f 61 6c 6c 28 29 3b 00 | oad.=.0;..........ungrab_all();. |
| 1dc0 | 00 00 15 20 20 20 20 20 20 62 69 6e 64 5f 63 6f 75 6e 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 | .........bind_count.=.0;........ |
| 1de0 | 7d 00 00 00 00 00 00 00 14 20 20 20 20 69 66 20 28 67 5f 72 65 73 74 61 72 74 29 20 7b 00 00 00 | }............if.(g_restart).{... |
| 1e00 | 1c 20 20 20 20 20 20 65 78 65 63 76 70 28 61 72 67 76 5b 30 5d 2c 20 61 72 67 76 29 3b 00 00 00 | .......execvp(argv[0],.argv);... |
| 1e20 | 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 0f 20 20 | .......break;........}.......... |
| 1e40 | 20 20 66 64 5f 73 65 74 20 66 64 73 3b 00 00 00 12 20 20 20 20 46 44 5f 5a 45 52 4f 28 26 66 64 | ..fd_set.fds;........FD_ZERO(&fd |
| 1e60 | 73 29 3b 00 00 00 16 20 20 20 20 46 44 5f 53 45 54 28 78 66 64 2c 20 26 66 64 73 29 3b 00 00 00 | s);........FD_SET(xfd,.&fds);... |
| 1e80 | 17 20 20 20 20 46 44 5f 53 45 54 28 73 65 72 76 2c 20 26 66 64 73 29 3b 00 00 00 00 00 00 00 44 | .....FD_SET(serv,.&fds);.......D |
| 1ea0 | 20 20 20 20 73 65 6c 65 63 74 28 78 66 64 20 3e 20 73 65 72 76 20 3f 20 78 66 64 20 2b 20 31 20 | ....select(xfd.>.serv.?.xfd.+.1. |
| 1ec0 | 3a 20 73 65 72 76 20 2b 20 31 2c 20 26 66 64 73 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 | :.serv.+.1,.&fds,.NULL,.NULL,.NU |
| 1ee0 | 4c 4c 29 3b 00 00 00 00 00 00 00 1f 20 20 20 20 69 66 20 28 46 44 5f 49 53 53 45 54 28 73 65 72 | LL);............if.(FD_ISSET(ser |
| 1f00 | 76 2c 20 26 66 64 73 29 29 20 7b 00 00 00 27 20 20 20 20 20 20 69 6e 74 20 63 20 3d 20 61 63 63 | v,.&fds)).{...'......int.c.=.acc |
| 1f20 | 65 70 74 28 73 65 72 76 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b 00 00 00 15 20 20 20 20 20 20 | ept(serv,.NULL,.NULL);.......... |
| 1f40 | 63 68 61 72 20 62 75 66 5b 32 30 34 38 5d 3b 00 00 00 2c 20 20 20 20 20 20 69 6e 74 20 72 20 3d | char.buf[2048];...,......int.r.= |
| 1f60 | 20 72 65 61 64 28 63 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 20 2d 20 31 29 3b 00 | .read(c,.buf,.sizeof(buf).-.1);. |
| 1f80 | 00 00 12 20 20 20 20 20 20 69 66 20 28 72 20 3e 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 | .........if.(r.>.0).{........... |
| 1fa0 | 20 62 75 66 5b 72 5d 20 3d 20 30 3b 00 00 00 19 20 20 20 20 20 20 20 20 61 64 64 5f 62 69 6e 64 | .buf[r].=.0;............add_bind |
| 1fc0 | 69 6e 67 28 62 75 66 29 3b 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 0f 20 20 20 20 20 20 63 6c | ing(buf);..........}..........cl |
| 1fe0 | 6f 73 65 28 63 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 1e 20 20 20 20 69 66 20 28 | ose(c);........}............if.( |
| 2000 | 46 44 5f 49 53 53 45 54 28 78 66 64 2c 20 26 66 64 73 29 29 20 7b 00 00 00 1e 20 20 20 20 20 20 | FD_ISSET(xfd,.&fds)).{.......... |
| 2020 | 78 63 62 5f 67 65 6e 65 72 69 63 5f 65 76 65 6e 74 5f 74 20 2a 65 76 3b 00 00 00 2f 20 20 20 20 | xcb_generic_event_t.*ev;.../.... |
| 2040 | 20 20 77 68 69 6c 65 20 28 28 65 76 20 3d 20 78 63 62 5f 70 6f 6c 6c 5f 66 6f 72 5f 65 76 65 6e | ..while.((ev.=.xcb_poll_for_even |
| 2060 | 74 28 63 6f 6e 6e 29 29 29 20 7b 00 00 00 3a 20 20 20 20 20 20 20 20 69 66 20 28 28 65 76 2d 3e | t(conn))).{...:........if.((ev-> |
| 2080 | 72 65 73 70 6f 6e 73 65 5f 74 79 70 65 20 26 20 30 78 37 66 29 20 3d 3d 20 58 43 42 5f 4b 45 59 | response_type.&.0x7f).==.XCB_KEY |
| 20a0 | 5f 50 52 45 53 53 29 20 7b 00 00 00 42 20 20 20 20 20 20 20 20 20 20 78 63 62 5f 6b 65 79 5f 70 | _PRESS).{...B..........xcb_key_p |
| 20c0 | 72 65 73 73 5f 65 76 65 6e 74 5f 74 20 2a 6b 70 20 3d 20 28 78 63 62 5f 6b 65 79 5f 70 72 65 73 | ress_event_t.*kp.=.(xcb_key_pres |
| 20e0 | 73 5f 65 76 65 6e 74 5f 74 20 2a 29 65 76 3b 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 75 69 6e | s_event_t.*)ev;.../..........uin |
| 2100 | 74 31 36 5f 74 20 73 74 20 3d 20 6b 70 2d 3e 73 74 61 74 65 20 26 20 43 4c 45 41 4e 5f 4d 41 53 | t16_t.st.=.kp->state.&.CLEAN_MAS |
| 2120 | 4b 3b 00 00 00 00 00 00 00 30 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 20 3d | K;.......0..........for.(int.i.= |
| 2140 | 20 30 3b 20 69 20 3c 20 62 69 6e 64 5f 63 6f 75 6e 74 3b 20 69 2b 2b 29 20 7b 00 00 00 34 20 20 | .0;.i.<.bind_count;.i++).{...4.. |
| 2160 | 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 69 6e 64 69 6e 67 73 5b 69 5d 2e 6b 65 79 63 6f 64 | ..........if.(bindings[i].keycod |
| 2180 | 65 20 3d 3d 20 6b 70 2d 3e 64 65 74 61 69 6c 20 26 26 00 00 00 28 20 20 20 20 20 20 20 20 20 20 | e.==.kp->detail.&&...(.......... |
| 21a0 | 20 20 20 20 20 20 62 69 6e 64 69 6e 67 73 5b 69 5d 2e 6d 6f 64 20 3d 3d 20 73 74 29 20 7b 00 00 | ......bindings[i].mod.==.st).{.. |
| 21c0 | 00 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 61 77 6e 28 62 69 6e 64 69 6e 67 73 5b 69 | .%..............spawn(bindings[i |
| 21e0 | 5d 2e 63 6d 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 | ].cmd);..................break;. |
| 2200 | 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0b 20 20 20 20 20 20 20 20 20 20 7d 00 | ...............}..............}. |
| 2220 | 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 11 20 20 20 20 20 20 20 20 66 72 65 65 28 65 76 29 | ...........}............free(ev) |
| 2240 | 3b 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 00 | ;..........}........}......}.... |
| 2260 | 00 00 00 0f 20 20 75 6e 67 72 61 62 5f 61 6c 6c 28 29 3b 00 00 00 17 20 20 78 63 62 5f 64 69 73 | ......ungrab_all();......xcb_dis |
| 2280 | 63 6f 6e 6e 65 63 74 28 63 6f 6e 6e 29 3b 00 00 00 0e 20 20 63 6c 6f 73 65 28 73 65 72 76 29 3b | connect(conn);......close(serv); |
| 22a0 | 00 00 00 0b 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 | ......return.0;....}5........... |
| 22c0 | 00 00 00 00 47 01 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dc 1c 00 00 | ....G........................... |
| 22e0 | 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 | ............5._................. |
| 2300 | 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 23e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 | ................................ |
| 2460 | 00 00 00 00 00 00 00 00 00 56 00 00 00 00 00 00 00 00 6a 0a fc 2d 04 01 00 00 00 02 00 f5 18 00 | .........V........j..-.......... |
| 2480 | 00 01 d2 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 01 d3 00 00 00 00 00 00 00 | ................................ |
| 24a0 | 00 00 00 00 00 f5 18 00 00 01 39 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 39 20 20 20 20 73 | ..........9...............9....s |
| 24c0 | 74 72 6e 63 70 79 28 61 64 64 72 2e 73 75 6e 5f 70 61 74 68 2c 20 53 4f 43 4b 5f 50 41 54 48 2c | trncpy(addr.sun_path,.SOCK_PATH, |
| 24e0 | 20 73 69 7a 65 6f 66 28 61 64 64 72 2e 73 75 6e 5f 70 61 74 f5 18 00 00 01 3a 00 00 00 00 00 00 | .sizeof(addr.sun_pat.....:...... |
| 2500 | 00 00 00 00 00 00 f5 18 00 00 00 9c 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 03 20 20 20 f5 | ................................ |
| 2520 | 18 00 00 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2540 | 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 | .........................5...... |
| 2560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9c 00 00 00 03 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2580 | 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 9c 00 00 00 03 00 00 00 00 | ................................ |
| 25a0 | 00 00 00 00 00 00 00 9d 00 00 00 39 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff | ...........9.................... |
| 25c0 | 0f 00 00 00 00 00 00 f5 18 00 00 00 00 39 01 00 00 39 00 00 00 00 00 00 00 00 00 00 00 99 00 00 | .............9...9.............. |
| 25e0 | 00 00 00 00 00 f8 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 | ................................ |
| 2600 | 00 00 00 d2 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 01 00 00 00 f7 2f 00 00 00 | ............................/... |
| 2620 | 00 00 00 00 00 00 00 00 00 00 00 31 03 00 00 00 00 00 00 35 81 e7 aa | ...........1.......5... |