summaryrefslogtreecommitdiff
path: root/config/nvim-2/nvim/undodir/%home%coast%piss%src%daemon.c
blob: 990c7c18b93cf9bd045fc35b5c39803a85aadc51 (plain)
ofshex dumpascii
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...