summaryrefslogtreecommitdiff
path: root/config/nvim-2/nvim/undodir/%home%coast%projects%c%cterm%cterm.c
blob: 7d07740d4badb10ef0713b05fdc548f1926b5057 (plain)
ofshex dumpascii
0000 56 69 6d 9f 55 6e 44 6f e5 00 03 a4 5a cf eb 1e e9 5d a6 ed 10 b0 31 f2 45 ff 92 13 ff a7 55 c7 Vim.UnDo....Z....]....1.E.....U.
0020 19 41 f4 14 c1 49 02 95 fc 71 38 00 00 02 02 00 00 00 0c 20 20 20 20 2e 67 6c 6f 62 61 6c 5f 00 .A...I...q8.............global_.
0040 00 01 88 00 00 00 0c 00 00 00 01 00 00 00 12 00 00 00 00 00 00 00 12 00 00 00 12 00 00 00 12 00 ................................
0060 00 00 00 6a 01 12 d2 04 01 00 00 00 10 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 ...j.........._.................
0080 00 00 00 01 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 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 0b be 04 01 00 00 00 01 00 f5 18 00 ..................j.............
0200 00 01 df 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 27 20 20 20 20 74 63 67 65 74 61 74 74 72 ..................'....tcgetattr
0220 28 70 74 79 5f 73 6c 61 76 65 2c 20 26 6f 72 69 67 69 6e 61 6c 5f 74 65 72 6d f5 18 00 00 01 e0 (pty_slave,.&original_term......
0240 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 52 00 00 00 00 00 00 00 00 00 00 00 01 00 00 .................R..............
0260 00 0d 20 20 20 20 63 6c 6f 73 65 28 66 64 29 f5 18 00 00 01 53 00 00 00 00 00 00 00 00 00 00 00 ......close(fd).....S...........
0280 00 f5 18 00 00 00 b1 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0d 20 20 20 20 20 20 20 20 72 ...............................r
02a0 65 74 75 72 f5 18 00 00 00 b2 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 56 00 00 00 00 etur.......................V....
02c0 00 00 00 00 00 00 00 01 00 00 00 49 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ...........I....0x00,0x00,0x00,0
02e0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
0300 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 f5 18 00 00 00 57 00 00 00 00 00 0,0x00,0x00,0x00,0x00.....W.....
0320 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 ................................
0340 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............5................
0360 00 00 00 00 00 00 00 56 00 00 00 49 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 .......V...I....................
0380 0f 00 00 00 00 00 00 f5 18 00 00 00 00 56 00 00 00 49 00 00 00 00 00 00 00 00 00 00 00 5b 00 00 .............V...I...........[..
03a0 00 0d 00 00 00 f9 0f 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 ................................
03c0 00 00 00 b1 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 a1 00 00 00 0d 00 00 00 f8 1f 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 f5 18 00 00 00 00 52 01 00 00 0d 00 00 .........................R......
0400 00 00 00 00 00 00 00 00 00 8d 00 00 00 27 00 00 00 f8 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 .............'..../.............
0420 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 df 01 00 00 27 00 00 00 00 00 00 00 00 00 00 00 98 ...................'............
0440 00 00 00 01 00 00 00 f7 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3b 0f 00 00 00 00 00 00 35 ........?..............;.......5
0460 81 5f d0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 ._..............................
0480 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 00 ................................
04a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 56 00 00 00 ............................V...
05e0 00 00 00 00 00 6a 01 0b e9 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 01 00 00 00 00 00 00 .....j..........................
0600 00 0e 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 ......#define._POSIX_C_SOURCE.20
0620 30 38 30 39 4c 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 0809L....#include.<stdio.h>....#
0640 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c include.<stdlib.h>....#include.<
0660 73 74 72 69 6e 67 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 string.h>....#include.<unistd.h>
0680 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e ....#include.<sys/mman.h>....#in
06a0 63 6c 75 64 65 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 clude.<sys/ioctl.h>....#include.
06c0 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e <sys/wait.h>....#include.<fcntl.
06e0 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 h>....#include.<errno.h>....#inc
0700 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 lude.<signal.h>....#include.<ter
0720 6d 69 6f 73 2e 68 3e 00 00 00 1b 23 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 mios.h>....#include.<wayland-cli
0740 65 6e 74 2e 68 3e 00 00 00 26 23 69 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c ent.h>...&#include."xdg-shell-cl
0760 69 65 6e 74 2d 70 72 6f 74 6f 63 6f 6c 2e 68 22 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 ient-protocol.h"5...............
0780 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 44 01 00 00 00 00 00 00 ........................D.......
07a0 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 03 ........5._.....................
07c0 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 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 00 00 00 00 ................................
0920 00 00 00 00 00 56 00 00 00 00 00 00 00 00 6a 01 0b ea 04 01 00 00 00 02 00 f5 18 00 00 00 0e 00 .....V........j.................
0940 00 00 11 00 00 02 78 00 00 00 01 00 00 00 26 23 69 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 ......x.......&#include."xdg-she
0960 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f 6c 2e 68 22 f5 18 00 00 00 00 00 00 00 10 00 ll-client-protocol.h"...........
0980 00 02 6a 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 02 00 00 02 6a 00 00 00 00 35 81 f5 ..j.....................j....5..
09a0 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 26 00 00 00 00 00 00 .........................&......
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 f5 18 00 00 00 00 0e 00 00 00 26 .............Y.................&
09e0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 00 00 00 00 00 ...................Y............
0a00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 ...........5._..................
0a20 00 00 04 00 00 00 01 00 00 00 1e 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 ................................
0a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 0c e0 04 01 00 00 00 00 00 f5 18 00 00 .................j..............
0ba0 00 00 00 00 00 02 00 00 00 00 00 00 02 79 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 .............y....#define._POSIX
0bc0 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 _C_SOURCE.200809L....#include.<s
0be0 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 00 00 tdio.h>....#include.<stdlib.h>..
0c00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 ..#include.<string.h>....#includ
0c20 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d e.<unistd.h>....#include.<sys/mm
0c40 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 an.h>....#include.<sys/ioctl.h>.
0c60 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 15 23 69 6e 63 ...#include.<sys/wait.h>....#inc
0c80 6c 75 64 65 20 3c 73 79 73 2f 73 74 61 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 lude.<sys/stat.h>....#include.<f
0ca0 63 6e 74 6c 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 cntl.h>....#include.<errno.h>...
0cc0 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 .#include.<signal.h>....#include
0ce0 20 3c 74 65 72 6d 69 6f 73 2e 68 3e 00 00 00 1b 23 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e .<termios.h>....#include.<waylan
0d00 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 26 23 69 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 d-client.h>...&#include."xdg-she
0d20 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 ll-client-protocol.h"......."str
0d40 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 20 2a 64 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 uct.wl_display.*display.=.NULL;.
0d60 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 ..(struct.wl_compositor.*composi
0d80 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 tor.=.NULL;..."struct.wl_surface
0da0 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 .*surface.=.NULL;....struct.wl_s
0dc0 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c 3b 00 00 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 hm.*shm.=.NULL;....struct.wl_sea
0de0 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 t.*seat.=.NULL;...$struct.wl_key
0e00 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 board.*keyboard.=.NULL;...#struc
0e20 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 77 6d 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 t.xdg_wm_base.*wm_base.=.NULL;..
0e40 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 .'struct.xdg_surface.*xdg_surfac
0e60 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c e.=.NULL;...%struct.xdg_toplevel
0e80 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e 55 4c 4c 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f .*toplevel.=.NULL;...*struct.wl_
0ea0 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b callback.*frame_callback.=.NULL;
0ec0 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 69 6e 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 ........static.int.running.=.1;.
0ee0 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 38 30 30 ...static.int.window_width.=.800
0f00 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 ;....static.int.window_height.=.
0f20 36 30 30 3b 00 00 00 1d 73 74 61 74 69 63 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 600;....static.int.pending_width
0f40 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 .=.0;....static.int.pending_heig
0f60 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 ht.=.0;....static.int.needs_resi
0f80 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 ze.=.0;...(static.unsigned.char.
0fa0 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 *pixel_data.=.NULL;....static.st
0fc0 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 ruct.wl_buffer.*window_buffer.=.
0fe0 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 NULL;........static.int.pty_mast
1000 65 72 20 3d 20 2d 31 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 70 74 79 5f 73 6c 61 76 65 er.=.-1;....static.int.pty_slave
1020 20 3d 20 2d 31 3b 00 00 00 1c 73 74 61 74 69 63 20 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 .=.-1;....static.pid_t.shell_pid
1040 20 3d 20 2d 31 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 72 6f 77 73 20 3d 20 32 34 3b 00 .=.-1;....static.int.rows.=.24;.
1060 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6c 73 20 3d 20 38 30 3b 00 00 00 1a 73 74 61 74 ...static.int.cols.=.80;....stat
1080 69 63 20 69 6e 74 20 63 68 61 72 5f 77 69 64 74 68 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 ic.int.char_width.=.8;....static
10a0 20 69 6e 74 20 63 68 61 72 5f 68 65 69 67 68 74 20 3d 20 31 36 3b 00 00 00 00 00 00 00 27 73 74 .int.char_height.=.16;.......'st
10c0 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 66 6f 6e 74 5f 64 61 74 61 20 3d 20 atic.unsigned.char.*font_data.=.
10e0 4e 55 4c 4c 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 66 6f 6e 74 5f 77 69 64 74 68 20 3d NULL;....static.int.font_width.=
1100 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 66 6f 6e 74 5f 68 65 69 67 68 74 20 3d 20 .8;....static.int.font_height.=.
1120 31 36 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 66 6f 6e 74 5f 73 69 7a 65 20 3d 20 34 30 16;....static.int.font_size.=.40
1140 39 36 3b 00 00 00 00 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 78 20 3d 96;........static.int.cursor_x.=
1160 20 30 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 .0;....static.int.cursor_y.=.0;.
1180 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 62 6c 69 6e 6b 20 3d 20 30 3b 00 ...static.int.cursor_blink.=.0;.
11a0 00 00 24 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 75 72 73 6f 72 5f 74 69 ..$static.unsigned.int.cursor_ti
11c0 6d 65 20 3d 20 30 3b 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 73 74 72 75 63 74 20 74 65 72 me.=.0;.......'static.struct.ter
11e0 6d 69 6f 73 20 6f 72 69 67 69 6e 61 6c 5f 74 65 72 6d 69 6f 73 3b 00 00 00 00 00 00 00 2b 73 74 mios.original_termios;.......+st
1200 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 62 75 69 6c 74 69 6e 5f 66 6f 6e 74 5b atic.unsigned.char.builtin_font[
1220 34 30 39 36 5d 20 3d 20 7b 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 4096].=.{...T....0x00,0x00,0x00,
1240 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1260 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1280 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
12a0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
12c0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
12e0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1300 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1320 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1340 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1360 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1380 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
13a0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
13c0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
13e0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1400 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1420 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1440 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1460 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1480 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
14a0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
14c0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
14e0 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1500 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1520 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1540 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1560 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1580 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
15a0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
15c0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
15e0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1600 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1620 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1640 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1660 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1680 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
16a0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
16c0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
16e0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1700 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1720 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1740 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1760 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1780 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
17a0 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
17c0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
17e0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1800 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1820 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1840 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1860 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1880 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
18a0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
18c0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
18e0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1900 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1920 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1940 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1960 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1980 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
19a0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
19c0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
19e0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1a00 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1a20 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1a40 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1a60 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1a80 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1aa0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1ac0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1ae0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1b00 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1b20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1b40 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1b60 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1b80 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1ba0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1bc0 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1be0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1c00 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1c20 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1c40 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1c60 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1c80 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1ca0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1cc0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1ce0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1d00 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1d20 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1d40 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1d60 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1d80 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1da0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1dc0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1de0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1e00 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1e20 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1e40 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1e60 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1e80 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
1ea0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
1ec0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1ee0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
1f00 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
1f20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
1f40 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
1f60 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
1f80 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
1fa0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
1fc0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
1fe0 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
2000 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
2020 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2040 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
2060 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
2080 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
20a0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
20c0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
20e0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
2100 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2120 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
2140 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
2160 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
2180 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
21a0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
21c0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
21e0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
2200 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
2220 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
2240 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
2260 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2280 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
22a0 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
22c0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
22e0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2300 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
2320 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
2340 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
2360 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
2380 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
23a0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
23c0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
23e0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
2400 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
2420 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
2440 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2460 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
2480 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
24a0 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
24c0 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
24e0 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
2500 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...T....0x00,0x
2520 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
2540 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
2560 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c x00,0x00,...T....0x00,0x00,0x00,
2580 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 0x00,0x00,0x00,0x00,0x00,0x00,0x
25a0 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
25c0 2c 00 00 00 54 20 20 20 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 ,...T....0x00,0x00,0x00,0x00,0x0
25e0 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 0,0x00,0x00,0x00,0x00,0x00,0x00,
2600 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 54 20 20 20 0x00,0x00,0x00,0x00,0x00,...T...
2620 20 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 .0x00,0x00,0x00,0x00,0x00,0x00,0
2640 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 x00,0x00,0x00,0x00,0x00,0x00,0x0
2660 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 00 00 00 53 20 20 20 20 30 78 30 30 2c 30 78 0,0x00,0x00,0x00,...S....0x00,0x
2680 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 00,0x00,0x00,0x00,0x00,0x00,0x00
26a0 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 78 30 30 2c 30 ,0x00,0x00,0x00,0x00,0x00,0x00,0
26c0 78 30 30 2c 30 78 30 30 00 00 00 02 7d 3b 00 00 00 00 00 00 00 4c 73 74 61 74 69 63 20 76 6f 69 x00,0x00....};.......Lstatic.voi
26e0 64 20 64 72 61 77 5f 63 68 61 72 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c d.draw_char(unsigned.char.*data,
2700 20 69 6e 74 20 70 69 74 63 68 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 63 68 61 72 20 63 .int.pitch,.int.x,.int.y,.char.c
2720 68 29 00 00 00 01 7b 00 00 00 14 20 20 20 20 69 6e 74 20 63 78 2c 20 63 79 2c 20 62 69 74 3b 00 h)....{........int.cx,.cy,.bit;.
2740 00 00 19 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 67 6c 79 70 68 3b 00 00 00 04 .......unsigned.char.*glyph;....
2760 20 20 20 20 00 00 00 1e 20 20 20 20 69 66 20 28 63 68 20 3c 20 33 32 20 7c 7c 20 63 68 20 3e 20 ............if.(ch.<.32.||.ch.>.
2780 31 32 36 29 20 7b 00 00 00 10 20 20 20 20 20 20 20 20 63 68 20 3d 20 33 32 3b 00 00 00 05 20 20 126).{............ch.=.32;......
27a0 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 32 20 20 20 20 67 6c 79 70 68 20 3d 20 66 6f 6e 74 5f ..}...........2....glyph.=.font_
27c0 64 61 74 61 20 2b 20 28 28 63 68 20 2d 20 33 32 29 20 2a 20 66 6f 6e 74 5f 68 65 69 67 68 74 29 data.+.((ch.-.32).*.font_height)
27e0 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 20 66 6f 72 20 28 63 79 20 3d 20 30 3b 20 63 79 ;...........*....for.(cy.=.0;.cy
2800 20 3c 20 66 6f 6e 74 5f 68 65 69 67 68 74 3b 20 63 79 2b 2b 29 20 7b 00 00 00 2d 20 20 20 20 20 .<.font_height;.cy++).{...-.....
2820 20 20 20 66 6f 72 20 28 63 78 20 3d 20 30 3b 20 63 78 20 3c 20 66 6f 6e 74 5f 77 69 64 74 68 3b ...for.(cx.=.0;.cx.<.font_width;
2840 20 63 78 2b 2b 29 20 7b 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 62 69 74 20 3d 20 28 67 .cx++).{...;............bit.=.(g
2860 6c 79 70 68 5b 63 79 5d 20 3e 3e 20 28 66 6f 6e 74 5f 77 69 64 74 68 20 2d 20 31 20 2d 20 63 78 lyph[cy].>>.(font_width.-.1.-.cx
2880 29 29 20 26 20 31 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 69 74 29 20 )).&.1;................if.(bit).
28a0 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 78 20 3d 20 78 20 {....................int.px.=.x.
28c0 2b 20 63 78 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 79 20 +.cx;....................int.py.
28e0 3d 20 79 20 2b 20 63 79 3b 00 00 00 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 =.y.+.cy;...T................if.
2900 28 70 78 20 3e 3d 20 30 20 26 26 20 70 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 (px.>=.0.&&.px.<.window_width.&&
2920 20 70 79 20 3e 3d 20 30 20 26 26 20 70 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 20 .py.>=.0.&&.py.<.window_height).
2940 7b 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 {...4....................int.idx
2960 20 3d 20 28 70 79 20 2a 20 70 69 74 63 68 20 2b 20 70 78 29 20 2a 20 34 3b 00 00 00 28 20 20 20 .=.(py.*.pitch.+.px).*.4;...(...
2980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d .................data[idx.+.0].=
29a0 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 .255;...(....................dat
29c0 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 a[idx.+.1].=.255;...(...........
29e0 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 .........data[idx.+.2].=.255;...
2a00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 (....................data[idx.+.
2a20 33 5d 20 3d 20 32 35 35 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 3].=.255;....................}..
2a40 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 ..............}............}....
2a60 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 43 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 ....}....}.......Cstatic.void.dr
2a80 61 77 5f 73 63 72 65 65 6e 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 aw_screen(unsigned.char.*data,.i
2aa0 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 1c 20 20 nt.width,.int.height)....{......
2ac0 20 20 69 6e 74 20 78 2c 20 79 2c 20 70 69 74 63 68 20 3d 20 77 69 64 74 68 3b 00 00 00 04 20 20 ..int.x,.y,.pitch.=.width;......
2ae0 20 20 00 00 00 22 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 68 65 69 67 68 74 ....."....for.(y.=.0;.y.<.height
2b00 3b 20 79 2b 2b 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 ;.y++).{...%........for.(x.=.0;.
2b20 78 20 3c 20 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 x.<.width;.x++).{...*...........
2b40 20 69 6e 74 20 69 64 78 20 3d 20 28 79 20 2a 20 70 69 74 63 68 20 2b 20 78 29 20 2a 20 34 3b 00 .int.idx.=.(y.*.pitch.+.x).*.4;.
2b60 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 ...............data[idx.+.0].=.0
2b80 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d ;................data[idx.+.1].=
2ba0 20 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d .0;................data[idx.+.2]
2bc0 20 3d 20 33 32 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b .=.32;................data[idx.+
2be0 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d .3].=.255;............}........}
2c00 00 00 00 04 20 20 20 20 00 00 00 20 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 ................for.(y.=.0;.y.<.
2c20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d rows;.y++).{...$........for.(x.=
2c40 20 30 3b 20 78 20 3c 20 63 6f 6c 73 3b 20 78 2b 2b 29 20 7b 00 00 00 49 20 20 20 20 20 20 20 20 .0;.x.<.cols;.x++).{...I........
2c60 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 64 61 74 61 2c 20 70 69 74 63 68 2c 20 78 20 2a 20 63 ....draw_char(data,.pitch,.x.*.c
2c80 68 61 72 5f 77 69 64 74 68 2c 20 79 20 2a 20 63 68 61 72 5f 68 65 69 67 68 74 2c 20 27 20 27 29 har_width,.y.*.char_height,.'.')
2ca0 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 ;............}........}.........
2cc0 00 00 4f 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 64 61 74 61 2c 20 70 69 74 63 68 2c 20 63 75 ..O....draw_char(data,.pitch,.cu
2ce0 72 73 6f 72 5f 78 20 2a 20 63 68 61 72 5f 77 69 64 74 68 2c 20 63 75 72 73 6f 72 5f 79 20 2a 20 rsor_x.*.char_width,.cursor_y.*.
2d00 63 68 61 72 5f 68 65 69 67 68 74 2c 20 27 5f 27 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 27 73 char_height,.'_');....}.......'s
2d20 74 61 74 69 63 20 69 6e 74 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 5f 74 tatic.int.create_shm_file(size_t
2d40 20 73 69 7a 65 29 00 00 00 01 7b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b 20 20 .size)....{........int.fd;...+..
2d60 20 20 63 68 61 72 20 74 65 6d 70 6c 61 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 68 6d ..char.template[].=."/tmp/wl-shm
2d80 2d 58 58 58 58 58 58 22 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b -XXXXXX";................fd.=.mk
2da0 73 74 65 6d 70 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c stemp(template);........if.(fd.<
2dc0 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 .0).{............return.-1;.....
2de0 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 ...}...........)....if.(ftruncat
2e00 65 28 66 64 2c 20 28 6f 66 66 5f 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 e(fd,.(off_t)size).<.0).{.......
2e20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 75 6e 6c 69 6e .....close(fd);............unlin
2e40 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d k(template);............return.-
2e60 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 75 6e 6c 69 6e 1;........}................unlin
2e80 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 k(template);........return.fd;..
2ea0 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 ..}.......=static.struct.wl_buff
2ec0 65 72 20 2a 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 er.*create_buffer(int.width,.int
2ee0 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 .height)....{........int.stride.
2f00 3d 20 77 69 64 74 68 20 2a 20 34 3b 00 00 00 1f 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 73 =.width.*.4;........int.size.=.s
2f20 74 72 69 64 65 20 2a 20 68 65 69 67 68 74 3b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 tride.*.height;........int.fd;..
2f40 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 3b 00 ......struct.wl_shm_pool.*pool;.
2f60 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 72 3b .......struct.wl_buffer.*buffer;
2f80 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f ................fd.=.create_shm_
2fa0 66 69 6c 65 28 73 69 7a 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 7b file(size);........if.(fd.<.0).{
2fc0 00 00 00 4c 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 ...L........fprintf(stderr,."fai
2fe0 6c 65 64 20 74 6f 20 63 72 65 61 74 65 20 73 68 6d 20 66 69 6c 65 3a 20 25 73 5c 6e 22 2c 20 73 led.to.create.shm.file:.%s\n",.s
3000 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 75 trerror(errno));............retu
3020 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 4d 20 20 20 rn.NULL;........}...........M...
3040 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 4c 4c 2c 20 73 69 7a 65 2c 20 50 .pixel_data.=.mmap(NULL,.size,.P
3060 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 2c 20 4d 41 50 5f 53 48 41 52 45 ROT_READ.|.PROT_WRITE,.MAP_SHARE
3080 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 61 74 61 D,.fd,.0);...#....if.(pixel_data
30a0 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 66 70 72 .==.MAP_FAILED).{...E........fpr
30c0 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 6d 6d 61 70 20 73 68 6d intf(stderr,."failed.to.mmap.shm
30e0 3a 20 25 73 5c 6e 22 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 12 20 20 :.%s\n",.strerror(errno));......
3100 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 75 ......close(fd);............retu
3120 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 2b 20 20 20 rn.NULL;........}...........+...
3140 20 64 72 61 77 5f 73 63 72 65 65 6e 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 64 74 68 2c 20 .draw_screen(pixel_data,.width,.
3160 68 65 69 67 68 74 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 70 6f 6f 6c 20 3d 20 77 height);...........-....pool.=.w
3180 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 66 64 2c 20 73 69 7a 65 29 l_shm_create_pool(shm,.fd,.size)
31a0 3b 00 00 00 46 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f 63 72 ;...F....buffer.=.wl_shm_pool_cr
31c0 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 77 69 64 74 68 2c 20 68 65 69 67 eate_buffer(pool,.0,.width,.heig
31e0 68 74 2c 20 73 74 72 69 64 65 2c 00 00 00 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ht,.stride,...?.................
3200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 4c 5f 53 48 4d 5f 46 4f 52 ......................WL_SHM_FOR
3220 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 6c 5f 73 68 6d 5f 70 6f 6f MAT_ARGB8888);........wl_shm_poo
3240 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 64 l_destroy(pool);........close(fd
3260 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 66 65 72 3b );................return.buffer;
3280 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 6f 79 ....}........static.void.destroy
32a0 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 77 69 _buffer(void)....{........if.(wi
32c0 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 77 6c 5f 62 75 66 ndow_buffer).{...)........wl_buf
32e0 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 3b 00 00 00 1d 20 fer_destroy(window_buffer);.....
3300 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 05 .......window_buffer.=.NULL;....
3320 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 ....}................if.(pixel_d
3340 61 74 61 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 28 70 69 78 65 6c 5f 64 ata).{...=........munmap(pixel_d
3360 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 ata,.window_width.*.window_heigh
3380 74 20 2a 20 34 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 t.*.4);............pixel_data.=.
33a0 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 74 69 NULL;........}....}.......0stati
33c0 63 20 76 6f 69 64 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 20 77 69 64 74 68 2c 20 c.void.resize_window(int.width,.
33e0 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 24 20 20 20 20 69 66 20 28 77 69 64 74 int.height)....{...$....if.(widt
3400 68 20 3c 3d 20 30 20 7c 7c 20 68 65 69 67 68 74 20 3c 3d 20 30 29 20 7b 00 00 00 0f 20 20 20 20 h.<=.0.||.height.<=.0).{........
3420 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1e ....return;........}............
3440 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 63 68 61 72 5f 77 69 64 74 68 3b 00 00 ....cols.=.width./.char_width;..
3460 00 20 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 63 68 61 72 5f 68 65 69 67 68 ......rows.=.height./.char_heigh
3480 74 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 31 29 20 t;................if.(cols.<.1).
34a0 63 6f 6c 73 20 3d 20 31 3b 00 00 00 1b 20 20 20 20 69 66 20 28 72 6f 77 73 20 3c 20 31 29 20 72 cols.=.1;........if.(rows.<.1).r
34c0 6f 77 73 20 3d 20 31 3b 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f ows.=.1;................destroy_
34e0 62 75 66 66 65 72 28 29 3b 00 00 00 19 20 20 20 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 buffer();........window_width.=.
3500 77 69 64 74 68 3b 00 00 00 1b 20 20 20 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 68 65 width;........window_height.=.he
3520 69 67 68 74 3b 00 00 00 3f 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 ight;...?....window_buffer.=.cre
3540 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f ate_buffer(window_width,.window_
3560 68 65 69 67 68 74 29 3b 00 00 00 15 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 height);........needs_resize.=.0
3580 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 ;................if.(pty_master.
35a0 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a >=.0).{............struct.winsiz
35c0 65 20 77 73 3b 00 00 00 19 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 e.ws;............ws.ws_row.=.row
35e0 73 3b 00 00 00 19 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c 73 3b 00 s;............ws.ws_col.=.cols;.
3600 00 00 1d 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 64 74 68 3b ...........ws.ws_xpixel.=.width;
3620 00 00 00 1e 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 68 65 69 67 68 ............ws.ws_ypixel.=.heigh
3640 74 3b 00 00 00 2b 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 t;...+........ioctl(pty_master,.
3660 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 TIOCSWINSZ,.&ws);........}....}.
3680 00 00 00 00 00 00 4f 73 74 61 74 69 63 20 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 76 6f ......Ostatic.void.frame_done(vo
36a0 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 63 61 id.*data,.struct.wl_callback.*ca
36c0 6c 6c 62 61 63 6b 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 13 20 llback,.uint32_t.time)....{.....
36e0 20 20 20 69 66 20 28 63 61 6c 6c 62 61 63 6b 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 77 6c ...if.(callback).{...&........wl
3700 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 _callback_destroy(callback);....
3720 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 17 20 20 20 20 69 66 20 28 6e 65 65 64 73 5f 72 ....}................if.(needs_r
3740 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 20 20 20 20 20 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f esize).{...5........resize_windo
3760 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 2c 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 29 w(pending_width,.pending_height)
3780 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 ;............pending_width.=.0;.
37a0 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 ...........pending_height.=.0;..
37c0 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 39 20 20 20 20 64 72 61 77 5f 73 63 72 65 ......}...........9....draw_scre
37e0 65 6e 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e en(pixel_data,.window_width,.win
3800 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 04 20 20 20 20 00 00 00 18 20 20 20 20 69 66 20 28 dow_height);................if.(
3820 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 77 6c 5f 73 window_buffer).{...8........wl_s
3840 75 72 66 61 63 65 5f 61 74 74 61 63 68 28 73 75 72 66 61 63 65 2c 20 77 69 6e 64 6f 77 5f 62 75 urface_attach(surface,.window_bu
3860 66 66 65 72 2c 20 30 2c 20 30 29 3b 00 00 00 46 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 ffer,.0,.0);...F........wl_surfa
3880 63 65 5f 64 61 6d 61 67 65 28 73 75 72 66 61 63 65 2c 20 30 2c 20 30 2c 20 77 69 6e 64 6f 77 5f ce_damage(surface,.0,.0,.window_
38a0 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 05 20 20 20 20 7d 00 width,.window_height);........}.
38c0 00 00 04 20 20 20 20 00 00 00 3f 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 ..........?....static.const.stru
38e0 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 6e 65 72 20 66 72 61 6d 65 5f 6c 69 ct.wl_callback_listener.frame_li
3900 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 2e 64 6f 6e 65 20 3d 20 66 72 stener.=.{.............done.=.fr
3920 61 6d 65 5f 64 6f 6e 65 00 00 00 06 20 20 20 20 7d 3b 00 00 00 04 20 20 20 20 00 00 00 2f 20 20 ame_done........};.........../..
3940 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 ..frame_callback.=.wl_surface_fr
3960 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 00 00 44 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b ame(surface);...D....wl_callback
3980 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c 20 26 66 _add_listener(frame_callback,.&f
39a0 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 1f 20 20 20 20 77 6c 5f rame_listener,.NULL);........wl_
39c0 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 01 7d 00 00 00 surface_commit(surface);....}...
39e0 00 00 00 00 5a 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e ....Zstatic.void.xdg_wm_base_pin
3a00 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 g(void.*data,.struct.xdg_wm_base
3a20 20 2a 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 .*xdg_wm_base,.uint32_t.serial).
3a40 00 00 01 7b 00 00 00 2a 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 6f 6e 67 28 78 64 67 ...{...*....xdg_wm_base_pong(xdg
3a60 5f 77 6d 5f 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 _wm_base,.serial);....}.......=s
3a80 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 6c tatic.const.struct.xdg_wm_base_l
3aa0 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1d istener.wm_base_listener.=.{....
3ac0 20 20 20 20 2e 70 69 6e 67 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 2c 00 00 00 .....ping.=.xdg_wm_base_ping,...
3ae0 02 7d 3b 00 00 00 00 00 00 00 51 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 .};.......Qstatic.void.xdg_tople
3b00 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 vel_configure(void.*data,.struct
3b20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 2c 00 00 00 51 .xdg_toplevel.*xdg_toplevel,...Q
3b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b60 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e 74 33 32 5f 74 20 68 2c 20 73 74 72 75 63 74 20 ...int32_t.w,.int32_t.h,.struct.
3b80 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 29 00 00 00 01 7b 00 00 00 19 20 20 20 20 69 66 wl_array.*states)....{........if
3ba0 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 .(w.>.0.&&.h.>.0).{............p
3bc0 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e ending_width.=.w;............pen
3be0 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b 00 00 00 19 20 20 20 20 20 20 20 20 6e 65 65 64 ding_height.=.h;............need
3c00 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 s_resize.=.1;........}....}.....
3c20 00 00 4d 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 ..Mstatic.void.xdg_toplevel_clos
3c40 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 e(void.*data,.struct.xdg_topleve
3c60 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 29 00 00 00 01 7b 00 00 00 1c 20 20 20 20 70 75 74 l.*xdg_toplevel)....{........put
3c80 73 28 22 74 65 72 6d 69 6e 61 6c 20 63 6c 6f 73 65 64 22 29 3b 00 00 00 10 20 20 20 20 72 75 6e s("terminal.closed");........run
3ca0 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3f 73 74 61 74 69 63 20 63 6f 6e ning.=.0;....}.......?static.con
3cc0 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 st.struct.xdg_toplevel_listener.
3ce0 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 28 20 20 20 20 2e 63 6f toplevel_listener.=.{...(.....co
3d00 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 nfigure.=.xdg_toplevel_configure
3d20 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 ,.........close.=.xdg_toplevel_c
3d40 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 5f 73 74 61 74 69 63 20 76 6f 69 64 20 78 lose,....};......._static.void.x
3d60 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c dg_surface_configure(void.*data,
3d80 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 .struct.xdg_surface.*xdg_surface
3da0 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 33 20 20 20 20 78 ,.uint32_t.serial)....{...3....x
3dc0 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 72 65 28 78 64 67 5f 73 75 72 dg_surface_ack_configure(xdg_sur
3de0 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 face,.serial);................if
3e00 20 28 21 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 .(!window_buffer).{...C........w
3e20 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e indow_buffer.=.create_buffer(win
3e40 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 dow_width,.window_height);..."..
3e60 20 20 20 20 20 20 66 72 61 6d 65 5f 64 6f 6e 65 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b ......frame_done(NULL,.NULL,.0);
3e80 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 41 73 74 61 74 69 63 20 63 6f 6e ........}....}.......Astatic.con
3ea0 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 st.struct.xdg_surface_listener.x
3ec0 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 27 20 20 20 20 2e dg_surface_listener.=.{...'.....
3ee0 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 configure.=.xdg_surface_configur
3f00 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 48 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 e,....};.......Hstatic.void.keyb
3f20 6f 61 72 64 5f 6b 65 79 6d 61 70 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 oard_keymap(void.*data,.struct.w
3f40 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 l_keyboard.*wl_keyboard,...G....
3f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 ........................uint32_t
3f80 20 66 6f 72 6d 61 74 2c 20 69 6e 74 33 32 5f 74 20 66 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 69 .format,.int32_t.fd,.uint32_t.si
3fa0 7a 65 29 00 00 00 01 7b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 01 7d 00 ze)....{........close(fd);....}.
3fc0 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 ......Gstatic.void.keyboard_ente
3fe0 72 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 r(void.*data,.struct.wl_keyboard
4000 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .*wl_keyboard,...G..............
4020 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 .............uint32_t.serial,.st
4040 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 2c 00 00 00 31 20 20 20 ruct.wl_surface.*surface,...1...
4060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 ........................struct.w
4080 6c 5f 61 72 72 61 79 20 2a 6b 65 79 73 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 47 l_array.*keys)....{....}.......G
40a0 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 28 76 6f 69 64 20 static.void.keyboard_leave(void.
40c0 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 *data,.struct.wl_keyboard.*wl_ke
40e0 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 yboard,...G.....................
4100 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c ......uint32_t.serial,.struct.wl
4120 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 _surface.*surface)....{....}....
4140 00 00 00 45 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 28 76 6f 69 ...Estatic.void.keyboard_key(voi
4160 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f d.*data,.struct.wl_keyboard.*wl_
4180 6b 65 79 62 6f 61 72 64 2c 00 00 00 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 keyboard,...F...................
41a0 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 ......uint32_t.serial,.uint32_t.
41c0 74 69 6d 65 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 00 00 00 28 20 20 20 20 20 20 20 20 20 time,.uint32_t.key,...(.........
41e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 74 61 74 65 29 00 ................uint32_t.state).
4200 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 ...{...D....if.(state.==.WL_KEYB
4220 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 45 44 20 26 26 20 70 74 79 5f 6d 61 OARD_KEY_STATE_PRESSED.&&.pty_ma
4240 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 63 68 61 72 20 63 20 3d ster.>=.0).{............char.c.=
4260 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 23 20 20 20 20 20 20 20 20 69 66 20 28 6b .0;...............#........if.(k
4280 65 79 20 3e 3d 20 38 20 26 26 20 6b 65 79 20 3c 3d 20 39 29 20 7b 00 00 00 29 20 20 20 20 20 20 ey.>=.8.&&.key.<=.9).{...)......
42a0 20 20 20 20 20 20 63 20 3d 20 28 6b 65 79 20 3d 3d 20 38 29 20 3f 20 30 78 37 66 20 3a 20 30 78 ......c.=.(key.==.8).?.0x7f.:.0x
42c0 30 39 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 09;...,........}.else.if.(key.>=
42e0 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 .16.&&.key.<=.25).{...!.........
4300 20 20 20 63 20 3d 20 27 71 27 20 2b 20 28 6b 65 79 20 2d 20 31 36 29 3b 00 00 00 2c 20 20 20 20 ...c.=.'q'.+.(key.-.16);...,....
4320 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 32 36 20 26 26 20 6b 65 79 20 ....}.else.if.(key.>=.26.&&.key.
4340 3c 3d 20 33 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 61 27 20 <=.35).{...!............c.=.'a'.
4360 2b 20 28 6b 65 79 20 2d 20 32 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 +.(key.-.26);...,........}.else.
4380 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d 20 34 35 29 20 7b 00 00 00 if.(key.>=.36.&&.key.<=.45).{...
43a0 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 7a 27 20 2b 20 28 6b 65 79 20 2d 20 33 36 !............c.=.'z'.+.(key.-.36
43c0 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 );...,........}.else.if.(key.>=.
43e0 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 46.&&.key.<=.55).{...!..........
4400 20 20 63 20 3d 20 27 30 27 20 2b 20 28 6b 65 79 20 2d 20 34 36 29 3b 00 00 00 1f 20 20 20 20 20 ..c.=.'0'.+.(key.-.46);.........
4420 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 37 29 20 7b 00 00 00 14 20 20 ...}.else.if.(key.==.57).{......
4440 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 20 27 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 ..........c.=.'.';............}.
4460 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 38 29 20 7b 00 00 00 15 20 20 20 20 20 20 20 else.if.(key.==.58).{...........
4480 20 20 20 20 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 .....c.=.'\n';............}.....
44a0 20 20 20 20 20 20 20 00 00 00 10 20 20 20 20 20 20 20 20 69 66 20 28 63 29 20 7b 00 00 00 25 20 ...................if.(c).{...%.
44c0 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 63 2c ...........write(pty_master,.&c,
44e0 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 .1);............}........}....}.
4500 00 00 00 00 00 00 4b 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 ......Kstatic.void.keyboard_modi
4520 66 69 65 72 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 fiers(void.*data,.struct.wl_keyb
4540 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 48 20 20 20 20 20 20 20 20 20 20 oard.*wl_keyboard,...H..........
4560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 .....................uint32_t.se
4580 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 64 65 70 72 65 73 73 65 64 2c 00 00 rial,.uint32_t.mods_depressed,..
45a0 00 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .K..............................
45c0 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 61 74 63 68 65 64 2c 20 75 69 6e 74 33 32 5f 74 .uint32_t.mods_latched,.uint32_t
45e0 20 6d 6f 64 73 5f 6c 6f 63 6b 65 64 2c 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .mods_locked,...................
4600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 72 6f 75 70 29 00 ................uint32_t.group).
4620 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 ...{....}.......>static.const.st
4640 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 6b 65 79 62 6f 61 ruct.wl_keyboard_listener.keyboa
4660 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1e 20 20 20 20 2e 6b 65 79 6d 61 70 20 3d rd_listener.=.{.........keymap.=
4680 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 2c 00 00 00 1c 20 20 20 20 2e 65 6e 74 65 72 20 .keyboard_keymap,.........enter.
46a0 3d 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 2c 00 00 00 1c 20 20 20 20 2e 6c 65 61 76 65 20 =.keyboard_enter,.........leave.
46c0 3d 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 2c 00 00 00 18 20 20 20 20 2e 6b 65 79 20 3d 20 =.keyboard_leave,.........key.=.
46e0 6b 65 79 62 6f 61 72 64 5f 6b 65 79 2c 00 00 00 24 20 20 20 20 2e 6d 6f 64 69 66 69 65 72 73 20 keyboard_key,...$.....modifiers.
4700 3d 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 =.keyboard_modifiers,....};.....
4720 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 ..Ystatic.void.seat_capabilities
4740 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 77 6c 5f (void.*data,.struct.wl_seat.*wl_
4760 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 61 62 69 6c 69 74 69 65 73 29 00 00 00 01 seat,.uint32_t.capabilities)....
4780 7b 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 61 62 69 6c 69 74 69 65 73 20 26 20 57 4c 5f 53 {...5....if.(capabilities.&.WL_S
47a0 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b 45 59 42 4f 41 52 44 29 20 7b 00 00 00 31 20 20 EAT_CAPABILITY_KEYBOARD).{...1..
47c0 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d 20 77 6c 5f 73 65 61 74 5f 67 65 74 5f 6b 65 79 ......keyboard.=.wl_seat_get_key
47e0 62 6f 61 72 64 28 77 6c 5f 73 65 61 74 29 3b 00 00 00 45 20 20 20 20 20 20 20 20 77 6c 5f 6b 65 board(wl_seat);...E........wl_ke
4800 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 6b 65 79 62 6f 61 72 64 2c 20 26 6b yboard_add_listener(keyboard,.&k
4820 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 23 20 20 20 20 eyboard_listener,.NULL);...#....
4840 20 20 20 20 70 75 74 73 28 22 6b 65 79 62 6f 61 72 64 20 61 76 61 69 6c 61 62 6c 65 22 29 3b 00 ....puts("keyboard.available");.
4860 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 36 73 74 61 74 69 63 20 63 6f 6e 73 .......}....}.......6static.cons
4880 74 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 73 65 61 74 5f 6c t.struct.wl_seat_listener.seat_l
48a0 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 26 20 20 20 20 2e 63 61 70 61 62 69 6c 69 74 69 65 73 istener.=.{...&.....capabilities
48c0 20 3d 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 .=.seat_capabilities,....};.....
48e0 00 00 43 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 28 76 6f 69 ..Cstatic.void.handle_global(voi
4900 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 d.*data,.struct.wl_registry.*reg
4920 69 73 74 72 79 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 istry,...Q......................
4940 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 69 ....uint32_t.name,.const.char.*i
4960 6e 74 65 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 69 6f 6e 29 00 00 00 01 7b nterface,.uint32_t.version)....{
4980 00 00 00 32 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 ...2....if.(strcmp(interface,."w
49a0 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 53 20 20 20 20 20 20 l_compositor").==.0).{...S......
49c0 20 20 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 ..compositor.=.wl_registry_bind(
49e0 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 69 registry,.name,.&wl_compositor_i
4a00 6e 74 65 72 66 61 63 65 2c 20 34 29 3b 00 00 00 32 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 nterface,.4);...2....}.else.if.(
4a20 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 strcmp(interface,."wl_shm").==.0
4a40 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 73 68 6d 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 ).{...E........shm.=.wl_registry
4a60 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e _bind(registry,.name,.&wl_shm_in
4a80 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 37 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 terface,.1);...7....}.else.if.(s
4aa0 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 trcmp(interface,."xdg_wm_base").
4ac0 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 20 20 20 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f ==.0).{...N........wm_base.=.wl_
4ae0 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 registry_bind(registry,.name,.&x
4b00 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 dg_wm_base_interface,.1);...C...
4b20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d .....xdg_wm_base_add_listener(wm
4b40 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b _base,.&wm_base_listener,.NULL);
4b60 00 00 00 33 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 ...3....}.else.if.(strcmp(interf
4b80 61 63 65 2c 20 22 77 6c 5f 73 65 61 74 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 ace,."wl_seat").==.0).{...G.....
4ba0 20 20 20 73 65 61 74 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 ...seat.=.wl_registry_bind(regis
4bc0 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 try,.name,.&wl_seat_interface,.1
4be0 29 3b 00 00 00 39 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e );...9........wl_seat_add_listen
4c00 65 72 28 73 65 61 74 2c 20 26 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 er(seat,.&seat_listener,.NULL);.
4c20 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 .......}....}.......Ystatic.void
4c40 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 28 76 6f 69 64 20 2a 64 61 74 61 .handle_global_remove(void.*data
4c60 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 20 ,.struct.wl_registry.*registry,.
4c80 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 29 00 00 00 01 7b 00 00 00 0f 20 20 20 20 28 76 6f 69 64 uint32_t.name)....{........(void
4ca0 29 64 61 74 61 3b 00 00 00 13 20 20 20 20 28 76 6f 69 64 29 72 65 67 69 73 74 72 79 3b 00 00 00 )data;........(void)registry;...
4cc0 0f 20 20 20 20 28 76 6f 69 64 29 6e 61 6d 65 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 .....(void)name;....}.......>sta
4ce0 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 6c 69 73 tic.const.struct.wl_registry_lis
4d00 74 65 6e 65 72 20 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1c 20 tener.registry_listener.=.{.....
4d20 20 20 20 2e 67 6c 6f 62 61 6c 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 2c 00 00 00 2a 20 ....global.=.handle_global,...*.
4d40 20 20 20 2e 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 ....global_remove.=.handle_globa
4d60 6c 5f 72 65 6d 6f 76 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f l_remove,....};........static.vo
4d80 69 64 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 id.cleanup_pty(void)....{.......
4da0 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3e 20 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 .if.(shell_pid.>.0).{...!.......
4dc0 20 6b 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 29 3b 00 00 00 24 20 20 .kill(shell_pid,.SIGTERM);...$..
4de0 20 20 20 20 20 20 77 61 69 74 70 69 64 28 73 68 65 6c 6c 5f 70 69 64 2c 20 4e 55 4c 4c 2c 20 30 ......waitpid(shell_pid,.NULL,.0
4e00 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 );........}................if.(p
4e20 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 63 6c 6f ty_master.>=.0).{............clo
4e40 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 se(pty_master);........}........
4e60 00 00 00 19 20 20 20 20 69 66 20 28 70 74 79 5f 73 6c 61 76 65 20 3e 3d 20 30 29 20 7b 00 00 00 ........if.(pty_slave.>=.0).{...
4e80 19 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 05 20 20 .........close(pty_slave);......
4ea0 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 73 65 74 75 70 ..}....}........static.int.setup
4ec0 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 73 74 72 75 63 74 20 74 65 _pty(void)....{........struct.te
4ee0 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 00 04 20 20 20 20 00 00 00 36 20 20 20 20 70 74 79 5f 6d rmios.term;...........6....pty_m
4f00 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 2f 70 74 6d 78 22 2c 20 4f 5f 52 44 57 52 aster.=.open("/dev/ptmx",.O_RDWR
4f20 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 19 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 .|.O_NOCTTY);........if.(pty_mas
4f40 74 65 72 20 3c 20 30 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 61 ter.<.0).{...&........perror("fa
4f60 69 6c 65 64 20 74 6f 20 6f 70 65 6e 20 70 74 6d 78 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 iled.to.open.ptmx");............
4f80 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 22 20 return.-1;........}...........".
4fa0 20 20 20 69 66 20 28 67 72 61 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 ...if.(grantpt(pty_master).<.0).
4fc0 7b 00 00 00 21 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 67 72 61 6e 74 70 74 20 66 61 69 {...!........perror("grantpt.fai
4fe0 6c 65 64 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 led");............return.-1;....
5000 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 20 69 66 20 28 75 6e 6c 6f 63 6b 70 ....}...........#....if.(unlockp
5020 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 t(pty_master).<.0).{..."........
5040 70 65 72 72 6f 72 28 22 75 6e 6c 6f 63 6b 70 74 20 66 61 69 6c 65 64 22 29 3b 00 00 00 12 20 20 perror("unlockpt.failed");......
5060 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 ......return.-1;........}.......
5080 20 00 00 00 3d 20 20 20 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d ....=....pty_slave.=.open(ptsnam
50a0 65 28 70 74 79 5f 6d 61 73 74 65 72 29 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 e(pty_master),.O_RDWR.|.O_NOCTTY
50c0 29 3b 00 00 00 18 20 20 20 20 69 66 20 28 70 74 79 5f 73 6c 61 76 65 20 3c 20 30 29 20 7b 00 00 );........if.(pty_slave.<.0).{..
50e0 00 2b 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 61 69 6c 65 64 20 74 6f 20 6f 70 65 6e .+........perror("failed.to.open
5100 20 73 6c 61 76 65 20 70 74 79 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .slave.pty");............return.
5120 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 2c 20 20 20 20 74 63 67 65 -1;........}...........,....tcge
5140 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 26 6f 72 69 67 69 6e 61 6c 5f 74 65 72 6d 69 tattr(pty_slave,.&original_termi
5160 6f 73 29 3b 00 00 00 20 20 20 20 20 74 63 67 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c os);........tcgetattr(pty_slave,
5180 20 26 74 65 72 6d 29 3b 00 00 00 15 20 20 20 20 63 66 6d 61 6b 65 72 61 77 28 26 74 65 72 6d 29 .&term);........cfmakeraw(&term)
51a0 3b 00 00 00 29 20 20 20 20 74 63 73 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 43 ;...)....tcsetattr(pty_slave,.TC
51c0 53 41 4e 4f 57 2c 20 26 74 65 72 6d 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 SANOW,.&term);................re
51e0 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 turn.0;....}........static.void.
5200 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 20 20 20 73 68 65 6c run_shell(void)....{........shel
5220 6c 5f 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 l_pid.=.fork();................i
5240 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 f.(shell_pid.==.0).{............
5260 73 65 74 73 69 64 28 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1a 20 20 20 20 20 20 20 setsid();.......................
5280 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 .close(pty_master);.............
52a0 00 00 27 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 49 4f 43 ..'........ioctl(pty_slave,.TIOC
52c0 53 43 54 54 59 2c 20 30 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1b 20 20 20 20 20 20 SCTTY,.0);......................
52e0 20 20 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 1b 20 20 20 20 20 20 20 ..dup2(pty_slave,.0);...........
5300 20 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 31 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 .dup2(pty_slave,.1);............
5320 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 32 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 dup2(pty_slave,.2);.............
5340 00 00 19 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 08 ...........close(pty_slave);....
5360 20 20 20 20 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 ...........&........char.*shell.
5380 3d 20 67 65 74 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 69 66 =.getenv("SHELL");............if
53a0 20 28 21 73 68 65 6c 6c 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 73 68 65 6c 6c .(!shell).{................shell
53c0 20 3d 20 22 2f 62 69 6e 2f 73 68 22 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 .=."/bin/sh";............}......
53e0 20 20 20 20 20 20 00 00 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 6c 6c 2c 20 73 ........."........execl(shell,.s
5400 68 65 6c 6c 2c 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b hell,.NULL);............exit(1);
5420 00 00 00 1f 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3c 20 30 ........}.else.if.(shell_pid.<.0
5440 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 6f 72 6b 20 66 61 69 6c ).{............perror("fork.fail
5460 65 64 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 63 6c ed");........}................cl
5480 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 13 20 20 20 20 70 74 79 5f 73 6c 61 76 65 ose(pty_slave);........pty_slave
54a0 20 3d 20 2d 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 .=.-1;....}........int.main(void
54c0 29 00 00 00 01 7b 00 00 00 21 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 )....{...!....struct.wl_registry
54e0 20 2a 72 65 67 69 73 74 72 79 3b 00 00 00 16 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a .*registry;........struct.winsiz
5500 65 20 77 73 3b 00 00 00 04 20 20 20 20 00 00 00 1d 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 20 3d e.ws;................font_data.=
5520 20 62 75 69 6c 74 69 6e 5f 66 6f 6e 74 3b 00 00 00 04 20 20 20 20 00 00 00 1d 20 20 20 20 73 69 .builtin_font;................si
5540 67 6e 61 6c 28 53 49 47 43 48 4c 44 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 20 20 20 00 gnal(SIGCHLD,.SIG_IGN);.........
5560 00 00 1a 20 20 20 20 69 66 20 28 73 65 74 75 70 5f 70 74 79 28 29 20 3c 20 30 29 20 7b 00 00 00 .......if.(setup_pty().<.0).{...
5580 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 .........return.1;........}.....
55a0 20 20 20 00 00 00 15 20 20 20 20 77 73 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 15 ...........ws.ws_row.=.rows;....
55c0 20 20 20 20 77 73 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c 73 3b 00 00 00 20 20 20 20 20 77 73 2e ....ws.ws_col.=.cols;........ws.
55e0 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 21 20 20 20 ws_xpixel.=.window_width;...!...
5600 20 77 73 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 00 00 .ws.ws_ypixel.=.window_height;..
5620 00 27 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 4e .'....ioctl(pty_master,.TIOCSWIN
5640 53 5a 2c 20 26 77 73 29 3b 00 00 00 04 20 20 20 20 00 00 00 10 20 20 20 20 72 75 6e 5f 73 68 65 SZ,.&ws);................run_she
5660 6c 6c 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 27 20 20 20 20 64 69 73 70 6c 61 79 20 3d 20 77 ll();...........'....display.=.w
5680 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 28 4e 55 4c 4c 29 3b 00 00 00 13 20 20 20 20 l_display_connect(NULL);........
56a0 69 66 20 28 21 64 69 73 70 6c 61 79 29 20 7b 00 00 00 42 20 20 20 20 20 20 20 20 66 70 72 69 6e if.(!display).{...B........fprin
56c0 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f tf(stderr,."failed.to.connect.to
56e0 20 77 61 79 6c 61 6e 64 20 64 69 73 70 6c 61 79 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 .wayland.display\n");...........
5700 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 .cleanup_pty();............retur
5720 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 30 20 20 20 20 72 65 67 n.1;........}...........0....reg
5740 69 73 74 72 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 istry.=.wl_display_get_registry(
5760 64 69 73 70 6c 61 79 29 3b 00 00 00 41 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 display);...A....wl_registry_add
5780 5f 6c 69 73 74 65 6e 65 72 28 72 65 67 69 73 74 72 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 _listener(registry,.&registry_li
57a0 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 stener,.NULL);..."....wl_display
57c0 5f 72 6f 75 6e 64 74 72 69 70 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a _roundtrip(display);...........*
57e0 20 20 20 20 69 66 20 28 21 63 6f 6d 70 6f 73 69 74 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 ....if.(!compositor.||.!shm.||.!
5800 77 6d 5f 62 61 73 65 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 wm_base).{...G........fprintf(st
5820 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 72 65 71 75 69 72 65 64 20 77 61 derr,."failed.to.get.required.wa
5840 79 6c 61 6e 64 20 69 6e 74 65 72 66 61 63 65 73 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 yland.interfaces\n");...........
5860 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 .cleanup_pty();............retur
5880 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 n.1;........}...........7....sur
58a0 66 61 63 65 20 3d 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 face.=.wl_compositor_create_surf
58c0 61 63 65 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 ace(compositor);...@....xdg_surf
58e0 61 63 65 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 ace.=.xdg_wm_base_get_xdg_surfac
5900 65 28 77 6d 5f 62 61 73 65 2c 20 73 75 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f e(wm_base,.surface);...G....xdg_
5920 73 75 72 66 61 63 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 surface_add_listener(xdg_surface
5940 2c 20 26 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 ,.&xdg_surface_listener,.NULL);.
5960 00 00 04 20 20 20 20 00 00 00 35 20 20 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 ..........5....toplevel.=.xdg_su
5980 72 66 61 63 65 5f 67 65 74 5f 74 6f 70 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b rface_get_toplevel(xdg_surface);
59a0 00 00 00 42 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 ...B....xdg_toplevel_add_listene
59c0 72 28 74 6f 70 6c 65 76 65 6c 2c 20 26 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 r(toplevel,.&toplevel_listener,.
59e0 4e 55 4c 4c 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 NULL);...@....xdg_toplevel_set_t
5a00 69 74 6c 65 28 74 6f 70 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 20 77 61 79 6c 61 6e 64 20 74 itle(toplevel,."simple.wayland.t
5a20 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 41 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 erminal");...A....xdg_toplevel_s
5a40 65 74 5f 61 70 70 5f 69 64 28 74 6f 70 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 2d 77 61 79 6c et_app_id(toplevel,."simple-wayl
5a60 61 6e 64 2d 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 77 and-terminal");................w
5a80 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 04 20 20 l_surface_commit(surface);......
5aa0 20 20 00 00 00 2d 20 20 20 20 70 72 69 6e 74 66 28 22 74 65 72 6d 69 6e 61 6c 20 63 72 65 61 74 .....-....printf("terminal.creat
5ac0 65 64 2e 20 72 75 6e 6e 69 6e 67 2e 2e 2e 5c 6e 22 29 3b 00 00 00 3b 20 20 20 20 70 72 69 6e 74 ed..running...\n");...;....print
5ae0 66 28 22 74 79 70 65 20 63 6f 6d 6d 61 6e 64 73 20 69 6e 20 74 68 65 20 77 69 6e 64 6f 77 20 74 f("type.commands.in.the.window.t
5b00 6f 20 72 75 6e 20 61 20 73 68 65 6c 6c 5c 6e 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 3b 20 20 o.run.a.shell\n");...........;..
5b20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e 69 6e 67 20 26 26 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 ..while.(running.&&.wl_display_d
5b40 69 73 70 61 74 63 68 28 64 69 73 70 6c 61 79 29 20 21 3d 20 2d 31 29 20 7b 00 00 00 16 20 20 20 ispatch(display).!=.-1).{.......
5b60 20 20 20 20 20 63 68 61 72 20 62 75 66 5b 32 35 36 5d 3b 00 00 00 33 20 20 20 20 20 20 20 20 69 .....char.buf[256];...3........i
5b80 6e 74 20 6e 20 3d 20 72 65 61 64 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 62 75 66 2c 20 73 69 7a nt.n.=.read(pty_master,.buf,.siz
5ba0 65 6f 66 28 62 75 66 29 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 14 20 20 20 20 20 20 eof(buf));......................
5bc0 20 20 69 66 20 28 6e 20 3e 20 30 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 66 6f ..if.(n.>.0).{...)............fo
5be0 72 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 7b 00 00 00 25 20 r.(int.i.=.0;.i.<.n;.i++).{...%.
5c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c 6e ...............if.(buf[i].==.'\n
5c20 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 ').{...!....................curs
5c40 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or_x.=.0;.......................
5c60 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cursor_y++;...+................
5c80 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 2c 20 ....if.(cursor_y.>=.rows).{...,.
5ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 .......................cursor_y.
5cc0 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.rows.-.1;.....................
5ce0 20 20 20 7d 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 ...}...,................}.else.i
5d00 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c 72 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 f.(buf[i].==.'\r').{...!........
5d20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 3e 20 20 20 ............cursor_x.=.0;...>...
5d40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 75 66 5b 69 5d 20 3d .............}.else.if.(buf[i].=
5d60 3d 20 27 5c 62 27 20 7c 7c 20 62 75 66 5b 69 5d 20 3d 3d 20 30 78 37 66 29 20 7b 00 00 00 27 20 =.'\b'.||.buf[i].==.0x7f).{...'.
5d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 ...................if.(cursor_x.
5da0 3e 20 30 29 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 >.0).{...#......................
5dc0 20 20 63 75 72 73 6f 72 5f 78 2d 2d 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..cursor_x--;...................
5de0 20 20 20 20 20 7d 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .....}...:................}.else
5e00 20 69 66 20 28 62 75 66 5b 69 5d 20 3e 3d 20 33 32 20 26 26 20 62 75 66 5b 69 5d 20 3c 20 31 32 .if.(buf[i].>=.32.&&.buf[i].<.12
5e20 37 29 20 7b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 7).{........................curs
5e40 6f 72 5f 78 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 or_x++;...+....................i
5e60 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 25 20 20 20 20 20 20 f.(cursor_x.>=.cols).{...%......
5e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 ..................cursor_x.=.0;.
5ea0 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f ..#........................curso
5ec0 72 5f 79 2b 2b 3b 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r_y++;.../......................
5ee0 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 30 20 20 20 ..if.(cursor_y.>=.rows).{...0...
5f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f .........................cursor_
5f20 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y.=.rows.-.1;...................
5f40 20 20 20 20 20 20 20 20 20 7d 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........}......................
5f60 20 20 7d 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 ..}....................}........
5f80 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 ........}............}.else.if.(
5fa0 6e 20 3d 3d 20 30 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 n.==.0).{................running
5fc0 20 3d 20 30 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 .=.0;............}........}.....
5fe0 20 20 20 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 04 20 20 20 ...........cleanup_pty();.......
6000 20 00 00 00 19 20 20 20 20 69 66 20 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 20 7b 00 00 .........if.(frame_callback).{..
6020 00 2c 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f 79 28 66 72 .,........wl_callback_destroy(fr
6040 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 ame_callback);........}.........
6060 00 00 13 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 7b 00 00 00 26 20 20 20 20 20 20 .......if.(keyboard).{...&......
6080 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 62 6f 61 72 64 29 3b ..wl_keyboard_destroy(keyboard);
60a0 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 0f 20 20 20 20 69 66 20 28 73 65 61 ........}................if.(sea
60c0 74 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 64 65 73 74 72 6f 79 28 t).{............wl_seat_destroy(
60e0 73 65 61 74 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 64 seat);........}................d
6100 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 20 estroy_buffer();...........#....
6120 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 65 6c 29 3b 00 xdg_toplevel_destroy(toplevel);.
6140 00 00 25 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 78 64 67 5f 73 ..%....xdg_surface_destroy(xdg_s
6160 75 72 66 61 63 65 29 3b 00 00 00 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 urface);........wl_surface_destr
6180 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 21 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f oy(surface);...!....xdg_wm_base_
61a0 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 26 20 20 20 20 77 6c 5f 63 6f 6d 70 destroy(wm_base);...&....wl_comp
61c0 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 18 20 ositor_destroy(compositor);.....
61e0 20 20 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 00 22 20 20 20 20 77 ...wl_shm_destroy(shm);..."....w
6200 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 29 3b 00 00 00 l_registry_destroy(registry);...
6220 23 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 74 28 64 69 73 70 6c #....wl_display_disconnect(displ
6240 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 ay);................return.0;...
6260 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 79 02 00 00 00 00 00 00 01 00 00 00 00 00 .}5...............y.............
6280 00 00 00 00 00 00 00 00 00 00 49 4f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 ..........IO..............5._...
62a0 00 04 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ................................
62c0 ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6420 6a 01 0c e1 04 01 00 00 00 04 00 f5 18 00 00 01 ce 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 j...............................
6440 01 20 f5 18 00 00 01 cf 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 37 00 00 00 00 00 00 .........................7......
6460 00 00 00 00 00 01 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6480 f5 18 00 00 01 38 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 9a 00 00 00 00 00 00 00 00 .....8..........................
64a0 00 00 00 01 00 00 00 18 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 ............struct.wl_buffer.*bu
64c0 f5 18 00 00 00 9b 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 ................................
64e0 00 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 ..........................5.....
6500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9a 00 00 00 18 00 00 00 00 00 00 00 00 00 ................................
6520 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 9a 00 00 00 18 00 00 00 ................................
6540 00 00 00 00 00 00 00 00 9d 00 00 00 16 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6560 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 37 01 00 00 16 00 00 00 00 00 00 00 00 00 00 00 97 00 ..............7.................
6580 00 00 01 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 ................................
65a0 00 00 00 00 ce 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00 7f 00 00 00 01 00 00 00 f7 2f 00 00 ............................./..
65c0 00 00 00 00 00 00 00 00 00 00 00 00 53 0d 00 00 00 00 00 00 35 81 5f d0 00 00 00 05 00 00 00 07 ............S.......5._.........
65e0 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 0e 00 00 00 0a 00 00 00 00 ff ff ff ff 00 01 00 00 ................................
6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 0c f7 04 01 ..........................j.....
6760 00 00 00 05 00 f5 18 00 00 00 0d 00 00 00 0e 00 00 00 00 00 00 00 01 00 00 00 14 23 69 6e 63 6c ...........................#incl
6780 75 64 65 20 3c 73 74 72 6f 70 74 73 2e 68 3e 35 81 f5 18 00 00 00 00 0d 00 00 00 00 00 00 00 01 ude.<stropts.h>5................
67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 ................................
67c0 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 06 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 07 00 .......5._......................
67e0 00 00 01 00 00 00 00 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 ................................
6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6940 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 0d 79 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 .............j..y...............
6960 00 02 00 00 00 00 00 00 02 4d 00 00 00 19 23 64 65 66 69 6e 65 20 5f 58 4f 50 45 4e 5f 53 4f 55 .........M....#define._XOPEN_SOU
6980 52 43 45 20 36 30 30 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 RCE.600....#include.<stdio.h>...
69a0 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 .#include.<stdlib.h>....#include
69c0 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e .<string.h>....#include.<unistd.
69e0 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 h>....#include.<sys/mman.h>....#
6a00 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 include.<sys/ioctl.h>....#includ
6a20 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f e.<sys/wait.h>....#include.<sys/
6a40 73 74 61 74 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 stat.h>....#include.<fcntl.h>...
6a60 12 23 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 .#include.<errno.h>....#include.
6a80 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d 69 6f 73 2e <signal.h>....#include.<termios.
6aa0 68 3e 00 00 00 1b 23 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 h>....#include.<wayland-client.h
6ac0 3e 00 00 00 26 23 69 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d >...&#include."xdg-shell-client-
6ae0 70 72 6f 74 6f 63 6f 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 protocol.h"......."struct.wl_dis
6b00 70 6c 61 79 20 2a 64 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 play.*display.=.NULL;...(struct.
6b20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c wl_compositor.*compositor.=.NULL
6b40 3b 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 ;..."struct.wl_surface.*surface.
6b60 3d 20 4e 55 4c 4c 3b 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 =.NULL;....struct.wl_shm.*shm.=.
6b80 4e 55 4c 4c 3b 00 00 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 NULL;....struct.wl_seat.*seat.=.
6ba0 4e 55 4c 4c 3b 00 00 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 NULL;...$struct.wl_keyboard.*key
6bc0 62 6f 61 72 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 board.=.NULL;...#struct.xdg_wm_b
6be0 61 73 65 20 2a 77 6d 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 ase.*wm_base.=.NULL;...'struct.x
6c00 64 67 5f 73 75 72 66 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 dg_surface.*xdg_surface.=.NULL;.
6c20 00 00 25 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c ..%struct.xdg_toplevel.*toplevel
6c40 20 3d 20 4e 55 4c 4c 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a .=.NULL;...*struct.wl_callback.*
6c60 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 frame_callback.=.NULL;........st
6c80 61 74 69 63 20 69 6e 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 atic.int.running.=.1;....static.
6ca0 69 6e 74 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 38 30 30 3b 00 00 00 1f 73 74 61 74 69 int.window_width.=.800;....stati
6cc0 63 20 69 6e 74 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 36 30 30 3b 00 00 00 1d 73 74 c.int.window_height.=.600;....st
6ce0 61 74 69 63 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 atic.int.pending_width.=.0;....s
6d00 74 61 74 69 63 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 tatic.int.pending_height.=.0;...
6d20 1c 73 74 61 74 69 63 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 .static.int.needs_resize.=.0;...
6d40 28 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 (static.unsigned.char.*pixel_dat
6d60 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 a.=.NULL;....static.struct.wl_bu
6d80 66 66 65 72 20 2a 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 ffer.*window_buffer.=.NULL;.....
6da0 00 00 1b 73 74 61 74 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 ...static.int.pty_master.=.-1;..
6dc0 00 1a 73 74 61 74 69 63 20 69 6e 74 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 2d 31 3b 00 00 00 1c ..static.int.pty_slave.=.-1;....
6de0 73 74 61 74 69 63 20 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 static.pid_t.shell_pid.=.-1;....
6e00 73 74 61 74 69 63 20 69 6e 74 20 72 6f 77 73 20 3d 20 32 34 3b 00 00 00 15 73 74 61 74 69 63 20 static.int.rows.=.24;....static.
6e20 69 6e 74 20 63 6f 6c 73 20 3d 20 38 30 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 int.cols.=.80;....static.int.cha
6e40 72 5f 77 69 64 74 68 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f r_width.=.8;....static.int.char_
6e60 68 65 69 67 68 74 20 3d 20 31 36 3b 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 75 6e 73 69 67 height.=.16;.......%static.unsig
6e80 6e 65 64 20 63 68 61 72 20 66 6f 6e 74 5f 64 61 74 61 5b 34 30 39 36 5d 3b 00 00 00 18 73 74 61 ned.char.font_data[4096];....sta
6ea0 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 18 73 74 61 74 69 63 20 tic.int.cursor_x.=.0;....static.
6ec0 69 6e 74 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 int.cursor_y.=.0;........static.
6ee0 76 6f 69 64 20 69 6e 69 74 5f 66 6f 6e 74 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0a 20 20 20 void.init_font(void)....{.......
6f00 20 69 6e 74 20 69 3b 00 00 00 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 34 .int.i;........for.(i.=.0;.i.<.4
6f20 30 39 36 3b 20 69 2b 2b 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 096;.i++).{............font_data
6f40 5b 69 5d 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 20 20 20 [i].=.0;........}...............
6f60 20 66 6f 72 20 28 69 20 3d 20 33 32 3b 20 69 20 3c 20 31 32 37 3b 20 69 2b 2b 29 20 7b 00 00 00 .for.(i.=.32;.i.<.127;.i++).{...
6f80 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 ,........font_data[(i.-.32).*.16
6fa0 20 2b 20 30 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 .+.0].=.0x00;...,........font_da
6fc0 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 5d 20 3d 20 30 78 30 30 3b 00 00 00 ta[(i.-.32).*.16.+.1].=.0x00;...
6fe0 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 ,........font_data[(i.-.32).*.16
7000 20 2b 20 32 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 .+.2].=.0x00;...,........font_da
7020 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 33 5d 20 3d 20 30 78 30 30 3b 00 00 00 ta[(i.-.32).*.16.+.3].=.0x00;...
7040 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 ,........font_data[(i.-.32).*.16
7060 20 2b 20 34 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 .+.4].=.0x00;...,........font_da
7080 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 35 5d 20 3d 20 30 78 30 30 3b 00 00 00 ta[(i.-.32).*.16.+.5].=.0x00;...
70a0 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 ,........font_data[(i.-.32).*.16
70c0 20 2b 20 36 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 .+.6].=.0x00;...,........font_da
70e0 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 37 5d 20 3d 20 30 78 30 30 3b 00 00 00 ta[(i.-.32).*.16.+.7].=.0x00;...
7100 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 ,........font_data[(i.-.32).*.16
7120 20 2b 20 38 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 .+.8].=.0x00;...,........font_da
7140 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 39 5d 20 3d 20 30 78 30 30 3b 00 00 00 ta[(i.-.32).*.16.+.9].=.0x00;...
7160 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 -........font_data[(i.-.32).*.16
7180 20 2b 20 31 30 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 .+.10].=.0x00;...-........font_d
71a0 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 31 5d 20 3d 20 30 78 30 30 3b 00 ata[(i.-.32).*.16.+.11].=.0x00;.
71c0 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 ..-........font_data[(i.-.32).*.
71e0 31 36 20 2b 20 31 32 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 16.+.12].=.0x00;...-........font
7200 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 33 5d 20 3d 20 30 78 30 30 _data[(i.-.32).*.16.+.13].=.0x00
7220 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 ;...-........font_data[(i.-.32).
7240 2a 20 31 36 20 2b 20 31 34 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f *.16.+.14].=.0x00;...-........fo
7260 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 35 5d 20 3d 20 30 78 nt_data[(i.-.32).*.16.+.15].=.0x
7280 30 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4c 73 74 61 74 69 63 20 00;........}....}.......Lstatic.
72a0 76 6f 69 64 20 64 72 61 77 5f 63 68 61 72 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 64 61 void.draw_char(unsigned.char.*da
72c0 74 61 2c 20 69 6e 74 20 70 69 74 63 68 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 63 68 61 ta,.int.pitch,.int.x,.int.y,.cha
72e0 72 20 63 68 29 00 00 00 01 7b 00 00 00 14 20 20 20 20 69 6e 74 20 63 78 2c 20 63 79 2c 20 62 69 r.ch)....{........int.cx,.cy,.bi
7300 74 3b 00 00 00 19 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 67 6c 79 70 68 3b 00 t;........unsigned.char.*glyph;.
7320 00 00 04 20 20 20 20 00 00 00 1e 20 20 20 20 69 66 20 28 63 68 20 3c 20 33 32 20 7c 7c 20 63 68 ...............if.(ch.<.32.||.ch
7340 20 3e 20 31 32 36 29 20 7b 00 00 00 10 20 20 20 20 20 20 20 20 63 68 20 3d 20 33 32 3b 00 00 00 .>.126).{............ch.=.32;...
7360 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 67 6c 79 70 68 20 3d 20 66 6f .....}...........)....glyph.=.fo
7380 6e 74 5f 64 61 74 61 20 2b 20 28 28 63 68 20 2d 20 33 32 29 20 2a 20 31 36 29 3b 00 00 00 04 20 nt_data.+.((ch.-.32).*.16);.....
73a0 20 20 20 00 00 00 21 20 20 20 20 66 6f 72 20 28 63 79 20 3d 20 30 3b 20 63 79 20 3c 20 31 36 3b ......!....for.(cy.=.0;.cy.<.16;
73c0 20 63 79 2b 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 78 20 3d 20 30 3b .cy++).{...$........for.(cx.=.0;
73e0 20 63 78 20 3c 20 38 3b 20 63 78 2b 2b 29 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 .cx.<.8;.cx++).{................
7400 62 69 74 20 3d 20 28 67 6c 79 70 68 5b 63 79 5d 20 3e 3e 20 28 37 20 2d 20 63 78 29 29 20 26 20 bit.=.(glyph[cy].>>.(7.-.cx)).&.
7420 31 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 69 74 29 20 7b 00 00 00 20 1;................if.(bit).{....
7440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 78 20 3d 20 78 20 2b 20 63 78 3b ................int.px.=.x.+.cx;
7460 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 79 20 3d 20 79 20 2b ....................int.py.=.y.+
7480 20 63 79 3b 00 00 00 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 78 20 3e .cy;...T................if.(px.>
74a0 3d 20 30 20 26 26 20 70 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 20 70 79 20 3e =.0.&&.px.<.window_width.&&.py.>
74c0 3d 20 30 20 26 26 20 70 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 34 =.0.&&.py.<.window_height).{...4
74e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 70 ....................int.idx.=.(p
7500 79 20 2a 20 70 69 74 63 68 20 2b 20 70 78 29 20 2a 20 34 3b 00 00 00 2e 20 20 20 20 20 20 20 20 y.*.pitch.+.px).*.4;............
7520 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 ............pixel_data[idx.+.0].
7540 3d 20 32 35 35 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 =.255;........................pi
7560 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 32 35 35 3b 00 00 00 2e 20 20 20 20 xel_data[idx.+.1].=.255;........
7580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b ................pixel_data[idx.+
75a0 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .2].=.255;......................
75c0 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 11 ..pixel_data[idx.+.3].=.255;....
75e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 ................}...............
7600 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 .}............}........}....}...
7620 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 65 6e 28 76 6f 69 .....static.void.draw_screen(voi
7640 64 29 00 00 00 01 7b 00 00 00 23 20 20 20 20 69 6e 74 20 78 2c 20 79 2c 20 70 69 74 63 68 20 3d d)....{...#....int.x,.y,.pitch.=
7660 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 66 6f .window_width;...........)....fo
7680 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 20 79 2b 2b r.(y.=.0;.y.<.window_height;.y++
76a0 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 77 ).{...,........for.(x.=.0;.x.<.w
76c0 69 6e 64 6f 77 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 20 indow_width;.x++).{...*.........
76e0 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 79 20 2a 20 70 69 74 63 68 20 2b 20 78 29 20 2a 20 34 ...int.idx.=.(y.*.pitch.+.x).*.4
7700 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 ;...$............pixel_data[idx.
7720 2b 20 30 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 +.0].=.0;...$............pixel_d
7740 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 ata[idx.+.1].=.0;...%...........
7760 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 33 32 3b 00 00 00 26 20 20 .pixel_data[idx.+.2].=.32;...&..
7780 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 ..........pixel_data[idx.+.3].=.
77a0 32 35 35 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 255;............}........}......
77c0 20 20 00 00 00 20 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 72 6f 77 73 3b 20 ..........for.(y.=.0;.y.<.rows;.
77e0 79 2b 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 y++).{...$........for.(x.=.0;.x.
7800 3c 20 63 6f 6c 73 3b 20 78 2b 2b 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 64 72 <.cols;.x++).{...=............dr
7820 61 77 5f 63 68 61 72 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 70 69 74 63 68 2c 20 78 20 2a 20 38 aw_char(pixel_data,.pitch,.x.*.8
7840 2c 20 79 20 2a 20 31 36 2c 20 27 20 27 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 ,.y.*.16,.'.');............}....
7860 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 43 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 70 ....}...........C....draw_char(p
7880 69 78 65 6c 5f 64 61 74 61 2c 20 70 69 74 63 68 2c 20 63 75 72 73 6f 72 5f 78 20 2a 20 38 2c 20 ixel_data,.pitch,.cursor_x.*.8,.
78a0 63 75 72 73 6f 72 5f 79 20 2a 20 31 36 2c 20 27 5f 27 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 cursor_y.*.16,.'_');....}.......
78c0 27 73 74 61 74 69 63 20 69 6e 74 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 'static.int.create_shm_file(size
78e0 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b _t.size)....{........int.fd;...+
7900 20 20 20 20 63 68 61 72 20 74 65 6d 70 6c 61 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 ....char.template[].=."/tmp/wl-s
7920 68 6d 2d 58 58 58 58 58 58 22 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 hm-XXXXXX";................fd.=.
7940 6d 6b 73 74 65 6d 70 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 mkstemp(template);........if.(fd
7960 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 .<.0).{............return.-1;...
7980 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 .....}...........)....if.(ftrunc
79a0 61 74 65 28 66 64 2c 20 28 6f 66 66 5f 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 ate(fd,.(off_t)size).<.0).{.....
79c0 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 75 6e 6c .......close(fd);............unl
79e0 69 6e 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ink(template);............return
7a00 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 75 6e 6c .-1;........}................unl
7a20 69 6e 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b ink(template);........return.fd;
7a40 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 ....}.......=static.struct.wl_bu
7a60 66 66 65 72 20 2a 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 ffer.*create_buffer(int.width,.i
7a80 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 nt.height)....{........int.strid
7aa0 65 20 3d 20 77 69 64 74 68 20 2a 20 34 3b 00 00 00 1f 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d e.=.width.*.4;........int.size.=
7ac0 20 73 74 72 69 64 65 20 2a 20 68 65 69 67 68 74 3b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b .stride.*.height;........int.fd;
7ae0 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c ........struct.wl_shm_pool.*pool
7b00 3b 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 ;........struct.wl_buffer.*buffe
7b20 72 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 r;................fd.=.create_sh
7b40 6d 5f 66 69 6c 65 28 73 69 7a 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 m_file(size);........if.(fd.<.0)
7b60 20 7b 00 00 00 4c 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 .{...L........fprintf(stderr,."f
7b80 61 69 6c 65 64 20 74 6f 20 63 72 65 61 74 65 20 73 68 6d 20 66 69 6c 65 3a 20 25 73 5c 6e 22 2c ailed.to.create.shm.file:.%s\n",
7ba0 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 .strerror(errno));............re
7bc0 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 4d 20 turn.NULL;........}...........M.
7be0 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 4c 4c 2c 20 73 69 7a 65 2c ...pixel_data.=.mmap(NULL,.size,
7c00 20 50 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 2c 20 4d 41 50 5f 53 48 41 .PROT_READ.|.PROT_WRITE,.MAP_SHA
7c20 52 45 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 61 RED,.fd,.0);...#....if.(pixel_da
7c40 74 61 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 66 ta.==.MAP_FAILED).{...E........f
7c60 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 6d 6d 61 70 20 73 printf(stderr,."failed.to.mmap.s
7c80 68 6d 3a 20 25 73 5c 6e 22 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 12 hm:.%s\n",.strerror(errno));....
7ca0 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 ........close(fd);............re
7cc0 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 12 20 turn.NULL;........}.............
7ce0 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 ...draw_screen();...........-...
7d00 20 70 6f 6f 6c 20 3d 20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 .pool.=.wl_shm_create_pool(shm,.
7d20 66 64 2c 20 73 69 7a 65 29 3b 00 00 00 46 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f 73 68 fd,.size);...F....buffer.=.wl_sh
7d40 6d 5f 70 6f 6f 6c 5f 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 77 69 m_pool_create_buffer(pool,.0,.wi
7d60 64 74 68 2c 20 68 65 69 67 68 74 2c 20 73 74 72 69 64 65 2c 00 00 00 3f 20 20 20 20 20 20 20 20 dth,.height,.stride,...?........
7d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 ...............................W
7da0 4c 5f 53 48 4d 5f 46 4f 52 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 L_SHM_FORMAT_ARGB8888);........w
7dc0 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 l_shm_pool_destroy(pool);.......
7de0 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 .close(fd);................retur
7e00 6e 20 62 75 66 66 65 72 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 n.buffer;....}........static.voi
7e20 64 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 d.destroy_buffer(void)....{.....
7e40 20 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 ...if.(window_buffer).{...).....
7e60 20 20 20 77 6c 5f 62 75 66 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 ...wl_buffer_destroy(window_buff
7e80 65 72 29 3b 00 00 00 1d 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 er);............window_buffer.=.
7ea0 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 69 66 NULL;........}................if
7ec0 20 28 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 .(pixel_data).{...=........munma
7ee0 70 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e p(pixel_data,.window_width.*.win
7f00 64 6f 77 5f 68 65 69 67 68 74 20 2a 20 34 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 dow_height.*.4);............pixe
7f20 6c 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 l_data.=.NULL;........}....}....
7f40 00 00 00 30 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e ...0static.void.resize_window(in
7f60 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 24 20 20 20 t.width,.int.height)....{...$...
7f80 20 69 66 20 28 77 69 64 74 68 20 3c 3d 20 30 20 7c 7c 20 68 65 69 67 68 74 20 3c 3d 20 30 29 20 .if.(width.<=.0.||.height.<=.0).
7fa0 7b 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 {............return;........}...
7fc0 04 20 20 20 20 00 00 00 15 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 38 3b 00 00 .............cols.=.width./.8;..
7fe0 00 17 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 31 36 3b 00 00 00 04 20 20 20 ......rows.=.height./.16;.......
8000 20 00 00 00 1b 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 31 29 20 63 6f 6c 73 20 3d 20 31 3b .........if.(cols.<.1).cols.=.1;
8020 00 00 00 1b 20 20 20 20 69 66 20 28 72 6f 77 73 20 3c 20 31 29 20 72 6f 77 73 20 3d 20 31 3b 00 ........if.(rows.<.1).rows.=.1;.
8040 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b ...............destroy_buffer();
8060 00 00 00 19 20 20 20 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b 00 00 00 ........window_width.=.width;...
8080 1b 20 20 20 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 3b 00 00 00 3f .....window_height.=.height;...?
80a0 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 ....window_buffer.=.create_buffe
80c0 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 r(window_width,.window_height);.
80e0 00 00 15 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 04 20 20 20 20 .......needs_resize.=.0;........
8100 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 ........if.(pty_master.>=.0).{..
8120 00 1a 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 3b 00 00 00 19 ..........struct.winsize.ws;....
8140 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 19 20 20 20 ........ws.ws_row.=.rows;.......
8160 20 20 20 20 20 77 73 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c 73 3b 00 00 00 1d 20 20 20 20 20 20 .....ws.ws_col.=.cols;..........
8180 20 20 77 73 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 64 74 68 3b 00 00 00 1e 20 20 20 20 20 ..ws.ws_xpixel.=.width;.........
81a0 20 20 20 77 73 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 68 65 69 67 68 74 3b 00 00 00 2b 20 20 20 ...ws.ws_ypixel.=.height;...+...
81c0 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 4e 53 .....ioctl(pty_master,.TIOCSWINS
81e0 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4f 73 74 Z,.&ws);........}....}.......Ost
8200 61 74 69 63 20 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 76 6f 69 64 20 2a 64 61 74 61 2c atic.void.frame_done(void.*data,
8220 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 63 61 6c 6c 62 61 63 6b 2c 20 75 .struct.wl_callback.*callback,.u
8240 69 6e 74 33 32 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 13 20 20 20 20 69 66 20 28 63 61 int32_t.time)....{........if.(ca
8260 6c 6c 62 61 63 6b 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b llback).{...&........wl_callback
8280 5f 64 65 73 74 72 6f 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 _destroy(callback);........}....
82a0 20 20 20 20 00 00 00 17 20 20 20 20 69 66 20 28 6e 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 ............if.(needs_resize).{.
82c0 00 00 35 20 20 20 20 20 20 20 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 ..5........resize_window(pending
82e0 5f 77 69 64 74 68 2c 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 29 3b 00 00 00 1a 20 20 20 20 _width,.pending_height);........
8300 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 ....pending_width.=.0;..........
8320 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 ..pending_height.=.0;........}..
8340 00 04 20 20 20 20 00 00 00 12 20 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 ..............draw_screen();....
8360 20 20 20 20 00 00 00 18 20 20 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b ............if.(window_buffer).{
8380 00 00 00 38 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 61 74 74 61 63 68 28 73 75 ...8........wl_surface_attach(su
83a0 72 66 61 63 65 2c 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 2c 20 30 2c 20 30 29 3b 00 00 00 46 rface,.window_buffer,.0,.0);...F
83c0 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 61 6d 61 67 65 28 73 75 72 66 61 63 ........wl_surface_damage(surfac
83e0 65 2c 20 30 2c 20 30 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 e,.0,.0,.window_width,.window_he
8400 69 67 68 74 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 3f 20 20 20 20 73 ight);........}...........?....s
8420 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c tatic.const.struct.wl_callback_l
8440 69 73 74 65 6e 65 72 20 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1a 20 20 istener.frame_listener.=.{......
8460 20 20 20 20 20 20 2e 64 6f 6e 65 20 3d 20 66 72 61 6d 65 5f 64 6f 6e 65 00 00 00 06 20 20 20 20 .......done.=.frame_done........
8480 7d 3b 00 00 00 04 20 20 20 20 00 00 00 2f 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b };.........../....frame_callback
84a0 20 3d 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 00 00 .=.wl_surface_frame(surface);...
84c0 44 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 D....wl_callback_add_listener(fr
84e0 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c 20 26 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e ame_callback,.&frame_listener,.N
8500 55 4c 4c 29 3b 00 00 00 1f 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 ULL);........wl_surface_commit(s
8520 75 72 66 61 63 65 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 5a 73 74 61 74 69 63 20 76 6f 69 64 urface);....}.......Zstatic.void
8540 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 .xdg_wm_base_ping(void.*data,.st
8560 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 75 ruct.xdg_wm_base.*xdg_wm_base,.u
8580 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 2a 20 20 20 20 78 64 67 5f int32_t.serial)....{...*....xdg_
85a0 77 6d 5f 62 61 73 65 5f 70 6f 6e 67 28 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 73 65 72 69 61 6c wm_base_pong(xdg_wm_base,.serial
85c0 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 );....}.......=static.const.stru
85e0 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f ct.xdg_wm_base_listener.wm_base_
8600 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1d 20 20 20 20 2e 70 69 6e 67 20 3d 20 78 64 67 5f listener.=.{.........ping.=.xdg_
8620 77 6d 5f 62 61 73 65 5f 70 69 6e 67 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 51 73 74 61 74 69 wm_base_ping,....};.......Qstati
8640 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f c.void.xdg_toplevel_configure(vo
8660 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 id.*data,.struct.xdg_toplevel.*x
8680 64 67 5f 74 6f 70 6c 65 76 65 6c 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dg_toplevel,...Q................
86a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e ...................int32_t.w,.in
86c0 74 33 32 5f 74 20 68 2c 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 t32_t.h,.struct.wl_array.*states
86e0 29 00 00 00 01 7b 00 00 00 19 20 20 20 20 69 66 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 )....{........if.(w.>.0.&&.h.>.0
8700 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 ).{............pending_width.=.w
8720 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b ;............pending_height.=.h;
8740 00 00 00 19 20 20 20 20 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 ............needs_resize.=.1;...
8760 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4d 73 74 61 74 69 63 20 76 6f 69 64 20 78 .....}....}.......Mstatic.void.x
8780 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 dg_toplevel_close(void.*data,.st
87a0 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 29 ruct.xdg_toplevel.*xdg_toplevel)
87c0 00 00 00 01 7b 00 00 00 1c 20 20 20 20 70 75 74 73 28 22 74 65 72 6d 69 6e 61 6c 20 63 6c 6f 73 ....{........puts("terminal.clos
87e0 65 64 22 29 3b 00 00 00 10 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 ed");........running.=.0;....}..
8800 00 00 00 00 00 3f 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f .....?static.const.struct.xdg_to
8820 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 plevel_listener.toplevel_listene
8840 72 20 3d 20 7b 00 00 00 28 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f r.=.{...(.....configure.=.xdg_to
8860 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 plevel_configure,.........close.
8880 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 =.xdg_toplevel_close,....};.....
88a0 00 00 5f 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 .._static.void.xdg_surface_confi
88c0 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 gure(void.*data,.struct.xdg_surf
88e0 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 ace.*xdg_surface,.uint32_t.seria
8900 6c 29 00 00 00 01 7b 00 00 00 33 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 l)....{...3....xdg_surface_ack_c
8920 6f 6e 66 69 67 75 72 65 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 onfigure(xdg_surface,.serial);..
8940 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 21 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 ..............if.(!window_buffer
8960 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 ).{...C........window_buffer.=.c
8980 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f reate_buffer(window_width,.windo
89a0 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 66 72 61 6d 65 5f 64 6f 6e 65 w_height);..."........frame_done
89c0 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 (NULL,.NULL,.0);........}....}..
89e0 00 00 00 00 00 41 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 .....Astatic.const.struct.xdg_su
8a00 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 rface_listener.xdg_surface_liste
8a20 6e 65 72 20 3d 20 7b 00 00 00 27 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f ner.=.{...'.....configure.=.xdg_
8a40 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 48 surface_configure,....};.......H
8a60 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 28 76 6f 69 64 static.void.keyboard_keymap(void
8a80 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b .*data,.struct.wl_keyboard.*wl_k
8aa0 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eyboard,...G....................
8ac0 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 66 6f 72 6d 61 74 2c 20 69 6e 74 33 32 5f 74 ........uint32_t.format,.int32_t
8ae0 20 66 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 00 00 0e 20 20 20 20 .fd,.uint32_t.size)....{........
8b00 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f close(fd);....}.......Gstatic.vo
8b20 69 64 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 id.keyboard_enter(void.*data,.st
8b40 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 ruct.wl_keyboard.*wl_keyboard,..
8b60 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e .G...........................uin
8b80 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 t32_t.serial,.struct.wl_surface.
8ba0 2a 73 75 72 66 61 63 65 2c 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *surface,...1...................
8bc0 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 6b 65 79 73 29 00 00 ........struct.wl_array.*keys)..
8be0 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 ..{....}.......Gstatic.void.keyb
8c00 6f 61 72 64 5f 6c 65 61 76 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c oard_leave(void.*data,.struct.wl
8c20 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 _keyboard.*wl_keyboard,...G.....
8c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 ......................uint32_t.s
8c60 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 erial,.struct.wl_surface.*surfac
8c80 65 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 45 73 74 61 74 69 63 20 76 6f 69 64 20 e)....{....}.......Estatic.void.
8ca0 6b 65 79 62 6f 61 72 64 5f 6b 65 79 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 keyboard_key(void.*data,.struct.
8cc0 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 46 20 20 20 wl_keyboard.*wl_keyboard,...F...
8ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 ......................uint32_t.s
8d00 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 2c 20 75 69 6e 74 33 32 5f 74 20 6b erial,.uint32_t.time,.uint32_t.k
8d20 65 79 2c 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ey,...(.........................
8d40 75 69 6e 74 33 32 5f 74 20 73 74 61 74 65 29 00 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 uint32_t.state)....{...D....if.(
8d60 73 74 61 74 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 state.==.WL_KEYBOARD_KEY_STATE_P
8d80 52 45 53 53 45 44 20 26 26 20 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 RESSED.&&.pty_master.>=.0).{....
8da0 20 20 20 20 20 20 20 20 63 68 61 72 20 63 20 3d 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 ........char.c.=.0;.............
8dc0 00 00 23 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3e 3d 20 38 20 26 26 20 6b 65 79 20 3c ..#........if.(key.>=.8.&&.key.<
8de0 3d 20 39 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 28 6b 65 79 20 3d =.9).{...)............c.=.(key.=
8e00 3d 20 38 29 20 3f 20 30 78 37 66 20 3a 20 30 78 30 39 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d =.8).?.0x7f.:.0x09;...,........}
8e20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 .else.if.(key.>=.16.&&.key.<=.25
8e40 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 71 27 20 2b 20 28 6b 65 ).{...!............c.=.'q'.+.(ke
8e60 79 20 2d 20 31 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b y.-.16);...,........}.else.if.(k
8e80 65 79 20 3e 3d 20 32 36 20 26 26 20 6b 65 79 20 3c 3d 20 33 35 29 20 7b 00 00 00 21 20 20 20 20 ey.>=.26.&&.key.<=.35).{...!....
8ea0 20 20 20 20 20 20 20 20 63 20 3d 20 27 61 27 20 2b 20 28 6b 65 79 20 2d 20 32 36 29 3b 00 00 00 ........c.=.'a'.+.(key.-.26);...
8ec0 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 ,........}.else.if.(key.>=.36.&&
8ee0 20 6b 65 79 20 3c 3d 20 34 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d .key.<=.45).{...!............c.=
8f00 20 27 7a 27 20 2b 20 28 6b 65 79 20 2d 20 33 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 .'z'.+.(key.-.36);...,........}.
8f20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 else.if.(key.>=.46.&&.key.<=.55)
8f40 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 30 27 20 2b 20 28 6b 65 79 .{...!............c.=.'0'.+.(key
8f60 20 2d 20 34 36 29 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 .-.46);............}.else.if.(ke
8f80 79 20 3d 3d 20 35 37 29 20 7b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 20 y.==.57).{................c.=.'.
8fa0 27 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 ';............}.else.if.(key.==.
8fc0 35 38 29 20 7b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 5c 6e 27 3b 00 00 58).{................c.=.'\n';..
8fe0 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 10 20 20 20 20 20 ..........}.....................
9000 20 20 20 69 66 20 28 63 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 ...if.(c).{...%............write
9020 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 63 2c 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 (pty_master,.&c,.1);............
9040 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4b 73 74 61 74 69 63 20 76 6f }........}....}.......Kstatic.vo
9060 69 64 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 28 76 6f 69 64 20 2a 64 61 74 61 id.keyboard_modifiers(void.*data
9080 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 ,.struct.wl_keyboard.*wl_keyboar
90a0 64 2c 00 00 00 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d,...H..........................
90c0 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 6d .....uint32_t.serial,.uint32_t.m
90e0 6f 64 73 5f 64 65 70 72 65 73 73 65 64 2c 00 00 00 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ods_depressed,...K..............
9100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c .................uint32_t.mods_l
9120 61 74 63 68 65 64 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 6f 63 6b 65 64 2c 00 00 00 atched,.uint32_t.mods_locked,...
9140 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9160 75 69 6e 74 33 32 5f 74 20 67 72 6f 75 70 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 uint32_t.group)....{....}.......
9180 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 >static.const.struct.wl_keyboard
91a0 5f 6c 69 73 74 65 6e 65 72 20 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 _listener.keyboard_listener.=.{.
91c0 00 00 1e 20 20 20 20 2e 6b 65 79 6d 61 70 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 ........keymap.=.keyboard_keymap
91e0 2c 00 00 00 1c 20 20 20 20 2e 65 6e 74 65 72 20 3d 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 ,.........enter.=.keyboard_enter
9200 2c 00 00 00 1c 20 20 20 20 2e 6c 65 61 76 65 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 ,.........leave.=.keyboard_leave
9220 2c 00 00 00 18 20 20 20 20 2e 6b 65 79 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 2c 00 00 00 ,.........key.=.keyboard_key,...
9240 24 20 20 20 20 2e 6d 6f 64 69 66 69 65 72 73 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 $.....modifiers.=.keyboard_modif
9260 69 65 72 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 73 iers,....};.......Ystatic.void.s
9280 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 eat_capabilities(void.*data,.str
92a0 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 77 6c 5f 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 uct.wl_seat.*wl_seat,.uint32_t.c
92c0 61 70 61 62 69 6c 69 74 69 65 73 29 00 00 00 01 7b 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 apabilities)....{...5....if.(cap
92e0 61 62 69 6c 69 74 69 65 73 20 26 20 57 4c 5f 53 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b abilities.&.WL_SEAT_CAPABILITY_K
9300 45 59 42 4f 41 52 44 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d EYBOARD).{...1........keyboard.=
9320 20 77 6c 5f 73 65 61 74 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 28 77 6c 5f 73 65 61 74 29 3b 00 .wl_seat_get_keyboard(wl_seat);.
9340 00 00 45 20 20 20 20 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 ..E........wl_keyboard_add_liste
9360 6e 65 72 28 6b 65 79 62 6f 61 72 64 2c 20 26 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 ner(keyboard,.&keyboard_listener
9380 2c 20 4e 55 4c 4c 29 3b 00 00 00 23 20 20 20 20 20 20 20 20 70 75 74 73 28 22 6b 65 79 62 6f 61 ,.NULL);...#........puts("keyboa
93a0 72 64 20 61 76 61 69 6c 61 62 6c 65 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 rd.available");........}....}...
93c0 00 00 00 00 36 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 ....6static.const.struct.wl_seat
93e0 5f 6c 69 73 74 65 6e 65 72 20 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 26 20 _listener.seat_listener.=.{...&.
9400 20 20 20 2e 63 61 70 61 62 69 6c 69 74 69 65 73 20 3d 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 ....capabilities.=.seat_capabili
9420 74 69 65 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 43 73 74 61 74 69 63 20 76 6f 69 64 20 68 ties,....};.......Cstatic.void.h
9440 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 andle_global(void.*data,.struct.
9460 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 00 00 00 51 20 20 20 20 20 20 wl_registry.*registry,...Q......
9480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d ....................uint32_t.nam
94a0 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 69 6e 74 65 72 66 61 63 65 2c 20 75 69 6e 74 33 32 e,.const.char.*interface,.uint32
94c0 5f 74 20 76 65 72 73 69 6f 6e 29 00 00 00 01 7b 00 00 00 32 20 20 20 20 69 66 20 28 73 74 72 63 _t.version)....{...2....if.(strc
94e0 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 22 29 20 3d mp(interface,."wl_compositor").=
9500 3d 20 30 29 20 7b 00 00 00 53 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 77 =.0).{...S........compositor.=.w
9520 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 l_registry_bind(registry,.name,.
9540 26 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 69 6e 74 65 72 66 61 63 65 2c 20 34 29 3b 00 00 00 &wl_compositor_interface,.4);...
9560 32 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2....}.else.if.(strcmp(interface
9580 2c 20 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 73 ,."wl_shm").==.0).{...E........s
95a0 68 6d 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 hm.=.wl_registry_bind(registry,.
95c0 6e 61 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 37 name,.&wl_shm_interface,.1);...7
95e0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c ....}.else.if.(strcmp(interface,
9600 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 20 20 20 ."xdg_wm_base").==.0).{...N.....
9620 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 ...wm_base.=.wl_registry_bind(re
9640 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e 74 65 72 gistry,.name,.&xdg_wm_base_inter
9660 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 face,.1);...C........xdg_wm_base
9680 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 73 65 5f _add_listener(wm_base,.&wm_base_
96a0 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 33 20 20 20 20 7d 20 65 6c 73 65 20 69 listener,.NULL);...3....}.else.i
96c0 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 65 61 74 22 29 20 f.(strcmp(interface,."wl_seat").
96e0 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 74 20 3d 20 77 6c 5f 72 65 67 ==.0).{...G........seat.=.wl_reg
9700 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 istry_bind(registry,.name,.&wl_s
9720 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 20 20 20 20 20 20 20 20 77 6c eat_interface,.1);...9........wl
9740 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 74 2c 20 26 73 65 61 74 5f 6c _seat_add_listener(seat,.&seat_l
9760 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 istener,.NULL);........}....}...
9780 00 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 ....Ystatic.void.handle_global_r
97a0 65 6d 6f 76 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 emove(void.*data,.struct.wl_regi
97c0 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 29 00 00 stry.*registry,.uint32_t.name)..
97e0 00 01 7b 00 00 00 0f 20 20 20 20 28 76 6f 69 64 29 64 61 74 61 3b 00 00 00 13 20 20 20 20 28 76 ..{........(void)data;........(v
9800 6f 69 64 29 72 65 67 69 73 74 72 79 3b 00 00 00 0f 20 20 20 20 28 76 6f 69 64 29 6e 61 6d 65 3b oid)registry;........(void)name;
9820 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 ....}.......>static.const.struct
9840 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 72 65 67 69 73 74 72 79 5f 6c .wl_registry_listener.registry_l
9860 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1c 20 20 20 20 2e 67 6c 6f 62 61 6c 20 3d 20 68 61 6e istener.=.{.........global.=.han
9880 64 6c 65 5f 67 6c 6f 62 61 6c 2c 00 00 00 2a 20 20 20 20 2e 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 dle_global,...*.....global_remov
98a0 65 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 2c 00 00 00 02 7d 3b 00 e.=.handle_global_remove,....};.
98c0 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 76 .......static.void.cleanup_pty(v
98e0 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3e oid)....{........if.(shell_pid.>
9900 20 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 6b 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c .0).{...!........kill(shell_pid,
9920 20 53 49 47 54 45 52 4d 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 77 61 69 74 70 69 64 28 73 68 .SIGTERM);...$........waitpid(sh
9940 65 6c 6c 5f 70 69 64 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 ell_pid,.NULL,.0);........}.....
9960 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 ...........if.(pty_master.>=.0).
9980 7b 00 00 00 1a 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 {............close(pty_master);.
99a0 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 70 74 79 5f .......}................if.(pty_
99c0 73 6c 61 76 65 20 3e 3d 20 30 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 slave.>=.0).{............close(p
99e0 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a ty_slave);........}....}........
9a00 73 74 61 74 69 63 20 69 6e 74 20 73 65 74 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 static.int.setup_pty(void)....{.
9a20 00 00 18 20 20 20 20 73 74 72 75 63 74 20 74 65 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 00 04 20 .......struct.termios.term;.....
9a40 20 20 20 00 00 00 36 20 20 20 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 ......6....pty_master.=.open("/d
9a60 65 76 2f 70 74 6d 78 22 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 ev/ptmx",.O_RDWR.|.O_NOCTTY);...
9a80 19 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 7b 00 00 00 26 20 20 .....if.(pty_master.<.0).{...&..
9aa0 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 61 69 6c 65 64 20 74 6f 20 6f 70 65 6e 20 70 74 6d ......perror("failed.to.open.ptm
9ac0 78 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 x");............return.-1;......
9ae0 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 22 20 20 20 20 69 66 20 28 67 72 61 6e 74 70 74 28 70 ..}..........."....if.(grantpt(p
9b00 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 70 65 72 ty_master).<.0).{...!........per
9b20 72 6f 72 28 22 67 72 61 6e 74 70 74 20 66 61 69 6c 65 64 22 29 3b 00 00 00 12 20 20 20 20 20 20 ror("grantpt.failed");..........
9b40 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 ..return.-1;........}...........
9b60 23 20 20 20 20 69 66 20 28 75 6e 6c 6f 63 6b 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 #....if.(unlockpt(pty_master).<.
9b80 30 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 75 6e 6c 6f 63 6b 70 74 0).{..."........perror("unlockpt
9ba0 20 66 61 69 6c 65 64 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b .failed");............return.-1;
9bc0 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 3d 20 20 20 20 70 74 79 5f 73 6c 61 ........}...........=....pty_sla
9be0 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 74 65 72 29 2c 20 4f ve.=.open(ptsname(pty_master),.O
9c00 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 18 20 20 20 20 69 66 20 28 70 74 _RDWR.|.O_NOCTTY);........if.(pt
9c20 79 5f 73 6c 61 76 65 20 3c 20 30 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 y_slave.<.0).{...+........perror
9c40 28 22 66 61 69 6c 65 64 20 74 6f 20 6f 70 65 6e 20 73 6c 61 76 65 20 70 74 79 22 29 3b 00 00 00 ("failed.to.open.slave.pty");...
9c60 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 .........return.-1;........}....
9c80 20 20 20 20 00 00 00 20 20 20 20 20 74 63 67 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c ............tcgetattr(pty_slave,
9ca0 20 26 74 65 72 6d 29 3b 00 00 00 15 20 20 20 20 63 66 6d 61 6b 65 72 61 77 28 26 74 65 72 6d 29 .&term);........cfmakeraw(&term)
9cc0 3b 00 00 00 29 20 20 20 20 74 63 73 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 43 ;...)....tcsetattr(pty_slave,.TC
9ce0 53 41 4e 4f 57 2c 20 26 74 65 72 6d 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 SANOW,.&term);................re
9d00 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 turn.0;....}........static.void.
9d20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 20 20 20 73 68 65 6c run_shell(void)....{........shel
9d40 6c 5f 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 l_pid.=.fork();................i
9d60 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 f.(shell_pid.==.0).{............
9d80 73 65 74 73 69 64 28 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1a 20 20 20 20 20 20 20 setsid();.......................
9da0 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 .close(pty_master);.............
9dc0 00 00 27 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 49 4f 43 ..'........ioctl(pty_slave,.TIOC
9de0 53 43 54 54 59 2c 20 30 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1b 20 20 20 20 20 20 SCTTY,.0);......................
9e00 20 20 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 1b 20 20 20 20 20 20 20 ..dup2(pty_slave,.0);...........
9e20 20 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 31 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 .dup2(pty_slave,.1);............
9e40 64 75 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 32 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 dup2(pty_slave,.2);.............
9e60 00 00 19 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 08 ...........close(pty_slave);....
9e80 20 20 20 20 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 ...........&........char.*shell.
9ea0 3d 20 67 65 74 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 69 66 =.getenv("SHELL");............if
9ec0 20 28 21 73 68 65 6c 6c 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 73 68 65 6c 6c .(!shell).{................shell
9ee0 20 3d 20 22 2f 62 69 6e 2f 73 68 22 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 .=."/bin/sh";............}......
9f00 20 20 20 20 20 20 00 00 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 6c 6c 2c 20 73 ........."........execl(shell,.s
9f20 68 65 6c 6c 2c 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b hell,.NULL);............exit(1);
9f40 00 00 00 1f 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3c 20 30 ........}.else.if.(shell_pid.<.0
9f60 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 6f 72 6b 20 66 61 69 6c ).{............perror("fork.fail
9f80 65 64 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 63 6c ed");........}................cl
9fa0 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 13 20 20 20 20 70 74 79 5f 73 6c 61 76 65 ose(pty_slave);........pty_slave
9fc0 20 3d 20 2d 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 .=.-1;....}........int.main(void
9fe0 29 00 00 00 01 7b 00 00 00 21 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 )....{...!....struct.wl_registry
a000 20 2a 72 65 67 69 73 74 72 79 3b 00 00 00 16 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a .*registry;........struct.winsiz
a020 65 20 77 73 3b 00 00 00 04 20 20 20 20 00 00 00 10 20 20 20 20 69 6e 69 74 5f 66 6f 6e 74 28 29 e.ws;................init_font()
a040 3b 00 00 00 04 20 20 20 20 00 00 00 1d 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 43 48 4c 44 2c ;................signal(SIGCHLD,
a060 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 73 65 .SIG_IGN);................if.(se
a080 74 75 70 5f 70 74 79 28 29 20 3c 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 tup_pty().<.0).{............retu
a0a0 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 77 73 rn.1;........}................ws
a0c0 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 15 20 20 20 20 77 73 2e 77 73 5f 63 6f 6c .ws_row.=.rows;........ws.ws_col
a0e0 20 3d 20 63 6f 6c 73 3b 00 00 00 20 20 20 20 20 77 73 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 .=.cols;........ws.ws_xpixel.=.w
a100 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 21 20 20 20 20 77 73 2e 77 73 5f 79 70 69 78 65 6c indow_width;...!....ws.ws_ypixel
a120 20 3d 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 00 00 00 27 20 20 20 20 69 6f 63 74 6c 28 70 .=.window_height;...'....ioctl(p
a140 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 04 ty_master,.TIOCSWINSZ,.&ws);....
a160 20 20 20 20 00 00 00 10 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 29 3b 00 00 00 04 20 20 20 20 ............run_shell();........
a180 00 00 00 27 20 20 20 20 64 69 73 70 6c 61 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e ...'....display.=.wl_display_con
a1a0 6e 65 63 74 28 4e 55 4c 4c 29 3b 00 00 00 13 20 20 20 20 69 66 20 28 21 64 69 73 70 6c 61 79 29 nect(NULL);........if.(!display)
a1c0 20 7b 00 00 00 42 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 .{...B........fprintf(stderr,."f
a1e0 61 69 6c 65 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 20 77 61 79 6c 61 6e 64 20 64 69 73 70 ailed.to.connect.to.wayland.disp
a200 6c 61 79 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 lay\n");............cleanup_pty(
a220 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d );............return.1;........}
a240 00 00 00 04 20 20 20 20 00 00 00 30 20 20 20 20 72 65 67 69 73 74 72 79 20 3d 20 77 6c 5f 64 69 ...........0....registry.=.wl_di
a260 73 70 6c 61 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 64 69 73 70 6c 61 79 29 3b 00 00 00 41 splay_get_registry(display);...A
a280 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 72 65 67 ....wl_registry_add_listener(reg
a2a0 69 73 74 72 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 istry,.&registry_listener,.NULL)
a2c0 3b 00 00 00 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 72 6f 75 6e 64 74 72 69 70 28 64 69 ;..."....wl_display_roundtrip(di
a2e0 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 20 69 66 20 28 21 63 6f 6d 70 splay);...........*....if.(!comp
a300 6f 73 69 74 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 77 6d 5f 62 61 73 65 29 20 7b 00 00 00 ositor.||.!shm.||.!wm_base).{...
a320 47 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 G........fprintf(stderr,."failed
a340 20 74 6f 20 67 65 74 20 72 65 71 75 69 72 65 64 20 77 61 79 6c 61 6e 64 20 69 6e 74 65 72 66 61 .to.get.required.wayland.interfa
a360 63 65 73 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 ces\n");............cleanup_pty(
a380 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d );............return.1;........}
a3a0 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 66 61 63 65 20 3d 20 77 6c 5f 63 6f 6d ...........7....surface.=.wl_com
a3c0 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 61 63 65 28 63 6f 6d 70 6f 73 69 74 6f positor_create_surface(composito
a3e0 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 78 64 67 5f 77 6d 5f r);...@....xdg_surface.=.xdg_wm_
a400 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 65 28 77 6d 5f 62 61 73 65 2c 20 73 75 base_get_xdg_surface(wm_base,.su
a420 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 64 64 5f 6c rface);...G....xdg_surface_add_l
a440 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 26 78 64 67 5f 73 75 72 66 61 63 istener(xdg_surface,.&xdg_surfac
a460 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 04 20 20 20 20 00 00 00 35 20 20 e_listener,.NULL);...........5..
a480 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 67 65 74 5f 74 6f 70 ..toplevel.=.xdg_surface_get_top
a4a0 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 42 20 20 20 20 78 64 67 5f 74 level(xdg_surface);...B....xdg_t
a4c0 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 74 6f 70 6c 65 76 65 6c 2c 20 26 oplevel_add_listener(toplevel,.&
a4e0 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 40 20 20 20 toplevel_listener,.NULL);...@...
a500 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 69 74 6c 65 28 74 6f 70 6c 65 76 65 6c .xdg_toplevel_set_title(toplevel
a520 2c 20 22 73 69 6d 70 6c 65 20 77 61 79 6c 61 6e 64 20 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 ,."simple.wayland.terminal");...
a540 41 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 61 70 70 5f 69 64 28 74 6f 70 A....xdg_toplevel_set_app_id(top
a560 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 2d 77 61 79 6c 61 6e 64 2d 74 65 72 6d 69 6e 61 6c 22 level,."simple-wayland-terminal"
a580 29 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d );................wl_surface_com
a5a0 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 70 72 69 mit(surface);...........-....pri
a5c0 6e 74 66 28 22 74 65 72 6d 69 6e 61 6c 20 63 72 65 61 74 65 64 2e 20 72 75 6e 6e 69 6e 67 2e 2e ntf("terminal.created..running..
a5e0 2e 5c 6e 22 29 3b 00 00 00 3b 20 20 20 20 70 72 69 6e 74 66 28 22 74 79 70 65 20 63 6f 6d 6d 61 .\n");...;....printf("type.comma
a600 6e 64 73 20 69 6e 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 72 75 6e 20 61 20 73 68 65 6c 6c nds.in.the.window.to.run.a.shell
a620 5c 6e 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 3b 20 20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e \n");...........;....while.(runn
a640 69 6e 67 20 26 26 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 74 63 68 28 64 69 73 70 6c ing.&&.wl_display_dispatch(displ
a660 61 79 29 20 21 3d 20 2d 31 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 63 68 61 72 20 62 75 66 ay).!=.-1).{............char.buf
a680 5b 32 35 36 5d 3b 00 00 00 33 20 20 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 72 65 61 64 28 70 [256];...3........int.n.=.read(p
a6a0 74 79 5f 6d 61 73 74 65 72 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 00 00 00 ty_master,.buf,.sizeof(buf));...
a6c0 08 20 20 20 20 20 20 20 20 00 00 00 14 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 20 30 29 20 .....................if.(n.>.0).
a6e0 7b 00 00 00 12 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 3b 00 00 00 25 20 20 20 20 20 {................int.i;...%.....
a700 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 7b .......for.(i.=.0;.i.<.n;.i++).{
a720 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 5b 69 5d 20 3d ...%................if.(buf[i].=
a740 3d 20 27 5c 6e 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.'\n').{...!...................
a760 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cursor_x.=.0;..................
a780 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 ......cursor_y++;...+...........
a7a0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b .........if.(cursor_y.>=.rows).{
a7c0 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 ...,........................curs
a7e0 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 or_y.=.rows.-.1;................
a800 20 20 20 20 20 20 20 20 7d 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 ........}...,................}.e
a820 6c 73 65 20 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c 72 27 29 20 7b 00 00 00 21 20 20 20 lse.if.(buf[i].==.'\r').{...!...
a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 .................cursor_x.=.0;..
a860 00 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 75 66 .>................}.else.if.(buf
a880 5b 69 5d 20 3d 3d 20 27 5c 62 27 20 7c 7c 20 62 75 66 5b 69 5d 20 3d 3d 20 30 78 37 66 29 20 7b [i].==.'\b'.||.buf[i].==.0x7f).{
a8a0 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 ...'....................if.(curs
a8c0 6f 72 5f 78 20 3e 20 30 29 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or_x.>.0).{...#.................
a8e0 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 2d 2d 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 .......cursor_x--;..............
a900 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d ..........}...:................}
a920 20 65 6c 73 65 20 69 66 20 28 62 75 66 5b 69 5d 20 3e 3d 20 33 32 20 26 26 20 62 75 66 5b 69 5d .else.if.(buf[i].>=.32.&&.buf[i]
a940 20 3c 20 31 32 37 29 20 7b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .<.127).{.......................
a960 20 63 75 72 73 6f 72 5f 78 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cursor_x++;...+................
a980 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 25 20 ....if.(cursor_x.>=.cols).{...%.
a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 .......................cursor_x.
a9c0 3d 20 30 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.0;...#........................
a9e0 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cursor_y++;.../.................
aa00 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 .......if.(cursor_y.>=.rows).{..
aa20 00 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 .0............................cu
aa40 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 rsor_y.=.rows.-.1;..............
aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............}.................
aa80 20 20 20 20 20 20 20 7d 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 .......}....................}...
aaa0 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .............}............}.else
aac0 20 69 66 20 28 6e 20 3d 3d 20 30 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 72 75 .if.(n.==.0).{................ru
aae0 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d nning.=.0;............}........}
ab00 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 ................cleanup_pty();..
ab20 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b ..............if.(frame_callback
ab40 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 ).{...,........wl_callback_destr
ab60 6f 79 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 oy(frame_callback);........}....
ab80 20 20 20 20 00 00 00 13 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 7b 00 00 00 26 20 ............if.(keyboard).{...&.
aba0 20 20 20 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 62 6f .......wl_keyboard_destroy(keybo
abc0 61 72 64 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 0f 20 20 20 20 69 66 ard);........}................if
abe0 20 28 73 65 61 74 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 64 65 73 .(seat).{............wl_seat_des
ac00 74 72 6f 79 28 73 65 61 74 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 troy(seat);........}............
ac20 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 ....destroy_buffer();...........
ac40 23 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 #....xdg_toplevel_destroy(toplev
ac60 65 6c 29 3b 00 00 00 25 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 el);...%....xdg_surface_destroy(
ac80 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f xdg_surface);........wl_surface_
aca0 64 65 73 74 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 21 20 20 20 20 78 64 67 5f 77 6d 5f destroy(surface);...!....xdg_wm_
acc0 62 61 73 65 5f 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 26 20 20 20 20 77 6c base_destroy(wm_base);...&....wl
ace0 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b _compositor_destroy(compositor);
ad00 00 00 00 18 20 20 20 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 00 22 ........wl_shm_destroy(shm);..."
ad20 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 ....wl_registry_destroy(registry
ad40 29 3b 00 00 00 23 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 74 28 );...#....wl_display_disconnect(
ad60 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 display);................return.
ad80 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 4d 02 00 00 00 00 00 00 01 0;....}5...............M........
ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 36 3d 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 ...............6=..............5
adc0 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 ._..............................
ade0 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af40 00 00 00 00 00 6a 01 0d 79 04 01 00 00 00 07 00 f5 18 00 00 01 c8 00 00 00 00 00 00 00 00 00 00 .....j..y.......................
af60 00 01 00 00 00 01 20 f5 18 00 00 01 c9 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 36 00 ..............................6.
af80 00 00 00 00 00 00 00 00 00 00 01 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............+.................
afa0 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 f5 18 00 00 01 37 ........uint32_t.serial,.u.....7
afc0 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 9b 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ................................
afe0 00 0a 20 20 20 20 66 64 20 3d 20 63 f5 18 00 00 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 ......fd.=.c....................
b000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 ................................
b020 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9b 00 ......5.........................
b040 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 ................................
b060 00 00 00 00 9b 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 9b 00 00 00 2b 00 00 00 f9 0f 00 00 ........................+.......
b080 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 36 01 00 00 2b 00 ..........................6...+.
b0a0 00 00 00 00 00 00 00 00 00 00 92 00 00 00 01 00 00 00 f8 1f 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0c0 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 c8 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................................
b0e0 8a 00 00 00 01 00 00 00 f7 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4f 0e 00 00 00 00 00 00 ........./..............O.......
b100 35 81 5f d0 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 01 00 00 00 00 5._.............................
b120 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 ................................
b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b280 00 00 00 00 00 00 6a 01 0e 4d 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 ......j..M......................
b2a0 00 02 53 00 00 00 19 23 64 65 66 69 6e 65 20 5f 58 4f 50 45 4e 5f 53 4f 55 52 43 45 20 36 30 30 ..S....#define._XOPEN_SOURCE.600
b2c0 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 ....#include.<stdio.h>....#inclu
b2e0 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e de.<stdlib.h>....#include.<strin
b300 67 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 15 23 g.h>....#include.<unistd.h>....#
b320 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 include.<sys/mman.h>....#include
b340 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f .<sys/ioctl.h>....#include.<sys/
b360 77 61 69 74 2e 68 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 wait.h>....#include.<sys/stat.h>
b380 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 12 23 69 6e 63 6c 75 ....#include.<fcntl.h>....#inclu
b3a0 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c de.<errno.h>....#include.<signal
b3c0 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d 69 6f 73 2e 68 3e 00 00 00 1b 23 .h>....#include.<termios.h>....#
b3e0 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 26 23 69 include.<wayland-client.h>...&#i
b400 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f nclude."xdg-shell-client-protoco
b420 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 20 2a 64 l.h"......."struct.wl_display.*d
b440 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 6f 6d 70 isplay.=.NULL;...(struct.wl_comp
b460 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 22 73 74 ositor.*compositor.=.NULL;..."st
b480 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b ruct.wl_surface.*surface.=.NULL;
b4a0 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c 3b 00 00 ....struct.wl_shm.*shm.=.NULL;..
b4c0 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c 3b 00 00 ..struct.wl_seat.*seat.=.NULL;..
b4e0 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 20 3d .$struct.wl_keyboard.*keyboard.=
b500 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 77 6d .NULL;...#struct.xdg_wm_base.*wm
b520 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 _base.=.NULL;...'struct.xdg_surf
b540 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 74 72 75 ace.*xdg_surface.=.NULL;...%stru
b560 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e 55 4c 4c ct.xdg_toplevel.*toplevel.=.NULL
b580 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d 65 5f 63 ;...*struct.wl_callback.*frame_c
b5a0 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 69 6e allback.=.NULL;........static.in
b5c0 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e t.running.=.1;....static.int.win
b5e0 64 6f 77 5f 77 69 64 74 68 20 3d 20 38 30 30 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 77 dow_width.=.800;....static.int.w
b600 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 36 30 30 3b 00 00 00 1d 73 74 61 74 69 63 20 69 6e indow_height.=.600;....static.in
b620 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 63 20 69 t.pending_width.=.0;....static.i
b640 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 74 69 63 nt.pending_height.=.0;....static
b660 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 74 69 63 .int.needs_resize.=.0;...(static
b680 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c .unsigned.char.*pixel_data.=.NUL
b6a0 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 77 L;....static.struct.wl_buffer.*w
b6c0 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 74 61 74 indow_buffer.=.NULL;........stat
b6e0 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 00 1a 73 74 61 74 69 ic.int.pty_master.=.-1;....stati
b700 63 20 69 6e 74 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 2d 31 3b 00 00 00 1c 73 74 61 74 69 63 20 c.int.pty_slave.=.-1;....static.
b720 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 73 74 61 74 69 63 20 pid_t.shell_pid.=.-1;....static.
b740 69 6e 74 20 72 6f 77 73 20 3d 20 32 34 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6c int.rows.=.24;....static.int.col
b760 73 20 3d 20 38 30 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 77 69 64 74 68 s.=.80;....static.int.char_width
b780 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 68 65 69 67 68 74 20 .=.8;....static.int.char_height.
b7a0 3d 20 31 36 3b 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 =.16;.......%static.unsigned.cha
b7c0 72 20 66 6f 6e 74 5f 64 61 74 61 5b 34 30 39 36 5d 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 r.font_data[4096];....static.int
b7e0 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 .cursor_x.=.0;....static.int.cur
b800 73 6f 72 5f 79 20 3d 20 30 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e sor_y.=.0;........static.void.in
b820 69 74 5f 66 6f 6e 74 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0a 20 20 20 20 69 6e 74 20 69 3b it_font(void)....{........int.i;
b840 00 00 00 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 34 30 39 36 3b 20 69 2b ........for.(i.=.0;.i.<.4096;.i+
b860 2b 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 20 3d 20 30 +).{............font_data[i].=.0
b880 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 20 20 20 20 66 6f 72 20 28 69 ;........}................for.(i
b8a0 20 3d 20 33 32 3b 20 69 20 3c 20 31 32 37 3b 20 69 2b 2b 29 20 7b 00 00 00 2c 20 20 20 20 20 20 .=.32;.i.<.127;.i++).{...,......
b8c0 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 30 5d 20 3d ..font_data[(i.-.32).*.16.+.0].=
b8e0 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d .0x00;...,........font_data[(i.-
b900 20 33 32 29 20 2a 20 31 36 20 2b 20 31 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 .32).*.16.+.1].=.0x00;...,......
b920 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 32 5d 20 3d ..font_data[(i.-.32).*.16.+.2].=
b940 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d .0x00;...,........font_data[(i.-
b960 20 33 32 29 20 2a 20 31 36 20 2b 20 33 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 .32).*.16.+.3].=.0x00;...,......
b980 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 34 5d 20 3d ..font_data[(i.-.32).*.16.+.4].=
b9a0 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d .0x00;...,........font_data[(i.-
b9c0 20 33 32 29 20 2a 20 31 36 20 2b 20 35 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 .32).*.16.+.5].=.0x00;...,......
b9e0 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 36 5d 20 3d ..font_data[(i.-.32).*.16.+.6].=
ba00 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d .0x00;...,........font_data[(i.-
ba20 20 33 32 29 20 2a 20 31 36 20 2b 20 37 5d 20 3d 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 .32).*.16.+.7].=.0x00;...,......
ba40 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 38 5d 20 3d ..font_data[(i.-.32).*.16.+.8].=
ba60 20 30 78 30 30 3b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d .0x00;...,........font_data[(i.-
ba80 20 33 32 29 20 2a 20 31 36 20 2b 20 39 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 .32).*.16.+.9].=.0x00;...-......
baa0 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 30 5d 20 ..font_data[(i.-.32).*.16.+.10].
bac0 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 =.0x00;...-........font_data[(i.
bae0 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 31 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 -.32).*.16.+.11].=.0x00;...-....
bb00 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 32 ....font_data[(i.-.32).*.16.+.12
bb20 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 ].=.0x00;...-........font_data[(
bb40 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 33 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 i.-.32).*.16.+.13].=.0x00;...-..
bb60 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 ......font_data[(i.-.32).*.16.+.
bb80 31 34 5d 20 3d 20 30 78 30 30 3b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 14].=.0x00;...-........font_data
bba0 5b 28 69 20 2d 20 33 32 29 20 2a 20 31 36 20 2b 20 31 35 5d 20 3d 20 30 78 30 30 3b 00 00 00 05 [(i.-.32).*.16.+.15].=.0x00;....
bbc0 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4c 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 ....}....}.......Lstatic.void.dr
bbe0 61 77 5f 63 68 61 72 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 6e 74 aw_char(unsigned.char.*data,.int
bc00 20 70 69 74 63 68 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 63 68 61 72 20 63 68 29 00 00 .pitch,.int.x,.int.y,.char.ch)..
bc20 00 01 7b 00 00 00 14 20 20 20 20 69 6e 74 20 63 78 2c 20 63 79 2c 20 62 69 74 3b 00 00 00 19 20 ..{........int.cx,.cy,.bit;.....
bc40 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 67 6c 79 70 68 3b 00 00 00 04 20 20 20 20 ...unsigned.char.*glyph;........
bc60 00 00 00 1e 20 20 20 20 69 66 20 28 63 68 20 3c 20 33 32 20 7c 7c 20 63 68 20 3e 20 31 32 36 29 ........if.(ch.<.32.||.ch.>.126)
bc80 20 7b 00 00 00 10 20 20 20 20 20 20 20 20 63 68 20 3d 20 33 32 3b 00 00 00 05 20 20 20 20 7d 00 .{............ch.=.32;........}.
bca0 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 67 6c 79 70 68 20 3d 20 66 6f 6e 74 5f 64 61 74 61 ..........)....glyph.=.font_data
bcc0 20 2b 20 28 28 63 68 20 2d 20 33 32 29 20 2a 20 31 36 29 3b 00 00 00 04 20 20 20 20 00 00 00 21 .+.((ch.-.32).*.16);...........!
bce0 20 20 20 20 66 6f 72 20 28 63 79 20 3d 20 30 3b 20 63 79 20 3c 20 31 36 3b 20 63 79 2b 2b 29 20 ....for.(cy.=.0;.cy.<.16;.cy++).
bd00 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 78 20 3d 20 30 3b 20 63 78 20 3c 20 38 {...$........for.(cx.=.0;.cx.<.8
bd20 3b 20 63 78 2b 2b 29 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 62 69 74 20 3d 20 28 ;.cx++).{................bit.=.(
bd40 67 6c 79 70 68 5b 63 79 5d 20 3e 3e 20 28 37 20 2d 20 63 78 29 29 20 26 20 31 3b 00 00 00 16 20 glyph[cy].>>.(7.-.cx)).&.1;.....
bd60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 69 74 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 ...........if.(bit).{...........
bd80 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 78 20 3d 20 78 20 2b 20 63 78 3b 00 00 00 20 20 20 20 .........int.px.=.x.+.cx;.......
bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 79 20 3d 20 79 20 2b 20 63 79 3b 00 00 00 .............int.py.=.y.+.cy;...
bdc0 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 78 20 3e 3d 20 30 20 26 26 20 T................if.(px.>=.0.&&.
bde0 70 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 20 70 79 20 3e 3d 20 30 20 26 26 20 px.<.window_width.&&.py.>=.0.&&.
be00 70 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 34 20 20 20 20 20 20 20 py.<.window_height).{...4.......
be20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 70 79 20 2a 20 70 69 74 .............int.idx.=.(py.*.pit
be40 63 68 20 2b 20 70 78 29 20 2a 20 34 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch.+.px).*.4;...................
be60 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 35 35 3b 00 .....pixel_data[idx.+.0].=.255;.
be80 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 .......................pixel_dat
bea0 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 32 35 35 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 a[idx.+.1].=.255;...............
bec0 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 .........pixel_data[idx.+.2].=.2
bee0 35 35 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 55;........................pixel
bf00 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 11 20 20 20 20 20 20 20 _data[idx.+.3].=.255;...........
bf20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 .........}................}.....
bf40 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1d 73 74 .......}........}....}........st
bf60 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 65 6e 28 76 6f 69 64 29 00 00 00 01 7b atic.void.draw_screen(void)....{
bf80 00 00 00 23 20 20 20 20 69 6e 74 20 78 2c 20 79 2c 20 70 69 74 63 68 20 3d 20 77 69 6e 64 6f 77 ...#....int.x,.y,.pitch.=.window
bfa0 5f 77 69 64 74 68 3b 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 66 6f 72 20 28 79 20 3d 20 _width;...........)....for.(y.=.
bfc0 30 3b 20 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 20 79 2b 2b 29 20 7b 00 00 00 2c 0;.y.<.window_height;.y++).{...,
bfe0 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 77 69 6e 64 6f 77 5f 77 ........for.(x.=.0;.x.<.window_w
c000 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 idth;.x++).{...*............int.
c020 69 64 78 20 3d 20 28 79 20 2a 20 70 69 74 63 68 20 2b 20 78 29 20 2a 20 34 3b 00 00 00 24 20 20 idx.=.(y.*.pitch.+.x).*.4;...$..
c040 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 ..........pixel_data[idx.+.0].=.
c060 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 0;...$............pixel_data[idx
c080 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f .+.1].=.0;...%............pixel_
c0a0 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 33 32 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 data[idx.+.2].=.32;...&.........
c0c0 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 ...pixel_data[idx.+.3].=.255;...
c0e0 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 20 .........}........}.............
c100 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b 00 ...for.(y.=.0;.y.<.rows;.y++).{.
c120 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 63 6f 6c 73 3b ..$........for.(x.=.0;.x.<.cols;
c140 20 78 2b 2b 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 64 72 61 77 5f 63 68 61 72 .x++).{...=............draw_char
c160 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 70 69 74 63 68 2c 20 78 20 2a 20 38 2c 20 79 20 2a 20 31 (pixel_data,.pitch,.x.*.8,.y.*.1
c180 36 2c 20 27 20 27 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 6,.'.');............}........}..
c1a0 00 04 20 20 20 20 00 00 00 43 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 70 69 78 65 6c 5f 64 61 .........C....draw_char(pixel_da
c1c0 74 61 2c 20 70 69 74 63 68 2c 20 63 75 72 73 6f 72 5f 78 20 2a 20 38 2c 20 63 75 72 73 6f 72 5f ta,.pitch,.cursor_x.*.8,.cursor_
c1e0 79 20 2a 20 31 36 2c 20 27 5f 27 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 27 73 74 61 74 69 63 y.*.16,.'_');....}.......'static
c200 20 69 6e 74 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 5f 74 20 73 69 7a 65 .int.create_shm_file(size_t.size
c220 29 00 00 00 01 7b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b 20 20 20 20 63 68 61 )....{........int.fd;...+....cha
c240 72 20 74 65 6d 70 6c 61 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 68 6d 2d 58 58 58 58 r.template[].=."/tmp/wl-shm-XXXX
c260 58 58 22 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b 73 74 65 6d 70 XX";................fd.=.mkstemp
c280 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 7b (template);........if.(fd.<.0).{
c2a0 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 ............return.-1;........}.
c2c0 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 28 66 64 2c ..........)....if.(ftruncate(fd,
c2e0 20 28 6f 66 66 5f 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 .(off_t)size).<.0).{............
c300 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d close(fd);............unlink(tem
c320 70 6c 61 74 65 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 plate);............return.-1;...
c340 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d .....}................unlink(tem
c360 70 6c 61 74 65 29 3b 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 01 7d 00 00 plate);........return.fd;....}..
c380 00 00 00 00 00 3d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 63 .....=static.struct.wl_buffer.*c
c3a0 72 65 61 74 65 5f 62 75 66 66 65 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 reate_buffer(int.width,.int.heig
c3c0 68 74 29 00 00 00 01 7b 00 00 00 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 64 ht)....{........int.stride.=.wid
c3e0 74 68 20 2a 20 34 3b 00 00 00 1f 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 73 74 72 69 64 65 th.*.4;........int.size.=.stride
c400 20 2a 20 68 65 69 67 68 74 3b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 1d 20 20 20 .*.height;........int.fd;.......
c420 20 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 3b 00 00 00 1d 20 20 .struct.wl_shm_pool.*pool;......
c440 20 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 72 3b 00 00 00 04 20 ..struct.wl_buffer.*buffer;.....
c460 20 20 20 00 00 00 1f 20 20 20 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 ...........fd.=.create_shm_file(
c480 73 69 7a 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 7b 00 00 00 4c 20 size);........if.(fd.<.0).{...L.
c4a0 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 .......fprintf(stderr,."failed.t
c4c0 6f 20 63 72 65 61 74 65 20 73 68 6d 20 66 69 6c 65 3a 20 25 73 5c 6e 22 2c 20 73 74 72 65 72 72 o.create.shm.file:.%s\n",.strerr
c4e0 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 55 or(errno));............return.NU
c500 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 4d 20 20 20 20 70 69 78 65 LL;........}...........M....pixe
c520 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 4c 4c 2c 20 73 69 7a 65 2c 20 50 52 4f 54 5f 52 l_data.=.mmap(NULL,.size,.PROT_R
c540 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 2c 20 4d 41 50 5f 53 48 41 52 45 44 2c 20 66 64 EAD.|.PROT_WRITE,.MAP_SHARED,.fd
c560 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 61 74 61 20 3d 3d 20 4d ,.0);...#....if.(pixel_data.==.M
c580 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 AP_FAILED).{...E........fprintf(
c5a0 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 6d 6d 61 70 20 73 68 6d 3a 20 25 73 5c stderr,."failed.to.mmap.shm:.%s\
c5c0 6e 22 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 00 00 00 12 20 20 20 20 20 20 20 n",.strerror(errno));...........
c5e0 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 55 .close(fd);............return.NU
c600 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 64 72 61 77 LL;........}................draw
c620 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 70 6f 6f 6c 20 3d _screen();...........-....pool.=
c640 20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 66 64 2c 20 73 69 7a .wl_shm_create_pool(shm,.fd,.siz
c660 65 29 3b 00 00 00 46 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f e);...F....buffer.=.wl_shm_pool_
c680 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 77 69 64 74 68 2c 20 68 65 create_buffer(pool,.0,.width,.he
c6a0 69 67 68 74 2c 20 73 74 72 69 64 65 2c 00 00 00 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ight,.stride,...?...............
c6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 4c 5f 53 48 4d 5f 46 ........................WL_SHM_F
c6e0 4f 52 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 6c 5f 73 68 6d 5f 70 ORMAT_ARGB8888);........wl_shm_p
c700 6f 6f 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 ool_destroy(pool);........close(
c720 66 64 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 66 65 fd);................return.buffe
c740 72 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 r;....}........static.void.destr
c760 6f 79 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 oy_buffer(void)....{........if.(
c780 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 77 6c 5f 62 window_buffer).{...)........wl_b
c7a0 75 66 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 3b 00 00 00 uffer_destroy(window_buffer);...
c7c0 1d 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 .........window_buffer.=.NULL;..
c7e0 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 69 66 20 28 70 69 78 65 6c ......}................if.(pixel
c800 5f 64 61 74 61 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 28 70 69 78 65 6c _data).{...=........munmap(pixel
c820 5f 64 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 6f 77 5f 68 65 69 _data,.window_width.*.window_hei
c840 67 68 74 20 2a 20 34 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 ght.*.4);............pixel_data.
c860 3d 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 =.NULL;........}....}.......0sta
c880 74 69 63 20 76 6f 69 64 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 20 77 69 64 74 68 tic.void.resize_window(int.width
c8a0 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 24 20 20 20 20 69 66 20 28 77 69 ,.int.height)....{...$....if.(wi
c8c0 64 74 68 20 3c 3d 20 30 20 7c 7c 20 68 65 69 67 68 74 20 3c 3d 20 30 29 20 7b 00 00 00 0f 20 20 dth.<=.0.||.height.<=.0).{......
c8e0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 ......return;........}..........
c900 00 15 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 38 3b 00 00 00 17 20 20 20 20 72 ......cols.=.width./.8;........r
c920 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 31 36 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 ows.=.height./.16;..............
c940 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 31 29 20 63 6f 6c 73 20 3d 20 31 3b 00 00 00 1b 20 20 20 ..if.(cols.<.1).cols.=.1;.......
c960 20 69 66 20 28 72 6f 77 73 20 3c 20 31 29 20 72 6f 77 73 20 3d 20 31 3b 00 00 00 04 20 20 20 20 .if.(rows.<.1).rows.=.1;........
c980 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 19 20 20 20 ........destroy_buffer();.......
c9a0 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b 00 00 00 1b 20 20 20 20 77 69 .window_width.=.width;........wi
c9c0 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 3b 00 00 00 3f 20 20 20 20 77 69 6e ndow_height.=.height;...?....win
c9e0 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f dow_buffer.=.create_buffer(windo
ca00 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 15 20 20 20 20 w_width,.window_height);........
ca20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 needs_resize.=.0;...............
ca40 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 .if.(pty_master.>=.0).{.........
ca60 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 3b 00 00 00 19 20 20 20 20 20 20 20 ...struct.winsize.ws;...........
ca80 20 77 73 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 19 20 20 20 20 20 20 20 20 77 73 .ws.ws_row.=.rows;............ws
caa0 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c 73 3b 00 00 00 1d 20 20 20 20 20 20 20 20 77 73 2e 77 73 .ws_col.=.cols;............ws.ws
cac0 5f 78 70 69 78 65 6c 20 3d 20 77 69 64 74 68 3b 00 00 00 1e 20 20 20 20 20 20 20 20 77 73 2e 77 _xpixel.=.width;............ws.w
cae0 73 5f 79 70 69 78 65 6c 20 3d 20 68 65 69 67 68 74 3b 00 00 00 2b 20 20 20 20 20 20 20 20 69 6f s_ypixel.=.height;...+........io
cb00 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 ctl(pty_master,.TIOCSWINSZ,.&ws)
cb20 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4f 73 74 61 74 69 63 20 76 6f ;........}....}.......Ostatic.vo
cb40 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 id.frame_done(void.*data,.struct
cb60 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 63 61 6c 6c 62 61 63 6b 2c 20 75 69 6e 74 33 32 5f 74 .wl_callback.*callback,.uint32_t
cb80 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 13 20 20 20 20 69 66 20 28 63 61 6c 6c 62 61 63 6b 29 .time)....{........if.(callback)
cba0 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f .{...&........wl_callback_destro
cbc0 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 y(callback);........}...........
cbe0 17 20 20 20 20 69 66 20 28 6e 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 20 20 .....if.(needs_resize).{...5....
cc00 20 20 20 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 2c ....resize_window(pending_width,
cc20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e .pending_height);............pen
cc40 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 ding_width.=.0;............pendi
cc60 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 ng_height.=.0;........}.........
cc80 00 00 12 20 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 .......draw_screen();...........
cca0 18 20 20 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 38 20 20 20 .....if.(window_buffer).{...8...
ccc0 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 61 74 74 61 63 68 28 73 75 72 66 61 63 65 2c 20 .....wl_surface_attach(surface,.
cce0 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 2c 20 30 2c 20 30 29 3b 00 00 00 46 20 20 20 20 20 20 20 window_buffer,.0,.0);...F.......
cd00 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 61 6d 61 67 65 28 73 75 72 66 61 63 65 2c 20 30 2c 20 30 .wl_surface_damage(surface,.0,.0
cd20 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 ,.window_width,.window_height);.
cd40 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 3f 20 20 20 20 73 74 61 74 69 63 20 63 .......}...........?....static.c
cd60 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 6e 65 72 onst.struct.wl_callback_listener
cd80 20 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 2e .frame_listener.=.{.............
cda0 64 6f 6e 65 20 3d 20 66 72 61 6d 65 5f 64 6f 6e 65 00 00 00 06 20 20 20 20 7d 3b 00 00 00 04 20 done.=.frame_done........};.....
cdc0 20 20 20 00 00 00 2f 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 77 6c 5f 73 ....../....frame_callback.=.wl_s
cde0 75 72 66 61 63 65 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 00 00 44 20 20 20 20 77 6c urface_frame(surface);...D....wl
ce00 5f 63 61 6c 6c 62 61 63 6b 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 61 6d 65 5f 63 61 6c _callback_add_listener(frame_cal
ce20 6c 62 61 63 6b 2c 20 26 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 lback,.&frame_listener,.NULL);..
ce40 00 1f 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 ......wl_surface_commit(surface)
ce60 3b 00 00 00 01 7d 00 00 00 00 00 00 00 5a 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 77 6d ;....}.......Zstatic.void.xdg_wm
ce80 5f 62 61 73 65 5f 70 69 6e 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 _base_ping(void.*data,.struct.xd
cea0 67 5f 77 6d 5f 62 61 73 65 20 2a 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 75 69 6e 74 33 32 5f 74 g_wm_base.*xdg_wm_base,.uint32_t
cec0 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 2a 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 .serial)....{...*....xdg_wm_base
cee0 5f 70 6f 6e 67 28 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 01 7d _pong(xdg_wm_base,.serial);....}
cf00 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f .......=static.const.struct.xdg_
cf20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 wm_base_listener.wm_base_listene
cf40 72 20 3d 20 7b 00 00 00 1d 20 20 20 20 2e 70 69 6e 67 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 r.=.{.........ping.=.xdg_wm_base
cf60 5f 70 69 6e 67 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 51 73 74 61 74 69 63 20 76 6f 69 64 20 _ping,....};.......Qstatic.void.
cf80 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 xdg_toplevel_configure(void.*dat
cfa0 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 64 67 5f 74 6f 70 6c a,.struct.xdg_toplevel.*xdg_topl
cfc0 65 76 65 6c 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 evel,...Q.......................
cfe0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e 74 33 32 5f 74 20 68 ............int32_t.w,.int32_t.h
d000 2c 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 29 00 00 00 01 7b 00 ,.struct.wl_array.*states)....{.
d020 00 00 19 20 20 20 20 69 66 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 29 20 7b 00 00 00 1a .......if.(w.>.0.&&.h.>.0).{....
d040 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 3b 00 00 00 1b 20 20 ........pending_width.=.w;......
d060 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b 00 00 00 19 20 20 20 ......pending_height.=.h;.......
d080 20 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 05 20 20 20 20 7d 00 .....needs_resize.=.1;........}.
d0a0 00 00 01 7d 00 00 00 00 00 00 00 4d 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c ...}.......Mstatic.void.xdg_topl
d0c0 65 76 65 6c 5f 63 6c 6f 73 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 evel_close(void.*data,.struct.xd
d0e0 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 29 00 00 00 01 7b 00 00 g_toplevel.*xdg_toplevel)....{..
d100 00 1c 20 20 20 20 70 75 74 73 28 22 74 65 72 6d 69 6e 61 6c 20 63 6c 6f 73 65 64 22 29 3b 00 00 ......puts("terminal.closed");..
d120 00 10 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3f 73 ......running.=.0;....}.......?s
d140 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f tatic.const.struct.xdg_toplevel_
d160 6c 69 73 74 65 6e 65 72 20 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 listener.toplevel_listener.=.{..
d180 00 28 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f .(.....configure.=.xdg_toplevel_
d1a0 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 78 64 67 5f 74 configure,.........close.=.xdg_t
d1c0 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 5f 73 74 61 74 oplevel_close,....};......._stat
d1e0 69 63 20 76 6f 69 64 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f ic.void.xdg_surface_configure(vo
d200 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 78 64 id.*data,.struct.xdg_surface.*xd
d220 67 5f 73 75 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b g_surface,.uint32_t.serial)....{
d240 00 00 00 33 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 72 ...3....xdg_surface_ack_configur
d260 65 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 04 20 20 20 20 00 e(xdg_surface,.serial);.........
d280 00 00 19 20 20 20 20 69 66 20 28 21 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 43 .......if.(!window_buffer).{...C
d2a0 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 ........window_buffer.=.create_b
d2c0 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 uffer(window_width,.window_heigh
d2e0 74 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 66 72 61 6d 65 5f 64 6f 6e 65 28 4e 55 4c 4c 2c 20 t);..."........frame_done(NULL,.
d300 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 41 73 NULL,.0);........}....}.......As
d320 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c tatic.const.struct.xdg_surface_l
d340 69 73 74 65 6e 65 72 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b istener.xdg_surface_listener.=.{
d360 00 00 00 27 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 ...'.....configure.=.xdg_surface
d380 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 48 73 74 61 74 69 63 20 _configure,....};.......Hstatic.
d3a0 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 28 76 6f 69 64 20 2a 64 61 74 61 2c void.keyboard_keymap(void.*data,
d3c0 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 .struct.wl_keyboard.*wl_keyboard
d3e0 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,...G...........................
d400 20 75 69 6e 74 33 32 5f 74 20 66 6f 72 6d 61 74 2c 20 69 6e 74 33 32 5f 74 20 66 64 2c 20 75 69 .uint32_t.format,.int32_t.fd,.ui
d420 6e 74 33 32 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 nt32_t.size)....{........close(f
d440 64 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 d);....}.......Gstatic.void.keyb
d460 6f 61 72 64 5f 65 6e 74 65 72 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c oard_enter(void.*data,.struct.wl
d480 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 _keyboard.*wl_keyboard,...G.....
d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 ......................uint32_t.s
d4c0 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 erial,.struct.wl_surface.*surfac
d4e0 65 2c 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e,...1..........................
d500 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 6b 65 79 73 29 00 00 00 01 7b 00 00 00 01 .struct.wl_array.*keys)....{....
d520 7d 00 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6c 65 }.......Gstatic.void.keyboard_le
d540 61 76 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 ave(void.*data,.struct.wl_keyboa
d560 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 rd.*wl_keyboard,...G............
d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 ...............uint32_t.serial,.
d5a0 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 29 00 00 00 01 7b struct.wl_surface.*surface)....{
d5c0 00 00 00 01 7d 00 00 00 00 00 00 00 45 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 ....}.......Estatic.void.keyboar
d5e0 64 5f 6b 65 79 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 d_key(void.*data,.struct.wl_keyb
d600 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 46 20 20 20 20 20 20 20 20 20 20 oard.*wl_keyboard,...F..........
d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 ...............uint32_t.serial,.
d640 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 00 00 00 28 uint32_t.time,.uint32_t.key,...(
d660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f .........................uint32_
d680 74 20 73 74 61 74 65 29 00 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 65 20 3d t.state)....{...D....if.(state.=
d6a0 3d 20 57 4c 5f 4b 45 59 42 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 45 44 20 =.WL_KEYBOARD_KEY_STATE_PRESSED.
d6c0 26 26 20 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 &&.pty_master.>=.0).{...........
d6e0 20 63 68 61 72 20 63 20 3d 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 23 20 20 20 20 .char.c.=.0;...............#....
d700 20 20 20 20 69 66 20 28 6b 65 79 20 3e 3d 20 38 20 26 26 20 6b 65 79 20 3c 3d 20 39 29 20 7b 00 ....if.(key.>=.8.&&.key.<=.9).{.
d720 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 28 6b 65 79 20 3d 3d 20 38 29 20 3f 20 ..)............c.=.(key.==.8).?.
d740 30 78 37 66 20 3a 20 30 78 30 39 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 0x7f.:.0x09;...,........}.else.i
d760 66 20 28 6b 65 79 20 3e 3d 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 29 20 7b 00 00 00 21 f.(key.>=.16.&&.key.<=.25).{...!
d780 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 71 27 20 2b 20 28 6b 65 79 20 2d 20 31 36 29 ............c.=.'q'.+.(key.-.16)
d7a0 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 32 ;...,........}.else.if.(key.>=.2
d7c0 36 20 26 26 20 6b 65 79 20 3c 3d 20 33 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 6.&&.key.<=.35).{...!...........
d7e0 20 63 20 3d 20 27 61 27 20 2b 20 28 6b 65 79 20 2d 20 32 36 29 3b 00 00 00 2c 20 20 20 20 20 20 .c.=.'a'.+.(key.-.26);...,......
d800 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d ..}.else.if.(key.>=.36.&&.key.<=
d820 20 34 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 7a 27 20 2b 20 .45).{...!............c.=.'z'.+.
d840 28 6b 65 79 20 2d 20 33 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 (key.-.36);...,........}.else.if
d860 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 7b 00 00 00 21 20 .(key.>=.46.&&.key.<=.55).{...!.
d880 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 30 27 20 2b 20 28 6b 65 79 20 2d 20 34 36 29 3b ...........c.=.'0'.+.(key.-.46);
d8a0 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 37 ............}.else.if.(key.==.57
d8c0 29 20 7b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 20 27 3b 00 00 00 1f 20 ).{................c.=.'.';.....
d8e0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 38 29 20 7b 00 00 .......}.else.if.(key.==.58).{..
d900 00 15 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 09 20 20 20 20 20 ..............c.=.'\n';.........
d920 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 10 20 20 20 20 20 20 20 20 69 66 20 28 ...}........................if.(
d940 63 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 28 70 74 79 5f 6d 61 c).{...%............write(pty_ma
d960 73 74 65 72 2c 20 26 63 2c 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 ster,.&c,.1);............}......
d980 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4b 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 ..}....}.......Kstatic.void.keyb
d9a0 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 oard_modifiers(void.*data,.struc
d9c0 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 48 20 t.wl_keyboard.*wl_keyboard,...H.
d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 ..............................ui
da00 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 64 65 70 nt32_t.serial,.uint32_t.mods_dep
da20 72 65 73 73 65 64 2c 00 00 00 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ressed,...K.....................
da40 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 61 74 63 68 65 64 2c ..........uint32_t.mods_latched,
da60 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 6f 63 6b 65 64 2c 00 00 00 2e 20 20 20 20 20 20 .uint32_t.mods_locked,..........
da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f .........................uint32_
daa0 74 20 67 72 6f 75 70 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 t.group)....{....}.......>static
dac0 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e .const.struct.wl_keyboard_listen
dae0 65 72 20 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1e 20 20 20 20 er.keyboard_listener.=.{........
db00 2e 6b 65 79 6d 61 70 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 2c 00 00 00 1c 20 20 .keymap.=.keyboard_keymap,......
db20 20 20 2e 65 6e 74 65 72 20 3d 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 2c 00 00 00 1c 20 20 ...enter.=.keyboard_enter,......
db40 20 20 2e 6c 65 61 76 65 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 2c 00 00 00 18 20 20 ...leave.=.keyboard_leave,......
db60 20 20 2e 6b 65 79 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 2c 00 00 00 24 20 20 20 20 2e 6d ...key.=.keyboard_key,...$.....m
db80 6f 64 69 66 69 65 72 73 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 2c 00 00 odifiers.=.keyboard_modifiers,..
dba0 00 02 7d 3b 00 00 00 00 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 61 70 ..};.......Ystatic.void.seat_cap
dbc0 61 62 69 6c 69 74 69 65 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f abilities(void.*data,.struct.wl_
dbe0 73 65 61 74 20 2a 77 6c 5f 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 61 62 69 6c 69 seat.*wl_seat,.uint32_t.capabili
dc00 74 69 65 73 29 00 00 00 01 7b 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 61 62 69 6c 69 74 69 ties)....{...5....if.(capabiliti
dc20 65 73 20 26 20 57 4c 5f 53 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b 45 59 42 4f 41 52 44 es.&.WL_SEAT_CAPABILITY_KEYBOARD
dc40 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d 20 77 6c 5f 73 65 61 ).{...1........keyboard.=.wl_sea
dc60 74 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 28 77 6c 5f 73 65 61 74 29 3b 00 00 00 45 20 20 20 20 t_get_keyboard(wl_seat);...E....
dc80 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 6b 65 79 ....wl_keyboard_add_listener(key
dca0 62 6f 61 72 64 2c 20 26 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 board,.&keyboard_listener,.NULL)
dcc0 3b 00 00 00 23 20 20 20 20 20 20 20 20 70 75 74 73 28 22 6b 65 79 62 6f 61 72 64 20 61 76 61 69 ;...#........puts("keyboard.avai
dce0 6c 61 62 6c 65 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 36 73 74 lable");........}....}.......6st
dd00 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 5f 6c 69 73 74 65 6e atic.const.struct.wl_seat_listen
dd20 65 72 20 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 26 20 20 20 20 2e 63 61 70 er.seat_listener.=.{...&.....cap
dd40 61 62 69 6c 69 74 69 65 73 20 3d 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 2c 00 00 abilities.=.seat_capabilities,..
dd60 00 02 7d 3b 00 00 00 00 00 00 00 43 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 ..};.......Cstatic.void.handle_g
dd80 6c 6f 62 61 6c 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 lobal(void.*data,.struct.wl_regi
dda0 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 stry.*registry,...Q.............
ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 .............uint32_t.name,.cons
dde0 74 20 63 68 61 72 20 2a 69 6e 74 65 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 t.char.*interface,.uint32_t.vers
de00 69 6f 6e 29 00 00 00 01 7b 00 00 00 32 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 ion)....{...2....if.(strcmp(inte
de20 72 66 61 63 65 2c 20 22 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 22 29 20 3d 3d 20 30 29 20 7b 00 rface,."wl_compositor").==.0).{.
de40 00 00 53 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 ..S........compositor.=.wl_regis
de60 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d try_bind(registry,.name,.&wl_com
de80 70 6f 73 69 74 6f 72 5f 69 6e 74 65 72 66 61 63 65 2c 20 34 29 3b 00 00 00 32 20 20 20 20 7d 20 positor_interface,.4);...2....}.
dea0 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 else.if.(strcmp(interface,."wl_s
dec0 68 6d 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 73 68 6d 20 3d 20 77 6c hm").==.0).{...E........shm.=.wl
dee0 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 _registry_bind(registry,.name,.&
df00 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 37 20 20 20 20 7d 20 65 wl_shm_interface,.1);...7....}.e
df20 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 78 64 67 5f 77 lse.if.(strcmp(interface,."xdg_w
df40 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 20 20 20 20 20 20 77 6d 5f 62 m_base").==.0).{...N........wm_b
df60 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c ase.=.wl_registry_bind(registry,
df80 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 .name,.&xdg_wm_base_interface,.1
dfa0 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 61 64 64 5f 6c 69 );...C........xdg_wm_base_add_li
dfc0 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 stener(wm_base,.&wm_base_listene
dfe0 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 33 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 r,.NULL);...3....}.else.if.(strc
e000 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 65 61 74 22 29 20 3d 3d 20 30 29 20 7b mp(interface,."wl_seat").==.0).{
e020 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 74 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 ...G........seat.=.wl_registry_b
e040 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 65 61 74 5f 69 6e 74 ind(registry,.name,.&wl_seat_int
e060 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 61 erface,.1);...9........wl_seat_a
e080 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 74 2c 20 26 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 dd_listener(seat,.&seat_listener
e0a0 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 59 73 74 ,.NULL);........}....}.......Yst
e0c0 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 28 76 atic.void.handle_global_remove(v
e0e0 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 oid.*data,.struct.wl_registry.*r
e100 65 67 69 73 74 72 79 2c 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 29 00 00 00 01 7b 00 00 00 0f egistry,.uint32_t.name)....{....
e120 20 20 20 20 28 76 6f 69 64 29 64 61 74 61 3b 00 00 00 13 20 20 20 20 28 76 6f 69 64 29 72 65 67 ....(void)data;........(void)reg
e140 69 73 74 72 79 3b 00 00 00 0f 20 20 20 20 28 76 6f 69 64 29 6e 61 6d 65 3b 00 00 00 01 7d 00 00 istry;........(void)name;....}..
e160 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 .....>static.const.struct.wl_reg
e180 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 istry_listener.registry_listener
e1a0 20 3d 20 7b 00 00 00 1c 20 20 20 20 2e 67 6c 6f 62 61 6c 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f .=.{.........global.=.handle_glo
e1c0 62 61 6c 2c 00 00 00 2a 20 20 20 20 2e 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 20 3d 20 68 61 6e bal,...*.....global_remove.=.han
e1e0 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1d dle_global_remove,....};........
e200 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 static.void.cleanup_pty(void)...
e220 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3e 20 30 29 20 7b 00 00 .{........if.(shell_pid.>.0).{..
e240 00 21 20 20 20 20 20 20 20 20 6b 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c 20 53 49 47 54 45 52 .!........kill(shell_pid,.SIGTER
e260 4d 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 77 61 69 74 70 69 64 28 73 68 65 6c 6c 5f 70 69 64 M);...$........waitpid(shell_pid
e280 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1a ,.NULL,.0);........}............
e2a0 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 ....if.(pty_master.>=.0).{......
e2c0 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 05 20 20 20 20 ......close(pty_master);........
e2e0 7d 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 70 74 79 5f 73 6c 61 76 65 20 3e }................if.(pty_slave.>
e300 3d 20 30 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 =.0).{............close(pty_slav
e320 65 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a 73 74 61 74 69 63 20 e);........}....}........static.
e340 69 6e 74 20 73 65 74 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 int.setup_pty(void)....{........
e360 73 74 72 75 63 74 20 74 65 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 00 04 20 20 20 20 00 00 00 36 struct.termios.term;...........6
e380 20 20 20 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 2f 70 74 6d 78 ....pty_master.=.open("/dev/ptmx
e3a0 22 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 19 20 20 20 20 69 66 ",.O_RDWR.|.O_NOCTTY);........if
e3c0 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 70 .(pty_master.<.0).{...&........p
e3e0 65 72 72 6f 72 28 22 66 61 69 6c 65 64 20 74 6f 20 6f 70 65 6e 20 70 74 6d 78 22 29 3b 00 00 00 error("failed.to.open.ptmx");...
e400 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 .........return.-1;........}....
e420 20 20 20 20 00 00 00 22 20 20 20 20 69 66 20 28 67 72 61 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 ......."....if.(grantpt(pty_mast
e440 65 72 29 20 3c 20 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 67 72 er).<.0).{...!........perror("gr
e460 61 6e 74 70 74 20 66 61 69 6c 65 64 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 antpt.failed");............retur
e480 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 20 69 66 n.-1;........}...........#....if
e4a0 20 28 75 6e 6c 6f 63 6b 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 7b 00 00 00 .(unlockpt(pty_master).<.0).{...
e4c0 22 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 75 6e 6c 6f 63 6b 70 74 20 66 61 69 6c 65 64 "........perror("unlockpt.failed
e4e0 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 ");............return.-1;.......
e500 20 7d 00 00 00 04 20 20 20 20 00 00 00 3d 20 20 20 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 6f 70 .}...........=....pty_slave.=.op
e520 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 74 65 72 29 2c 20 4f 5f 52 44 57 52 20 7c en(ptsname(pty_master),.O_RDWR.|
e540 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 18 20 20 20 20 69 66 20 28 70 74 79 5f 73 6c 61 76 65 .O_NOCTTY);........if.(pty_slave
e560 20 3c 20 30 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 61 69 6c 65 .<.0).{...+........perror("faile
e580 64 20 74 6f 20 6f 70 65 6e 20 73 6c 61 76 65 20 70 74 79 22 29 3b 00 00 00 12 20 20 20 20 20 20 d.to.open.slave.pty");..........
e5a0 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 ..return.-1;........}...........
e5c0 20 20 20 20 20 74 63 67 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 26 74 65 72 6d 29 .....tcgetattr(pty_slave,.&term)
e5e0 3b 00 00 00 58 20 20 20 20 74 65 72 6d 2e 63 5f 69 66 6c 61 67 20 26 3d 20 7e 28 49 47 4e 42 52 ;...X....term.c_iflag.&=.~(IGNBR
e600 4b 20 7c 20 42 52 4b 49 4e 54 20 7c 20 50 41 52 4d 52 4b 20 7c 20 49 53 54 52 49 50 20 7c 20 49 K.|.BRKINT.|.PARMRK.|.ISTRIP.|.I
e620 4e 4c 43 52 20 7c 20 49 47 4e 43 52 20 7c 20 49 43 52 4e 4c 20 7c 20 49 58 4f 4e 29 3b 00 00 00 NLCR.|.IGNCR.|.ICRNL.|.IXON);...
e640 1b 20 20 20 20 74 65 72 6d 2e 63 5f 6f 66 6c 61 67 20 26 3d 20 7e 4f 50 4f 53 54 3b 00 00 00 3e .....term.c_oflag.&=.~OPOST;...>
e660 20 20 20 20 74 65 72 6d 2e 63 5f 6c 66 6c 61 67 20 26 3d 20 7e 28 45 43 48 4f 20 7c 20 45 43 48 ....term.c_lflag.&=.~(ECHO.|.ECH
e680 4f 4e 4c 20 7c 20 49 43 41 4e 4f 4e 20 7c 20 49 53 49 47 20 7c 20 49 45 58 54 45 4e 29 3b 00 00 ONL.|.ICANON.|.ISIG.|.IEXTEN);..
e6a0 00 26 20 20 20 20 74 65 72 6d 2e 63 5f 63 66 6c 61 67 20 26 3d 20 7e 28 43 53 49 5a 45 20 7c 20 .&....term.c_cflag.&=.~(CSIZE.|.
e6c0 50 41 52 45 4e 42 29 3b 00 00 00 18 20 20 20 20 74 65 72 6d 2e 63 5f 63 66 6c 61 67 20 7c 3d 20 PARENB);........term.c_cflag.|=.
e6e0 43 53 38 3b 00 00 00 18 20 20 20 20 74 65 72 6d 2e 63 5f 63 63 5b 56 4d 49 4e 5d 20 3d 20 31 3b CS8;........term.c_cc[VMIN].=.1;
e700 00 00 00 19 20 20 20 20 74 65 72 6d 2e 63 5f 63 63 5b 56 54 49 4d 45 5d 20 3d 20 30 3b 00 00 00 ........term.c_cc[VTIME].=.0;...
e720 29 20 20 20 20 74 63 73 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 43 53 41 4e 4f )....tcsetattr(pty_slave,.TCSANO
e740 57 2c 20 26 74 65 72 6d 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e W,.&term);................return
e760 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f .0;....}........static.void.run_
e780 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 20 20 20 73 68 65 6c 6c 5f 70 69 shell(void)....{........shell_pi
e7a0 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 73 d.=.fork();................if.(s
e7c0 68 65 6c 6c 5f 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 73 65 74 73 hell_pid.==.0).{............sets
e7e0 69 64 28 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1a 20 20 20 20 20 20 20 20 63 6c 6f id();........................clo
e800 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 27 20 se(pty_master);...............'.
e820 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 49 4f 43 53 43 54 54 .......ioctl(pty_slave,.TIOCSCTT
e840 59 2c 20 30 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 Y,.0);........................du
e860 70 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 70 p2(pty_slave,.0);............dup
e880 32 28 70 74 79 5f 73 6c 61 76 65 2c 20 31 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 70 32 2(pty_slave,.1);............dup2
e8a0 28 70 74 79 5f 73 6c 61 76 65 2c 20 32 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 19 20 (pty_slave,.2);.................
e8c0 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 08 20 20 20 20 .......close(pty_slave);........
e8e0 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 3d 20 67 65 .......&........char.*shell.=.ge
e900 74 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 69 66 20 28 21 73 tenv("SHELL");............if.(!s
e920 68 65 6c 6c 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 73 68 65 6c 6c 20 3d 20 22 hell).{................shell.=."
e940 2f 62 69 6e 2f 73 68 22 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 /bin/sh";............}..........
e960 20 20 00 00 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 6c 6c 2c 20 73 68 65 6c 6c ....."........execl(shell,.shell
e980 2c 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 1f ,.NULL);............exit(1);....
e9a0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3c 20 30 29 20 7b 00 ....}.else.if.(shell_pid.<.0).{.
e9c0 00 00 1e 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 66 6f 72 6b 20 66 61 69 6c 65 64 22 29 ...........perror("fork.failed")
e9e0 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 63 6c 6f 73 65 28 ;........}................close(
ea00 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 13 20 20 20 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 2d pty_slave);........pty_slave.=.-
ea20 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 29 00 00 00 1;....}........int.main(void)...
ea40 01 7b 00 00 00 21 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 .{...!....struct.wl_registry.*re
ea60 67 69 73 74 72 79 3b 00 00 00 16 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 gistry;........struct.winsize.ws
ea80 3b 00 00 00 04 20 20 20 20 00 00 00 10 20 20 20 20 69 6e 69 74 5f 66 6f 6e 74 28 29 3b 00 00 00 ;................init_font();...
eaa0 04 20 20 20 20 00 00 00 1d 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 43 48 4c 44 2c 20 53 49 47 .............signal(SIGCHLD,.SIG
eac0 5f 49 47 4e 29 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 73 65 74 75 70 5f _IGN);................if.(setup_
eae0 70 74 79 28 29 20 3c 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 pty().<.0).{............return.1
eb00 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 77 73 2e 77 73 5f ;........}................ws.ws_
eb20 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 15 20 20 20 20 77 73 2e 77 73 5f 63 6f 6c 20 3d 20 63 row.=.rows;........ws.ws_col.=.c
eb40 6f 6c 73 3b 00 00 00 20 20 20 20 20 77 73 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f ols;........ws.ws_xpixel.=.windo
eb60 77 5f 77 69 64 74 68 3b 00 00 00 21 20 20 20 20 77 73 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 77 w_width;...!....ws.ws_ypixel.=.w
eb80 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 00 00 00 27 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d indow_height;...'....ioctl(pty_m
eba0 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 04 20 20 20 20 aster,.TIOCSWINSZ,.&ws);........
ebc0 00 00 00 10 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 27 ........run_shell();...........'
ebe0 20 20 20 20 64 69 73 70 6c 61 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 ....display.=.wl_display_connect
ec00 28 4e 55 4c 4c 29 3b 00 00 00 13 20 20 20 20 69 66 20 28 21 64 69 73 70 6c 61 79 29 20 7b 00 00 (NULL);........if.(!display).{..
ec20 00 42 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 .B........fprintf(stderr,."faile
ec40 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 20 77 61 79 6c 61 6e 64 20 64 69 73 70 6c 61 79 5c d.to.connect.to.wayland.display\
ec60 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 n");............cleanup_pty();..
ec80 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 ..........return.1;........}....
eca0 20 20 20 20 00 00 00 30 20 20 20 20 72 65 67 69 73 74 72 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 .......0....registry.=.wl_displa
ecc0 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 64 69 73 70 6c 61 79 29 3b 00 00 00 41 20 20 20 20 y_get_registry(display);...A....
ece0 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 72 65 67 69 73 74 72 wl_registry_add_listener(registr
ed00 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 y,.&registry_listener,.NULL);...
ed20 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 72 6f 75 6e 64 74 72 69 70 28 64 69 73 70 6c 61 "....wl_display_roundtrip(displa
ed40 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 20 69 66 20 28 21 63 6f 6d 70 6f 73 69 74 y);...........*....if.(!composit
ed60 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 77 6d 5f 62 61 73 65 29 20 7b 00 00 00 47 20 20 20 or.||.!shm.||.!wm_base).{...G...
ed80 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 .....fprintf(stderr,."failed.to.
eda0 67 65 74 20 72 65 71 75 69 72 65 64 20 77 61 79 6c 61 6e 64 20 69 6e 74 65 72 66 61 63 65 73 5c get.required.wayland.interfaces\
edc0 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 n");............cleanup_pty();..
ede0 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 ..........return.1;........}....
ee00 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 66 61 63 65 20 3d 20 77 6c 5f 63 6f 6d 70 6f 73 69 .......7....surface.=.wl_composi
ee20 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 61 63 65 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 tor_create_surface(compositor);.
ee40 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 ..@....xdg_surface.=.xdg_wm_base
ee60 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 65 28 77 6d 5f 62 61 73 65 2c 20 73 75 72 66 61 63 _get_xdg_surface(wm_base,.surfac
ee80 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 64 64 5f 6c 69 73 74 65 e);...G....xdg_surface_add_liste
eea0 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 26 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 ner(xdg_surface,.&xdg_surface_li
eec0 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 04 20 20 20 20 00 00 00 35 20 20 20 20 74 6f stener,.NULL);...........5....to
eee0 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 67 65 74 5f 74 6f 70 6c 65 76 65 plevel.=.xdg_surface_get_topleve
ef00 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 42 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 l(xdg_surface);...B....xdg_tople
ef20 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 74 6f 70 6c 65 76 65 6c 2c 20 26 74 6f 70 6c vel_add_listener(toplevel,.&topl
ef40 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 40 20 20 20 20 78 64 67 evel_listener,.NULL);...@....xdg
ef60 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 69 74 6c 65 28 74 6f 70 6c 65 76 65 6c 2c 20 22 73 _toplevel_set_title(toplevel,."s
ef80 69 6d 70 6c 65 20 77 61 79 6c 61 6e 64 20 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 41 20 20 20 imple.wayland.terminal");...A...
efa0 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 61 70 70 5f 69 64 28 74 6f 70 6c 65 76 65 .xdg_toplevel_set_app_id(topleve
efc0 6c 2c 20 22 73 69 6d 70 6c 65 2d 77 61 79 6c 61 6e 64 2d 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 l,."simple-wayland-terminal");..
efe0 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 ..............wl_surface_commit(
f000 73 75 72 66 61 63 65 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 70 72 69 6e 74 66 28 surface);...........-....printf(
f020 22 74 65 72 6d 69 6e 61 6c 20 63 72 65 61 74 65 64 2e 20 72 75 6e 6e 69 6e 67 2e 2e 2e 5c 6e 22 "terminal.created..running...\n"
f040 29 3b 00 00 00 3b 20 20 20 20 70 72 69 6e 74 66 28 22 74 79 70 65 20 63 6f 6d 6d 61 6e 64 73 20 );...;....printf("type.commands.
f060 69 6e 20 74 68 65 20 77 69 6e 64 6f 77 20 74 6f 20 72 75 6e 20 61 20 73 68 65 6c 6c 5c 6e 22 29 in.the.window.to.run.a.shell\n")
f080 3b 00 00 00 04 20 20 20 20 00 00 00 3b 20 20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e 69 6e 67 20 ;...........;....while.(running.
f0a0 26 26 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 74 63 68 28 64 69 73 70 6c 61 79 29 20 &&.wl_display_dispatch(display).
f0c0 21 3d 20 2d 31 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 63 68 61 72 20 62 75 66 5b 32 35 36 !=.-1).{............char.buf[256
f0e0 5d 3b 00 00 00 33 20 20 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 72 65 61 64 28 70 74 79 5f 6d ];...3........int.n.=.read(pty_m
f100 61 73 74 65 72 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 00 00 00 08 20 20 20 aster,.buf,.sizeof(buf));.......
f120 20 20 20 20 20 00 00 00 14 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 20 30 29 20 7b 00 00 00 .................if.(n.>.0).{...
f140 12 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 3b 00 00 00 25 20 20 20 20 20 20 20 20 20 .............int.i;...%.........
f160 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 7b 00 00 00 25 ...for.(i.=.0;.i.<.n;.i++).{...%
f180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c ................if.(buf[i].==.'\
f1a0 6e 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 n').{...!....................cur
f1c0 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sor_x.=.0;......................
f1e0 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..cursor_y++;...+...............
f200 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 2c .....if.(cursor_y.>=.rows).{...,
f220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 ........................cursor_y
f240 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .=.rows.-.1;....................
f260 20 20 20 20 7d 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 ....}...,................}.else.
f280 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c 72 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 if.(buf[i].==.'\r').{...!.......
f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 3e 20 20 .............cursor_x.=.0;...>..
f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 75 66 5b 69 5d 20 ..............}.else.if.(buf[i].
f2e0 3d 3d 20 27 5c 62 27 20 7c 7c 20 62 75 66 5b 69 5d 20 3d 3d 20 30 78 37 66 29 20 7b 00 00 00 27 ==.'\b'.||.buf[i].==.0x7f).{...'
f300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 ....................if.(cursor_x
f320 20 3e 20 30 29 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .>.0).{...#.....................
f340 20 20 20 63 75 72 73 6f 72 5f 78 2d 2d 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...cursor_x--;..................
f360 20 20 20 20 20 20 7d 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ......}...:................}.els
f380 65 20 69 66 20 28 62 75 66 5b 69 5d 20 3e 3d 20 33 32 20 26 26 20 62 75 66 5b 69 5d 20 3c 20 31 e.if.(buf[i].>=.32.&&.buf[i].<.1
f3a0 32 37 29 20 7b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 27).{........................cur
f3c0 73 6f 72 5f 78 2b 2b 3b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sor_x++;...+....................
f3e0 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 25 20 20 20 20 20 if.(cursor_x.>=.cols).{...%.....
f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b ...................cursor_x.=.0;
f420 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 ...#........................curs
f440 6f 72 5f 79 2b 2b 3b 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or_y++;.../.....................
f460 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 30 20 20 ...if.(cursor_y.>=.rows).{...0..
f480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 ..........................cursor
f4a0 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _y.=.rows.-.1;..................
f4c0 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........}.....................
f4e0 20 20 20 7d 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 ...}....................}.......
f500 20 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 .........}............}.else.if.
f520 28 6e 20 3d 3d 20 30 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e (n.==.0).{................runnin
f540 67 20 3d 20 30 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 g.=.0;............}........}....
f560 20 20 20 20 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 04 20 20 ............cleanup_pty();......
f580 20 20 00 00 00 19 20 20 20 20 69 66 20 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 20 7b 00 ..........if.(frame_callback).{.
f5a0 00 00 2c 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f 79 28 66 ..,........wl_callback_destroy(f
f5c0 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 rame_callback);........}........
f5e0 00 00 00 13 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 7b 00 00 00 26 20 20 20 20 20 ........if.(keyboard).{...&.....
f600 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 62 6f 61 72 64 29 ...wl_keyboard_destroy(keyboard)
f620 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 0f 20 20 20 20 69 66 20 28 73 65 ;........}................if.(se
f640 61 74 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 64 65 73 74 72 6f 79 at).{............wl_seat_destroy
f660 28 73 65 61 74 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 (seat);........}................
f680 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 destroy_buffer();...........#...
f6a0 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 65 6c 29 3b .xdg_toplevel_destroy(toplevel);
f6c0 00 00 00 25 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 78 64 67 5f ...%....xdg_surface_destroy(xdg_
f6e0 73 75 72 66 61 63 65 29 3b 00 00 00 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 65 73 74 surface);........wl_surface_dest
f700 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 21 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 roy(surface);...!....xdg_wm_base
f720 5f 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 26 20 20 20 20 77 6c 5f 63 6f 6d _destroy(wm_base);...&....wl_com
f740 70 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 18 positor_destroy(compositor);....
f760 20 20 20 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 00 22 20 20 20 20 ....wl_shm_destroy(shm);..."....
f780 77 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 29 3b 00 00 wl_registry_destroy(registry);..
f7a0 00 23 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 74 28 64 69 73 70 .#....wl_display_disconnect(disp
f7c0 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 lay);................return.0;..
f7e0 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 53 02 00 00 00 00 00 00 01 00 00 00 00 ..}5...............S............
f800 00 00 00 00 00 00 00 00 00 00 00 47 3e 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 ...........G>..............5._..
f820 00 00 09 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 01 00 00 00 00 00 00 00 00 ff ................................
f840 ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f9a0 00 6a 01 0e 4e 04 01 00 00 00 09 00 f5 18 00 00 02 60 00 00 00 00 00 00 00 00 00 00 00 01 00 00 .j..N............`..............
f9c0 00 05 20 20 20 20 20 f5 18 00 00 02 61 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 bc 00 ............a...................
f9e0 00 00 00 00 00 00 00 00 00 00 01 00 00 00 15 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 ...................}.else.if.(st
fa00 72 63 6d 70 f5 18 00 00 01 bd 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 3a 00 00 00 00 rcmp.......................:....
fa20 00 00 00 00 00 00 00 01 00 00 00 2d 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d ...........-....frame_callback.=
fa40 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 f5 18 00 00 01 3b 00 .wl_surface_frame(surface.....;.
fa60 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 96 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................................
fa80 16 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 f5 18 00 00 00 97 00 00 00 .............memmove(sc.........
faa0 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 ................................
fac0 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 .................5..............
fae0 00 00 00 00 00 00 00 00 00 96 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fb00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 96 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 a4 ................................
fb20 00 00 00 2d 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 ...-............................
fb40 18 00 00 00 00 3a 01 00 00 2d 00 00 00 00 00 00 00 00 00 00 00 82 00 00 00 15 00 00 00 f8 1f 00 .....:...-......................
fb60 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 bc 01 00 00 15 ................................
fb80 00 00 00 00 00 00 00 00 00 00 00 a4 00 00 00 05 00 00 00 f7 2f 00 00 00 00 00 00 00 00 00 00 00 ..................../...........
fba0 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 60 02 00 00 05 00 00 00 00 00 00 00 00 00 00 .................`..............
fbc0 00 29 00 00 00 01 00 00 00 f6 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0 03 00 00 00 00 00 .)........?.....................
fbe0 00 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 01 00 00 00 .5._............................
fc00 00 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 ................................
fc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
fd60 00 00 00 00 00 00 00 6a 01 0e cc 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 .......j........................
fd80 00 00 02 8a 00 00 00 19 23 64 65 66 69 6e 65 20 5f 58 4f 50 45 4e 5f 53 4f 55 52 43 45 20 36 30 ........#define._XOPEN_SOURCE.60
fda0 30 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 0....#include.<stdio.h>....#incl
fdc0 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 ude.<stdlib.h>....#include.<stri
fde0 6e 67 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 15 ng.h>....#include.<unistd.h>....
fe00 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 #include.<sys/mman.h>....#includ
fe20 65 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 e.<sys/ioctl.h>....#include.<sys
fe40 2f 77 61 69 74 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 65 6c 65 63 74 /wait.h>....#include.<sys/select
fe60 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 12 23 69 6e .h>....#include.<fcntl.h>....#in
fe80 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 clude.<errno.h>....#include.<sig
fea0 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d 69 6f 73 2e 68 3e 00 00 nal.h>....#include.<termios.h>..
fec0 00 1b 23 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 ..#include.<wayland-client.h>...
fee0 26 23 69 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 &#include."xdg-shell-client-prot
ff00 6f 63 6f 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 ocol.h"......."struct.wl_display
ff20 20 2a 64 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 .*display.=.NULL;...(struct.wl_c
ff40 6f 6d 70 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 ompositor.*compositor.=.NULL;...
ff60 22 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 "struct.wl_surface.*surface.=.NU
ff80 4c 4c 3b 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c LL;....struct.wl_shm.*shm.=.NULL
ffa0 3b 00 00 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c ;....struct.wl_seat.*seat.=.NULL
ffc0 3b 00 00 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 ;...$struct.wl_keyboard.*keyboar
ffe0 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 d.=.NULL;...#struct.xdg_wm_base.
10000 2a 77 6d 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 *wm_base.=.NULL;...'struct.xdg_s
10020 75 72 66 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 urface.*xdg_surface.=.NULL;...%s
10040 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e truct.xdg_toplevel.*toplevel.=.N
10060 55 4c 4c 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d ULL;...*struct.wl_callback.*fram
10080 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 e_callback.=.NULL;........static
100a0 20 69 6e 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 .int.running.=.1;....static.int.
100c0 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 38 30 30 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e window_width.=.800;....static.in
100e0 74 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 36 30 30 3b 00 00 00 1d 73 74 61 74 69 63 t.window_height.=.600;....static
10100 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 .int.pending_width.=.0;....stati
10120 63 20 69 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 c.int.pending_height.=.0;....sta
10140 74 69 63 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 tic.int.needs_resize.=.0;...(sta
10160 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 tic.unsigned.char.*pixel_data.=.
10180 4e 55 4c 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 NULL;....static.struct.wl_buffer
101a0 20 2a 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 .*window_buffer.=.NULL;........s
101c0 74 61 74 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 00 1c 73 74 tatic.int.pty_master.=.-1;....st
101e0 61 74 69 63 20 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 73 74 atic.pid_t.shell_pid.=.-1;....st
10200 61 74 69 63 20 69 6e 74 20 72 6f 77 73 20 3d 20 32 35 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e atic.int.rows.=.25;....static.in
10220 74 20 63 6f 6c 73 20 3d 20 38 30 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f t.cols.=.80;....static.int.char_
10240 77 69 64 74 68 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 68 65 width.=.8;....static.int.char_he
10260 69 67 68 74 20 3d 20 31 36 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 63 68 61 72 20 73 63 ight.=.16;........static.char.sc
10280 72 65 65 6e 5b 32 35 5d 5b 38 30 5d 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 reen[25][80];....static.int.curs
102a0 6f 72 5f 78 20 3d 20 30 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 79 or_x.=.0;....static.int.cursor_y
102c0 20 3d 20 30 3b 00 00 00 1b 73 74 61 74 69 63 20 69 6e 74 20 6e 65 65 64 5f 72 65 64 72 61 77 20 .=.0;....static.int.need_redraw.
102e0 3d 20 31 3b 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 =.1;.......'static.unsigned.char
10300 20 66 6f 6e 74 5f 64 61 74 61 5b 39 35 5d 5b 31 36 5d 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 .font_data[95][16];........stati
10320 63 20 76 6f 69 64 20 69 6e 69 74 5f 66 6f 6e 74 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0d 20 c.void.init_font(void)....{.....
10340 20 20 20 69 6e 74 20 69 2c 20 63 3b 00 00 00 1e 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 ...int.i,.c;........for.(i.=.0;.
10360 69 20 3c 20 39 35 3b 20 69 2b 2b 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 i.<.95;.i++).{..."........for.(c
10380 20 3d 20 30 3b 20 63 20 3c 20 31 36 3b 20 63 2b 2b 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 .=.0;.c.<.16;.c++).{............
103a0 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 63 5d 20 3d 20 30 3b 00 00 00 09 20 20 20 20 ....font_data[i][c].=.0;........
103c0 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1e 20 20 20 20 66 6f ....}........}................fo
103e0 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 39 35 3b 20 69 2b 2b 29 20 7b 00 00 00 1f 20 20 20 20 r.(i.=.0;.i.<.95;.i++).{........
10400 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 30 5d 20 3d 20 30 78 30 30 3b 00 00 00 1f 20 ....font_data[i][0].=.0x00;.....
10420 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 5d 20 3d 20 30 78 30 30 3b 00 00 .......font_data[i][1].=.0x00;..
10440 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 32 5d 20 3d 20 30 78 30 30 ..........font_data[i][2].=.0x00
10460 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 33 5d 20 3d 20 30 ;............font_data[i][3].=.0
10480 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 34 5d 20 x00;............font_data[i][4].
104a0 3d 20 30 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b =.0x00;............font_data[i][
104c0 35 5d 20 3d 20 30 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 5].=.0x00;............font_data[
104e0 69 5d 5b 36 5d 20 3d 20 30 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 i][6].=.0x00;............font_da
10500 74 61 5b 69 5d 5b 37 5d 20 3d 20 30 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 6e 74 ta[i][7].=.0x00;............font
10520 5f 64 61 74 61 5b 69 5d 5b 38 5d 20 3d 20 30 78 30 30 3b 00 00 00 1f 20 20 20 20 20 20 20 20 66 _data[i][8].=.0x00;............f
10540 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 39 5d 20 3d 20 30 78 30 30 3b 00 00 00 20 20 20 20 20 20 20 ont_data[i][9].=.0x00;..........
10560 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 30 5d 20 3d 20 30 78 30 30 3b 00 00 00 20 20 20 ..font_data[i][10].=.0x00;......
10580 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 31 5d 20 3d 20 30 78 30 30 3b 00 00 ......font_data[i][11].=.0x00;..
105a0 00 20 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 32 5d 20 3d 20 30 78 30 ..........font_data[i][12].=.0x0
105c0 30 3b 00 00 00 20 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 33 5d 20 3d 0;............font_data[i][13].=
105e0 20 30 78 30 30 3b 00 00 00 20 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 69 5d 5b 31 .0x00;............font_data[i][1
10600 34 5d 20 3d 20 30 78 30 30 3b 00 00 00 20 20 20 20 20 20 20 20 20 66 6f 6e 74 5f 64 61 74 61 5b 4].=.0x00;............font_data[
10620 69 5d 5b 31 35 5d 20 3d 20 30 78 30 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 i][15].=.0x00;........}....}....
10640 00 00 00 5d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 63 68 61 72 28 75 6e 73 69 67 6e ...]static.void.draw_char(unsign
10660 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 6e 74 20 70 69 74 63 68 2c 20 69 6e 74 20 78 2c ed.char.*data,.int.pitch,.int.x,
10680 20 69 6e 74 20 79 2c 20 63 68 61 72 20 63 68 2c 20 69 6e 74 20 64 72 61 77 5f 63 75 72 73 6f 72 .int.y,.char.ch,.int.draw_cursor
106a0 29 00 00 00 01 7b 00 00 00 14 20 20 20 20 69 6e 74 20 63 78 2c 20 63 79 2c 20 62 69 74 3b 00 00 )....{........int.cx,.cy,.bit;..
106c0 00 19 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 67 6c 79 70 68 3b 00 00 00 0f 20 ......unsigned.char.*glyph;.....
106e0 20 20 20 69 6e 74 20 63 68 5f 69 64 78 3b 00 00 00 04 20 20 20 20 00 00 00 1e 20 20 20 20 69 66 ...int.ch_idx;................if
10700 20 28 63 68 20 3c 20 33 32 20 7c 7c 20 63 68 20 3e 20 31 32 36 29 20 7b 00 00 00 13 20 20 20 20 .(ch.<.32.||.ch.>.126).{........
10720 20 20 20 20 63 68 5f 69 64 78 20 3d 20 30 3b 00 00 00 0c 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 ....ch_idx.=.0;........}.else.{.
10740 00 00 19 20 20 20 20 20 20 20 20 63 68 5f 69 64 78 20 3d 20 63 68 20 2d 20 33 32 3b 00 00 00 05 ...........ch_idx.=.ch.-.32;....
10760 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1e 20 20 20 20 67 6c 79 70 68 20 3d 20 66 6f 6e ....}................glyph.=.fon
10780 74 5f 64 61 74 61 5b 63 68 5f 69 64 78 5d 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 20 66 t_data[ch_idx];...........*....f
107a0 6f 72 20 28 63 79 20 3d 20 30 3b 20 63 79 20 3c 20 63 68 61 72 5f 68 65 69 67 68 74 3b 20 63 79 or.(cy.=.0;.cy.<.char_height;.cy
107c0 2b 2b 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 78 20 3d 20 30 3b 20 63 78 ++).{...-........for.(cx.=.0;.cx
107e0 20 3c 20 63 68 61 72 5f 77 69 64 74 68 3b 20 63 78 2b 2b 29 20 7b 00 00 00 2e 20 20 20 20 20 20 .<.char_width;.cx++).{..........
10800 20 20 20 20 20 20 62 69 74 20 3d 20 28 67 6c 79 70 68 5b 63 79 5d 20 3e 3e 20 28 37 20 2d 20 63 ......bit.=.(glyph[cy].>>.(7.-.c
10820 78 29 29 20 26 20 31 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 78 20 3d x)).&.1;................int.px.=
10840 20 78 20 2b 20 63 78 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 79 20 3d .x.+.cx;................int.py.=
10860 20 79 20 2b 20 63 79 3b 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 78 20 3e .y.+.cy;...P............if.(px.>
10880 3d 20 30 20 26 26 20 70 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 20 70 79 20 3e =.0.&&.px.<.window_width.&&.py.>
108a0 3d 20 30 20 26 26 20 70 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 30 =.0.&&.py.<.window_height).{...0
108c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 70 79 20 2a 20 ................int.idx.=.(py.*.
108e0 70 69 74 63 68 20 2b 20 70 78 29 20 2a 20 34 3b 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 20 pitch.+.px).*.4;...8............
10900 20 20 20 20 69 66 20 28 64 72 61 77 5f 63 75 72 73 6f 72 20 26 26 20 63 79 20 3d 3d 20 30 20 26 ....if.(draw_cursor.&&.cy.==.0.&
10920 26 20 63 78 20 3d 3d 20 30 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &.cx.==.0).{...(................
10940 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 ....data[idx.+.0].=.255;...(....
10960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 ................data[idx.+.1].=.
10980 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 255;...(....................data
109a0 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 [idx.+.2].=.255;...(............
109c0 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 21 ........data[idx.+.3].=.255;...!
109e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 69 74 29 20 ................}.else.if.(bit).
10a00 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 {...(....................data[id
10a20 78 20 2b 20 30 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 x.+.0].=.212;...(...............
10a40 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 .....data[idx.+.1].=.212;...(...
10a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d .................data[idx.+.2].=
10a80 20 32 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 .212;...(....................dat
10aa0 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 a[idx.+.3].=.255;...............
10ac0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....}.else.{...&...............
10ae0 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 .....data[idx.+.0].=.0;...&.....
10b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 30 ...............data[idx.+.1].=.0
10b20 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 ;...&....................data[id
10b40 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 x.+.2].=.0;...(.................
10b60 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 11 20 20 20 20 20 ...data[idx.+.3].=.255;.........
10b80 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 ...........}................}...
10ba0 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1d .........}........}....}........
10bc0 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 65 6e 28 76 6f 69 64 29 00 00 00 static.void.draw_screen(void)...
10be0 01 7b 00 00 00 23 20 20 20 20 69 6e 74 20 78 2c 20 79 2c 20 70 69 74 63 68 20 3d 20 77 69 6e 64 .{...#....int.x,.y,.pitch.=.wind
10c00 6f 77 5f 77 69 64 74 68 3b 00 00 00 04 20 20 20 20 00 00 00 29 20 20 20 20 66 6f 72 20 28 79 20 ow_width;...........)....for.(y.
10c20 3d 20 30 3b 20 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 20 79 2b 2b 29 20 7b 00 00 =.0;.y.<.window_height;.y++).{..
10c40 00 2c 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 77 69 6e 64 6f 77 .,........for.(x.=.0;.x.<.window
10c60 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e _width;.x++).{...*............in
10c80 74 20 69 64 78 20 3d 20 28 79 20 2a 20 70 69 74 63 68 20 2b 20 78 29 20 2a 20 34 3b 00 00 00 24 t.idx.=.(y.*.pitch.+.x).*.4;...$
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 ............pixel_data[idx.+.0].
10cc0 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 =.0;...$............pixel_data[i
10ce0 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 dx.+.1].=.0;...$............pixe
10d00 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 l_data[idx.+.2].=.0;...&........
10d20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 ....pixel_data[idx.+.3].=.255;..
10d40 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 ..........}........}............
10d60 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b ....for.(y.=.0;.y.<.rows;.y++).{
10d80 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 63 6f 6c 73 ...$........for.(x.=.0;.x.<.cols
10da0 3b 20 78 2b 2b 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 73 5f 63 ;.x++).{...=............int.is_c
10dc0 75 72 73 6f 72 20 3d 20 28 79 20 3d 3d 20 63 75 72 73 6f 72 5f 79 20 26 26 20 78 20 3d 3d 20 63 ursor.=.(y.==.cursor_y.&&.x.==.c
10de0 75 72 73 6f 72 5f 78 29 3b 00 00 00 63 20 20 20 20 20 20 20 20 20 20 20 20 64 72 61 77 5f 63 68 ursor_x);...c............draw_ch
10e00 61 72 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 70 69 74 63 68 2c 20 78 20 2a 20 63 68 61 72 5f 77 ar(pixel_data,.pitch,.x.*.char_w
10e20 69 64 74 68 2c 20 79 20 2a 20 63 68 61 72 5f 68 65 69 67 68 74 2c 20 73 63 72 65 65 6e 5b 79 5d idth,.y.*.char_height,.screen[y]
10e40 5b 78 5d 2c 20 69 73 5f 63 75 72 73 6f 72 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 [x],.is_cursor);............}...
10e60 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 22 73 74 61 74 69 63 20 76 6f 69 64 20 74 .....}....}......."static.void.t
10e80 65 72 6d 69 6e 61 6c 5f 77 72 69 74 65 28 63 68 61 72 20 63 29 00 00 00 01 7b 00 00 00 14 20 20 erminal_write(char.c)....{......
10ea0 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 00 00 00 15 20 20 20 20 20 20 20 20 63 75 ..if.(c.==.'\n').{............cu
10ec0 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 13 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 2b rsor_x.=.0;............cursor_y+
10ee0 2b 3b 00 00 00 1f 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f +;............if.(cursor_y.>=.ro
10f00 77 73 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d 20 ws).{................cursor_y.=.
10f20 72 6f 77 73 20 2d 20 31 3b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 rows.-.1;...=............memmove
10f40 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 6e 5b 31 5d 2c 20 28 72 6f 77 73 20 2d 20 31 (screen[0],.screen[1],.(rows.-.1
10f60 29 20 2a 20 63 6f 6c 73 29 3b 00 00 00 30 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 ).*.cols);...0............memset
10f80 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 2d 20 31 5d 2c 20 27 20 27 2c 20 63 6f 6c 73 29 3b 00 00 (screen[rows.-.1],.'.',.cols);..
10fa0 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 ..........}............need_redr
10fc0 61 77 20 3d 20 31 3b 00 00 00 1b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 aw.=.1;........}.else.if.(c.==.'
10fe0 5c 72 27 29 20 7b 00 00 00 15 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 \r').{............cursor_x.=.0;.
11000 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 28 20 ...........need_redraw.=.1;...(.
11020 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 62 27 20 7c 7c 20 63 20 3d 3d 20 ...}.else.if.(c.==.'\b'.||.c.==.
11040 30 78 37 66 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 0x7f).{............if.(cursor_x.
11060 3e 20 30 29 20 7b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 2d 2d >.0).{................cursor_x--
11080 3b 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 ;...-............screen[cursor_y
110a0 5d 5b 63 75 72 73 6f 72 5f 78 5d 20 3d 20 27 20 27 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 ][cursor_x].=.'.';..............
110c0 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 ..need_redraw.=.1;............}.
110e0 00 00 24 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3e 3d 20 33 32 20 26 26 20 63 20 3c ..$....}.else.if.(c.>=.32.&&.c.<
11100 20 31 32 37 29 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 .127).{...'........screen[cursor
11120 5f 79 5d 5b 63 75 72 73 6f 72 5f 78 5d 20 3d 20 63 3b 00 00 00 13 20 20 20 20 20 20 20 20 63 75 _y][cursor_x].=.c;............cu
11140 72 73 6f 72 5f 78 2b 2b 3b 00 00 00 1f 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f rsor_x++;............if.(cursor_
11160 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 x.>=.cols).{................curs
11180 6f 72 5f 78 20 3d 20 30 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f or_x.=.0;................cursor_
111a0 79 2b 2b 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 y++;...#............if.(cursor_y
111c0 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 .>=.rows).{...$................c
111e0 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 41 20 20 20 20 20 20 20 20 20 ursor_y.=.rows.-.1;...A.........
11200 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 6e .......memmove(screen[0],.screen
11220 5b 31 5d 2c 20 28 72 6f 77 73 20 2d 20 31 29 20 2a 20 63 6f 6c 73 29 3b 00 00 00 34 20 20 20 20 [1],.(rows.-.1).*.cols);...4....
11240 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 2d ............memset(screen[rows.-
11260 20 31 5d 2c 20 27 20 27 2c 20 63 6f 6c 73 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 .1],.'.',.cols);................
11280 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 }............}............need_r
112a0 65 64 72 61 77 20 3d 20 31 3b 00 00 00 1b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d edraw.=.1;........}.else.if.(c.=
112c0 3d 20 27 5c 74 27 29 20 7b 00 00 00 0c 20 20 20 20 20 20 20 20 64 6f 20 7b 00 00 00 2d 20 20 20 =.'\t').{............do.{...-...
112e0 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 .........screen[cursor_y][cursor
11300 5f 78 5d 20 3d 20 27 20 27 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 _x].=.'.';................cursor
11320 5f 78 2b 2b 3b 00 00 00 37 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 63 75 72 73 6f 72 _x++;...7........}.while.(cursor
11340 5f 78 20 25 20 38 20 21 3d 20 30 20 26 26 20 63 75 72 73 6f 72 5f 78 20 3c 20 63 6f 6c 73 29 3b _x.%.8.!=.0.&&.cursor_x.<.cols);
11360 00 00 00 1f 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d 20 63 6f 6c 73 ............if.(cursor_x.>=.cols
11380 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b ).{................cursor_x.=.0;
113a0 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 23 20 ................cursor_y++;...#.
113c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 ...........if.(cursor_y.>=.rows)
113e0 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d .{...$................cursor_y.=
11400 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 .rows.-.1;...A................me
11420 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 6e 5b 31 5d 2c 20 28 72 6f 77 mmove(screen[0],.screen[1],.(row
11440 73 20 2d 20 31 29 20 2a 20 63 6f 6c 73 29 3b 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 s.-.1).*.cols);...4.............
11460 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 2d 20 31 5d 2c 20 27 20 27 2c ...memset(screen[rows.-.1],.'.',
11480 20 63 6f 6c 73 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 .cols);................}........
114a0 20 20 20 20 7d 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 ....}............need_redraw.=.1
114c0 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 69 6e ;........}....}.......'static.in
114e0 74 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 00 00 t.create_shm_file(size_t.size)..
11500 00 01 7b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b 20 20 20 20 63 68 61 72 20 74 ..{........int.fd;...+....char.t
11520 65 6d 70 6c 61 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 68 6d 2d 58 58 58 58 58 58 22 emplate[].=."/tmp/wl-shm-XXXXXX"
11540 3b 00 00 00 04 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b 73 74 65 6d 70 28 74 65 ;................fd.=.mkstemp(te
11560 6d 70 6c 61 74 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 7b 00 00 00 mplate);........if.(fd.<.0).{...
11580 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 .........return.-1;........}....
115a0 20 20 20 20 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 28 66 64 2c 20 28 6f .......)....if.(ftruncate(fd,.(o
115c0 66 66 5f 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f ff_t)size).<.0).{............clo
115e0 73 65 28 66 64 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d 70 6c 61 se(fd);............unlink(templa
11600 74 65 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 te);............return.-1;......
11620 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d 70 6c 61 ..}................unlink(templa
11640 74 65 29 3b 00 00 00 0e 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 01 7d 00 00 00 00 00 te);........return.fd;....}.....
11660 00 00 3d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 63 72 65 61 ..=static.struct.wl_buffer.*crea
11680 74 65 5f 62 75 66 66 65 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 te_buffer(int.width,.int.height)
116a0 00 00 00 01 7b 00 00 00 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 64 74 68 20 ....{........int.stride.=.width.
116c0 2a 20 34 3b 00 00 00 1f 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 73 74 72 69 64 65 20 2a 20 *.4;........int.size.=.stride.*.
116e0 68 65 69 67 68 74 3b 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 1d 20 20 20 20 73 74 height;........int.fd;........st
11700 72 75 63 74 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 3b 00 00 00 1d 20 20 20 20 73 ruct.wl_shm_pool.*pool;........s
11720 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 72 3b 00 00 00 04 20 20 20 20 truct.wl_buffer.*buffer;........
11740 00 00 00 1f 20 20 20 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a ........fd.=.create_shm_file(siz
11760 65 29 3b 00 00 00 11 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 7b 00 00 00 14 20 20 20 20 e);........if.(fd.<.0).{........
11780 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 ....return.NULL;........}.......
117a0 20 00 00 00 4d 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 4c 4c 2c ....M....pixel_data.=.mmap(NULL,
117c0 20 73 69 7a 65 2c 20 50 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 2c 20 4d .size,.PROT_READ.|.PROT_WRITE,.M
117e0 41 50 5f 53 48 41 52 45 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 28 70 69 AP_SHARED,.fd,.0);...#....if.(pi
11800 78 65 6c 5f 64 61 74 61 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 12 20 20 20 xel_data.==.MAP_FAILED).{.......
11820 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 75 72 .....close(fd);............retur
11840 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 n.NULL;........}...........-....
11860 70 6f 6f 6c 20 3d 20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 66 pool.=.wl_shm_create_pool(shm,.f
11880 64 2c 20 73 69 7a 65 29 3b 00 00 00 46 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f 73 68 6d d,.size);...F....buffer.=.wl_shm
118a0 5f 70 6f 6f 6c 5f 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 77 69 64 _pool_create_buffer(pool,.0,.wid
118c0 74 68 2c 20 68 65 69 67 68 74 2c 20 73 74 72 69 64 65 2c 00 00 00 3f 20 20 20 20 20 20 20 20 20 th,.height,.stride,...?.........
118e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 4c ..............................WL
11900 5f 53 48 4d 5f 46 4f 52 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 6c _SHM_FORMAT_ARGB8888);........wl
11920 5f 73 68 6d 5f 70 6f 6f 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 20 _shm_pool_destroy(pool);........
11940 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 6e close(fd);................return
11960 20 62 75 66 66 65 72 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 .buffer;....}........static.void
11980 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 .destroy_buffer(void)....{......
119a0 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 20 ..if.(window_buffer).{...)......
119c0 20 20 77 6c 5f 62 75 66 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 ..wl_buffer_destroy(window_buffe
119e0 72 29 3b 00 00 00 1d 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e r);............window_buffer.=.N
11a00 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 69 66 20 ULL;........}................if.
11a20 28 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 (pixel_data).{...=........munmap
11a40 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 (pixel_data,.window_width.*.wind
11a60 6f 77 5f 68 65 69 67 68 74 20 2a 20 34 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c ow_height.*.4);............pixel
11a80 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 _data.=.NULL;........}....}.....
11aa0 00 00 30 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 ..0static.void.resize_window(int
11ac0 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 24 20 20 20 20 .width,.int.height)....{...$....
11ae0 69 66 20 28 77 69 64 74 68 20 3c 3d 20 30 20 7c 7c 20 68 65 69 67 68 74 20 3c 3d 20 30 29 20 7b if.(width.<=.0.||.height.<=.0).{
11b00 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 ............return;........}....
11b20 20 20 20 20 00 00 00 1e 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 63 68 61 72 5f ............cols.=.width./.char_
11b40 77 69 64 74 68 3b 00 00 00 20 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 63 68 width;........rows.=.height./.ch
11b60 61 72 5f 68 65 69 67 68 74 3b 00 00 00 04 20 20 20 20 00 00 00 1d 20 20 20 20 69 66 20 28 63 6f ar_height;................if.(co
11b80 6c 73 20 3c 20 31 30 29 20 63 6f 6c 73 20 3d 20 31 30 3b 00 00 00 1b 20 20 20 20 69 66 20 28 72 ls.<.10).cols.=.10;........if.(r
11ba0 6f 77 73 20 3c 20 35 29 20 72 6f 77 73 20 3d 20 35 3b 00 00 00 1d 20 20 20 20 69 66 20 28 63 6f ows.<.5).rows.=.5;........if.(co
11bc0 6c 73 20 3e 20 38 30 29 20 63 6f 6c 73 20 3d 20 38 30 3b 00 00 00 1d 20 20 20 20 69 66 20 28 72 ls.>.80).cols.=.80;........if.(r
11be0 6f 77 73 20 3e 20 32 35 29 20 72 6f 77 73 20 3d 20 32 35 3b 00 00 00 04 20 20 20 20 00 00 00 15 ows.>.25).rows.=.25;............
11c00 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 25 20 20 20 20 77 69 6e ....destroy_buffer();...%....win
11c20 64 6f 77 5f 77 69 64 74 68 20 3d 20 63 6f 6c 73 20 2a 20 63 68 61 72 5f 77 69 64 74 68 3b 00 00 dow_width.=.cols.*.char_width;..
11c40 00 27 20 20 20 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 72 6f 77 73 20 2a 20 63 68 61 .'....window_height.=.rows.*.cha
11c60 72 5f 68 65 69 67 68 74 3b 00 00 00 3f 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d r_height;...?....window_buffer.=
11c80 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e .create_buffer(window_width,.win
11ca0 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 dow_height);................if.(
11cc0 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 73 74 pty_master.>=.0).{............st
11ce0 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 3b 00 00 00 19 20 20 20 20 20 20 20 20 77 73 2e 77 ruct.winsize.ws;............ws.w
11d00 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 19 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 63 s_row.=.rows;............ws.ws_c
11d20 6f 6c 20 3d 20 63 6f 6c 73 3b 00 00 00 24 20 20 20 20 20 20 20 20 77 73 2e 77 73 5f 78 70 69 78 ol.=.cols;...$........ws.ws_xpix
11d40 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 25 20 20 20 20 20 20 20 20 77 73 el.=.window_width;...%........ws
11d60 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 3b 00 00 00 2b 20 .ws_ypixel.=.window_height;...+.
11d80 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 53 57 49 .......ioctl(pty_master,.TIOCSWI
11da0 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 14 20 NSZ,.&ws);........}.............
11dc0 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 15 20 20 20 20 6e 65 65 64 73 ...need_redraw.=.1;........needs
11de0 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 4f 73 74 61 74 69 63 20 _resize.=.0;....}.......Ostatic.
11e00 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 void.frame_done(void.*data,.stru
11e20 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 63 61 6c 6c 62 61 63 6b 2c 20 75 69 6e 74 33 32 ct.wl_callback.*callback,.uint32
11e40 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 13 20 20 20 20 69 66 20 28 63 61 6c 6c 62 61 63 _t.time)....{........if.(callbac
11e60 6b 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 k).{...&........wl_callback_dest
11e80 72 6f 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 roy(callback);........}.........
11ea0 00 00 17 20 20 20 20 69 66 20 28 6e 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 .......if.(needs_resize).{...5..
11ec0 20 20 20 20 20 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 ......resize_window(pending_widt
11ee0 68 2c 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 h,.pending_height);............p
11f00 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e ending_width.=.0;............pen
11f20 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 ding_height.=.0;........}.......
11f40 20 00 00 00 24 20 20 20 20 69 66 20 28 6e 65 65 64 5f 72 65 64 72 61 77 20 26 26 20 70 69 78 65 ....$....if.(need_redraw.&&.pixe
11f60 6c 5f 64 61 74 61 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e l_data).{............draw_screen
11f80 28 29 3b 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 30 3b 00 ();............need_redraw.=.0;.
11fa0 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 18 20 20 20 20 69 66 20 28 77 69 6e 64 .......}................if.(wind
11fc0 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 ow_buffer).{...8........wl_surfa
11fe0 63 65 5f 61 74 74 61 63 68 28 73 75 72 66 61 63 65 2c 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 ce_attach(surface,.window_buffer
12000 2c 20 30 2c 20 30 29 3b 00 00 00 46 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 ,.0,.0);...F........wl_surface_d
12020 61 6d 61 67 65 28 73 75 72 66 61 63 65 2c 20 30 2c 20 30 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 amage(surface,.0,.0,.window_widt
12040 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 23 20 20 20 20 20 20 20 20 77 6c h,.window_height);...#........wl
12060 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 05 20 20 20 _surface_commit(surface);.......
12080 20 7d 00 00 00 04 20 20 20 20 00 00 00 3f 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 .}...........?....static.const.s
120a0 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 6e 65 72 20 66 72 61 6d 65 truct.wl_callback_listener.frame
120c0 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 2e 64 6f 6e 65 20 3d _listener.=.{.............done.=
120e0 20 66 72 61 6d 65 5f 64 6f 6e 65 00 00 00 06 20 20 20 20 7d 3b 00 00 00 04 20 20 20 20 00 00 00 .frame_done........};...........
12100 2f 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 77 6c 5f 73 75 72 66 61 63 65 /....frame_callback.=.wl_surface
12120 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 00 00 44 20 20 20 20 77 6c 5f 63 61 6c 6c 62 _frame(surface);...D....wl_callb
12140 61 63 6b 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c ack_add_listener(frame_callback,
12160 20 26 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 01 7d 00 00 00 .&frame_listener,.NULL);....}...
12180 00 00 00 00 5a 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e ....Zstatic.void.xdg_wm_base_pin
121a0 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 g(void.*data,.struct.xdg_wm_base
121c0 20 2a 78 64 67 5f 77 6d 5f 62 61 73 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 .*xdg_wm_base,.uint32_t.serial).
121e0 00 00 01 7b 00 00 00 2a 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 6f 6e 67 28 78 64 67 ...{...*....xdg_wm_base_pong(xdg
12200 5f 77 6d 5f 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 _wm_base,.serial);....}.......=s
12220 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 6c tatic.const.struct.xdg_wm_base_l
12240 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1d istener.wm_base_listener.=.{....
12260 20 20 20 20 2e 70 69 6e 67 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 2c 00 00 00 .....ping.=.xdg_wm_base_ping,...
12280 02 7d 3b 00 00 00 00 00 00 00 51 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 .};.......Qstatic.void.xdg_tople
122a0 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 vel_configure(void.*data,.struct
122c0 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 2c 00 00 00 51 .xdg_toplevel.*xdg_toplevel,...Q
122e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
12300 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e 74 33 32 5f 74 20 68 2c 20 73 74 72 75 63 74 20 ...int32_t.w,.int32_t.h,.struct.
12320 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 29 00 00 00 01 7b 00 00 00 19 20 20 20 20 69 66 wl_array.*states)....{........if
12340 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 .(w.>.0.&&.h.>.0).{............p
12360 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e ending_width.=.w;............pen
12380 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b 00 00 00 19 20 20 20 20 20 20 20 20 6e 65 65 64 ding_height.=.h;............need
123a0 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 s_resize.=.1;........}....}.....
123c0 00 00 4d 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 ..Mstatic.void.xdg_toplevel_clos
123e0 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 e(void.*data,.struct.xdg_topleve
12400 6c 20 2a 78 64 67 5f 74 6f 70 6c 65 76 65 6c 29 00 00 00 01 7b 00 00 00 10 20 20 20 20 72 75 6e l.*xdg_toplevel)....{........run
12420 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3f 73 74 61 74 69 63 20 63 6f 6e ning.=.0;....}.......?static.con
12440 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 st.struct.xdg_toplevel_listener.
12460 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 28 20 20 20 20 2e 63 6f toplevel_listener.=.{...(.....co
12480 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 nfigure.=.xdg_toplevel_configure
124a0 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 ,.........close.=.xdg_toplevel_c
124c0 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 5f 73 74 61 74 69 63 20 76 6f 69 64 20 78 lose,....};......._static.void.x
124e0 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c dg_surface_configure(void.*data,
12500 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 .struct.xdg_surface.*xdg_surface
12520 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 33 20 20 20 20 78 ,.uint32_t.serial)....{...3....x
12540 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 72 65 28 78 64 67 5f 73 75 72 dg_surface_ack_configure(xdg_sur
12560 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 face,.serial);................if
12580 20 28 21 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 .(!window_buffer).{...C........w
125a0 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e indow_buffer.=.create_buffer(win
125c0 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 dow_width,.window_height);..."..
125e0 20 20 20 20 20 20 66 72 61 6d 65 5f 64 6f 6e 65 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b ......frame_done(NULL,.NULL,.0);
12600 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 41 73 74 61 74 69 63 20 63 6f 6e ........}....}.......Astatic.con
12620 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 st.struct.xdg_surface_listener.x
12640 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 27 20 20 20 20 2e dg_surface_listener.=.{...'.....
12660 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 configure.=.xdg_surface_configur
12680 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 48 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 e,....};.......Hstatic.void.keyb
126a0 6f 61 72 64 5f 6b 65 79 6d 61 70 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 oard_keymap(void.*data,.struct.w
126c0 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 l_keyboard.*wl_keyboard,...G....
126e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 ........................uint32_t
12700 20 66 6f 72 6d 61 74 2c 20 69 6e 74 33 32 5f 74 20 66 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 69 .format,.int32_t.fd,.uint32_t.si
12720 7a 65 29 00 00 00 01 7b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 01 7d 00 ze)....{........close(fd);....}.
12740 00 00 00 00 00 00 47 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 ......Gstatic.void.keyboard_ente
12760 72 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 r(void.*data,.struct.wl_keyboard
12780 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .*wl_keyboard,...G..............
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 .............uint32_t.serial,.st
127c0 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 2c 00 00 00 31 20 20 20 ruct.wl_surface.*surface,...1...
127e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 ........................struct.w
12800 6c 5f 61 72 72 61 79 20 2a 6b 65 79 73 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 47 l_array.*keys)....{....}.......G
12820 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 28 76 6f 69 64 20 static.void.keyboard_leave(void.
12840 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 *data,.struct.wl_keyboard.*wl_ke
12860 79 62 6f 61 72 64 2c 00 00 00 47 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 yboard,...G.....................
12880 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c ......uint32_t.serial,.struct.wl
128a0 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 29 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 _surface.*surface)....{....}....
128c0 00 00 00 45 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 28 76 6f 69 ...Estatic.void.keyboard_key(voi
128e0 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 77 6c 5f d.*data,.struct.wl_keyboard.*wl_
12900 6b 65 79 62 6f 61 72 64 2c 00 00 00 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 keyboard,...F...................
12920 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 ......uint32_t.serial,.uint32_t.
12940 74 69 6d 65 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 00 00 00 28 20 20 20 20 20 20 20 20 20 time,.uint32_t.key,...(.........
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 74 61 74 65 29 00 ................uint32_t.state).
12980 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 ...{...D....if.(state.==.WL_KEYB
129a0 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 45 44 20 26 26 20 70 74 79 5f 6d 61 OARD_KEY_STATE_PRESSED.&&.pty_ma
129c0 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 63 68 61 72 20 63 20 3d ster.>=.0).{............char.c.=
129e0 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 25 20 20 20 20 20 20 20 20 69 66 20 28 6b .0;...............%........if.(k
12a00 65 79 20 3e 3d 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 29 20 7b 00 00 00 21 20 20 20 20 ey.>=.16.&&.key.<=.25).{...!....
12a20 20 20 20 20 20 20 20 20 63 20 3d 20 27 71 27 20 2b 20 28 6b 65 79 20 2d 20 31 36 29 3b 00 00 00 ........c.=.'q'.+.(key.-.16);...
12a40 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 32 36 20 26 26 ,........}.else.if.(key.>=.26.&&
12a60 20 6b 65 79 20 3c 3d 20 33 35 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d .key.<=.35).{...!............c.=
12a80 20 27 61 27 20 2b 20 28 6b 65 79 20 2d 20 32 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 .'a'.+.(key.-.26);...,........}.
12aa0 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d 20 34 35 29 else.if.(key.>=.36.&&.key.<=.45)
12ac0 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 7a 27 20 2b 20 28 6b 65 79 .{...!............c.=.'z'.+.(key
12ae0 20 2d 20 33 36 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 .-.36);...,........}.else.if.(ke
12b00 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 7b 00 00 00 21 20 20 20 20 20 y.>=.46.&&.key.<=.55).{...!.....
12b20 20 20 20 20 20 20 20 63 20 3d 20 27 30 27 20 2b 20 28 6b 65 79 20 2d 20 34 36 29 3b 00 00 00 1f .......c.=.'0'.+.(key.-.46);....
12b40 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 37 29 20 7b 00 ........}.else.if.(key.==.57).{.
12b60 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 20 27 3b 00 00 00 1f 20 20 20 20 20 ...............c.=.'.';.........
12b80 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 38 29 20 7b 00 00 00 15 20 20 ...}.else.if.(key.==.58).{......
12ba0 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d ..........c.=.'\n';............}
12bc0 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 31 34 29 20 7b 00 00 00 15 20 20 20 20 20 20 .else.if.(key.==.14).{..........
12be0 20 20 20 20 20 20 63 20 3d 20 27 5c 62 27 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 ......c.=.'\b';............}....
12c00 20 20 20 20 20 20 20 20 00 00 00 10 20 20 20 20 20 20 20 20 69 66 20 28 63 29 20 7b 00 00 00 25 ....................if.(c).{...%
12c20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 63 ............write(pty_master,.&c
12c40 2c 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d ,.1);............}........}....}
12c60 00 00 00 00 00 00 00 4b 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 .......Kstatic.void.keyboard_mod
12c80 69 66 69 65 72 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 ifiers(void.*data,.struct.wl_key
12ca0 62 6f 61 72 64 20 2a 77 6c 5f 6b 65 79 62 6f 61 72 64 2c 00 00 00 48 20 20 20 20 20 20 20 20 20 board.*wl_keyboard,...H.........
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 73 ......................uint32_t.s
12ce0 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 64 65 70 72 65 73 73 65 64 2c 00 erial,.uint32_t.mods_depressed,.
12d00 00 00 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..K.............................
12d20 20 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 61 74 63 68 65 64 2c 20 75 69 6e 74 33 32 5f ..uint32_t.mods_latched,.uint32_
12d40 74 20 6d 6f 64 73 5f 6c 6f 63 6b 65 64 2c 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.mods_locked,..................
12d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 72 6f 75 70 29 .................uint32_t.group)
12d80 00 00 00 01 7b 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 ....{....}.......>static.const.s
12da0 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 6b 65 79 62 6f truct.wl_keyboard_listener.keybo
12dc0 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1e 20 20 20 20 2e 6b 65 79 6d 61 70 20 ard_listener.=.{.........keymap.
12de0 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 2c 00 00 00 1c 20 20 20 20 2e 65 6e 74 65 72 =.keyboard_keymap,.........enter
12e00 20 3d 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 2c 00 00 00 1c 20 20 20 20 2e 6c 65 61 76 65 .=.keyboard_enter,.........leave
12e20 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 2c 00 00 00 18 20 20 20 20 2e 6b 65 79 20 3d .=.keyboard_leave,.........key.=
12e40 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 2c 00 00 00 24 20 20 20 20 2e 6d 6f 64 69 66 69 65 72 73 .keyboard_key,...$.....modifiers
12e60 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 2c 00 00 00 02 7d 3b 00 00 00 00 .=.keyboard_modifiers,....};....
12e80 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 ...Ystatic.void.seat_capabilitie
12ea0 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 77 6c s(void.*data,.struct.wl_seat.*wl
12ec0 5f 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 61 62 69 6c 69 74 69 65 73 29 00 00 00 _seat,.uint32_t.capabilities)...
12ee0 01 7b 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 61 62 69 6c 69 74 69 65 73 20 26 20 57 4c 5f .{...5....if.(capabilities.&.WL_
12f00 53 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b 45 59 42 4f 41 52 44 29 20 7b 00 00 00 31 20 SEAT_CAPABILITY_KEYBOARD).{...1.
12f20 20 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d 20 77 6c 5f 73 65 61 74 5f 67 65 74 5f 6b 65 .......keyboard.=.wl_seat_get_ke
12f40 79 62 6f 61 72 64 28 77 6c 5f 73 65 61 74 29 3b 00 00 00 45 20 20 20 20 20 20 20 20 77 6c 5f 6b yboard(wl_seat);...E........wl_k
12f60 65 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 6b 65 79 62 6f 61 72 64 2c 20 26 eyboard_add_listener(keyboard,.&
12f80 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 keyboard_listener,.NULL);.......
12fa0 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 36 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 .}....}.......6static.const.stru
12fc0 63 74 20 77 6c 5f 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 73 65 61 74 5f 6c 69 73 74 65 6e 65 ct.wl_seat_listener.seat_listene
12fe0 72 20 3d 20 7b 00 00 00 26 20 20 20 20 2e 63 61 70 61 62 69 6c 69 74 69 65 73 20 3d 20 73 65 61 r.=.{...&.....capabilities.=.sea
13000 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 43 73 74 61 t_capabilities,....};.......Csta
13020 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 28 76 6f 69 64 20 2a 64 61 74 tic.void.handle_global(void.*dat
13040 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c a,.struct.wl_registry.*registry,
13060 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 ...Q..........................ui
13080 6e 74 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 69 6e 74 65 72 66 61 nt32_t.name,.const.char.*interfa
130a0 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 69 6f 6e 29 00 00 00 01 7b 00 00 00 32 20 20 ce,.uint32_t.version)....{...2..
130c0 20 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 63 6f 6d 70 ..if.(strcmp(interface,."wl_comp
130e0 6f 73 69 74 6f 72 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 53 20 20 20 20 20 20 20 20 63 6f 6d 70 ositor").==.0).{...S........comp
13100 6f 73 69 74 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 ositor.=.wl_registry_bind(regist
13120 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 69 6e 74 65 72 66 61 ry,.name,.&wl_compositor_interfa
13140 63 65 2c 20 34 29 3b 00 00 00 32 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 ce,.4);...2....}.else.if.(strcmp
13160 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 (interface,."wl_shm").==.0).{...
13180 45 20 20 20 20 20 20 20 20 73 68 6d 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 E........shm.=.wl_registry_bind(
131a0 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 registry,.name,.&wl_shm_interfac
131c0 65 2c 20 31 29 3b 00 00 00 37 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 e,.1);...7....}.else.if.(strcmp(
131e0 69 6e 74 65 72 66 61 63 65 2c 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 interface,."xdg_wm_base").==.0).
13200 7b 00 00 00 4e 20 20 20 20 20 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 {...N........wm_base.=.wl_regist
13220 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f ry_bind(registry,.name,.&xdg_wm_
13240 62 61 73 65 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 base_interface,.1);...C........x
13260 64 67 5f 77 6d 5f 62 61 73 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c dg_wm_base_add_listener(wm_base,
13280 20 26 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 33 20 20 .&wm_base_listener,.NULL);...3..
132a0 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 ..}.else.if.(strcmp(interface,."
132c0 77 6c 5f 73 65 61 74 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 wl_seat").==.0).{...G........sea
132e0 74 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e t.=.wl_registry_bind(registry,.n
13300 61 6d 65 2c 20 26 77 6c 5f 73 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 ame,.&wl_seat_interface,.1);...9
13320 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 ........wl_seat_add_listener(sea
13340 74 2c 20 26 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 t,.&seat_listener,.NULL);.......
13360 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 59 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c .}....}.......Ystatic.void.handl
13380 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 e_global_remove(void.*data,.stru
133a0 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 20 75 69 6e 74 33 32 ct.wl_registry.*registry,.uint32
133c0 5f 74 20 6e 61 6d 65 29 00 00 00 01 7b 00 00 00 0f 20 20 20 20 28 76 6f 69 64 29 64 61 74 61 3b _t.name)....{........(void)data;
133e0 00 00 00 13 20 20 20 20 28 76 6f 69 64 29 72 65 67 69 73 74 72 79 3b 00 00 00 0f 20 20 20 20 28 ........(void)registry;........(
13400 76 6f 69 64 29 6e 61 6d 65 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f void)name;....}.......>static.co
13420 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 nst.struct.wl_registry_listener.
13440 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1c 20 20 20 20 2e 67 6c registry_listener.=.{.........gl
13460 6f 62 61 6c 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 2c 00 00 00 2a 20 20 20 20 2e 67 6c obal.=.handle_global,...*.....gl
13480 6f 62 61 6c 5f 72 65 6d 6f 76 65 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 5f 72 65 6d 6f obal_remove.=.handle_global_remo
134a0 76 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 ve,....};........static.void.cle
134c0 61 6e 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 73 anup_pty(void)....{........if.(s
134e0 68 65 6c 6c 5f 70 69 64 20 3e 20 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 6b 69 6c 6c 28 hell_pid.>.0).{...!........kill(
13500 73 68 65 6c 6c 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 shell_pid,.SIGTERM);...$........
13520 77 61 69 74 70 69 64 28 73 68 65 6c 6c 5f 70 69 64 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 waitpid(shell_pid,.NULL,.0);....
13540 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 ....}................if.(pty_mas
13560 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 ter.>=.0).{............close(pty
13580 5f 6d 61 73 74 65 72 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a 73 _master);........}....}........s
135a0 74 61 74 69 63 20 69 6e 74 20 73 65 74 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 tatic.int.setup_pty(void)....{..
135c0 00 18 20 20 20 20 73 74 72 75 63 74 20 74 65 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 00 04 20 20 ......struct.termios.term;......
135e0 20 20 00 00 00 36 20 20 20 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 65 .....6....pty_master.=.open("/de
13600 76 2f 70 74 6d 78 22 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 19 v/ptmx",.O_RDWR.|.O_NOCTTY);....
13620 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 ....if.(pty_master.<.0).{.......
13640 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 .....return.-1;........}........
13660 00 00 00 22 20 20 20 20 69 66 20 28 67 72 61 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 ..."....if.(grantpt(pty_master).
13680 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 <.0).{............return.-1;....
136a0 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 20 69 66 20 28 75 6e 6c 6f 63 6b 70 ....}...........#....if.(unlockp
136c0 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 t(pty_master).<.0).{............
136e0 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 3d 20 return.-1;........}...........=.
13700 20 20 20 69 6e 74 20 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f ...int.slave.=.open(ptsname(pty_
13720 6d 61 73 74 65 72 29 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 14 master),.O_RDWR.|.O_NOCTTY);....
13740 20 20 20 20 69 66 20 28 73 6c 61 76 65 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 ....if.(slave.<.0).{............
13760 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 1c 20 return.-1;........}.............
13780 20 20 20 74 63 67 65 74 61 74 74 72 28 73 6c 61 76 65 2c 20 26 74 65 72 6d 29 3b 00 00 00 58 20 ...tcgetattr(slave,.&term);...X.
137a0 20 20 20 74 65 72 6d 2e 63 5f 69 66 6c 61 67 20 26 3d 20 7e 28 49 47 4e 42 52 4b 20 7c 20 42 52 ...term.c_iflag.&=.~(IGNBRK.|.BR
137c0 4b 49 4e 54 20 7c 20 50 41 52 4d 52 4b 20 7c 20 49 53 54 52 49 50 20 7c 20 49 4e 4c 43 52 20 7c KINT.|.PARMRK.|.ISTRIP.|.INLCR.|
137e0 20 49 47 4e 43 52 20 7c 20 49 43 52 4e 4c 20 7c 20 49 58 4f 4e 29 3b 00 00 00 1b 20 20 20 20 74 .IGNCR.|.ICRNL.|.IXON);........t
13800 65 72 6d 2e 63 5f 6f 66 6c 61 67 20 26 3d 20 7e 4f 50 4f 53 54 3b 00 00 00 3e 20 20 20 20 74 65 erm.c_oflag.&=.~OPOST;...>....te
13820 72 6d 2e 63 5f 6c 66 6c 61 67 20 26 3d 20 7e 28 45 43 48 4f 20 7c 20 45 43 48 4f 4e 4c 20 7c 20 rm.c_lflag.&=.~(ECHO.|.ECHONL.|.
13840 49 43 41 4e 4f 4e 20 7c 20 49 53 49 47 20 7c 20 49 45 58 54 45 4e 29 3b 00 00 00 26 20 20 20 20 ICANON.|.ISIG.|.IEXTEN);...&....
13860 74 65 72 6d 2e 63 5f 63 66 6c 61 67 20 26 3d 20 7e 28 43 53 49 5a 45 20 7c 20 50 41 52 45 4e 42 term.c_cflag.&=.~(CSIZE.|.PARENB
13880 29 3b 00 00 00 18 20 20 20 20 74 65 72 6d 2e 63 5f 63 66 6c 61 67 20 7c 3d 20 43 53 38 3b 00 00 );........term.c_cflag.|=.CS8;..
138a0 00 18 20 20 20 20 74 65 72 6d 2e 63 5f 63 63 5b 56 4d 49 4e 5d 20 3d 20 31 3b 00 00 00 19 20 20 ......term.c_cc[VMIN].=.1;......
138c0 20 20 74 65 72 6d 2e 63 5f 63 63 5b 56 54 49 4d 45 5d 20 3d 20 30 3b 00 00 00 25 20 20 20 20 74 ..term.c_cc[VTIME].=.0;...%....t
138e0 63 73 65 74 61 74 74 72 28 73 6c 61 76 65 2c 20 54 43 53 41 4e 4f 57 2c 20 26 74 65 72 6d 29 3b csetattr(slave,.TCSANOW,.&term);
13900 00 00 00 04 20 20 20 20 00 00 00 11 20 20 20 20 63 6c 6f 73 65 28 73 6c 61 76 65 29 3b 00 00 00 ................close(slave);...
13920 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 .....return.0;....}........stati
13940 63 20 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0e 20 c.void.run_shell(void)....{.....
13960 20 20 20 69 6e 74 20 73 6c 61 76 65 3b 00 00 00 04 20 20 20 20 00 00 00 17 20 20 20 20 73 68 65 ...int.slave;................she
13980 6c 6c 5f 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 ll_pid.=.fork();................
139a0 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 if.(shell_pid.==.0).{...........
139c0 20 73 65 74 73 69 64 28 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 3d 20 20 20 20 20 20 .setsid();...............=......
139e0 20 20 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 74 65 ..slave.=.open(ptsname(pty_maste
13a00 72 29 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 08 20 20 20 20 20 r),.O_RDWR.|.O_NOCTTY);.........
13a20 20 20 20 00 00 00 23 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 73 6c 61 76 65 2c 20 54 49 4f 43 ......#........ioctl(slave,.TIOC
13a40 53 43 54 54 59 2c 20 30 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 17 20 20 20 20 20 20 SCTTY,.0);......................
13a60 20 20 64 75 70 32 28 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 64 75 70 ..dup2(slave,.0);............dup
13a80 32 28 73 6c 61 76 65 2c 20 31 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 64 75 70 32 28 73 6c 61 2(slave,.1);............dup2(sla
13aa0 76 65 2c 20 32 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 18 20 20 20 20 20 20 20 20 69 ve,.2);........................i
13ac0 66 20 28 73 6c 61 76 65 20 3e 20 32 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 f.(slave.>.2).{................c
13ae0 6c 6f 73 65 28 73 6c 61 76 65 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 1a 20 20 20 lose(slave);............}.......
13b00 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 20 20 .....close(pty_master);.........
13b20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 3d 20 67 65 74 ......&........char.*shell.=.get
13b40 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 69 66 20 28 21 73 68 env("SHELL");............if.(!sh
13b60 65 6c 6c 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 73 68 65 6c 6c 20 3d 20 22 2f ell).{................shell.=."/
13b80 62 69 6e 2f 73 68 22 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 bin/sh";............}...........
13ba0 20 00 00 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 6c 6c 2c 20 73 68 65 6c 6c 2c ...."........execl(shell,.shell,
13bc0 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 20 .NULL);............exit(1);.....
13be0 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 29 00 ...}....}........int.main(void).
13c00 00 00 01 7b 00 00 00 21 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a ...{...!....struct.wl_registry.*
13c20 72 65 67 69 73 74 72 79 3b 00 00 00 0f 20 20 20 20 66 64 5f 73 65 74 20 66 64 73 3b 00 00 00 04 registry;........fd_set.fds;....
13c40 20 20 20 20 00 00 00 10 20 20 20 20 69 6e 69 74 5f 66 6f 6e 74 28 29 3b 00 00 00 28 20 20 20 20 ............init_font();...(....
13c60 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 2c 20 27 20 27 2c 20 73 69 7a 65 6f 66 28 73 63 72 65 65 memset(screen,.'.',.sizeof(scree
13c80 6e 29 29 3b 00 00 00 04 20 20 20 20 00 00 00 1d 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 43 48 n));................signal(SIGCH
13ca0 4c 44 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 LD,.SIG_IGN);................if.
13cc0 28 73 65 74 75 70 5f 70 74 79 28 29 20 3c 20 30 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 66 (setup_pty().<.0).{...1........f
13ce0 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 73 65 74 75 70 20 printf(stderr,."failed.to.setup.
13d00 70 74 79 5c 6e 22 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 pty\n");............return.1;...
13d20 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 10 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 .....}................run_shell(
13d40 29 3b 00 00 00 04 20 20 20 20 00 00 00 27 20 20 20 20 64 69 73 70 6c 61 79 20 3d 20 77 6c 5f 64 );...........'....display.=.wl_d
13d60 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 28 4e 55 4c 4c 29 3b 00 00 00 13 20 20 20 20 69 66 20 isplay_connect(NULL);........if.
13d80 28 21 64 69 73 70 6c 61 79 29 20 7b 00 00 00 42 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 (!display).{...B........fprintf(
13da0 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 20 77 61 stderr,."failed.to.connect.to.wa
13dc0 79 6c 61 6e 64 20 64 69 73 70 6c 61 79 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c yland.display\n");............cl
13de0 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 eanup_pty();............return.1
13e00 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 30 20 20 20 20 72 65 67 69 73 74 ;........}...........0....regist
13e20 72 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 64 69 73 ry.=.wl_display_get_registry(dis
13e40 70 6c 61 79 29 3b 00 00 00 41 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 5f 6c 69 play);...A....wl_registry_add_li
13e60 73 74 65 6e 65 72 28 72 65 67 69 73 74 72 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 stener(registry,.&registry_liste
13e80 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 72 6f ner,.NULL);..."....wl_display_ro
13ea0 75 6e 64 74 72 69 70 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 undtrip(display);...........*...
13ec0 20 69 66 20 28 21 63 6f 6d 70 6f 73 69 74 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 77 6d 5f .if.(!compositor.||.!shm.||.!wm_
13ee0 62 61 73 65 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 base).{...G........fprintf(stder
13f00 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 72 65 71 75 69 72 65 64 20 77 61 79 6c 61 r,."failed.to.get.required.wayla
13f20 6e 64 20 69 6e 74 65 72 66 61 63 65 73 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c nd.interfaces\n");............cl
13f40 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 eanup_pty();............return.1
13f60 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 66 61 63 ;........}...........7....surfac
13f80 65 20 3d 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 61 63 65 e.=.wl_compositor_create_surface
13fa0 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 (compositor);...@....xdg_surface
13fc0 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 65 28 77 .=.xdg_wm_base_get_xdg_surface(w
13fe0 6d 5f 62 61 73 65 2c 20 73 75 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f 73 75 72 m_base,.surface);...G....xdg_sur
14000 66 61 63 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 26 face_add_listener(xdg_surface,.&
14020 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 04 xdg_surface_listener,.NULL);....
14040 20 20 20 20 00 00 00 35 20 20 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 72 66 61 .......5....toplevel.=.xdg_surfa
14060 63 65 5f 67 65 74 5f 74 6f 70 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 ce_get_toplevel(xdg_surface);...
14080 42 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 74 B....xdg_toplevel_add_listener(t
140a0 6f 70 6c 65 76 65 6c 2c 20 26 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c oplevel,.&toplevel_listener,.NUL
140c0 4c 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 69 74 6c L);...@....xdg_toplevel_set_titl
140e0 65 28 74 6f 70 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 20 77 61 79 6c 61 6e 64 20 74 65 72 6d e(toplevel,."simple.wayland.term
14100 69 6e 61 6c 22 29 3b 00 00 00 41 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f inal");...A....xdg_toplevel_set_
14120 61 70 70 5f 69 64 28 74 6f 70 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 2d 77 61 79 6c 61 6e 64 app_id(toplevel,."simple-wayland
14140 2d 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 77 6c 5f 73 -terminal");................wl_s
14160 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 04 20 20 20 20 00 urface_commit(surface);.........
14180 00 00 15 20 20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e 69 6e 67 29 20 7b 00 00 00 16 20 20 20 20 .......while.(running).{........
141a0 20 20 20 20 46 44 5f 5a 45 52 4f 28 26 66 64 73 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 46 44 ....FD_ZERO(&fds);...!........FD
141c0 5f 53 45 54 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 66 64 73 29 3b 00 00 00 20 20 20 20 20 20 _SET(pty_master,.&fds);.........
141e0 20 20 20 69 6e 74 20 66 64 5f 6d 61 78 20 3d 20 70 74 79 5f 6d 61 73 74 65 72 3b 00 00 00 08 20 ...int.fd_max.=.pty_master;.....
14200 20 20 20 20 20 20 20 00 00 00 33 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 74 20 3d 20 77 6c 5f ..........3........int.ret.=.wl_
14220 64 69 73 70 6c 61 79 5f 70 72 65 70 61 72 65 5f 72 65 61 64 28 64 69 73 70 6c 61 79 29 3b 00 00 display_prepare_read(display);..
14240 00 17 20 20 20 20 20 20 20 20 69 66 20 28 72 65 74 20 3d 3d 20 30 29 20 7b 00 00 00 35 20 20 20 ..........if.(ret.==.0).{...5...
14260 20 20 20 20 20 20 20 20 20 46 44 5f 53 45 54 28 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 66 .........FD_SET(wl_display_get_f
14280 64 28 64 69 73 70 6c 61 79 29 2c 20 26 66 64 73 29 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 d(display),.&fds);...6..........
142a0 20 20 69 66 20 28 66 64 5f 6d 61 78 20 3c 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 66 64 ..if.(fd_max.<.wl_display_get_fd
142c0 28 64 69 73 70 6c 61 79 29 29 20 7b 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (display)).{...4................
142e0 66 64 5f 6d 61 78 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 66 64 28 64 69 73 70 6c fd_max.=.wl_display_get_fd(displ
14300 61 79 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 37 20 20 20 20 20 20 20 ay);................}...7.......
14320 20 20 20 20 20 73 65 6c 65 63 74 28 66 64 5f 6d 61 78 20 2b 20 31 2c 20 26 66 64 73 2c 20 4e 55 .....select(fd_max.+.1,.&fds,.NU
14340 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 LL,.NULL,.NULL);...,............
14360 77 6c 5f 64 69 73 70 6c 61 79 5f 72 65 61 64 5f 65 76 65 6e 74 73 28 64 69 73 70 6c 61 79 29 3b wl_display_read_events(display);
14380 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 ...1............wl_display_dispa
143a0 74 63 68 5f 70 65 6e 64 69 6e 67 28 64 69 73 70 6c 61 79 29 3b 00 00 00 10 20 20 20 20 20 20 20 tch_pending(display);...........
143c0 20 7d 20 65 6c 73 65 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 77 6c 5f 64 69 73 70 .}.else.{...)............wl_disp
143e0 6c 61 79 5f 64 69 73 70 61 74 63 68 28 64 69 73 70 6c 61 79 29 3b 00 00 00 09 20 20 20 20 20 20 lay_dispatch(display);..........
14400 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 29 20 20 20 20 20 20 20 20 69 66 20 28 46 ..}...............)........if.(F
14420 44 5f 49 53 53 45 54 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 66 64 73 29 29 20 7b 00 00 00 1a D_ISSET(pty_master,.&fds)).{....
14440 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 62 75 66 5b 32 35 36 5d 3b 00 00 00 37 20 20 ............char.buf[256];...7..
14460 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 72 65 61 64 28 70 74 79 5f 6d 61 73 74 65 ..........int.n.=.read(pty_maste
14480 72 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 00 00 00 18 20 20 20 20 20 20 20 r,.buf,.sizeof(buf));...........
144a0 20 20 20 20 20 69 66 20 28 6e 20 3e 20 30 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 .....if.(n.>.0).{...............
144c0 20 20 20 20 20 69 6e 74 20 69 3b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 .....int.i;...)................f
144e0 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 7b 00 00 00 29 20 20 20 20 or.(i.=.0;.i.<.n;.i++).{...)....
14500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5c ................if.(buf[i].==.'\
14520 6e 27 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n').{...-.......................
14540 20 74 65 72 6d 69 6e 61 6c 5f 77 72 69 74 65 28 27 5c 72 27 29 3b 00 00 00 15 20 20 20 20 20 20 .terminal_write('\r');..........
14560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............}...+.............
14580 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61 6c 5f 77 72 69 74 65 28 62 75 66 5b 69 5d 29 3b 00 00 .......terminal_write(buf[i]);..
145a0 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 20 20 20 20 20 20 20 20 20 20 ..................}.............
145c0 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 20 20 20 20 20 20 .......need_redraw.=.1;.........
145e0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 20 3d 3d 20 30 29 20 7b 00 00 00 1c 20 .......}.else.if.(n.==.0).{.....
14600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 0d 20 ...............running.=.0;.....
14620 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 ...........}............}.......
14640 20 7d 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b .}................cleanup_pty();
14660 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 ................if.(frame_callba
14680 63 6b 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 ck).{...,........wl_callback_des
146a0 74 72 6f 79 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 05 20 20 20 20 7d 00 00 troy(frame_callback);........}..
146c0 00 04 20 20 20 20 00 00 00 13 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 7b 00 00 00 ..............if.(keyboard).{...
146e0 26 20 20 20 20 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 &........wl_keyboard_destroy(key
14700 62 6f 61 72 64 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 0f 20 20 20 20 board);........}................
14720 69 66 20 28 73 65 61 74 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 64 if.(seat).{............wl_seat_d
14740 65 73 74 72 6f 79 28 73 65 61 74 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 estroy(seat);........}..........
14760 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 04 20 20 20 20 00 ......destroy_buffer();.........
14780 00 00 23 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c ..#....xdg_toplevel_destroy(topl
147a0 65 76 65 6c 29 3b 00 00 00 25 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f evel);...%....xdg_surface_destro
147c0 79 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 y(xdg_surface);........wl_surfac
147e0 65 5f 64 65 73 74 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 21 20 20 20 20 78 64 67 5f 77 e_destroy(surface);...!....xdg_w
14800 6d 5f 62 61 73 65 5f 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 26 20 20 20 20 m_base_destroy(wm_base);...&....
14820 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 wl_compositor_destroy(compositor
14840 29 3b 00 00 00 18 20 20 20 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 );........wl_shm_destroy(shm);..
14860 00 22 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 ."....wl_registry_destroy(regist
14880 72 79 29 3b 00 00 00 23 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 ry);...#....wl_display_disconnec
148a0 74 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 t(display);................retur
148c0 6e 20 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 8a 02 00 00 00 00 00 n.0;....}5......................
148e0 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a7 43 00 00 00 00 00 00 01 00 00 00 00 00 00 ..................C.............
14900 00 35 81 5f d0 00 00 00 0b 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 01 00 00 00 .5._............................
14920 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
149e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a80 00 00 00 00 00 00 00 6a 01 0e cd 04 01 00 00 00 0b 00 f5 18 00 00 01 9a 00 00 00 00 00 00 00 00 .......j........................
14aa0 00 00 00 01 00 00 00 24 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 .......$....xdg_surface_destroy(
14ac0 78 64 67 5f 73 75 72 66 61 63 65 29 f5 18 00 00 01 9b 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 xdg_surface)....................
14ae0 00 00 01 1a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 2d 20 20 20 20 20 20 20 20 65 6c 73 65 ...................-........else
14b00 20 69 66 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 63 20 3d .if.(key.>=.46.&&.key.<=.55).c.=
14b20 20 f5 18 00 00 01 1b 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 8b 00 00 00 00 00 00 00 ................................
14b40 00 00 00 00 01 00 00 00 01 7b f5 18 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 .........{......................
14b60 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 ................................
14b80 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8b 00 00 00 ....5...........................
14ba0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 ................................
14bc0 00 00 8b 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 8f 00 00 00 2d 00 00 00 f9 0f 00 00 00 00 ......................-.........
14be0 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 1a 01 00 00 2d 00 00 00 ............................-...
14c00 00 00 00 00 00 00 00 00 80 00 00 00 24 00 00 00 f8 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............$...................
14c20 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 9a 01 00 00 24 00 00 00 00 00 00 00 00 00 00 00 09 00 ..................$.............
14c40 00 00 01 00 00 00 f7 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 00 00 00 00 00 00 00 35 81 ......./......................5.
14c60 5f d0 00 00 00 0c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 01 00 00 00 00 00 00 _...............................
14c80 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 00 00 ................................
14ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14de0 00 00 00 00 6a 01 0f 67 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 01 ....j..g........................
14e00 a4 00 00 00 19 23 64 65 66 69 6e 65 20 5f 58 4f 50 45 4e 5f 53 4f 55 52 43 45 20 36 30 30 00 00 .....#define._XOPEN_SOURCE.600..
14e20 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 ..#include.<stdio.h>....#include
14e40 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e .<stdlib.h>....#include.<string.
14e60 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 15 23 69 6e h>....#include.<unistd.h>....#in
14e80 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c clude.<sys/mman.h>....#include.<
14ea0 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 sys/ioctl.h>....#include.<sys/wa
14ec0 69 74 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 12 23 it.h>....#include.<fcntl.h>....#
14ee0 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 include.<errno.h>....#include.<s
14f00 69 67 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d 69 6f 73 2e 68 3e ignal.h>....#include.<termios.h>
14f20 00 00 00 11 23 69 6e 63 6c 75 64 65 20 3c 70 6f 6c 6c 2e 68 3e 00 00 00 1b 23 69 6e 63 6c 75 64 ....#include.<poll.h>....#includ
14f40 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 26 23 69 6e 63 6c 75 64 65 e.<wayland-client.h>...&#include
14f60 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f 6c 2e 68 22 00 00 ."xdg-shell-client-protocol.h"..
14f80 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 20 2a 64 69 73 70 6c 61 79 ....."struct.wl_display.*display
14fa0 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 .=.NULL;...(struct.wl_compositor
14fc0 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 22 73 74 72 75 63 74 20 77 .*compositor.=.NULL;..."struct.w
14fe0 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 1a 73 74 l_surface.*surface.=.NULL;....st
15000 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c 3b 00 00 00 1c 73 74 72 75 ruct.wl_shm.*shm.=.NULL;....stru
15020 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 24 73 74 72 75 ct.wl_seat.*seat.=.NULL;...$stru
15040 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 20 3d 20 4e 55 4c 4c 3b ct.wl_keyboard.*keyboard.=.NULL;
15060 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 77 6d 5f 62 61 73 65 20 ...#struct.xdg_wm_base.*wm_base.
15080 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 78 =.NULL;...'struct.xdg_surface.*x
150a0 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 74 72 75 63 74 20 78 64 67 dg_surface.=.NULL;...%struct.xdg
150c0 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e 55 4c 4c 3b 00 00 00 2a 73 _toplevel.*toplevel.=.NULL;...*s
150e0 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 truct.wl_callback.*frame_callbac
15100 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 69 6e 74 20 72 75 6e 6e k.=.NULL;........static.int.runn
15120 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e 64 6f 77 5f 77 69 ing.=.1;....static.int.window_wi
15140 64 74 68 20 3d 20 36 34 30 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e 64 6f 77 5f dth.=.640;....static.int.window_
15160 68 65 69 67 68 74 20 3d 20 34 30 30 3b 00 00 00 1d 73 74 61 74 69 63 20 69 6e 74 20 70 65 6e 64 height.=.400;....static.int.pend
15180 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 70 65 6e ing_width.=.0;....static.int.pen
151a0 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 6e ding_height.=.0;....static.int.n
151c0 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 74 69 63 20 75 6e 73 69 67 eeds_resize.=.0;...(static.unsig
151e0 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 2e ned.char.*pixel_data.=.NULL;....
15200 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 77 69 6e 64 6f 77 5f static.struct.wl_buffer.*window_
15220 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 69 6e 74 buffer.=.NULL;........static.int
15240 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 00 1c 73 74 61 74 69 63 20 70 69 64 5f .pty_master.=.-1;....static.pid_
15260 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 t.shell_pid.=.-1;....static.int.
15280 72 6f 77 73 20 3d 20 32 35 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6c 73 20 3d 20 rows.=.25;....static.int.cols.=.
152a0 38 30 3b 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 63 68 61 72 20 73 63 72 65 65 6e 5b 32 35 80;........static.char.screen[25
152c0 5d 5b 38 30 5d 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 78 20 3d 20 ][80];....static.int.cursor_x.=.
152e0 30 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 00 0;....static.int.cursor_y.=.0;..
15300 00 1b 73 74 61 74 69 63 20 69 6e 74 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 ..static.int.need_redraw.=.1;...
15320 00 00 00 00 5d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 63 68 61 72 28 75 6e 73 69 67 ....]static.void.draw_char(unsig
15340 6e 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 6e 74 20 70 69 74 63 68 2c 20 69 6e 74 20 78 ned.char.*data,.int.pitch,.int.x
15360 2c 20 69 6e 74 20 79 2c 20 63 68 61 72 20 63 68 2c 20 69 6e 74 20 64 72 61 77 5f 63 75 72 73 6f ,.int.y,.char.ch,.int.draw_curso
15380 72 29 00 00 00 01 7b 00 00 00 14 20 20 20 20 69 6e 74 20 70 78 2c 20 70 79 2c 20 69 64 78 3b 00 r)....{........int.px,.py,.idx;.
153a0 00 00 21 20 20 20 20 66 6f 72 20 28 70 79 20 3d 20 30 3b 20 70 79 20 3c 20 31 36 3b 20 70 79 2b ..!....for.(py.=.0;.py.<.16;.py+
153c0 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 70 78 20 3d 20 30 3b 20 70 78 20 +).{...$........for.(px.=.0;.px.
153e0 3c 20 38 3b 20 70 78 2b 2b 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 <.8;.px++).{..."............int.
15400 73 63 72 65 65 6e 5f 78 20 3d 20 78 20 2b 20 70 78 3b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 screen_x.=.x.+.px;..."..........
15420 20 20 69 6e 74 20 73 63 72 65 65 6e 5f 79 20 3d 20 79 20 2b 20 70 79 3b 00 00 00 68 20 20 20 20 ..int.screen_y.=.y.+.py;...h....
15440 20 20 20 20 20 20 20 20 69 66 20 28 73 63 72 65 65 6e 5f 78 20 3e 3d 20 30 20 26 26 20 73 63 72 ........if.(screen_x.>=.0.&&.scr
15460 65 65 6e 5f 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 20 73 63 72 65 65 6e 5f 79 een_x.<.window_width.&&.screen_y
15480 20 3e 3d 20 30 20 26 26 20 73 63 72 65 65 6e 5f 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 .>=.0.&&.screen_y.<.window_heigh
154a0 74 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 78 20 3d 20 28 73 t).{...8................idx.=.(s
154c0 63 72 65 65 6e 5f 79 20 2a 20 70 69 74 63 68 20 2b 20 73 63 72 65 65 6e 5f 78 29 20 2a 20 34 3b creen_y.*.pitch.+.screen_x).*.4;
154e0 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 72 61 77 5f 63 75 72 ...,................if.(draw_cur
15500 73 6f 72 20 26 26 20 70 79 20 3c 20 32 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 sor.&&.py.<.2).{...(............
15520 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 35 35 3b 00 00 00 28 ........data[idx.+.0].=.255;...(
15540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 ....................data[idx.+.1
15560 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ].=.255;...(....................
15580 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 data[idx.+.2].=.255;...(........
155a0 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b ............data[idx.+.3].=.255;
155c0 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 ...'................}.else.if.(c
155e0 68 20 21 3d 20 27 20 27 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.!=.'.').{...(.................
15600 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 20 20 ...data[idx.+.0].=.212;...(.....
15620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 32 ...............data[idx.+.1].=.2
15640 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 12;...(....................data[
15660 69 64 78 20 2b 20 32 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 idx.+.2].=.212;...(.............
15680 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 18 20 .......data[idx.+.3].=.255;.....
156a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 26 20 20 20 20 20 ...............}.else.{...&.....
156c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 ...............data[idx.+.0].=.0
156e0 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 ;...&....................data[id
15700 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 x.+.1].=.0;...&.................
15720 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 00 28 20 20 20 20 20 20 20 ...data[idx.+.2].=.0;...(.......
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 .............data[idx.+.3].=.255
15760 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 ;....................}..........
15780 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 ......}............}........}...
157a0 01 7d 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 65 .}........static.void.draw_scree
157c0 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 23 20 20 20 20 69 6e 74 20 78 2c 20 79 2c 20 70 69 n(void)....{...#....int.x,.y,.pi
157e0 74 63 68 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 04 20 20 20 20 00 00 00 29 20 tch.=.window_width;...........).
15800 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 ...for.(y.=.0;.y.<.window_height
15820 3b 20 79 2b 2b 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b 20 ;.y++).{...,........for.(x.=.0;.
15840 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 x.<.window_width;.x++).{...*....
15860 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 79 20 2a 20 70 69 74 63 68 20 2b 20 78 ........int.idx.=.(y.*.pitch.+.x
15880 29 20 2a 20 34 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 ).*.4;...$............pixel_data
158a0 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 [idx.+.0].=.0;...$............pi
158c0 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 xel_data[idx.+.1].=.0;...$......
158e0 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 ......pixel_data[idx.+.2].=.0;..
15900 00 26 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 33 .&............pixel_data[idx.+.3
15920 5d 20 3d 20 32 35 35 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 ].=.255;............}........}..
15940 00 04 20 20 20 20 00 00 00 20 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 72 6f ..............for.(y.=.0;.y.<.ro
15960 77 73 3b 20 79 2b 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 ws;.y++).{...$........for.(x.=.0
15980 3b 20 78 20 3c 20 63 6f 6c 73 3b 20 78 2b 2b 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 ;.x.<.cols;.x++).{...=..........
159a0 20 20 69 6e 74 20 69 73 5f 63 75 72 73 6f 72 20 3d 20 28 79 20 3d 3d 20 63 75 72 73 6f 72 5f 79 ..int.is_cursor.=.(y.==.cursor_y
159c0 20 26 26 20 78 20 3d 3d 20 63 75 72 73 6f 72 5f 78 29 3b 00 00 00 51 20 20 20 20 20 20 20 20 20 .&&.x.==.cursor_x);...Q.........
159e0 20 20 20 64 72 61 77 5f 63 68 61 72 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 70 69 74 63 68 2c 20 ...draw_char(pixel_data,.pitch,.
15a00 78 20 2a 20 38 2c 20 79 20 2a 20 31 36 2c 20 73 63 72 65 65 6e 5b 79 5d 5b 78 5d 2c 20 69 73 5f x.*.8,.y.*.16,.screen[y][x],.is_
15a20 63 75 72 73 6f 72 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 cursor);............}........}..
15a40 00 01 7d 00 00 00 00 00 00 00 34 73 74 61 74 69 63 20 76 6f 69 64 20 74 65 72 6d 69 6e 61 6c 5f ..}.......4static.void.terminal_
15a60 77 72 69 74 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 62 75 66 2c 20 69 6e 74 20 6c 65 6e 29 00 write(const.char.*buf,.int.len).
15a80 00 00 01 7b 00 00 00 0a 20 20 20 20 69 6e 74 20 69 3b 00 00 00 1f 20 20 20 20 66 6f 72 20 28 69 ...{........int.i;........for.(i
15aa0 20 3d 20 30 3b 20 69 20 3c 20 6c 65 6e 3b 20 69 2b 2b 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 .=.0;.i.<.len;.i++).{...........
15ac0 20 63 68 61 72 20 63 20 3d 20 62 75 66 5b 69 5d 3b 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 .char.c.=.buf[i];............if.
15ae0 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 (c.==.'\n').{................cur
15b00 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 sor_x.=.0;................cursor
15b20 5f 79 2b 2b 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f _y++;...#............if.(cursor_
15b40 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y.>=.rows).{...$................
15b60 63 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 41 20 20 20 20 20 20 20 20 cursor_y.=.rows.-.1;...A........
15b80 20 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 ........memmove(screen[0],.scree
15ba0 6e 5b 31 5d 2c 20 28 72 6f 77 73 20 2d 20 31 29 20 2a 20 63 6f 6c 73 29 3b 00 00 00 34 20 20 20 n[1],.(rows.-.1).*.cols);...4...
15bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 .............memset(screen[rows.
15be0 2d 20 31 5d 2c 20 27 20 27 2c 20 63 6f 6c 73 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 -.1],.'.',.cols);...............
15c00 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 .}................need_redraw.=.
15c20 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 1;............}.else.if.(c.==.'\
15c40 72 27 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 r').{................cursor_x.=.
15c60 30 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 0;................need_redraw.=.
15c80 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 1;............}.else.if.(c.==.'\
15ca0 62 27 29 20 7b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f b').{................if.(cursor_
15cc0 78 20 3e 20 30 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 x.>.0).{....................curs
15ce0 6f 72 5f 78 2d 2d 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 or_x--;...1................scree
15d00 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 5f 78 5d 20 3d 20 27 20 27 3b 00 00 00 20 n[cursor_y][cursor_x].=.'.';....
15d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b ................need_redraw.=.1;
15d40 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 28 20 20 20 20 20 20 20 20 7d 20 65 ................}...(........}.e
15d60 6c 73 65 20 69 66 20 28 63 20 3e 3d 20 33 32 20 26 26 20 63 20 3c 20 31 32 37 29 20 7b 00 00 00 lse.if.(c.>=.32.&&.c.<.127).{...
15d80 2b 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 +............screen[cursor_y][cu
15da0 72 73 6f 72 5f 78 5d 20 3d 20 63 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 rsor_x].=.c;................curs
15dc0 6f 72 5f 78 2b 2b 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f or_x++;...#............if.(curso
15de0 72 5f 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 1d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r_x.>=.cols).{..................
15e00 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 20 ..cursor_x.=.0;.................
15e20 20 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...cursor_y++;...'..............
15e40 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 28 20 20 20 ..if.(cursor_y.>=.rows).{...(...
15e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 .................cursor_y.=.rows
15e80 20 2d 20 31 3b 00 00 00 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d .-.1;...E....................mem
15ea0 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 6e 5b 31 5d 2c 20 28 72 6f 77 73 move(screen[0],.screen[1],.(rows
15ec0 20 2d 20 31 29 20 2a 20 63 6f 6c 73 29 3b 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .-.1).*.cols);...8..............
15ee0 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 2d 20 31 5d 2c 20 27 ......memset(screen[rows.-.1],.'
15f00 20 27 2c 20 63 6f 6c 73 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 .',.cols);....................}.
15f20 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 ...............}................
15f40 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 need_redraw.=.1;............}...
15f60 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 69 6e 74 20 63 72 .....}....}.......'static.int.cr
15f80 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 eate_shm_file(size_t.size)....{.
15fa0 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b 20 20 20 20 63 68 61 72 20 74 65 6d 70 6c .......int.fd;...+....char.templ
15fc0 61 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 68 6d 2d 58 58 58 58 58 58 22 3b 00 00 00 ate[].=."/tmp/wl-shm-XXXXXX";...
15fe0 04 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b 73 74 65 6d 70 28 74 65 6d 70 6c 61 .............fd.=.mkstemp(templa
16000 74 65 29 3b 00 00 00 1a 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d te);........if.(fd.<.0).return.-
16020 31 3b 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 28 66 64 2c 20 28 6f 66 66 1;...)....if.(ftruncate(fd,.(off
16040 5f 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f 73 65 _t)size).<.0).{............close
16060 28 66 64 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 (fd);............return.-1;.....
16080 20 20 20 7d 00 00 00 15 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 ...}........unlink(template);...
160a0 0e 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 .....return.fd;....}.......=stat
160c0 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 63 72 65 61 74 65 5f 62 75 66 66 ic.struct.wl_buffer.*create_buff
160e0 65 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 er(int.width,.int.height)....{..
16100 00 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 64 74 68 20 2a 20 34 3b 00 00 00 ......int.stride.=.width.*.4;...
16120 1f 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 73 74 72 69 64 65 20 2a 20 68 65 69 67 68 74 3b .....int.size.=.stride.*.height;
16140 00 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c ........int.fd;........struct.wl
16160 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 3b 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 _shm_pool.*pool;........struct.w
16180 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 72 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 l_buffer.*buffer;...............
161a0 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 29 3b 00 00 00 1c .fd.=.create_shm_file(size);....
161c0 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 04 ....if.(fd.<.0).return.NULL;....
161e0 20 20 20 20 00 00 00 4d 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 .......M....pixel_data.=.mmap(NU
16200 4c 4c 2c 20 73 69 7a 65 2c 20 50 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 LL,.size,.PROT_READ.|.PROT_WRITE
16220 2c 20 4d 41 50 5f 53 48 41 52 45 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 ,.MAP_SHARED,.fd,.0);...#....if.
16240 28 70 69 78 65 6c 5f 64 61 74 61 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 12 (pixel_data.==.MAP_FAILED).{....
16260 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 ........close(fd);............re
16280 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 2d 20 turn.NULL;........}...........-.
162a0 20 20 20 70 6f 6f 6c 20 3d 20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d ...pool.=.wl_shm_create_pool(shm
162c0 2c 20 66 64 2c 20 73 69 7a 65 29 3b 00 00 00 5f 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f ,.fd,.size);..._....buffer.=.wl_
162e0 73 68 6d 5f 70 6f 6f 6c 5f 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 shm_pool_create_buffer(pool,.0,.
16300 77 69 64 74 68 2c 20 68 65 69 67 68 74 2c 20 73 74 72 69 64 65 2c 20 57 4c 5f 53 48 4d 5f 46 4f width,.height,.stride,.WL_SHM_FO
16320 52 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 6c 5f 73 68 6d 5f 70 6f RMAT_ARGB8888);........wl_shm_po
16340 6f 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 ol_destroy(pool);........close(f
16360 64 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 66 65 72 d);................return.buffer
16380 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 6f ;....}........static.void.destro
163a0 79 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 77 y_buffer(void)....{........if.(w
163c0 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 77 6c 5f 62 75 indow_buffer).{...)........wl_bu
163e0 66 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 3b 00 00 00 1d ffer_destroy(window_buffer);....
16400 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 ........window_buffer.=.NULL;...
16420 05 20 20 20 20 7d 00 00 00 15 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 .....}........if.(pixel_data).{.
16440 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 ..=........munmap(pixel_data,.wi
16460 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 2a 20 34 29 3b ndow_width.*.window_height.*.4);
16480 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 ............pixel_data.=.NULL;..
164a0 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 74 69 63 20 76 6f 69 64 20 ......}....}.......0static.void.
164c0 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 resize_window(int.width,.int.hei
164e0 67 68 74 29 00 00 00 01 7b 00 00 00 15 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 ght)....{........cols.=.width./.
16500 38 3b 00 00 00 17 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 31 36 3b 00 00 00 8;........rows.=.height./.16;...
16520 1d 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 31 30 29 20 63 6f 6c 73 20 3d 20 31 30 3b 00 00 .....if.(cols.<.10).cols.=.10;..
16540 00 1b 20 20 20 20 69 66 20 28 72 6f 77 73 20 3c 20 35 29 20 72 6f 77 73 20 3d 20 35 3b 00 00 00 ......if.(rows.<.5).rows.=.5;...
16560 04 20 20 20 20 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 .............destroy_buffer();..
16580 00 1c 20 20 20 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 3d 20 63 6f 6c 73 20 2a 20 38 3b 00 00 ......window_width.=.cols.*.8;..
165a0 00 1e 20 20 20 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 72 6f 77 73 20 2a 20 31 36 3b ......window_height.=.rows.*.16;
165c0 00 00 00 3f 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 ...?....window_buffer.=.create_b
165e0 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 uffer(window_width,.window_heigh
16600 74 29 3b 00 00 00 14 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 04 20 t);........need_redraw.=.1;.....
16620 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 ...........if.(pty_master.>=.0).
16640 7b 00 00 00 3f 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 20 3d {...?........struct.winsize.ws.=
16660 20 7b 20 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 2c 20 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c .{..ws_row.=.rows,..ws_col.=.col
16680 73 20 7d 3b 00 00 00 2b 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 s.};...+........ioctl(pty_master
166a0 2c 20 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 ,.TIOCSWINSZ,.&ws);........}....
166c0 7d 00 00 00 00 00 00 00 4f 73 74 61 74 69 63 20 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 }.......Ostatic.void.frame_done(
166e0 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a void.*data,.struct.wl_callback.*
16700 63 61 6c 6c 62 61 63 6b 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 callback,.uint32_t.time)....{...
16720 30 20 20 20 20 69 66 20 28 63 61 6c 6c 62 61 63 6b 29 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 0....if.(callback).wl_callback_d
16740 65 73 74 72 6f 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 04 20 20 20 20 00 00 00 17 20 20 20 estroy(callback);...............
16760 20 69 66 20 28 6e 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 20 20 20 20 20 20 .if.(needs_resize).{...5........
16780 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 2c 20 70 65 6e resize_window(pending_width,.pen
167a0 64 69 6e 67 5f 68 65 69 67 68 74 29 3b 00 00 00 2b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 ding_height);...+........pending
167c0 5f 77 69 64 74 68 20 3d 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 19 _width.=.pending_height.=.0;....
167e0 20 20 20 20 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 05 20 20 20 ........needs_resize.=.0;.......
16800 20 7d 00 00 00 04 20 20 20 20 00 00 00 24 20 20 20 20 69 66 20 28 6e 65 65 64 5f 72 65 64 72 61 .}...........$....if.(need_redra
16820 77 20 26 26 20 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 64 72 w.&&.pixel_data).{............dr
16840 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 aw_screen();............need_red
16860 72 61 77 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 18 20 20 20 raw.=.0;........}...............
16880 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 .if.(window_buffer).{...8.......
168a0 20 77 6c 5f 73 75 72 66 61 63 65 5f 61 74 74 61 63 68 28 73 75 72 66 61 63 65 2c 20 77 69 6e 64 .wl_surface_attach(surface,.wind
168c0 6f 77 5f 62 75 66 66 65 72 2c 20 30 2c 20 30 29 3b 00 00 00 46 20 20 20 20 20 20 20 20 77 6c 5f ow_buffer,.0,.0);...F........wl_
168e0 73 75 72 66 61 63 65 5f 64 61 6d 61 67 65 28 73 75 72 66 61 63 65 2c 20 30 2c 20 30 2c 20 77 69 surface_damage(surface,.0,.0,.wi
16900 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 23 20 ndow_width,.window_height);...#.
16920 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 .......wl_surface_commit(surface
16940 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 55 20 20 20 20 73 74 61 74 69 );........}...........U....stati
16960 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 c.const.struct.wl_callback_liste
16980 6e 65 72 20 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 64 6f 6e 65 20 3d 20 66 ner.frame_listener.=.{..done.=.f
169a0 72 61 6d 65 5f 64 6f 6e 65 20 7d 3b 00 00 00 2f 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 rame_done.};.../....frame_callba
169c0 63 6b 20 3d 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 ck.=.wl_surface_frame(surface);.
169e0 00 00 44 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 ..D....wl_callback_add_listener(
16a00 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c 20 26 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c frame_callback,.&frame_listener,
16a20 20 4e 55 4c 4c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 53 73 74 61 74 69 63 20 76 6f 69 64 20 .NULL);....}.......Sstatic.void.
16a40 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 xdg_wm_base_ping(void.*data,.str
16a60 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 62 61 73 65 2c 20 75 69 6e 74 33 32 5f 74 20 uct.xdg_wm_base.*base,.uint32_t.
16a80 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 23 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f serial)....{...#....xdg_wm_base_
16aa0 70 6f 6e 67 28 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 59 pong(base,.serial);....}.......Y
16ac0 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f static.const.struct.xdg_wm_base_
16ae0 6c 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 70 listener.wm_base_listener.=.{..p
16b00 69 6e 67 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 20 7d 3b 00 00 00 00 00 00 00 ing.=.xdg_wm_base_ping.};.......
16b20 4d 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 Mstatic.void.xdg_toplevel_config
16b40 75 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 ure(void.*data,.struct.xdg_tople
16b60 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 vel.*toplevel,...Q..............
16b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 .....................int32_t.w,.
16ba0 69 6e 74 33 32 5f 74 20 68 2c 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 int32_t.h,.struct.wl_array.*stat
16bc0 65 73 29 00 00 00 01 7b 00 00 00 19 20 20 20 20 69 66 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e es)....{........if.(w.>.0.&&.h.>
16be0 20 30 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d .0).{............pending_width.=
16c00 20 77 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 .w;............pending_height.=.
16c20 68 3b 00 00 00 19 20 20 20 20 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 h;............needs_resize.=.1;.
16c40 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 49 73 74 61 74 69 63 20 76 6f 69 64 .......}....}.......Istatic.void
16c60 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 .xdg_toplevel_close(void.*data,.
16c80 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 29 00 00 struct.xdg_toplevel.*toplevel)..
16ca0 00 01 7b 00 00 00 10 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 ..{........running.=.0;....}....
16cc0 00 00 00 3f 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c ...?static.const.struct.xdg_topl
16ce0 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 evel_listener.toplevel_listener.
16d00 3d 20 7b 00 00 00 28 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c =.{...(.....configure.=.xdg_topl
16d20 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 evel_configure,.........close.=.
16d40 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 xdg_toplevel_close,....};.......
16d60 5b 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 [static.void.xdg_surface_configu
16d80 72 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 re(void.*data,.struct.xdg_surfac
16da0 65 20 2a 73 75 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 e.*surface,.uint32_t.serial)....
16dc0 7b 00 00 00 2f 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 {.../....xdg_surface_ack_configu
16de0 72 65 28 73 75 72 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 19 20 20 20 20 69 66 20 28 re(surface,.serial);........if.(
16e00 21 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 69 6e !window_buffer).{...C........win
16e20 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f dow_buffer.=.create_buffer(windo
16e40 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 20 20 w_width,.window_height);..."....
16e60 20 20 20 20 66 72 61 6d 65 5f 64 6f 6e 65 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 ....frame_done(NULL,.NULL,.0);..
16e80 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 67 73 74 61 74 69 63 20 63 6f 6e 73 74 ......}....}.......gstatic.const
16ea0 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 64 67 .struct.xdg_surface_listener.xdg
16ec0 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 63 6f 6e 66 69 67 75 72 65 _surface_listener.=.{..configure
16ee0 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 20 7d 3b 00 00 00 00 00 .=.xdg_surface_configure.};.....
16f00 00 00 42 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 28 76 6f 69 64 ..Bstatic.void.keyboard_key(void
16f20 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 .*data,.struct.wl_keyboard.*keyb
16f40 6f 61 72 64 2c 00 00 00 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oard,...V.......................
16f60 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 ..uint32_t.serial,.uint32_t.time
16f80 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 20 75 69 6e 74 33 32 5f 74 20 73 74 61 74 65 29 00 ,.uint32_t.key,.uint32_t.state).
16fa0 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 ...{...D....if.(state.==.WL_KEYB
16fc0 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 45 44 20 26 26 20 70 74 79 5f 6d 61 OARD_KEY_STATE_PRESSED.&&.pty_ma
16fe0 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 63 68 61 72 20 63 20 3d ster.>=.0).{............char.c.=
17000 20 30 3b 00 00 00 3f 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3e 3d 20 38 20 26 26 20 6b .0;...?........if.(key.>=.8.&&.k
17020 65 79 20 3c 3d 20 39 29 20 63 20 3d 20 28 6b 65 79 20 3d 3d 20 38 29 20 3f 20 30 78 37 66 20 3a ey.<=.9).c.=.(key.==.8).?.0x7f.:
17040 20 27 5c 74 27 3b 00 00 00 44 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e .'\t';...D........else.if.(key.>
17060 3d 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 29 20 63 20 3d 20 22 71 77 65 72 74 79 75 69 =.16.&&.key.<=.25).c.=."qwertyui
17080 6f 70 22 5b 6b 65 79 20 2d 20 31 36 5d 3b 00 00 00 43 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 op"[key.-.16];...C........else.i
170a0 66 20 28 6b 65 79 20 3e 3d 20 32 36 20 26 26 20 6b 65 79 20 3c 3d 20 33 35 29 20 63 20 3d 20 22 f.(key.>=.26.&&.key.<=.35).c.=."
170c0 61 73 64 66 67 68 6a 6b 6c 22 5b 6b 65 79 20 2d 20 32 36 5d 3b 00 00 00 41 20 20 20 20 20 20 20 asdfghjkl"[key.-.26];...A.......
170e0 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d 20 34 35 .else.if.(key.>=.36.&&.key.<=.45
17100 29 20 63 20 3d 20 22 7a 78 63 76 62 6e 6d 22 5b 6b 65 79 20 2d 20 33 36 5d 3b 00 00 00 44 20 20 ).c.=."zxcvbnm"[key.-.36];...D..
17120 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 ......else.if.(key.>=.46.&&.key.
17140 3c 3d 20 35 35 29 20 63 20 3d 20 22 30 31 32 33 34 35 36 37 38 39 22 5b 6b 65 79 20 2d 20 34 36 <=.55).c.=."0123456789"[key.-.46
17160 5d 3b 00 00 00 24 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 37 ];...$........else.if.(key.==.57
17180 29 20 63 20 3d 20 27 20 27 3b 00 00 00 25 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b ).c.=.'.';...%........else.if.(k
171a0 65 79 20 3d 3d 20 35 38 29 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 25 20 20 20 20 20 20 20 20 65 ey.==.58).c.=.'\n';...%........e
171c0 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 31 34 29 20 63 20 3d 20 27 5c 62 27 3b 00 00 00 28 lse.if.(key.==.14).c.=.'\b';...(
171e0 20 20 20 20 20 20 20 20 69 66 20 28 63 29 20 77 72 69 74 65 28 70 74 79 5f 6d 61 73 74 65 72 2c ........if.(c).write(pty_master,
17200 20 26 63 2c 20 31 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 .&c,.1);........}....}.......>st
17220 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 6c 69 atic.const.struct.wl_keyboard_li
17240 73 74 65 6e 65 72 20 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 58 stener.keyboard_listener.=.{...X
17260 20 20 20 20 2e 6b 65 79 6d 61 70 20 3d 20 4e 55 4c 4c 2c 20 2e 65 6e 74 65 72 20 3d 20 4e 55 4c .....keymap.=.NULL,..enter.=.NUL
17280 4c 2c 20 2e 6c 65 61 76 65 20 3d 20 4e 55 4c 4c 2c 20 2e 6b 65 79 20 3d 20 6b 65 79 62 6f 61 72 L,..leave.=.NULL,..key.=.keyboar
172a0 64 5f 6b 65 79 2c 20 2e 6d 6f 64 69 66 69 65 72 73 20 3d 20 4e 55 4c 4c 00 00 00 02 7d 3b 00 00 d_key,..modifiers.=.NULL....};..
172c0 00 00 00 00 00 4e 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 .....Nstatic.void.seat_capabilit
172e0 69 65 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a ies(void.*data,.struct.wl_seat.*
17300 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 73 29 00 00 00 01 7b 00 00 00 2d 20 20 20 seat,.uint32_t.caps)....{...-...
17320 20 69 66 20 28 63 61 70 73 20 26 20 57 4c 5f 53 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b .if.(caps.&.WL_SEAT_CAPABILITY_K
17340 45 59 42 4f 41 52 44 29 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d EYBOARD).{............keyboard.=
17360 20 77 6c 5f 73 65 61 74 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 28 73 65 61 74 29 3b 00 00 00 45 .wl_seat_get_keyboard(seat);...E
17380 20 20 20 20 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 ........wl_keyboard_add_listener
173a0 28 6b 65 79 62 6f 61 72 64 2c 20 26 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e (keyboard,.&keyboard_listener,.N
173c0 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 5b 73 74 61 74 69 ULL);........}....}.......[stati
173e0 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 c.const.struct.wl_seat_listener.
17400 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 63 61 70 61 62 69 6c 69 74 69 65 73 20 seat_listener.=.{..capabilities.
17420 3d 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 20 7d 3b 00 00 00 00 00 00 00 43 73 74 =.seat_capabilities.};.......Cst
17440 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 28 76 6f 69 64 20 2a 64 61 atic.void.handle_global(void.*da
17460 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 ta,.struct.wl_registry.*registry
17480 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 ,...Q..........................u
174a0 69 6e 74 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 69 6e 74 65 72 66 int32_t.name,.const.char.*interf
174c0 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 69 6f 6e 29 00 00 00 01 7b 00 00 00 30 20 ace,.uint32_t.version)....{...0.
174e0 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 63 6f 6d ...if.(strcmp(interface,."wl_com
17500 70 6f 73 69 74 6f 72 22 29 20 3d 3d 20 30 29 00 00 00 53 20 20 20 20 20 20 20 20 63 6f 6d 70 6f positor").==.0)...S........compo
17520 73 69 74 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 sitor.=.wl_registry_bind(registr
17540 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 69 6e 74 65 72 66 61 63 y,.name,.&wl_compositor_interfac
17560 65 2c 20 34 29 3b 00 00 00 2e 20 20 20 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e e,.4);........else.if.(strcmp(in
17580 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 29 00 00 00 45 20 20 20 20 terface,."wl_shm").==.0)...E....
175a0 20 20 20 20 73 68 6d 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 ....shm.=.wl_registry_bind(regis
175c0 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 try,.name,.&wl_shm_interface,.1)
175e0 3b 00 00 00 35 20 20 20 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 ;...5....else.if.(strcmp(interfa
17600 63 65 2c 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 ce,."xdg_wm_base").==.0).{...N..
17620 20 20 20 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 ......wm_base.=.wl_registry_bind
17640 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e (registry,.name,.&xdg_wm_base_in
17660 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 terface,.1);...C........xdg_wm_b
17680 61 73 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 ase_add_listener(wm_base,.&wm_ba
176a0 73 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 33 20 20 20 20 7d 20 65 6c 73 se_listener,.NULL);...3....}.els
176c0 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 65 61 74 e.if.(strcmp(interface,."wl_seat
176e0 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 74 20 3d 20 77 6c 5f ").==.0).{...G........seat.=.wl_
17700 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 registry_bind(registry,.name,.&w
17720 6c 5f 73 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 20 20 20 20 20 20 20 l_seat_interface,.1);...9.......
17740 20 77 6c 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 74 2c 20 26 73 65 61 .wl_seat_add_listener(seat,.&sea
17760 74 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d t_listener,.NULL);........}....}
17780 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 72 .......>static.const.struct.wl_r
177a0 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e egistry_listener.registry_listen
177c0 65 72 20 3d 20 7b 00 00 00 32 20 20 20 20 2e 67 6c 6f 62 61 6c 20 3d 20 68 61 6e 64 6c 65 5f 67 er.=.{...2.....global.=.handle_g
177e0 6c 6f 62 61 6c 2c 20 2e 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 20 3d 20 4e 55 4c 4c 00 00 00 02 lobal,..global_remove.=.NULL....
17800 7d 3b 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 5f 70 74 };........static.void.cleanup_pt
17820 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 30 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 y(void)....{...0....if.(shell_pi
17840 64 20 3e 20 30 29 20 6b 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 29 3b d.>.0).kill(shell_pid,.SIGTERM);
17860 00 00 00 2b 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 63 6c 6f ...+....if.(pty_master.>=.0).clo
17880 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1a 73 74 61 74 se(pty_master);....}........stat
178a0 69 63 20 69 6e 74 20 73 65 74 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 36 20 ic.int.setup_pty(void)....{...6.
178c0 20 20 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 2f 70 74 6d 78 22 ...pty_master.=.open("/dev/ptmx"
178e0 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 22 20 20 20 20 69 66 20 ,.O_RDWR.|.O_NOCTTY);..."....if.
17900 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 18 20 (pty_master.<.0).return.-1;.....
17920 20 20 20 67 72 61 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 19 20 20 20 20 75 ...grantpt(pty_master);........u
17940 6e 6c 6f 63 6b 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 0d 20 20 20 20 72 65 74 75 nlockpt(pty_master);........retu
17960 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 rn.0;....}........static.void.ru
17980 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 20 20 20 73 68 65 6c 6c 5f n_shell(void)....{........shell_
179a0 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 19 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 pid.=.fork();........if.(shell_p
179c0 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 69 6e 74 20 73 6c 61 76 65 20 id.==.0).{...6........int.slave.
179e0 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 74 65 72 29 2c 20 4f 5f 52 44 =.open(ptsname(pty_master),.O_RD
17a00 57 52 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 73 65 74 73 69 64 28 29 3b 00 00 00 23 20 20 20 WR);............setsid();...#...
17a20 20 20 20 20 20 69 6f 63 74 6c 28 73 6c 61 76 65 2c 20 54 49 4f 43 53 43 54 54 59 2c 20 30 29 3b .....ioctl(slave,.TIOCSCTTY,.0);
17a40 00 00 00 37 20 20 20 20 20 20 20 20 64 75 70 32 28 73 6c 61 76 65 2c 20 30 29 3b 20 64 75 70 32 ...7........dup2(slave,.0);.dup2
17a60 28 73 6c 61 76 65 2c 20 31 29 3b 20 64 75 70 32 28 73 6c 61 76 65 2c 20 32 29 3b 00 00 00 28 20 (slave,.1);.dup2(slave,.2);...(.
17a80 20 20 20 20 20 20 20 63 6c 6f 73 65 28 73 6c 61 76 65 29 3b 20 63 6c 6f 73 65 28 70 74 79 5f 6d .......close(slave);.close(pty_m
17aa0 61 73 74 65 72 29 3b 00 00 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 3d aster);...&........char.*shell.=
17ac0 20 67 65 74 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 00 00 45 20 20 20 20 20 20 20 20 65 78 65 .getenv("SHELL");...E........exe
17ae0 63 6c 28 73 68 65 6c 6c 20 3f 20 73 68 65 6c 6c 20 3a 20 22 2f 62 69 6e 2f 73 68 22 2c 20 73 68 cl(shell.?.shell.:."/bin/sh",.sh
17b00 65 6c 6c 20 3f 20 73 68 65 6c 6c 20 3a 20 22 73 68 22 2c 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 ell.?.shell.:."sh",.NULL);......
17b20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 ......exit(1);........}....}....
17b40 00 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 21 20 20 20 20 73 ....int.main(void)....{...!....s
17b60 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 3b 00 00 00 19 truct.wl_registry.*registry;....
17b80 20 20 20 20 73 74 72 75 63 74 20 70 6f 6c 6c 66 64 20 66 64 73 5b 32 5d 3b 00 00 00 04 20 20 20 ....struct.pollfd.fds[2];.......
17ba0 20 00 00 00 28 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 2c 20 27 20 27 2c 20 73 69 7a ....(....memset(screen,.'.',.siz
17bc0 65 6f 66 28 73 63 72 65 65 6e 29 29 3b 00 00 00 1d 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 43 eof(screen));........signal(SIGC
17be0 48 4c 44 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 20 20 20 00 00 00 22 20 20 20 20 69 66 HLD,.SIG_IGN);..........."....if
17c00 20 28 73 65 74 75 70 5f 70 74 79 28 29 20 3c 20 30 29 20 72 65 74 75 72 6e 20 31 3b 00 00 00 10 .(setup_pty().<.0).return.1;....
17c20 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 27 20 20 20 20 ....run_shell();...........'....
17c40 64 69 73 70 6c 61 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 28 4e 55 4c display.=.wl_display_connect(NUL
17c60 4c 29 3b 00 00 00 2e 20 20 20 20 69 66 20 28 21 64 69 73 70 6c 61 79 29 20 7b 20 63 6c 65 61 6e L);........if.(!display).{.clean
17c80 75 70 5f 70 74 79 28 29 3b 20 72 65 74 75 72 6e 20 31 3b 20 7d 00 00 00 04 20 20 20 20 00 00 00 up_pty();.return.1;.}...........
17ca0 30 20 20 20 20 72 65 67 69 73 74 72 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 72 0....registry.=.wl_display_get_r
17cc0 65 67 69 73 74 72 79 28 64 69 73 70 6c 61 79 29 3b 00 00 00 41 20 20 20 20 77 6c 5f 72 65 67 69 egistry(display);...A....wl_regi
17ce0 73 74 72 79 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 72 65 67 69 73 74 72 79 2c 20 26 72 65 67 stry_add_listener(registry,.&reg
17d00 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 22 20 20 20 20 77 6c istry_listener,.NULL);..."....wl
17d20 5f 64 69 73 70 6c 61 79 5f 72 6f 75 6e 64 74 72 69 70 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 _display_roundtrip(display);....
17d40 20 20 20 20 00 00 00 45 20 20 20 20 69 66 20 28 21 63 6f 6d 70 6f 73 69 74 6f 72 20 7c 7c 20 21 .......E....if.(!compositor.||.!
17d60 73 68 6d 20 7c 7c 20 21 77 6d 5f 62 61 73 65 29 20 7b 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 shm.||.!wm_base).{.cleanup_pty()
17d80 3b 20 72 65 74 75 72 6e 20 31 3b 20 7d 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 ;.return.1;.}...........7....sur
17da0 66 61 63 65 20 3d 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 face.=.wl_compositor_create_surf
17dc0 61 63 65 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 ace(compositor);...@....xdg_surf
17de0 61 63 65 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 ace.=.xdg_wm_base_get_xdg_surfac
17e00 65 28 77 6d 5f 62 61 73 65 2c 20 73 75 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f e(wm_base,.surface);...G....xdg_
17e20 73 75 72 66 61 63 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 surface_add_listener(xdg_surface
17e40 2c 20 26 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 ,.&xdg_surface_listener,.NULL);.
17e60 00 00 35 20 20 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 67 65 ..5....toplevel.=.xdg_surface_ge
17e80 74 5f 74 6f 70 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 42 20 20 20 20 t_toplevel(xdg_surface);...B....
17ea0 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 74 6f 70 6c 65 76 xdg_toplevel_add_listener(toplev
17ec0 65 6c 2c 20 26 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 el,.&toplevel_listener,.NULL);..
17ee0 00 40 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 69 74 6c 65 28 74 6f 70 .@....xdg_toplevel_set_title(top
17f00 6c 65 76 65 6c 2c 20 22 73 69 6d 70 6c 65 20 77 61 79 6c 61 6e 64 20 74 65 72 6d 69 6e 61 6c 22 level,."simple.wayland.terminal"
17f20 29 3b 00 00 00 1f 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 );........wl_surface_commit(surf
17f40 61 63 65 29 3b 00 00 00 04 20 20 20 20 00 00 00 2b 20 20 20 20 66 64 73 5b 30 5d 2e 66 64 20 3d ace);...........+....fds[0].fd.=
17f60 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 66 64 28 64 69 73 70 6c 61 79 29 3b 00 00 00 1b .wl_display_get_fd(display);....
17f80 20 20 20 20 66 64 73 5b 30 5d 2e 65 76 65 6e 74 73 20 3d 20 50 4f 4c 4c 49 4e 3b 00 00 00 1b 20 ....fds[0].events.=.POLLIN;.....
17fa0 20 20 20 66 64 73 5b 31 5d 2e 66 64 20 3d 20 70 74 79 5f 6d 61 73 74 65 72 3b 00 00 00 1b 20 20 ...fds[1].fd.=.pty_master;......
17fc0 20 20 66 64 73 5b 31 5d 2e 65 76 65 6e 74 73 20 3d 20 50 4f 4c 4c 49 4e 3b 00 00 00 04 20 20 20 ..fds[1].events.=.POLLIN;.......
17fe0 20 00 00 00 15 20 20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e 69 6e 67 29 20 7b 00 00 00 28 20 20 .........while.(running).{...(..
18000 20 20 20 20 20 20 69 66 20 28 70 6f 6c 6c 28 66 64 73 2c 20 32 2c 20 2d 31 29 20 3c 20 30 29 20 ......if.(poll(fds,.2,.-1).<.0).
18020 62 72 65 61 6b 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 69 66 break;...............&........if
18040 20 28 66 64 73 5b 30 5d 2e 72 65 76 65 6e 74 73 20 26 20 50 4f 4c 4c 49 4e 29 20 7b 00 00 00 3a .(fds[0].revents.&.POLLIN).{...:
18060 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 ............if.(wl_display_dispa
18080 74 63 68 28 64 69 73 70 6c 61 79 29 20 3d 3d 20 2d 31 29 20 62 72 65 61 6b 3b 00 00 00 09 20 20 tch(display).==.-1).break;......
180a0 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 69 ......}...............&........i
180c0 66 20 28 66 64 73 5b 31 5d 2e 72 65 76 65 6e 74 73 20 26 20 50 4f 4c 4c 49 4e 29 20 7b 00 00 00 f.(fds[1].revents.&.POLLIN).{...
180e0 1a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 62 75 66 5b 32 35 36 5d 3b 00 00 00 37 20 .............char.buf[256];...7.
18100 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 72 65 61 64 28 70 74 79 5f 6d 61 73 74 ...........int.n.=.read(pty_mast
18120 65 72 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 00 00 00 18 20 20 20 20 20 20 er,.buf,.sizeof(buf));..........
18140 20 20 20 20 20 20 69 66 20 28 6e 20 3e 20 30 29 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 ......if.(n.>.0).{...'..........
18160 20 20 20 20 20 20 74 65 72 6d 69 6e 61 6c 5f 77 72 69 74 65 28 62 75 66 2c 20 6e 29 3b 00 00 00 ......terminal_write(buf,.n);...
18180 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 20 3d 3d 20 30 29 20 .............}.else.if.(n.==.0).
181a0 7b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 {....................running.=.0
181c0 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 ;................}............}.
181e0 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f .......}................cleanup_
18200 70 74 79 28 29 3b 00 00 00 30 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 77 6c 5f 6b pty();...0....if.(keyboard).wl_k
18220 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 62 6f 61 72 64 29 3b 00 00 00 24 20 20 eyboard_destroy(keyboard);...$..
18240 20 20 69 66 20 28 73 65 61 74 29 20 77 6c 5f 73 65 61 74 5f 64 65 73 74 72 6f 79 28 73 65 61 74 ..if.(seat).wl_seat_destroy(seat
18260 29 3b 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 23 20 );........destroy_buffer();...#.
18280 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 65 6c ...xdg_toplevel_destroy(toplevel
182a0 29 3b 00 00 00 25 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 78 64 );...%....xdg_surface_destroy(xd
182c0 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 65 g_surface);........wl_surface_de
182e0 73 74 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 21 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 stroy(surface);...!....xdg_wm_ba
18300 73 65 5f 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 26 20 20 20 20 77 6c 5f 63 se_destroy(wm_base);...&....wl_c
18320 6f 6d 70 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 ompositor_destroy(compositor);..
18340 00 18 20 20 20 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 00 22 20 20 ......wl_shm_destroy(shm);..."..
18360 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 29 3b ..wl_registry_destroy(registry);
18380 00 00 00 23 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 74 28 64 69 ...#....wl_display_disconnect(di
183a0 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b splay);................return.0;
183c0 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 a4 01 00 00 00 00 00 00 01 00 00 ....}5..........................
183e0 00 00 00 00 00 00 00 00 00 00 00 00 00 d8 30 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f ..............0..............5._
18400 d0 00 00 00 0d 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 01 00 00 00 00 00 00 00 ................................
18420 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
184e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18580 00 00 00 6a 01 0f 67 04 01 00 00 00 0d 00 f5 18 00 00 01 be 00 00 00 00 00 00 00 00 00 00 00 01 ...j..g.........................
185a0 00 00 00 04 20 20 20 20 f5 18 00 00 01 bf 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 2b ...............................+
185c0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 1c 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d .....................configure.=
185e0 20 78 64 67 5f 74 6f 70 6c 65 76 65 f5 18 00 00 01 2c 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 .xdg_topleve.....,..............
18600 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 10 20 20 20 20 20 20 20 20 20 20 20 20 ................................
18620 66 6f 72 20 f5 18 00 00 00 8d 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 for.............................
18640 00 00 00 00 00 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 ..............................5.
18660 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 10 00 00 00 00 00 ................................
18680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 8c 00 00 00 ................................
186a0 10 00 00 00 00 00 00 00 00 00 00 00 9f 00 00 00 1c 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 ................................
186c0 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 2b 01 00 00 1c 00 00 00 00 00 00 00 00 00 ..................+.............
186e0 00 00 93 00 00 00 04 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 ................................
18700 00 00 f5 18 00 00 00 00 be 01 00 00 04 00 00 00 00 00 00 00 00 00 00 00 75 00 00 00 01 00 00 00 ........................u.......
18720 f7 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a4 0c 00 00 00 00 00 00 35 81 5f d0 00 00 00 0e ./......................5._.....
18740 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff ................................
18760 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
187e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
188a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 ..............................j.
188c0 10 14 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 34 00 00 00 1f 23 ..........................4....#
188e0 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 define._POSIX_C_SOURCE.200809L..
18900 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 ..#include.<stdio.h>....#include
18920 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e .<stdlib.h>....#include.<string.
18940 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 15 23 69 6e h>....#include.<unistd.h>....#in
18960 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c clude.<sys/mman.h>....#include.<
18980 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 sys/ioctl.h>....#include.<sys/wa
189a0 69 74 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 65 6c 65 63 74 2e 68 3e it.h>....#include.<sys/select.h>
189c0 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 12 23 69 6e 63 6c 75 ....#include.<fcntl.h>....#inclu
189e0 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c de.<errno.h>....#include.<signal
18a00 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d 69 6f 73 2e 68 3e 00 00 00 1b 23 .h>....#include.<termios.h>....#
18a20 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 26 23 69 include.<wayland-client.h>...&#i
18a40 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f nclude."xdg-shell-client-protoco
18a60 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 20 2a 64 l.h"......."struct.wl_display.*d
18a80 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 6f 6d 70 isplay.=.NULL;...(struct.wl_comp
18aa0 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 22 73 74 ositor.*compositor.=.NULL;..."st
18ac0 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b ruct.wl_surface.*surface.=.NULL;
18ae0 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c 3b 00 00 ....struct.wl_shm.*shm.=.NULL;..
18b00 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c 3b 00 00 ..struct.wl_seat.*seat.=.NULL;..
18b20 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 20 3d .$struct.wl_keyboard.*keyboard.=
18b40 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 77 6d .NULL;...#struct.xdg_wm_base.*wm
18b60 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 _base.=.NULL;...'struct.xdg_surf
18b80 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 74 72 75 ace.*xdg_surface.=.NULL;...%stru
18ba0 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e 55 4c 4c ct.xdg_toplevel.*toplevel.=.NULL
18bc0 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d 65 5f 63 ;...*struct.wl_callback.*frame_c
18be0 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 69 6e allback.=.NULL;........static.in
18c00 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e t.running.=.1;....static.int.win
18c20 64 6f 77 5f 77 69 64 74 68 20 3d 20 36 34 30 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 77 dow_width.=.640;....static.int.w
18c40 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 34 30 30 3b 00 00 00 1d 73 74 61 74 69 63 20 69 6e indow_height.=.400;....static.in
18c60 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 63 20 69 t.pending_width.=.0;....static.i
18c80 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 74 69 63 nt.pending_height.=.0;....static
18ca0 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 74 69 63 .int.needs_resize.=.0;...(static
18cc0 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c .unsigned.char.*pixel_data.=.NUL
18ce0 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 77 L;....static.struct.wl_buffer.*w
18d00 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 74 61 74 indow_buffer.=.NULL;........stat
18d20 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 00 1a 73 74 61 74 69 ic.int.pty_master.=.-1;....stati
18d40 63 20 69 6e 74 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 2d 31 3b 00 00 00 1c 73 74 61 74 69 63 20 c.int.pty_slave.=.-1;....static.
18d60 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 73 74 61 74 69 63 20 pid_t.shell_pid.=.-1;....static.
18d80 69 6e 74 20 72 6f 77 73 20 3d 20 32 35 3b 00 00 00 15 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6c int.rows.=.25;....static.int.col
18da0 73 20 3d 20 38 30 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 77 69 64 74 68 s.=.80;....static.int.char_width
18dc0 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 68 65 69 67 68 74 20 .=.8;....static.int.char_height.
18de0 3d 20 31 36 3b 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 =.16;.......$static.unsigned.cha
18e00 72 20 73 63 72 65 65 6e 5b 32 35 5d 5b 38 30 5d 3b 00 00 00 2e 73 74 61 74 69 63 20 75 6e 73 69 r.screen[25][80];....static.unsi
18e20 67 6e 65 64 20 63 68 61 72 20 73 63 72 65 65 6e 5f 63 6f 6c 6f 72 73 5b 32 35 5d 5b 38 30 5d 5b gned.char.screen_colors[25][80][
18e40 33 5d 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 3];....static.int.cursor_x.=.0;.
18e60 00 00 18 73 74 61 74 69 63 20 69 6e 74 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 00 00 1b 73 ...static.int.cursor_y.=.0;....s
18e80 74 61 74 69 63 20 69 6e 74 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 00 00 00 tatic.int.need_redraw.=.1;......
18ea0 00 6b 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 63 68 61 72 28 75 6e 73 69 67 6e 65 64 .kstatic.void.draw_char(unsigned
18ec0 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 6e 74 20 73 74 72 69 64 65 2c 20 69 6e 74 20 78 2c 20 .char.*data,.int.stride,.int.x,.
18ee0 69 6e 74 20 79 2c 20 63 68 61 72 20 63 68 2c 20 69 6e 74 20 66 67 5f 72 2c 20 69 6e 74 20 66 67 int.y,.char.ch,.int.fg_r,.int.fg
18f00 5f 67 2c 20 69 6e 74 20 66 67 5f 62 29 00 00 00 01 7b 00 00 00 0f 20 20 20 20 69 6e 74 20 63 78 _g,.int.fg_b)....{........int.cx
18f20 2c 20 63 79 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 70 78 2c 20 70 79 3b 00 00 00 04 20 20 20 20 ,.cy;........int.px,.py;........
18f40 00 00 00 2a 20 20 20 20 66 6f 72 20 28 63 79 20 3d 20 30 3b 20 63 79 20 3c 20 63 68 61 72 5f 68 ...*....for.(cy.=.0;.cy.<.char_h
18f60 65 69 67 68 74 3b 20 63 79 2b 2b 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 66 6f 72 20 28 63 eight;.cy++).{...-........for.(c
18f80 78 20 3d 20 30 3b 20 63 78 20 3c 20 63 68 61 72 5f 77 69 64 74 68 3b 20 63 78 2b 2b 29 20 7b 00 x.=.0;.cx.<.char_width;.cx++).{.
18fa0 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 70 78 20 3d 20 78 20 2b 20 63 78 3b 00 00 00 18 20 ...............px.=.x.+.cx;.....
18fc0 20 20 20 20 20 20 20 20 20 20 20 70 79 20 3d 20 79 20 2b 20 63 79 3b 00 00 00 50 20 20 20 20 20 ...........py.=.y.+.cy;...P.....
18fe0 20 20 20 20 20 20 20 69 66 20 28 70 78 20 3e 3d 20 30 20 26 26 20 70 78 20 3c 20 77 69 6e 64 6f .......if.(px.>=.0.&&.px.<.windo
19000 77 5f 77 69 64 74 68 20 26 26 20 70 79 20 3e 3d 20 30 20 26 26 20 70 79 20 3c 20 77 69 6e 64 6f w_width.&&.py.>=.0.&&.py.<.windo
19020 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 w_height).{...1................i
19040 6e 74 20 69 64 78 20 3d 20 28 70 79 20 2a 20 73 74 72 69 64 65 20 2b 20 70 78 29 20 2a 20 34 3b nt.idx.=.(py.*.stride.+.px).*.4;
19060 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 20 21 3d 20 27 20 ....................if.(ch.!=.'.
19080 27 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 ').{...)....................data
190a0 5b 69 64 78 20 2b 20 30 5d 20 3d 20 66 67 5f 72 3b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 [idx.+.0].=.fg_r;...)...........
190c0 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 66 67 5f 67 3b 00 00 .........data[idx.+.1].=.fg_g;..
190e0 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b .)....................data[idx.+
19100 20 32 5d 20 3d 20 66 67 5f 62 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .2].=.fg_b;...(.................
19120 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 18 20 20 20 20 20 ...data[idx.+.3].=.255;.........
19140 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 20 ...........}.else.{...&.........
19160 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 3b 00 00 00 ...........data[idx.+.0].=.0;...
19180 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 &....................data[idx.+.
191a0 31 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 1].=.0;...&....................d
191c0 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 ata[idx.+.2].=.0;...(...........
191e0 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 .........data[idx.+.3].=.255;...
19200 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 .................}..............
19220 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 ..}............}........}....}..
19240 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 65 6e 28 76 6f ......static.void.draw_screen(vo
19260 69 64 29 00 00 00 01 7b 00 00 00 0d 20 20 20 20 69 6e 74 20 78 2c 20 79 3b 00 00 00 1e 20 20 20 id)....{........int.x,.y;.......
19280 20 69 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 04 20 .int.stride.=.window_width;.....
192a0 20 20 20 00 00 00 29 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 77 69 6e 64 6f ......)....for.(y.=.0;.y.<.windo
192c0 77 5f 68 65 69 67 68 74 3b 20 79 2b 2b 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 66 6f 72 20 w_height;.y++).{...,........for.
192e0 28 78 20 3d 20 30 3b 20 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b (x.=.0;.x.<.window_width;.x++).{
19300 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 79 20 2a 20 73 ...+............int.idx.=.(y.*.s
19320 74 72 69 64 65 20 2b 20 78 29 20 2a 20 34 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 tride.+.x).*.4;...$............p
19340 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 ixel_data[idx.+.0].=.0;...$.....
19360 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 .......pixel_data[idx.+.1].=.0;.
19380 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 ..$............pixel_data[idx.+.
193a0 32 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 2].=.0;...&............pixel_dat
193c0 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 a[idx.+.3].=.255;............}..
193e0 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 20 20 20 20 66 6f 72 20 28 79 20 3d 20 ......}................for.(y.=.
19400 30 3b 20 79 20 3c 20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 66 0;.y.<.rows;.y++).{...$........f
19420 6f 72 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 63 6f 6c 73 3b 20 78 2b 2b 29 20 7b 00 00 00 4b 20 or.(x.=.0;.x.<.cols;.x++).{...K.
19440 20 20 20 20 20 20 20 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 70 69 78 65 6c 5f 64 61 74 61 2c ...........draw_char(pixel_data,
19460 20 73 74 72 69 64 65 2c 20 78 20 2a 20 63 68 61 72 5f 77 69 64 74 68 2c 20 79 20 2a 20 63 68 61 .stride,.x.*.char_width,.y.*.cha
19480 72 5f 68 65 69 67 68 74 2c 20 00 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r_height,....2..................
194a0 20 20 20 73 63 72 65 65 6e 5b 79 5d 5b 78 5d 2c 20 32 31 32 2c 20 32 31 32 2c 20 32 31 32 29 3b ...screen[y][x],.212,.212,.212);
194c0 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 ............}........}..........
194e0 00 27 20 20 20 20 66 6f 72 20 28 79 20 3d 20 30 3b 20 79 20 3c 20 63 68 61 72 5f 68 65 69 67 68 .'....for.(y.=.0;.y.<.char_heigh
19500 74 3b 20 79 2b 2b 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 66 6f 72 20 28 78 20 3d 20 30 3b t;.y++).{...*........for.(x.=.0;
19520 20 78 20 3c 20 63 68 61 72 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2f 20 20 20 20 20 .x.<.char_width;.x++).{.../.....
19540 20 20 20 20 20 20 20 69 6e 74 20 70 78 20 3d 20 63 75 72 73 6f 72 5f 78 20 2a 20 63 68 61 72 5f .......int.px.=.cursor_x.*.char_
19560 77 69 64 74 68 20 2b 20 78 3b 00 00 00 30 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 79 width.+.x;...0............int.py
19580 20 3d 20 63 75 72 73 6f 72 5f 79 20 2a 20 63 68 61 72 5f 68 65 69 67 68 74 20 2b 20 79 3b 00 00 .=.cursor_y.*.char_height.+.y;..
195a0 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 .:............if.(px.<.window_wi
195c0 64 74 68 20 26 26 20 70 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 31 dth.&&.py.<.window_height).{...1
195e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 70 79 20 2a 20 ................int.idx.=.(py.*.
19600 73 74 72 69 64 65 20 2b 20 70 78 29 20 2a 20 34 3b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 stride.+.px).*.4;...*...........
19620 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 35 35 3b 00 .....pixel_data[idx.+.0].=.255;.
19640 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 ..*................pixel_data[id
19660 78 20 2b 20 31 5d 20 3d 20 32 35 35 3b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 x.+.1].=.255;...*...............
19680 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 2a 20 .pixel_data[idx.+.2].=.255;...*.
196a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 ...............pixel_data[idx.+.
196c0 33 5d 20 3d 20 32 35 35 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 3].=.255;................}......
196e0 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 35 73 74 61 ......}........}....}.......5sta
19700 74 69 63 20 76 6f 69 64 20 74 65 72 6d 69 6e 61 6c 5f 6f 75 74 70 75 74 28 63 6f 6e 73 74 20 63 tic.void.terminal_output(const.c
19720 68 61 72 20 2a 62 75 66 2c 20 69 6e 74 20 6c 65 6e 29 00 00 00 01 7b 00 00 00 0a 20 20 20 20 69 har.*buf,.int.len)....{........i
19740 6e 74 20 69 3b 00 00 00 1f 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6c 65 6e nt.i;........for.(i.=.0;.i.<.len
19760 3b 20 69 2b 2b 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 ;.i++).{...!........unsigned.cha
19780 72 20 63 20 3d 20 62 75 66 5b 69 5d 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 18 20 20 20 r.c.=.buf[i];...................
197a0 20 20 20 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 .....if.(c.==.'\n').{...........
197c0 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 .....cursor_x.=.0;..............
197e0 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ..cursor_y++;...#............if.
19800 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 3f 20 20 20 20 20 20 20 20 (cursor_y.>=.rows).{...?........
19820 20 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 ........memmove(screen[0],.scree
19840 6e 5b 31 5d 2c 20 28 72 6f 77 73 20 2d 20 31 29 20 2a 20 38 30 29 3b 00 00 00 32 20 20 20 20 20 n[1],.(rows.-.1).*.80);...2.....
19860 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 72 6f 77 73 20 2d 20 ...........memset(screen[rows.-.
19880 31 5d 2c 20 27 20 27 2c 20 38 30 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1],.'.',.80);...$...............
198a0 20 63 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 0d 20 20 20 20 20 20 20 .cursor_y.=.rows.-.1;...........
198c0 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 .....}................need_redra
198e0 77 20 3d 20 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d w.=.1;............}.else.if.(c.=
19900 3d 20 27 5c 72 27 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f =.'\r').{................cursor_
19920 78 20 3d 20 30 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 x.=.0;................need_redra
19940 77 20 3d 20 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d w.=.1;............}.else.if.(c.=
19960 3d 20 27 5c 62 27 29 20 7b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 =.'\b').{................if.(cur
19980 73 6f 72 5f 78 20 3e 20 30 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sor_x.>.0).{....................
199a0 63 75 72 73 6f 72 5f 78 2d 2d 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 cursor_x--;...1................s
199c0 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 5f 78 5d 20 3d 20 27 20 27 3b creen[cursor_y][cursor_x].=.'.';
199e0 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 ....................need_redraw.
19a00 3d 20 31 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1f 20 20 20 20 20 20 20 =.1;................}...........
19a20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 74 27 29 20 7b 00 00 00 2c 20 20 20 20 .}.else.if.(c.==.'\t').{...,....
19a40 20 20 20 20 20 20 20 20 69 6e 74 20 73 70 61 63 65 73 20 3d 20 38 20 2d 20 28 63 75 72 73 6f 72 ........int.spaces.=.8.-.(cursor
19a60 5f 78 20 25 20 38 29 3b 00 00 00 41 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 _x.%.8);...A............for.(int
19a80 20 73 20 3d 20 30 3b 20 73 20 3c 20 73 70 61 63 65 73 20 26 26 20 63 75 72 73 6f 72 5f 78 20 3c .s.=.0;.s.<.spaces.&&.cursor_x.<
19aa0 20 63 6f 6c 73 3b 20 73 2b 2b 29 20 7b 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cols;.s++).{...3...............
19ac0 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 5f 78 2b 2b 5d 20 3d 20 .screen[cursor_y][cursor_x++].=.
19ae0 27 20 27 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 '.';................}...........
19b00 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 28 20 20 20 20 20 20 20 .....need_redraw.=.1;...(.......
19b20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3e 3d 20 33 32 20 26 26 20 63 20 3c 20 31 32 37 29 20 .}.else.if.(c.>=.32.&&.c.<.127).
19b40 7b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d {...#............if.(cursor_x.>=
19b60 20 63 6f 6c 73 29 20 7b 00 00 00 1d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 .cols).{....................curs
19b80 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 or_x.=.0;....................cur
19ba0 73 6f 72 5f 79 2b 2b 3b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 sor_y++;...'................if.(
19bc0 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 20 cursor_y.>=.rows).{...C.........
19be0 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 ...........memmove(screen[0],.sc
19c00 72 65 65 6e 5b 31 5d 2c 20 28 72 6f 77 73 20 2d 20 31 29 20 2a 20 38 30 29 3b 00 00 00 36 20 20 reen[1],.(rows.-.1).*.80);...6..
19c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b ..................memset(screen[
19c40 72 6f 77 73 20 2d 20 31 5d 2c 20 27 20 27 2c 20 38 30 29 3b 00 00 00 28 20 20 20 20 20 20 20 20 rows.-.1],.'.',.80);...(........
19c60 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b ............cursor_y.=.rows.-.1;
19c80 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 ....................}...........
19ca0 20 20 20 20 20 7d 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 .....}...-............screen[cur
19cc0 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 5f 78 2b 2b 5d 20 3d 20 63 3b 00 00 00 1c 20 20 20 20 20 sor_y][cursor_x++].=.c;.........
19ce0 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 1d 20 20 20 20 20 .......need_redraw.=.1;.........
19d00 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 32 37 29 20 7b 00 00 00 13 20 20 20 20 ...}.else.if.(c.==.27).{........
19d20 20 20 20 20 20 20 20 20 69 20 2b 3d 20 32 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 ........i.+=.2;............}....
19d40 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 69 6e 74 20 63 72 65 ....}....}.......'static.int.cre
19d60 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 00 ate_shm_file(size_t.size)....{..
19d80 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 2b 20 20 20 20 63 68 61 72 20 74 65 6d 70 6c 61 ......int.fd;...+....char.templa
19da0 74 65 5b 5d 20 3d 20 22 2f 74 6d 70 2f 77 6c 2d 73 68 6d 2d 58 58 58 58 58 58 22 3b 00 00 00 04 te[].=."/tmp/wl-shm-XXXXXX";....
19dc0 20 20 20 20 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b 73 74 65 6d 70 28 74 65 6d 70 6c 61 74 ............fd.=.mkstemp(templat
19de0 65 29 3b 00 00 00 1a 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 e);........if.(fd.<.0).return.-1
19e00 3b 00 00 00 29 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 28 66 64 2c 20 28 6f 66 66 5f ;...)....if.(ftruncate(fd,.(off_
19e20 74 29 73 69 7a 65 29 20 3c 20 30 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 t)size).<.0).{............close(
19e40 66 64 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 fd);............return.-1;......
19e60 20 20 7d 00 00 00 15 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 0e ..}........unlink(template);....
19e80 20 20 20 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 ....return.fd;....}.......=stati
19ea0 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 63 72 65 61 74 65 5f 62 75 66 66 65 c.struct.wl_buffer.*create_buffe
19ec0 72 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 r(int.width,.int.height)....{...
19ee0 1b 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 64 74 68 20 2a 20 34 3b 00 00 00 1f .....int.stride.=.width.*.4;....
19f00 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 73 74 72 69 64 65 20 2a 20 68 65 69 67 68 74 3b 00 ....int.size.=.stride.*.height;.
19f20 00 00 0b 20 20 20 20 69 6e 74 20 66 64 3b 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f .......int.fd;........struct.wl_
19f40 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 3b 00 00 00 1d 20 20 20 20 73 74 72 75 63 74 20 77 6c shm_pool.*pool;........struct.wl
19f60 5f 62 75 66 66 65 72 20 2a 62 75 66 66 65 72 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 _buffer.*buffer;................
19f80 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 29 3b 00 00 00 1c 20 fd.=.create_shm_file(size);.....
19fa0 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 04 20 ...if.(fd.<.0).return.NULL;.....
19fc0 20 20 20 00 00 00 4d 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 70 28 4e 55 4c ......M....pixel_data.=.mmap(NUL
19fe0 4c 2c 20 73 69 7a 65 2c 20 50 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 52 49 54 45 2c L,.size,.PROT_READ.|.PROT_WRITE,
1a000 20 4d 41 50 5f 53 48 41 52 45 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 20 69 66 20 28 .MAP_SHARED,.fd,.0);...#....if.(
1a020 70 69 78 65 6c 5f 64 61 74 61 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b 00 00 00 12 20 pixel_data.==.MAP_FAILED).{.....
1a040 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 72 65 74 .......close(fd);............ret
1a060 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 12 20 20 urn.NULL;........}..............
1a080 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 ..draw_screen();...........-....
1a0a0 70 6f 6f 6c 20 3d 20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 66 pool.=.wl_shm_create_pool(shm,.f
1a0c0 64 2c 20 73 69 7a 65 29 3b 00 00 00 5f 20 20 20 20 62 75 66 66 65 72 20 3d 20 77 6c 5f 73 68 6d d,.size);..._....buffer.=.wl_shm
1a0e0 5f 70 6f 6f 6c 5f 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 6f 6f 6c 2c 20 30 2c 20 77 69 64 _pool_create_buffer(pool,.0,.wid
1a100 74 68 2c 20 68 65 69 67 68 74 2c 20 73 74 72 69 64 65 2c 20 57 4c 5f 53 48 4d 5f 46 4f 52 4d 41 th,.height,.stride,.WL_SHM_FORMA
1a120 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f T_ARGB8888);........wl_shm_pool_
1a140 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b destroy(pool);........close(fd);
1a160 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 6e 20 62 75 66 66 65 72 3b 00 00 ................return.buffer;..
1a180 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 6f 79 5f 62 ..}........static.void.destroy_b
1a1a0 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 77 69 6e 64 uffer(void)....{........if.(wind
1a1c0 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 77 6c 5f 62 75 66 66 65 ow_buffer).{...)........wl_buffe
1a1e0 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 3b 00 00 00 1d 20 20 20 r_destroy(window_buffer);.......
1a200 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 05 20 20 .....window_buffer.=.NULL;......
1a220 20 20 7d 00 00 00 15 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 00 00 3d ..}........if.(pixel_data).{...=
1a240 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 28 70 69 78 65 6c 5f 64 61 74 61 2c 20 77 69 6e 64 6f ........munmap(pixel_data,.windo
1a260 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 2a 20 34 29 3b 00 00 00 w_width.*.window_height.*.4);...
1a280 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 00 00 00 05 20 .........pixel_data.=.NULL;.....
1a2a0 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 73 ...}....}.......0static.void.res
1a2c0 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 ize_window(int.width,.int.height
1a2e0 29 00 00 00 01 7b 00 00 00 2a 20 20 20 20 69 66 20 28 77 69 64 74 68 20 3c 3d 20 30 20 7c 7c 20 )....{...*....if.(width.<=.0.||.
1a300 68 65 69 67 68 74 20 3c 3d 20 30 29 20 72 65 74 75 72 6e 3b 00 00 00 04 20 20 20 20 00 00 00 1e height.<=.0).return;............
1a320 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 63 68 61 72 5f 77 69 64 74 68 3b 00 00 ....cols.=.width./.char_width;..
1a340 00 20 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f 20 63 68 61 72 5f 68 65 69 67 68 ......rows.=.height./.char_heigh
1a360 74 3b 00 00 00 1d 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 31 30 29 20 63 6f 6c 73 20 3d 20 t;........if.(cols.<.10).cols.=.
1a380 31 30 3b 00 00 00 1b 20 20 20 20 69 66 20 28 72 6f 77 73 20 3c 20 35 29 20 72 6f 77 73 20 3d 20 10;........if.(rows.<.5).rows.=.
1a3a0 35 3b 00 00 00 1d 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3e 20 38 30 29 20 63 6f 6c 73 20 3d 20 5;........if.(cols.>.80).cols.=.
1a3c0 38 30 3b 00 00 00 1d 20 20 20 20 69 66 20 28 72 6f 77 73 20 3e 20 32 35 29 20 72 6f 77 73 20 3d 80;........if.(rows.>.25).rows.=
1a3e0 20 32 35 3b 00 00 00 04 20 20 20 20 00 00 00 25 20 20 20 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 .25;...........%....window_width
1a400 20 3d 20 63 6f 6c 73 20 2a 20 63 68 61 72 5f 77 69 64 74 68 3b 00 00 00 27 20 20 20 20 77 69 6e .=.cols.*.char_width;...'....win
1a420 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 72 6f 77 73 20 2a 20 63 68 61 72 5f 68 65 69 67 68 74 3b dow_height.=.rows.*.char_height;
1a440 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 ................destroy_buffer()
1a460 3b 00 00 00 3f 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f ;...?....window_buffer.=.create_
1a480 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 buffer(window_width,.window_heig
1a4a0 68 74 29 3b 00 00 00 14 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 15 ht);........need_redraw.=.1;....
1a4c0 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 04 20 20 20 20 00 00 00 ....needs_resize.=.0;...........
1a4e0 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 1a 20 .....if.(pty_master.>=.0).{.....
1a500 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 73 3b 00 00 00 19 20 20 20 .......struct.winsize.ws;.......
1a520 20 20 20 20 20 77 73 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 3b 00 00 00 19 20 20 20 20 20 20 .....ws.ws_row.=.rows;..........
1a540 20 20 77 73 2e 77 73 5f 63 6f 6c 20 3d 20 63 6f 6c 73 3b 00 00 00 24 20 20 20 20 20 20 20 20 77 ..ws.ws_col.=.cols;...$........w
1a560 73 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 25 20 s.ws_xpixel.=.window_width;...%.
1a580 20 20 20 20 20 20 20 77 73 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 68 65 69 .......ws.ws_ypixel.=.window_hei
1a5a0 67 68 74 3b 00 00 00 2b 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 ght;...+........ioctl(pty_master
1a5c0 2c 20 54 49 4f 43 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 ,.TIOCSWINSZ,.&ws);........}....
1a5e0 7d 00 00 00 00 00 00 00 4f 73 74 61 74 69 63 20 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 }.......Ostatic.void.frame_done(
1a600 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a void.*data,.struct.wl_callback.*
1a620 63 61 6c 6c 62 61 63 6b 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 callback,.uint32_t.time)....{...
1a640 30 20 20 20 20 69 66 20 28 63 61 6c 6c 62 61 63 6b 29 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 0....if.(callback).wl_callback_d
1a660 65 73 74 72 6f 79 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 04 20 20 20 20 00 00 00 17 20 20 20 estroy(callback);...............
1a680 20 69 66 20 28 6e 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 20 20 20 20 20 20 .if.(needs_resize).{...5........
1a6a0 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 2c 20 70 65 6e resize_window(pending_width,.pen
1a6c0 64 69 6e 67 5f 68 65 69 67 68 74 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 ding_height);............pending
1a6e0 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 _width.=.0;............pending_h
1a700 65 69 67 68 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 24 20 eight.=.0;........}...........$.
1a720 20 20 20 69 66 20 28 6e 65 65 64 5f 72 65 64 72 61 77 20 26 26 20 70 69 78 65 6c 5f 64 61 74 61 ...if.(need_redraw.&&.pixel_data
1a740 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 ).{............draw_screen();...
1a760 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 30 3b 00 00 00 05 20 20 20 .........need_redraw.=.0;.......
1a780 20 7d 00 00 00 04 20 20 20 20 00 00 00 18 20 20 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 .}................if.(window_buf
1a7a0 66 65 72 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 61 74 74 fer).{...8........wl_surface_att
1a7c0 61 63 68 28 73 75 72 66 61 63 65 2c 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 2c 20 30 2c 20 30 ach(surface,.window_buffer,.0,.0
1a7e0 29 3b 00 00 00 46 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 61 6d 61 67 65 28 );...F........wl_surface_damage(
1a800 73 75 72 66 61 63 65 2c 20 30 2c 20 30 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 6e surface,.0,.0,.window_width,.win
1a820 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 23 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 66 61 dow_height);...#........wl_surfa
1a840 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 ce_commit(surface);........}....
1a860 20 20 20 20 00 00 00 3f 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 .......?....static.const.struct.
1a880 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 6e 65 72 20 66 72 61 6d 65 5f 6c 69 73 74 65 wl_callback_listener.frame_liste
1a8a0 6e 65 72 20 3d 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 2e 64 6f 6e 65 20 3d 20 66 72 61 6d 65 ner.=.{.............done.=.frame
1a8c0 5f 64 6f 6e 65 00 00 00 06 20 20 20 20 7d 3b 00 00 00 04 20 20 20 20 00 00 00 2f 20 20 20 20 66 _done........};.........../....f
1a8e0 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 3d 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 61 6d 65 rame_callback.=.wl_surface_frame
1a900 28 73 75 72 66 61 63 65 29 3b 00 00 00 44 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 61 64 (surface);...D....wl_callback_ad
1a920 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c 20 26 66 72 61 6d d_listener(frame_callback,.&fram
1a940 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 53 73 e_listener,.NULL);....}.......Ss
1a960 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 28 76 6f 69 64 tatic.void.xdg_wm_base_ping(void
1a980 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 62 61 73 65 .*data,.struct.xdg_wm_base.*base
1a9a0 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 23 20 20 20 20 78 ,.uint32_t.serial)....{...#....x
1a9c0 64 67 5f 77 6d 5f 62 61 73 65 5f 70 6f 6e 67 28 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 dg_wm_base_pong(base,.serial);..
1a9e0 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 ..}.......=static.const.struct.x
1aa00 64 67 5f 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 dg_wm_base_listener.wm_base_list
1aa20 65 6e 65 72 20 3d 20 7b 00 00 00 1c 20 20 20 20 2e 70 69 6e 67 20 3d 20 78 64 67 5f 77 6d 5f 62 ener.=.{.........ping.=.xdg_wm_b
1aa40 61 73 65 5f 70 69 6e 67 00 00 00 02 7d 3b 00 00 00 00 00 00 00 4d 73 74 61 74 69 63 20 76 6f 69 ase_ping....};.......Mstatic.voi
1aa60 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 d.xdg_toplevel_configure(void.*d
1aa80 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 ata,.struct.xdg_toplevel.*toplev
1aaa0 65 6c 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 el,...Q.........................
1aac0 20 20 20 20 20 20 20 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e 74 33 32 5f 74 20 68 2c 20 ..........int32_t.w,.int32_t.h,.
1aae0 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 29 00 00 00 01 7b 00 00 00 struct.wl_array.*states)....{...
1ab00 19 20 20 20 20 69 66 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 29 20 7b 00 00 00 1a 20 20 .....if.(w.>.0.&&.h.>.0).{......
1ab20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 3b 00 00 00 1b 20 20 20 20 ......pending_width.=.w;........
1ab40 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b 00 00 00 19 20 20 20 20 20 ....pending_height.=.h;.........
1ab60 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 ...needs_resize.=.1;........}...
1ab80 01 7d 00 00 00 00 00 00 00 49 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 .}.......Istatic.void.xdg_toplev
1aba0 65 6c 5f 63 6c 6f 73 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f el_close(void.*data,.struct.xdg_
1abc0 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 29 00 00 00 01 7b 00 00 00 10 20 20 20 20 toplevel.*toplevel)....{........
1abe0 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3f 73 74 61 74 69 63 20 running.=.0;....}.......?static.
1ac00 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e const.struct.xdg_toplevel_listen
1ac20 65 72 20 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 28 20 20 20 20 er.toplevel_listener.=.{...(....
1ac40 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 .configure.=.xdg_toplevel_config
1ac60 75 72 65 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 ure,.........close.=.xdg_topleve
1ac80 6c 5f 63 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 5b 73 74 61 74 69 63 20 76 6f 69 l_close,....};.......[static.voi
1aca0 64 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 28 76 6f 69 64 20 2a 64 61 d.xdg_surface_configure(void.*da
1acc0 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 2c ta,.struct.xdg_surface.*surface,
1ace0 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 00 2f 20 20 20 20 78 64 .uint32_t.serial)....{.../....xd
1ad00 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 72 65 28 73 75 72 66 61 63 65 2c g_surface_ack_configure(surface,
1ad20 20 73 65 72 69 61 6c 29 3b 00 00 00 19 20 20 20 20 69 66 20 28 21 77 69 6e 64 6f 77 5f 62 75 66 .serial);........if.(!window_buf
1ad40 66 65 72 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 fer).{...C........window_buffer.
1ad60 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 =.create_buffer(window_width,.wi
1ad80 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 66 72 61 6d 65 5f 64 ndow_height);..."........frame_d
1ada0 6f 6e 65 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 one(NULL,.NULL,.0);........}....
1adc0 7d 00 00 00 00 00 00 00 41 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 }.......Astatic.const.struct.xdg
1ade0 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 _surface_listener.xdg_surface_li
1ae00 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 27 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 stener.=.{...'.....configure.=.x
1ae20 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 dg_surface_configure,....};.....
1ae40 00 00 42 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 28 76 6f 69 64 ..Bstatic.void.keyboard_key(void
1ae60 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 .*data,.struct.wl_keyboard.*keyb
1ae80 6f 61 72 64 2c 00 00 00 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oard,...V.......................
1aea0 20 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 ..uint32_t.serial,.uint32_t.time
1aec0 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 20 75 69 6e 74 33 32 5f 74 20 73 74 61 74 65 29 00 ,.uint32_t.key,.uint32_t.state).
1aee0 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 ...{...D....if.(state.==.WL_KEYB
1af00 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 45 44 20 26 26 20 70 74 79 5f 6d 61 OARD_KEY_STATE_PRESSED.&&.pty_ma
1af20 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 63 68 61 72 20 63 20 3d ster.>=.0).{............char.c.=
1af40 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 25 20 20 20 20 20 20 20 20 69 66 20 28 6b .0;...............%........if.(k
1af60 65 79 20 3e 3d 20 31 36 20 26 26 20 6b 65 79 20 3c 3d 20 32 35 29 20 7b 00 00 00 2c 20 20 20 20 ey.>=.16.&&.key.<=.25).{...,....
1af80 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 72 6f 77 31 20 3d 20 22 71 77 65 72 ........const.char.*row1.=."qwer
1afa0 74 79 75 69 6f 70 22 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 72 6f 77 31 tyuiop";................c.=.row1
1afc0 5b 6b 65 79 20 2d 20 31 36 5d 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 [key.-.16];...,........}.else.if
1afe0 20 28 6b 65 79 20 3e 3d 20 32 36 20 26 26 20 6b 65 79 20 3c 3d 20 33 35 29 20 7b 00 00 00 2b 20 .(key.>=.26.&&.key.<=.35).{...+.
1b000 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 72 6f 77 32 20 3d 20 22 61 ...........const.char.*row2.=."a
1b020 73 64 66 67 68 6a 6b 6c 22 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 72 6f sdfghjkl";................c.=.ro
1b040 77 32 5b 6b 65 79 20 2d 20 32 36 5d 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 w2[key.-.26];...,........}.else.
1b060 69 66 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d 20 34 35 29 20 7b 00 00 00 if.(key.>=.36.&&.key.<=.45).{...
1b080 29 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 72 6f 77 33 20 3d 20 )............const.char.*row3.=.
1b0a0 22 7a 78 63 76 62 6e 6d 22 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 72 6f "zxcvbnm";................c.=.ro
1b0c0 77 33 5b 6b 65 79 20 2d 20 33 36 5d 3b 00 00 00 2c 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 w3[key.-.36];...,........}.else.
1b0e0 69 66 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 7b 00 00 00 if.(key.>=.46.&&.key.<=.55).{...
1b100 21 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 30 27 20 2b 20 28 6b 65 79 20 2d 20 34 36 !............c.=.'0'.+.(key.-.46
1b120 29 3b 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 );............}.else.if.(key.==.
1b140 35 37 29 20 7b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 20 27 3b 00 00 00 57).{................c.=.'.';...
1b160 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 38 29 20 7b .........}.else.if.(key.==.58).{
1b180 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 1f 20 20 20 ................c.=.'\n';.......
1b1a0 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 31 34 29 20 7b 00 00 00 15 .....}.else.if.(key.==.14).{....
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 27 5c 62 27 3b 00 00 00 1e 20 20 20 20 20 20 20 ............c.=.'\b';...........
1b1e0 20 7d 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 39 29 20 7b 00 00 00 15 20 20 20 20 20 .}.else.if.(key.==.9).{.........
1b200 20 20 20 20 20 20 20 63 20 3d 20 27 5c 74 27 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 .......c.=.'\t';............}...
1b220 08 20 20 20 20 20 20 20 20 00 00 00 10 20 20 20 20 20 20 20 20 69 66 20 28 63 29 20 7b 00 00 00 .....................if.(c).{...
1b240 25 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 %............write(pty_master,.&
1b260 63 2c 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 c,.1);............}........}....
1b280 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f }.......>static.const.struct.wl_
1b2a0 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 keyboard_listener.keyboard_liste
1b2c0 6e 65 72 20 3d 20 7b 00 00 00 13 20 20 20 20 2e 6b 65 79 6d 61 70 20 3d 20 4e 55 4c 4c 2c 00 00 ner.=.{.........keymap.=.NULL,..
1b2e0 00 12 20 20 20 20 2e 65 6e 74 65 72 20 3d 20 4e 55 4c 4c 2c 00 00 00 12 20 20 20 20 2e 6c 65 61 .......enter.=.NULL,.........lea
1b300 76 65 20 3d 20 4e 55 4c 4c 2c 00 00 00 18 20 20 20 20 2e 6b 65 79 20 3d 20 6b 65 79 62 6f 61 72 ve.=.NULL,.........key.=.keyboar
1b320 64 5f 6b 65 79 2c 00 00 00 16 20 20 20 20 2e 6d 6f 64 69 66 69 65 72 73 20 3d 20 4e 55 4c 4c 2c d_key,.........modifiers.=.NULL,
1b340 00 00 00 02 7d 3b 00 00 00 00 00 00 00 56 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 ....};.......Vstatic.void.seat_c
1b360 61 70 61 62 69 6c 69 74 69 65 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 apabilities(void.*data,.struct.w
1b380 6c 5f 73 65 61 74 20 2a 73 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 61 62 69 6c 69 74 l_seat.*seat,.uint32_t.capabilit
1b3a0 69 65 73 29 00 00 00 01 7b 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 61 62 69 6c 69 74 69 65 ies)....{...5....if.(capabilitie
1b3c0 73 20 26 20 57 4c 5f 53 45 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b 45 59 42 4f 41 52 44 29 s.&.WL_SEAT_CAPABILITY_KEYBOARD)
1b3e0 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d 20 77 6c 5f 73 65 61 74 .{............keyboard.=.wl_seat
1b400 5f 67 65 74 5f 6b 65 79 62 6f 61 72 64 28 73 65 61 74 29 3b 00 00 00 45 20 20 20 20 20 20 20 20 _get_keyboard(seat);...E........
1b420 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 6b 65 79 62 6f 61 72 wl_keyboard_add_listener(keyboar
1b440 64 2c 20 26 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 d,.&keyboard_listener,.NULL);...
1b460 23 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 6b 65 79 62 6f 61 72 64 20 72 65 61 64 79 5c #........printf("keyboard.ready\
1b480 6e 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 36 73 74 61 74 69 63 n");........}....}.......6static
1b4a0 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 73 .const.struct.wl_seat_listener.s
1b4c0 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 26 20 20 20 20 2e 63 61 70 61 62 69 6c eat_listener.=.{...&.....capabil
1b4e0 69 74 69 65 73 20 3d 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 65 73 2c 00 00 00 02 7d 3b ities.=.seat_capabilities,....};
1b500 00 00 00 00 00 00 00 43 73 74 61 74 69 63 20 76 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 .......Cstatic.void.handle_globa
1b520 6c 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 l(void.*data,.struct.wl_registry
1b540 20 2a 72 65 67 69 73 74 72 79 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .*registry,...Q.................
1b560 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 .........uint32_t.name,.const.ch
1b580 61 72 20 2a 69 6e 74 65 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 69 6f 6e 29 ar.*interface,.uint32_t.version)
1b5a0 00 00 00 01 7b 00 00 00 32 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 ....{...2....if.(strcmp(interfac
1b5c0 65 2c 20 22 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 53 20 e,."wl_compositor").==.0).{...S.
1b5e0 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f .......compositor.=.wl_registry_
1b600 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d 70 6f 73 69 bind(registry,.name,.&wl_composi
1b620 74 6f 72 5f 69 6e 74 65 72 66 61 63 65 2c 20 34 29 3b 00 00 00 25 20 20 20 20 20 20 20 20 70 72 tor_interface,.4);...%........pr
1b640 69 6e 74 66 28 22 63 6f 6d 70 6f 73 69 74 6f 72 20 62 6f 75 6e 64 5c 6e 22 29 3b 00 00 00 32 20 intf("compositor.bound\n");...2.
1b660 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 ...}.else.if.(strcmp(interface,.
1b680 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 45 20 20 20 20 20 20 20 20 73 68 6d "wl_shm").==.0).{...E........shm
1b6a0 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 .=.wl_registry_bind(registry,.na
1b6c0 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 1e 20 20 me,.&wl_shm_interface,.1);......
1b6e0 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 73 68 6d 20 62 6f 75 6e 64 5c 6e 22 29 3b 00 00 00 37 ......printf("shm.bound\n");...7
1b700 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c ....}.else.if.(strcmp(interface,
1b720 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 20 20 20 ."xdg_wm_base").==.0).{...N.....
1b740 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 ...wm_base.=.wl_registry_bind(re
1b760 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e 74 65 72 gistry,.name,.&xdg_wm_base_inter
1b780 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 face,.1);...C........xdg_wm_base
1b7a0 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 73 65 5f _add_listener(wm_base,.&wm_base_
1b7c0 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 26 20 20 20 20 20 20 20 20 70 72 69 6e listener,.NULL);...&........prin
1b7e0 74 66 28 22 78 64 67 5f 77 6d 5f 62 61 73 65 20 62 6f 75 6e 64 5c 6e 22 29 3b 00 00 00 33 20 20 tf("xdg_wm_base.bound\n");...3..
1b800 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 ..}.else.if.(strcmp(interface,."
1b820 77 6c 5f 73 65 61 74 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 wl_seat").==.0).{...G........sea
1b840 74 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e t.=.wl_registry_bind(registry,.n
1b860 61 6d 65 2c 20 26 77 6c 5f 73 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 ame,.&wl_seat_interface,.1);...9
1b880 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 ........wl_seat_add_listener(sea
1b8a0 74 2c 20 26 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 1f 20 20 20 t,.&seat_listener,.NULL);.......
1b8c0 20 20 20 20 20 70 72 69 6e 74 66 28 22 73 65 61 74 20 62 6f 75 6e 64 5c 6e 22 29 3b 00 00 00 05 .....printf("seat.bound\n");....
1b8e0 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 ....}....}.......>static.const.s
1b900 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 72 65 67 69 73 truct.wl_registry_listener.regis
1b920 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1c 20 20 20 20 2e 67 6c 6f 62 61 6c 20 try_listener.=.{.........global.
1b940 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 2c 00 00 00 1a 20 20 20 20 2e 67 6c 6f 62 61 6c 5f =.handle_global,.........global_
1b960 72 65 6d 6f 76 65 20 3d 20 4e 55 4c 4c 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1a 73 74 61 74 remove.=.NULL,....};........stat
1b980 69 63 20 69 6e 74 20 73 65 74 75 70 5f 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 ic.int.setup_pty(void)....{.....
1b9a0 20 20 20 73 74 72 75 63 74 20 74 65 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 00 04 20 20 20 20 00 ...struct.termios.term;.........
1b9c0 00 00 36 20 20 20 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 6f 70 65 6e 28 22 2f 64 65 76 2f 70 ..6....pty_master.=.open("/dev/p
1b9e0 74 6d 78 22 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 19 20 20 20 tmx",.O_RDWR.|.O_NOCTTY);.......
1ba00 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 7b 00 00 00 1c 20 20 20 20 20 20 .if.(pty_master.<.0).{..........
1ba20 20 20 70 65 72 72 6f 72 28 22 6f 70 65 6e 20 70 74 6d 78 22 29 3b 00 00 00 12 20 20 20 20 20 20 ..perror("open.ptmx");..........
1ba40 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 ..return.-1;........}...........
1ba60 22 20 20 20 20 69 66 20 28 67 72 61 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 "....if.(grantpt(pty_master).<.0
1ba80 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 67 72 61 6e 74 70 74 22 29 ).{............perror("grantpt")
1baa0 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d ;............return.-1;........}
1bac0 00 00 00 04 20 20 20 20 00 00 00 23 20 20 20 20 69 66 20 28 75 6e 6c 6f 63 6b 70 74 28 70 74 79 ...........#....if.(unlockpt(pty
1bae0 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 72 72 6f _master).<.0).{............perro
1bb00 72 28 22 75 6e 6c 6f 63 6b 70 74 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 65 74 75 72 6e r("unlockpt");............return
1bb20 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 3d 20 20 20 20 70 74 79 .-1;........}...........=....pty
1bb40 5f 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 74 65 72 _slave.=.open(ptsname(pty_master
1bb60 29 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 18 20 20 20 20 69 66 ),.O_RDWR.|.O_NOCTTY);........if
1bb80 20 28 70 74 79 5f 73 6c 61 76 65 20 3c 20 30 29 20 7b 00 00 00 1d 20 20 20 20 20 20 20 20 70 65 .(pty_slave.<.0).{............pe
1bba0 72 72 6f 72 28 22 6f 70 65 6e 20 73 6c 61 76 65 22 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 72 rror("open.slave");............r
1bbc0 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 20 20 20 eturn.-1;........}..............
1bbe0 20 20 74 63 67 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 26 74 65 72 6d 29 3b 00 00 ..tcgetattr(pty_slave,.&term);..
1bc00 00 15 20 20 20 20 63 66 6d 61 6b 65 72 61 77 28 26 74 65 72 6d 29 3b 00 00 00 29 20 20 20 20 74 ......cfmakeraw(&term);...)....t
1bc20 63 73 65 74 61 74 74 72 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 43 53 41 4e 4f 57 2c 20 26 74 65 csetattr(pty_slave,.TCSANOW,.&te
1bc40 72 6d 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 rm);................return.0;...
1bc60 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 .}........static.void.run_shell(
1bc80 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 20 20 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 66 6f void)....{........shell_pid.=.fo
1bca0 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 19 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 rk();................if.(shell_p
1bcc0 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 73 65 74 73 69 64 28 29 3b 00 id.==.0).{............setsid();.
1bce0 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1a 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 .......................close(pty
1bd00 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 27 20 20 20 20 20 20 20 _master);...............'.......
1bd20 20 69 6f 63 74 6c 28 70 74 79 5f 73 6c 61 76 65 2c 20 54 49 4f 43 53 43 54 54 59 2c 20 30 29 3b .ioctl(pty_slave,.TIOCSCTTY,.0);
1bd40 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 70 32 28 70 74 79 ........................dup2(pty
1bd60 5f 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 70 32 28 70 74 79 5f _slave,.0);............dup2(pty_
1bd80 73 6c 61 76 65 2c 20 31 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 75 70 32 28 70 74 79 5f 73 slave,.1);............dup2(pty_s
1bda0 6c 61 76 65 2c 20 32 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 19 20 20 20 20 20 20 20 lave,.2);.......................
1bdc0 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 .close(pty_slave);..............
1bde0 00 26 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 3d 20 67 65 74 65 6e 76 28 22 .&........char.*shell.=.getenv("
1be00 53 48 45 4c 4c 22 29 3b 00 00 00 26 20 20 20 20 20 20 20 20 69 66 20 28 21 73 68 65 6c 6c 29 20 SHELL");...&........if.(!shell).
1be20 73 68 65 6c 6c 20 3d 20 22 2f 62 69 6e 2f 73 68 22 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 shell.=."/bin/sh";..............
1be40 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 6c 6c 2c 20 73 68 65 6c 6c 2c 20 4e 55 ."........execl(shell,.shell,.NU
1be60 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 20 20 20 20 LL);............exit(1);........
1be80 7d 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 }................close(pty_slave
1bea0 29 3b 00 00 00 13 20 20 20 20 70 74 79 5f 73 6c 61 76 65 20 3d 20 2d 31 3b 00 00 00 01 7d 00 00 );........pty_slave.=.-1;....}..
1bec0 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 76 6f ......static.void.cleanup_pty(vo
1bee0 69 64 29 00 00 00 01 7b 00 00 00 18 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3e 20 id)....{........if.(shell_pid.>.
1bf00 30 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 6b 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c 20 0).{...!........kill(shell_pid,.
1bf20 53 49 47 54 45 52 4d 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 77 61 69 74 70 69 64 28 73 68 65 SIGTERM);...$........waitpid(she
1bf40 6c 6c 5f 70 69 64 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 2b 20 20 ll_pid,.NULL,.0);........}...+..
1bf60 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 63 6c 6f 73 65 28 70 74 79 ..if.(pty_master.>=.0).close(pty
1bf80 5f 6d 61 73 74 65 72 29 3b 00 00 00 29 20 20 20 20 69 66 20 28 70 74 79 5f 73 6c 61 76 65 20 3e _master);...)....if.(pty_slave.>
1bfa0 3d 20 30 29 20 63 6c 6f 73 65 28 70 74 79 5f 73 6c 61 76 65 29 3b 00 00 00 01 7d 00 00 00 00 00 =.0).close(pty_slave);....}.....
1bfc0 00 00 0e 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 21 20 20 20 20 73 74 ...int.main(void)....{...!....st
1bfe0 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 3b 00 00 00 0f 20 ruct.wl_registry.*registry;.....
1c000 20 20 20 66 64 5f 73 65 74 20 66 64 73 3b 00 00 00 13 20 20 20 20 69 6e 74 20 77 61 79 6c 61 6e ...fd_set.fds;........int.waylan
1c020 64 5f 66 64 3b 00 00 00 04 20 20 20 20 00 00 00 28 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 d_fd;...........(....memset(scre
1c040 65 6e 2c 20 27 20 27 2c 20 73 69 7a 65 6f 66 28 73 63 72 65 65 6e 29 29 3b 00 00 00 1d 20 20 20 en,.'.',.sizeof(screen));.......
1c060 20 73 69 67 6e 61 6c 28 53 49 47 43 48 4c 44 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 20 .signal(SIGCHLD,.SIG_IGN);......
1c080 20 20 00 00 00 22 20 20 20 20 70 72 69 6e 74 66 28 22 73 65 74 74 69 6e 67 20 75 70 20 70 74 79 ....."....printf("setting.up.pty
1c0a0 2e 2e 2e 5c 6e 22 29 3b 00 00 00 1a 20 20 20 20 69 66 20 28 73 65 74 75 70 5f 70 74 79 28 29 20 ...\n");........if.(setup_pty().
1c0c0 3c 20 30 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 <.0).{...1........fprintf(stderr
1c0e0 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 73 65 74 75 70 20 70 74 79 5c 6e 22 29 3b 00 00 00 11 20 ,."failed.to.setup.pty\n");.....
1c100 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 .......return.1;........}.......
1c120 20 00 00 00 21 20 20 20 20 70 72 69 6e 74 66 28 22 72 75 6e 6e 69 6e 67 20 73 68 65 6c 6c 2e 2e ....!....printf("running.shell..
1c140 2e 5c 6e 22 29 3b 00 00 00 10 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 29 3b 00 00 00 04 20 20 .\n");........run_shell();......
1c160 20 20 00 00 00 29 20 20 20 20 70 72 69 6e 74 66 28 22 63 6f 6e 6e 65 63 74 69 6e 67 20 74 6f 20 .....)....printf("connecting.to.
1c180 77 61 79 6c 61 6e 64 2e 2e 2e 5c 6e 22 29 3b 00 00 00 27 20 20 20 20 64 69 73 70 6c 61 79 20 3d wayland...\n");...'....display.=
1c1a0 20 77 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 28 4e 55 4c 4c 29 3b 00 00 00 13 20 20 .wl_display_connect(NULL);......
1c1c0 20 20 69 66 20 28 21 64 69 73 70 6c 61 79 29 20 7b 00 00 00 3a 20 20 20 20 20 20 20 20 66 70 72 ..if.(!display).{...:........fpr
1c1e0 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 63 6f 6e 6e 65 63 74 20 intf(stderr,."failed.to.connect.
1c200 74 6f 20 77 61 79 6c 61 6e 64 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 6c 65 61 6e to.wayland\n");............clean
1c220 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 up_pty();............return.1;..
1c240 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 30 20 20 20 20 72 65 67 69 73 74 72 79 20 ......}...........0....registry.
1c260 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 64 69 73 70 6c 61 =.wl_display_get_registry(displa
1c280 79 29 3b 00 00 00 41 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 5f 6c 69 73 74 65 y);...A....wl_registry_add_liste
1c2a0 6e 65 72 28 72 65 67 69 73 74 72 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 ner(registry,.&registry_listener
1c2c0 2c 20 4e 55 4c 4c 29 3b 00 00 00 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 72 6f 75 6e 64 ,.NULL);..."....wl_display_round
1c2e0 74 72 69 70 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 20 69 66 trip(display);...........*....if
1c300 20 28 21 63 6f 6d 70 6f 73 69 74 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 77 6d 5f 62 61 73 .(!compositor.||.!shm.||.!wm_bas
1c320 65 29 20 7b 00 00 00 30 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 e).{...0........fprintf(stderr,.
1c340 22 6d 69 73 73 69 6e 67 20 69 6e 74 65 72 66 61 63 65 73 5c 6e 22 29 3b 00 00 00 16 20 20 20 20 "missing.interfaces\n");........
1c360 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 ....cleanup_pty();............re
1c380 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 turn.1;........}...........7....
1c3a0 73 75 72 66 61 63 65 20 3d 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 surface.=.wl_compositor_create_s
1c3c0 75 72 66 61 63 65 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 urface(compositor);...@....xdg_s
1c3e0 75 72 66 61 63 65 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 urface.=.xdg_wm_base_get_xdg_sur
1c400 66 61 63 65 28 77 6d 5f 62 61 73 65 2c 20 73 75 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 face(wm_base,.surface);...G....x
1c420 64 67 5f 73 75 72 66 61 63 65 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 dg_surface_add_listener(xdg_surf
1c440 61 63 65 2c 20 26 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c ace,.&xdg_surface_listener,.NULL
1c460 29 3b 00 00 00 04 20 20 20 20 00 00 00 35 20 20 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 );...........5....toplevel.=.xdg
1c480 5f 73 75 72 66 61 63 65 5f 67 65 74 5f 74 6f 70 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 _surface_get_toplevel(xdg_surfac
1c4a0 65 29 3b 00 00 00 42 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 e);...B....xdg_toplevel_add_list
1c4c0 65 6e 65 72 28 74 6f 70 6c 65 76 65 6c 2c 20 26 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 ener(toplevel,.&toplevel_listene
1c4e0 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 31 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 r,.NULL);...1....xdg_toplevel_se
1c500 74 5f 74 69 74 6c 65 28 74 6f 70 6c 65 76 65 6c 2c 20 22 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 t_title(toplevel,."terminal");..
1c520 00 32 20 20 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 61 70 70 5f 69 64 28 74 6f .2....xdg_toplevel_set_app_id(to
1c540 70 6c 65 76 65 6c 2c 20 22 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 1f plevel,."terminal");............
1c560 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 ....wl_surface_commit(surface);.
1c580 00 00 04 20 20 20 20 00 00 00 31 20 20 20 20 70 72 69 6e 74 66 28 22 74 65 72 6d 69 6e 61 6c 20 ..........1....printf("terminal.
1c5a0 72 75 6e 6e 69 6e 67 2e 20 74 79 70 65 20 63 6f 6d 6d 61 6e 64 73 2e 5c 6e 22 29 3b 00 00 00 04 running..type.commands.\n");....
1c5c0 20 20 20 20 00 00 00 2c 20 20 20 20 77 61 79 6c 61 6e 64 5f 66 64 20 3d 20 77 6c 5f 64 69 73 70 .......,....wayland_fd.=.wl_disp
1c5e0 6c 61 79 5f 67 65 74 5f 66 64 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 15 lay_get_fd(display);............
1c600 20 20 20 20 77 68 69 6c 65 20 28 72 75 6e 6e 69 6e 67 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 ....while.(running).{...........
1c620 20 46 44 5f 5a 45 52 4f 28 26 66 64 73 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 46 44 5f 53 45 .FD_ZERO(&fds);...!........FD_SE
1c640 54 28 77 61 79 6c 61 6e 64 5f 66 64 2c 20 26 66 64 73 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 T(wayland_fd,.&fds);...!........
1c660 46 44 5f 53 45 54 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 66 64 73 29 3b 00 00 00 08 20 20 20 FD_SET(pty_master,.&fds);.......
1c680 20 20 20 20 20 00 00 00 49 20 20 20 20 20 20 20 20 69 6e 74 20 6d 61 78 5f 66 64 20 3d 20 28 77 ........I........int.max_fd.=.(w
1c6a0 61 79 6c 61 6e 64 5f 66 64 20 3e 20 70 74 79 5f 6d 61 73 74 65 72 29 20 3f 20 77 61 79 6c 61 6e ayland_fd.>.pty_master).?.waylan
1c6c0 64 5f 66 64 20 3a 20 70 74 79 5f 6d 61 73 74 65 72 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 d_fd.:.pty_master;..............
1c6e0 00 3d 20 20 20 20 20 20 20 20 69 66 20 28 73 65 6c 65 63 74 28 6d 61 78 5f 66 64 20 2b 20 31 2c .=........if.(select(max_fd.+.1,
1c700 20 26 66 64 73 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 20 3c 20 30 29 20 7b 00 .&fds,.NULL,.NULL,.NULL).<.0).{.
1c720 00 00 12 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 ...............break;...........
1c740 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 29 20 20 20 20 20 20 20 20 69 66 20 28 46 44 .}...............)........if.(FD
1c760 5f 49 53 53 45 54 28 77 61 79 6c 61 6e 64 5f 66 64 2c 20 26 66 64 73 29 29 20 7b 00 00 00 35 20 _ISSET(wayland_fd,.&fds)).{...5.
1c780 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 74 ...........if.(wl_display_dispat
1c7a0 63 68 28 64 69 73 70 6c 61 79 29 20 3d 3d 20 2d 31 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 ch(display).==.-1).{............
1c7c0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 ........break;................}.
1c7e0 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 29 20 20 20 20 ...........}...............)....
1c800 20 20 20 20 69 66 20 28 46 44 5f 49 53 53 45 54 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 66 64 ....if.(FD_ISSET(pty_master,.&fd
1c820 73 29 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 62 75 66 5b 32 35 s)).{................char.buf[25
1c840 36 5d 3b 00 00 00 37 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 72 65 61 64 28 6];...7............int.n.=.read(
1c860 70 74 79 5f 6d 61 73 74 65 72 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 00 00 pty_master,.buf,.sizeof(buf));..
1c880 00 18 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 20 30 29 20 7b 00 00 00 28 20 20 ..............if.(n.>.0).{...(..
1c8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61 6c 5f 6f 75 74 70 75 74 28 62 75 ..............terminal_output(bu
1c8c0 66 2c 20 6e 29 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 f,.n);................}.else.if.
1c8e0 28 6e 20 3d 3d 20 30 29 20 7b 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 (n.==.0).{...)................pr
1c900 69 6e 74 66 28 22 73 68 65 6c 6c 20 65 78 69 74 65 64 5c 6e 22 29 3b 00 00 00 1c 20 20 20 20 20 intf("shell.exited\n");.........
1c920 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 0d 20 20 20 20 20 ...........running.=.0;.........
1c940 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 .......}............}........}..
1c960 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 70 72 69 6e 74 66 28 22 63 6c 65 61 6e 69 6e 67 20 75 ..............printf("cleaning.u
1c980 70 2e 2e 2e 5c 6e 22 29 3b 00 00 00 12 20 20 20 20 63 6c 65 61 6e 75 70 5f 70 74 79 28 29 3b 00 p...\n");........cleanup_pty();.
1c9a0 00 00 04 20 20 20 20 00 00 00 3c 20 20 20 20 69 66 20 28 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 ..........<....if.(frame_callbac
1c9c0 6b 29 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f 79 28 66 72 61 6d 65 5f 63 61 6c k).wl_callback_destroy(frame_cal
1c9e0 6c 62 61 63 6b 29 3b 00 00 00 30 20 20 20 20 69 66 20 28 6b 65 79 62 6f 61 72 64 29 20 77 6c 5f lback);...0....if.(keyboard).wl_
1ca00 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 62 6f 61 72 64 29 3b 00 00 00 24 20 keyboard_destroy(keyboard);...$.
1ca20 20 20 20 69 66 20 28 73 65 61 74 29 20 77 6c 5f 73 65 61 74 5f 64 65 73 74 72 6f 79 28 73 65 61 ...if.(seat).wl_seat_destroy(sea
1ca40 74 29 3b 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 31 t);........destroy_buffer();...1
1ca60 20 20 20 20 69 66 20 28 74 6f 70 6c 65 76 65 6c 29 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 ....if.(toplevel).xdg_toplevel_d
1ca80 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 65 6c 29 3b 00 00 00 36 20 20 20 20 69 66 20 28 78 64 67 estroy(toplevel);...6....if.(xdg
1caa0 5f 73 75 72 66 61 63 65 29 20 78 64 67 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 78 64 _surface).xdg_surface_destroy(xd
1cac0 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 2d 20 20 20 20 69 66 20 28 73 75 72 66 61 63 65 29 20 g_surface);...-....if.(surface).
1cae0 77 6c 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 2e wl_surface_destroy(surface);....
1cb00 20 20 20 20 69 66 20 28 77 6d 5f 62 61 73 65 29 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 64 65 73 ....if.(wm_base).xdg_wm_base_des
1cb20 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 3b 00 00 00 36 20 20 20 20 69 66 20 28 63 6f 6d 70 6f 73 troy(wm_base);...6....if.(compos
1cb40 69 74 6f 72 29 20 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 itor).wl_compositor_destroy(comp
1cb60 6f 73 69 74 6f 72 29 3b 00 00 00 21 20 20 20 20 69 66 20 28 73 68 6d 29 20 77 6c 5f 73 68 6d 5f ositor);...!....if.(shm).wl_shm_
1cb80 64 65 73 74 72 6f 79 28 73 68 6d 29 3b 00 00 00 30 20 20 20 20 69 66 20 28 72 65 67 69 73 74 72 destroy(shm);...0....if.(registr
1cba0 79 29 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 29 y).wl_registry_destroy(registry)
1cbc0 3b 00 00 00 30 20 20 20 20 69 66 20 28 64 69 73 70 6c 61 79 29 20 77 6c 5f 64 69 73 70 6c 61 79 ;...0....if.(display).wl_display
1cbe0 5f 64 69 73 63 6f 6e 6e 65 63 74 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 _disconnect(display);...........
1cc00 0d 20 20 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 00 .....return.0;....}5............
1cc20 00 00 00 34 02 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9c 3c 00 00 00 ...4........................<...
1cc40 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0f 00 00 00 11 00 00 00 00 00 00 00 00 00 ...........5._..................
1cc60 00 00 10 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 00 ................................
1cc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ccc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 10 15 04 01 00 00 00 0f 00 f5 18 00 00 .................j..............
1cde0 01 85 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 22 20 20 20 20 20 20 20 20 77 6c 5f 73 65 61 ................."........wl_sea
1ce00 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 74 2c f5 18 00 00 01 86 00 00 00 00 00 00 t_add_listener(seat,............
1ce20 00 00 00 00 00 00 f5 18 00 00 01 17 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 03 20 20 20 f5 ................................
1ce40 18 00 00 01 18 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 87 00 00 00 00 00 00 00 00 00 ................................
1ce60 00 00 01 00 00 00 0f 20 20 20 20 66 6f 72 20 28 69 6e 74 20 70 79 f5 18 00 00 00 88 00 00 00 00 ...........for.(int.py..........
1ce80 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 ................................
1cea0 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 ................5...............
1cec0 00 00 00 00 00 00 00 00 87 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cee0 fa 0f 00 00 00 00 00 00 f5 18 00 00 00 00 87 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 90 00 ................................
1cf00 00 00 03 00 00 00 fa 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 ................................
1cf20 00 00 00 00 17 01 00 00 03 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 00 22 00 00 00 f9 1f 00 00 ....................n...".......
1cf40 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 85 01 00 00 22 00 ..............................".
1cf60 00 00 00 00 00 00 00 00 00 00 80 00 00 00 01 00 00 00 f8 2f 00 00 00 00 00 00 00 00 00 00 00 00 .................../............
1cf80 00 00 6e 0d 00 00 00 00 00 00 35 81 5f d0 00 00 00 10 00 00 00 12 00 00 00 00 00 00 00 00 00 00 ..n.......5._...................
1cfa0 00 11 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 12 d1 04 01 00 00 00 00 00 f5 18 00 00 00 ................j...............
1d120 00 00 00 00 02 00 00 00 00 00 00 02 06 00 00 00 13 23 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53 4f .................#define._GNU_SO
1d140 55 52 43 45 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 URCE....#include.<stdio.h>....#i
1d160 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 nclude.<stdlib.h>....#include.<s
1d180 74 72 69 6e 67 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 tring.h>....#include.<unistd.h>.
1d1a0 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 00 00 00 16 23 69 6e 63 ...#include.<sys/mman.h>....#inc
1d1c0 6c 75 64 65 20 3c 73 79 73 2f 69 6f 63 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c lude.<sys/ioctl.h>....#include.<
1d1e0 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 sys/wait.h>....#include.<fcntl.h
1d200 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c >....#include.<errno.h>....#incl
1d220 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 64 65 20 3c 74 65 72 6d ude.<signal.h>....#include.<term
1d240 69 6f 73 2e 68 3e 00 00 00 11 23 69 6e 63 6c 75 64 65 20 3c 70 6f 6c 6c 2e 68 3e 00 00 00 1b 23 ios.h>....#include.<poll.h>....#
1d260 69 6e 63 6c 75 64 65 20 3c 77 61 79 6c 61 6e 64 2d 63 6c 69 65 6e 74 2e 68 3e 00 00 00 26 23 69 include.<wayland-client.h>...&#i
1d280 6e 63 6c 75 64 65 20 22 78 64 67 2d 73 68 65 6c 6c 2d 63 6c 69 65 6e 74 2d 70 72 6f 74 6f 63 6f nclude."xdg-shell-client-protoco
1d2a0 6c 2e 68 22 00 00 00 00 00 00 00 22 73 74 72 75 63 74 20 77 6c 5f 64 69 73 70 6c 61 79 20 2a 64 l.h"......."struct.wl_display.*d
1d2c0 69 73 70 6c 61 79 20 3d 20 4e 55 4c 4c 3b 00 00 00 28 73 74 72 75 63 74 20 77 6c 5f 63 6f 6d 70 isplay.=.NULL;...(struct.wl_comp
1d2e0 6f 73 69 74 6f 72 20 2a 63 6f 6d 70 6f 73 69 74 6f 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 22 73 74 ositor.*compositor.=.NULL;..."st
1d300 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b ruct.wl_surface.*surface.=.NULL;
1d320 00 00 00 1a 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 20 2a 73 68 6d 20 3d 20 4e 55 4c 4c 3b 00 00 ....struct.wl_shm.*shm.=.NULL;..
1d340 00 1c 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 65 61 74 20 3d 20 4e 55 4c 4c 3b 00 00 ..struct.wl_seat.*seat.=.NULL;..
1d360 00 24 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 20 3d .$struct.wl_keyboard.*keyboard.=
1d380 20 4e 55 4c 4c 3b 00 00 00 23 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 77 6d .NULL;...#struct.xdg_wm_base.*wm
1d3a0 5f 62 61 73 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 _base.=.NULL;...'struct.xdg_surf
1d3c0 61 63 65 20 2a 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 73 74 72 75 ace.*xdg_surface.=.NULL;...%stru
1d3e0 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 20 3d 20 4e 55 4c 4c ct.xdg_toplevel.*toplevel.=.NULL
1d400 3b 00 00 00 2a 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 66 72 61 6d 65 5f 63 ;...*struct.wl_callback.*frame_c
1d420 61 6c 6c 62 61 63 6b 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 69 6e allback.=.NULL;........static.in
1d440 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 00 00 1e 73 74 61 74 69 63 20 69 6e 74 20 77 69 6e t.running.=.1;....static.int.win
1d460 64 6f 77 5f 77 69 64 74 68 20 3d 20 38 30 30 3b 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 77 dow_width.=.800;....static.int.w
1d480 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 36 30 30 3b 00 00 00 1d 73 74 61 74 69 63 20 69 6e indow_height.=.600;....static.in
1d4a0 74 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 30 3b 00 00 00 1e 73 74 61 74 69 63 20 69 t.pending_width.=.0;....static.i
1d4c0 6e 74 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 1c 73 74 61 74 69 63 nt.pending_height.=.0;....static
1d4e0 20 69 6e 74 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 00 28 73 74 61 74 69 63 .int.needs_resize.=.0;...(static
1d500 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 4e 55 4c .unsigned.char.*pixel_data.=.NUL
1d520 4c 3b 00 00 00 2e 73 74 61 74 69 63 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 77 L;....static.struct.wl_buffer.*w
1d540 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 1b 73 74 61 74 indow_buffer.=.NULL;........stat
1d560 69 63 20 69 6e 74 20 70 74 79 5f 6d 61 73 74 65 72 20 3d 20 2d 31 3b 00 00 00 1c 73 74 61 74 69 ic.int.pty_master.=.-1;....stati
1d580 63 20 70 69 64 5f 74 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 2d 31 3b 00 00 00 15 73 74 61 74 69 c.pid_t.shell_pid.=.-1;....stati
1d5a0 63 20 69 6e 74 20 72 6f 77 73 20 3d 20 33 37 3b 00 00 00 16 73 74 61 74 69 63 20 69 6e 74 20 63 c.int.rows.=.37;....static.int.c
1d5c0 6f 6c 73 20 3d 20 31 30 30 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 77 69 ols.=.100;....static.int.char_wi
1d5e0 64 74 68 20 3d 20 38 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 63 68 61 72 5f 68 65 69 67 dth.=.8;....static.int.char_heig
1d600 68 74 20 3d 20 31 36 3b 00 00 00 00 00 00 00 26 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 ht.=.16;.......&static.unsigned.
1d620 63 68 61 72 20 73 63 72 65 65 6e 5b 32 30 30 5d 5b 32 30 30 5d 3b 00 00 00 18 73 74 61 74 69 63 char.screen[200][200];....static
1d640 20 69 6e 74 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 18 73 74 61 74 69 63 20 69 6e 74 .int.cursor_x.=.0;....static.int
1d660 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 00 00 1b 73 74 61 74 69 63 20 69 6e 74 20 6e 65 65 .cursor_y.=.0;....static.int.nee
1d680 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 73 63 72 6f d_redraw.=.1;....static.int.scro
1d6a0 6c 6c 5f 74 6f 70 20 3d 20 30 3b 00 00 00 24 73 74 61 74 69 63 20 69 6e 74 20 73 63 72 6f 6c 6c ll_top.=.0;...$static.int.scroll
1d6c0 5f 62 6f 74 74 6f 6d 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 00 00 00 00 20 73 74 61 74 69 _bottom.=.rows.-.1;........stati
1d6e0 63 20 76 6f 69 64 20 73 63 72 6f 6c 6c 5f 75 70 28 69 6e 74 20 6c 69 6e 65 73 29 00 00 00 01 7b c.void.scroll_up(int.lines)....{
1d700 00 00 00 3d 20 20 20 20 6d 65 6d 6d 6f 76 65 28 73 63 72 65 65 6e 5b 30 5d 2c 20 73 63 72 65 65 ...=....memmove(screen[0],.scree
1d720 6e 5b 6c 69 6e 65 73 5d 2c 20 28 72 6f 77 73 20 2d 20 6c 69 6e 65 73 29 20 2a 20 63 6f 6c 73 29 n[lines],.(rows.-.lines).*.cols)
1d740 3b 00 00 00 2f 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 72 6f 77 73 20 2d 20 6c 69 6e ;.../....for.(int.i.=.rows.-.lin
1d760 65 73 3b 20 69 20 3c 20 72 6f 77 73 3b 20 69 2b 2b 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 es;.i.<.rows;.i++).{...%........
1d780 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 69 5d 2c 20 27 20 27 2c 20 63 6f 6c 73 29 3b 00 00 00 memset(screen[i],.'.',.cols);...
1d7a0 05 20 20 20 20 7d 00 00 00 14 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 .....}........need_redraw.=.1;..
1d7c0 00 01 7d 00 00 00 00 00 00 00 35 73 74 61 74 69 63 20 76 6f 69 64 20 74 65 72 6d 69 6e 61 6c 5f ..}.......5static.void.terminal_
1d7e0 6f 75 74 70 75 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 62 75 66 2c 20 69 6e 74 20 6c 65 6e 29 output(const.char.*buf,.int.len)
1d800 00 00 00 01 7b 00 00 00 23 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c ....{...#....for.(int.i.=.0;.i.<
1d820 20 6c 65 6e 3b 20 69 2b 2b 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 .len;.i++).{...!........unsigned
1d840 20 63 68 61 72 20 63 20 3d 20 62 75 66 5b 69 5d 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 .char.c.=.buf[i];...............
1d860 1a 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 30 33 33 27 29 20 7b 00 00 00 10 20 .........if.(c.==.'\033').{.....
1d880 20 20 20 20 20 20 20 20 20 20 20 69 2b 2b 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 69 ...........i++;................i
1d8a0 66 20 28 69 20 3e 3d 20 6c 65 6e 29 20 62 72 65 61 6b 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 f.(i.>=.len).break;.............
1d8c0 20 20 20 69 66 20 28 62 75 66 5b 69 5d 20 3d 3d 20 27 5b 27 29 20 7b 00 00 00 14 20 20 20 20 20 ...if.(buf[i].==.'[').{.........
1d8e0 20 20 20 20 20 20 20 20 20 20 20 69 2b 2b 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........i++;.................
1d900 20 20 20 69 6e 74 20 6e 75 6d 20 3d 20 30 3b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 ...int.num.=.0;...C.............
1d920 20 20 20 77 68 69 6c 65 20 28 69 20 3c 20 6c 65 6e 20 26 26 20 62 75 66 5b 69 5d 20 3e 3d 20 27 ...while.(i.<.len.&&.buf[i].>=.'
1d940 30 27 20 26 26 20 62 75 66 5b 69 5d 20 3c 3d 20 27 39 27 29 20 7b 00 00 00 34 20 20 20 20 20 20 0'.&&.buf[i].<=.'9').{...4......
1d960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 20 3d 20 6e 75 6d 20 2a 20 31 30 20 2b 20 28 ..............num.=.num.*.10.+.(
1d980 62 75 66 5b 69 5d 20 2d 20 27 30 27 29 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buf[i].-.'0');..................
1d9a0 20 20 20 20 20 20 69 2b 2b 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 ......i++;....................}.
1d9c0 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 20 3c 20 6c 65 6e 20 26 ../................if.(i.<.len.&
1d9e0 26 20 62 75 66 5b 69 5d 20 3d 3d 20 27 48 27 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 &.buf[i].==.'H').{...!..........
1da00 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 21 20 20 20 20 20 ..........cursor_x.=.0;...!.....
1da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d 20 30 3b 00 00 00 36 ...............cursor_y.=.0;...6
1da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 20 3c 20 6c ................}.else.if.(i.<.l
1da60 65 6e 20 26 26 20 62 75 66 5b 69 5d 20 3d 3d 20 27 41 27 29 20 7b 00 00 00 31 20 20 20 20 20 20 en.&&.buf[i].==.'A').{...1......
1da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 20 30 29 20 ..............if.(cursor_y.>.0).
1daa0 63 75 72 73 6f 72 5f 79 2d 2d 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d cursor_y--;...6................}
1dac0 20 65 6c 73 65 20 69 66 20 28 69 20 3c 20 6c 65 6e 20 26 26 20 62 75 66 5b 69 5d 20 3d 3d 20 27 .else.if.(i.<.len.&&.buf[i].==.'
1dae0 42 27 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 B').{...8....................if.
1db00 28 63 75 72 73 6f 72 5f 79 20 3c 20 72 6f 77 73 20 2d 20 31 29 20 63 75 72 73 6f 72 5f 79 2b 2b (cursor_y.<.rows.-.1).cursor_y++
1db20 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 ;...6................}.else.if.(
1db40 69 20 3c 20 6c 65 6e 20 26 26 20 62 75 66 5b 69 5d 20 3d 3d 20 27 43 27 29 20 7b 00 00 00 38 20 i.<.len.&&.buf[i].==.'C').{...8.
1db60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 ...................if.(cursor_x.
1db80 3c 20 63 6f 6c 73 20 2d 20 31 29 20 63 75 72 73 6f 72 5f 78 2b 2b 3b 00 00 00 36 20 20 20 20 20 <.cols.-.1).cursor_x++;...6.....
1dba0 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 20 3c 20 6c 65 6e 20 26 26 ...........}.else.if.(i.<.len.&&
1dbc0 20 62 75 66 5b 69 5d 20 3d 3d 20 27 44 27 29 20 7b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 .buf[i].==.'D').{...1...........
1dbe0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 20 30 29 20 63 75 72 73 6f .........if.(cursor_x.>.0).curso
1dc00 72 5f 78 2d 2d 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 r_x--;...6................}.else
1dc20 20 69 66 20 28 69 20 3c 20 6c 65 6e 20 26 26 20 62 75 66 5b 69 5d 20 3d 3d 20 27 4a 27 29 20 7b .if.(i.<.len.&&.buf[i].==.'J').{
1dc40 00 00 00 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 ...N....................memset(s
1dc60 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 20 2b 20 63 75 72 73 6f 72 5f 78 2c 20 27 20 27 2c creen[cursor_y].+.cursor_x,.'.',
1dc80 20 63 6f 6c 73 20 2d 20 63 75 72 73 6f 72 5f 78 29 3b 00 00 00 3f 20 20 20 20 20 20 20 20 20 20 .cols.-.cursor_x);...?..........
1dca0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 79 20 3d 20 63 75 72 73 6f 72 5f 79 20 ..........for.(int.y.=.cursor_y.
1dcc0 2b 20 31 3b 20 79 20 3c 20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b 00 00 00 35 20 20 20 20 20 20 20 +.1;.y.<.rows;.y++).{...5.......
1dce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 65 65 6e 5b 79 .................memset(screen[y
1dd00 5d 2c 20 27 20 27 2c 20 63 6f 6c 73 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ],.'.',.cols);..................
1dd20 20 20 20 20 20 20 7d 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d ......}....................}....
1dd40 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e ............}................con
1dd60 74 69 6e 75 65 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 20 20 20 20 20 00 tinue;............}.............
1dd80 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 00 00 00 19 20 ...........if.(c.==.'\n').{.....
1dda0 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 17 20 20 20 20 ...........cursor_x.=.0;........
1ddc0 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 ........cursor_y++;...#.........
1dde0 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 7b 00 00 00 1d 20 20 ...if.(cursor_y.>=.rows).{......
1de00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 5f 75 70 28 31 29 3b 00 00 00 24 20 ..............scroll_up(1);...$.
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d ...............cursor_y.=.rows.-
1de40 20 31 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 .1;................}............
1de60 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 ....need_redraw.=.1;............
1de80 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 72 27 29 20 7b 00 00 00 19 20 20 20 20 20 }.else.if.(c.==.'\r').{.........
1dea0 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1c 20 20 20 20 20 20 20 20 .......cursor_x.=.0;............
1dec0 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 1f 20 20 20 20 20 20 20 20 ....need_redraw.=.1;............
1dee0 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 5c 62 27 29 20 7b 00 00 00 1f 20 20 20 20 20 }.else.if.(c.==.'\b').{.........
1df00 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 20 30 29 20 7b 00 00 00 1b 20 20 .......if.(cursor_x.>.0).{......
1df20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 2d 2d 3b 00 00 00 31 20 20 20 ..............cursor_x--;...1...
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 .............screen[cursor_y][cu
1df60 72 73 6f 72 5f 78 5d 20 3d 20 27 20 27 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsor_x].=.'.';..................
1df80 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d 20 31 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 ..need_redraw.=.1;..............
1dfa0 20 20 7d 00 00 00 1f 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 20 27 ..}............}.else.if.(c.==.'
1dfc0 5c 74 27 29 20 7b 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 70 61 63 65 73 \t').{...,............int.spaces
1dfe0 20 3d 20 38 20 2d 20 28 63 75 72 73 6f 72 5f 78 20 25 20 38 29 3b 00 00 00 41 20 20 20 20 20 20 .=.8.-.(cursor_x.%.8);...A......
1e000 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 73 20 3d 20 30 3b 20 73 20 3c 20 73 70 61 63 65 73 ......for.(int.s.=.0;.s.<.spaces
1e020 20 26 26 20 63 75 72 73 6f 72 5f 78 20 3c 20 63 6f 6c 73 3b 20 73 2b 2b 29 20 7b 00 00 00 33 20 .&&.cursor_x.<.cols;.s++).{...3.
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b ...............screen[cursor_y][
1e060 63 75 72 73 6f 72 5f 78 2b 2b 5d 20 3d 20 27 20 27 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 cursor_x++].=.'.';..............
1e080 20 20 7d 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 20 3d ..}................need_redraw.=
1e0a0 20 31 3b 00 00 00 28 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3e 3d 20 33 .1;...(........}.else.if.(c.>=.3
1e0c0 32 20 26 26 20 63 20 3c 20 31 32 37 29 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 2.&&.c.<.127).{...#............i
1e0e0 66 20 28 63 75 72 73 6f 72 5f 78 20 3e 3d 20 63 6f 6c 73 29 20 7b 00 00 00 1d 20 20 20 20 20 20 f.(cursor_x.>=.cols).{..........
1e100 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 78 20 3d 20 30 3b 00 00 00 1b 20 20 20 20 20 ..........cursor_x.=.0;.........
1e120 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 5f 79 2b 2b 3b 00 00 00 27 20 20 20 20 20 20 ...........cursor_y++;...'......
1e140 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 5f 79 20 3e 3d 20 72 6f 77 73 29 20 ..........if.(cursor_y.>=.rows).
1e160 7b 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 5f {...!....................scroll_
1e180 75 70 28 31 29 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 up(1);...(....................cu
1e1a0 72 73 6f 72 5f 79 20 3d 20 72 6f 77 73 20 2d 20 31 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 rsor_y.=.rows.-.1;..............
1e1c0 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 2d 20 20 20 20 ......}................}...-....
1e1e0 20 20 20 20 20 20 20 20 73 63 72 65 65 6e 5b 63 75 72 73 6f 72 5f 79 5d 5b 63 75 72 73 6f 72 5f ........screen[cursor_y][cursor_
1e200 78 2b 2b 5d 20 3d 20 63 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 x++].=.c;................need_re
1e220 64 72 61 77 20 3d 20 31 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 draw.=.1;............}........}.
1e240 00 00 01 7d 00 00 00 00 00 00 00 5c 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 63 68 61 ...}.......\static.void.draw_cha
1e260 72 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 64 61 74 61 2c 20 69 6e 74 20 73 74 72 69 64 r(unsigned.char.*data,.int.strid
1e280 65 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 63 68 61 72 20 63 68 2c 20 69 6e 74 20 69 73 e,.int.x,.int.y,.char.ch,.int.is
1e2a0 5f 63 75 72 73 6f 72 29 00 00 00 01 7b 00 00 00 2e 20 20 20 20 66 6f 72 20 28 69 6e 74 20 70 79 _cursor)....{........for.(int.py
1e2c0 20 3d 20 30 3b 20 70 79 20 3c 20 63 68 61 72 5f 68 65 69 67 68 74 3b 20 70 79 2b 2b 29 20 7b 00 .=.0;.py.<.char_height;.py++).{.
1e2e0 00 00 31 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 70 78 20 3d 20 30 3b 20 70 78 20 3c ..1........for.(int.px.=.0;.px.<
1e300 20 63 68 61 72 5f 77 69 64 74 68 3b 20 70 78 2b 2b 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 .char_width;.px++).{..."........
1e320 20 20 20 20 69 6e 74 20 73 63 72 65 65 6e 5f 78 20 3d 20 78 20 2b 20 70 78 3b 00 00 00 22 20 20 ....int.screen_x.=.x.+.px;..."..
1e340 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 63 72 65 65 6e 5f 79 20 3d 20 79 20 2b 20 70 79 3b ..........int.screen_y.=.y.+.py;
1e360 00 00 00 68 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 63 72 65 65 6e 5f 78 20 3e 3d 20 ...h............if.(screen_x.>=.
1e380 30 20 26 26 20 73 63 72 65 65 6e 5f 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 26 26 20 0.&&.screen_x.<.window_width.&&.
1e3a0 73 63 72 65 65 6e 5f 79 20 3e 3d 20 30 20 26 26 20 73 63 72 65 65 6e 5f 79 20 3c 20 77 69 6e 64 screen_y.>=.0.&&.screen_y.<.wind
1e3c0 6f 77 5f 68 65 69 67 68 74 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ow_height).{...=................
1e3e0 69 6e 74 20 69 64 78 20 3d 20 28 73 63 72 65 65 6e 5f 79 20 2a 20 73 74 72 69 64 65 20 2b 20 73 int.idx.=.(screen_y.*.stride.+.s
1e400 63 72 65 65 6e 5f 78 29 20 2a 20 34 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 creen_x).*.4;...................
1e420 20 69 66 20 28 69 73 5f 63 75 72 73 6f 72 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 .if.(is_cursor).{...(...........
1e440 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 35 35 3b 00 00 00 .........data[idx.+.0].=.255;...
1e460 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 (....................data[idx.+.
1e480 31 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1].=.255;...(...................
1e4a0 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 35 35 3b 00 00 00 28 20 20 20 20 20 20 20 .data[idx.+.2].=.255;...(.......
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 .............data[idx.+.3].=.255
1e4e0 3b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 ;...'................}.else.if.(
1e500 63 68 20 21 3d 20 27 20 27 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch.!=.'.').{...(................
1e520 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 20 ....data[idx.+.0].=.212;...(....
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 ................data[idx.+.1].=.
1e560 32 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 212;...(....................data
1e580 5b 69 64 78 20 2b 20 32 5d 20 3d 20 32 31 32 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 [idx.+.2].=.212;...(............
1e5a0 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 18 ........data[idx.+.3].=.255;....
1e5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 26 20 20 20 20 ................}.else.{...&....
1e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 ................data[idx.+.0].=.
1e600 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 0;...&....................data[i
1e620 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 dx.+.1].=.0;...&................
1e640 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d 20 30 3b 00 00 00 28 20 20 20 20 20 20 ....data[idx.+.2].=.0;...(......
1e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 69 64 78 20 2b 20 33 5d 20 3d 20 32 35 ..............data[idx.+.3].=.25
1e680 35 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 0d 20 20 20 20 20 5;....................}.........
1e6a0 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 .......}............}........}..
1e6c0 00 01 7d 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 5f 73 63 72 65 ..}........static.void.draw_scre
1e6e0 65 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 1e 20 20 20 20 69 6e 74 20 73 74 72 69 64 65 20 en(void)....{........int.stride.
1e700 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 00 00 00 04 20 20 20 20 00 00 00 2d 20 20 20 20 66 =.window_width;...........-....f
1e720 6f 72 20 28 69 6e 74 20 79 20 3d 20 30 3b 20 79 20 3c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 or.(int.y.=.0;.y.<.window_height
1e740 3b 20 79 2b 2b 29 20 7b 00 00 00 30 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 78 20 3d ;.y++).{...0........for.(int.x.=
1e760 20 30 3b 20 78 20 3c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 3b 20 78 2b 2b 29 20 7b 00 00 00 2b .0;.x.<.window_width;.x++).{...+
1e780 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 20 3d 20 28 79 20 2a 20 73 74 72 69 64 ............int.idx.=.(y.*.strid
1e7a0 65 20 2b 20 78 29 20 2a 20 34 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c e.+.x).*.4;...$............pixel
1e7c0 5f 64 61 74 61 5b 69 64 78 20 2b 20 30 5d 20 3d 20 30 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 _data[idx.+.0].=.0;...$.........
1e7e0 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 31 5d 20 3d 20 30 3b 00 00 00 24 20 ...pixel_data[idx.+.1].=.0;...$.
1e800 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 78 20 2b 20 32 5d 20 3d ...........pixel_data[idx.+.2].=
1e820 20 30 3b 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 5b 69 64 .0;...&............pixel_data[id
1e840 78 20 2b 20 33 5d 20 3d 20 32 35 35 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 x.+.3].=.255;............}......
1e860 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 24 20 20 20 20 66 6f 72 20 28 69 6e 74 20 79 20 3d 20 ..}...........$....for.(int.y.=.
1e880 30 3b 20 79 20 3c 20 72 6f 77 73 3b 20 79 2b 2b 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 66 0;.y.<.rows;.y++).{...(........f
1e8a0 6f 72 20 28 69 6e 74 20 78 20 3d 20 30 3b 20 78 20 3c 20 63 6f 6c 73 3b 20 78 2b 2b 29 20 7b 00 or.(int.x.=.0;.x.<.cols;.x++).{.
1e8c0 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 73 5f 63 75 72 73 6f 72 20 3d 20 28 ..=............int.is_cursor.=.(
1e8e0 79 20 3d 3d 20 63 75 72 73 6f 72 5f 79 20 26 26 20 78 20 3d 3d 20 63 75 72 73 6f 72 5f 78 29 3b y.==.cursor_y.&&.x.==.cursor_x);
1e900 00 00 00 64 20 20 20 20 20 20 20 20 20 20 20 20 64 72 61 77 5f 63 68 61 72 28 70 69 78 65 6c 5f ...d............draw_char(pixel_
1e920 64 61 74 61 2c 20 73 74 72 69 64 65 2c 20 78 20 2a 20 63 68 61 72 5f 77 69 64 74 68 2c 20 79 20 data,.stride,.x.*.char_width,.y.
1e940 2a 20 63 68 61 72 5f 68 65 69 67 68 74 2c 20 73 63 72 65 65 6e 5b 79 5d 5b 78 5d 2c 20 69 73 5f *.char_height,.screen[y][x],.is_
1e960 63 75 72 73 6f 72 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 cursor);............}........}..
1e980 00 01 7d 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 69 6e 74 20 63 72 65 61 74 65 5f 73 68 6d ..}.......'static.int.create_shm
1e9a0 5f 66 69 6c 65 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 00 00 00 01 7b 00 00 00 36 20 20 20 20 69 _file(size_t.size)....{...6....i
1e9c0 6e 74 20 66 64 20 3d 20 6d 65 6d 66 64 5f 63 72 65 61 74 65 28 22 77 61 79 6c 61 6e 64 2d 73 68 nt.fd.=.memfd_create("wayland-sh
1e9e0 6d 22 2c 20 4d 46 44 5f 43 4c 4f 45 58 45 43 29 3b 00 00 00 12 20 20 20 20 69 66 20 28 66 64 20 m",.MFD_CLOEXEC);........if.(fd.
1ea00 3e 3d 20 30 29 20 7b 00 00 00 30 20 20 20 20 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 >=.0).{...0........if.(ftruncate
1ea20 28 66 64 2c 20 73 69 7a 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 12 20 (fd,.size).==.0).return.fd;.....
1ea40 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 .......close(fd);........}......
1ea60 20 20 00 00 00 2b 20 20 20 20 63 68 61 72 20 74 65 6d 70 6c 61 74 65 5b 5d 20 3d 20 22 2f 74 6d .....+....char.template[].=."/tm
1ea80 70 2f 77 6c 2d 73 68 6d 2d 58 58 58 58 58 58 22 3b 00 00 00 1b 20 20 20 20 66 64 20 3d 20 6d 6b p/wl-shm-XXXXXX";........fd.=.mk
1eaa0 73 74 65 6d 70 28 74 65 6d 70 6c 61 74 65 29 3b 00 00 00 12 20 20 20 20 69 66 20 28 66 64 20 3e stemp(template);........if.(fd.>
1eac0 3d 20 30 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 75 6e 6c 69 6e 6b 28 74 65 6d 70 6c 61 74 =.0).{............unlink(templat
1eae0 65 29 3b 00 00 00 30 20 20 20 20 20 20 20 20 69 66 20 28 66 74 72 75 6e 63 61 74 65 28 66 64 2c e);...0........if.(ftruncate(fd,
1eb00 20 73 69 7a 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 64 3b 00 00 00 12 20 20 20 20 20 .size).==.0).return.fd;.........
1eb20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0e 20 20 20 20 72 65 ...close(fd);........}........re
1eb40 74 75 72 6e 20 2d 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 73 74 72 75 turn.-1;....}.......=static.stru
1eb60 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 69 6e 74 20 ct.wl_buffer.*create_buffer(int.
1eb80 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 1b 20 20 20 20 69 width,.int.height)....{........i
1eba0 6e 74 20 73 74 72 69 64 65 20 3d 20 77 69 64 74 68 20 2a 20 34 3b 00 00 00 1f 20 20 20 20 69 6e nt.stride.=.width.*.4;........in
1ebc0 74 20 73 69 7a 65 20 3d 20 73 74 72 69 64 65 20 2a 20 68 65 69 67 68 74 3b 00 00 00 23 20 20 20 t.size.=.stride.*.height;...#...
1ebe0 20 69 6e 74 20 66 64 20 3d 20 63 72 65 61 74 65 5f 73 68 6d 5f 66 69 6c 65 28 73 69 7a 65 29 3b .int.fd.=.create_shm_file(size);
1ec00 00 00 00 1c 20 20 20 20 69 66 20 28 66 64 20 3c 20 30 29 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b ........if.(fd.<.0).return.NULL;
1ec20 00 00 00 04 20 20 20 20 00 00 00 4d 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d 20 6d 6d 61 ...........M....pixel_data.=.mma
1ec40 70 28 4e 55 4c 4c 2c 20 73 69 7a 65 2c 20 50 52 4f 54 5f 52 45 41 44 20 7c 20 50 52 4f 54 5f 57 p(NULL,.size,.PROT_READ.|.PROT_W
1ec60 52 49 54 45 2c 20 4d 41 50 5f 53 48 41 52 45 44 2c 20 66 64 2c 20 30 29 3b 00 00 00 23 20 20 20 RITE,.MAP_SHARED,.fd,.0);...#...
1ec80 20 69 66 20 28 70 69 78 65 6c 5f 64 61 74 61 20 3d 3d 20 4d 41 50 5f 46 41 49 4c 45 44 29 20 7b .if.(pixel_data.==.MAP_FAILED).{
1eca0 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 14 20 20 20 20 20 20 ............close(fd);..........
1ecc0 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 ..return.NULL;........}.........
1ece0 00 00 12 20 20 20 20 64 72 61 77 5f 73 63 72 65 65 6e 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 .......draw_screen();...........
1ed00 41 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 20 2a 70 6f 6f 6c 20 3d 20 A....struct.wl_shm_pool.*pool.=.
1ed20 77 6c 5f 73 68 6d 5f 63 72 65 61 74 65 5f 70 6f 6f 6c 28 73 68 6d 2c 20 66 64 2c 20 73 69 7a 65 wl_shm_create_pool(shm,.fd,.size
1ed40 29 3b 00 00 00 71 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 62 75 66 66 65 72 20 2a 62 75 66 66 );...q....struct.wl_buffer.*buff
1ed60 65 72 20 3d 20 77 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 70 er.=.wl_shm_pool_create_buffer(p
1ed80 6f 6f 6c 2c 20 30 2c 20 77 69 64 74 68 2c 20 68 65 69 67 68 74 2c 20 73 74 72 69 64 65 2c 20 57 ool,.0,.width,.height,.stride,.W
1eda0 4c 5f 53 48 4d 5f 46 4f 52 4d 41 54 5f 41 52 47 42 38 38 38 38 29 3b 00 00 00 1e 20 20 20 20 77 L_SHM_FORMAT_ARGB8888);........w
1edc0 6c 5f 73 68 6d 5f 70 6f 6f 6c 5f 64 65 73 74 72 6f 79 28 70 6f 6f 6c 29 3b 00 00 00 0e 20 20 20 l_shm_pool_destroy(pool);.......
1ede0 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 04 20 20 20 20 00 00 00 12 20 20 20 20 72 65 74 75 72 .close(fd);................retur
1ee00 6e 20 62 75 66 66 65 72 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 n.buffer;....}........static.voi
1ee20 64 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 18 20 d.destroy_buffer(void)....{.....
1ee40 20 20 20 69 66 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 29 20 20 20 20 20 ...if.(window_buffer).{...).....
1ee60 20 20 20 77 6c 5f 62 75 66 66 65 72 5f 64 65 73 74 72 6f 79 28 77 69 6e 64 6f 77 5f 62 75 66 66 ...wl_buffer_destroy(window_buff
1ee80 65 72 29 3b 00 00 00 1d 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 3d 20 er);............window_buffer.=.
1eea0 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 15 20 20 20 20 69 66 20 28 70 69 78 65 6c 5f NULL;........}........if.(pixel_
1eec0 64 61 74 61 29 20 7b 00 00 00 3d 20 20 20 20 20 20 20 20 6d 75 6e 6d 61 70 28 70 69 78 65 6c 5f data).{...=........munmap(pixel_
1eee0 64 61 74 61 2c 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 20 2a 20 77 69 6e 64 6f 77 5f 68 65 69 67 data,.window_width.*.window_heig
1ef00 68 74 20 2a 20 34 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 70 69 78 65 6c 5f 64 61 74 61 20 3d ht.*.4);............pixel_data.=
1ef20 20 4e 55 4c 4c 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 74 .NULL;........}....}.......0stat
1ef40 69 63 20 76 6f 69 64 20 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 69 6e 74 20 77 69 64 74 68 2c ic.void.resize_window(int.width,
1ef60 20 69 6e 74 20 68 65 69 67 68 74 29 00 00 00 01 7b 00 00 00 2a 20 20 20 20 69 66 20 28 77 69 64 .int.height)....{...*....if.(wid
1ef80 74 68 20 3c 3d 20 30 20 7c 7c 20 68 65 69 67 68 74 20 3c 3d 20 30 29 20 72 65 74 75 72 6e 3b 00 th.<=.0.||.height.<=.0).return;.
1efa0 00 00 04 20 20 20 20 00 00 00 1e 20 20 20 20 63 6f 6c 73 20 3d 20 77 69 64 74 68 20 2f 20 63 68 ...............cols.=.width./.ch
1efc0 61 72 5f 77 69 64 74 68 3b 00 00 00 20 20 20 20 20 72 6f 77 73 20 3d 20 68 65 69 67 68 74 20 2f ar_width;........rows.=.height./
1efe0 20 63 68 61 72 5f 68 65 69 67 68 74 3b 00 00 00 1d 20 20 20 20 69 66 20 28 63 6f 6c 73 20 3c 20 .char_height;........if.(cols.<.
1f000 32 30 29 20 63 6f 6c 73 20 3d 20 32 30 3b 00 00 00 1b 20 20 20 20 69 66 20 28 72 6f 77 73 20 3c 20).cols.=.20;........if.(rows.<
1f020 20 35 29 20 72 6f 77 73 20 3d 20 35 3b 00 00 00 04 20 20 20 20 00 00 00 25 20 20 20 20 77 69 6e .5).rows.=.5;...........%....win
1f040 64 6f 77 5f 77 69 64 74 68 20 3d 20 63 6f 6c 73 20 2a 20 63 68 61 72 5f 77 69 64 74 68 3b 00 00 dow_width.=.cols.*.char_width;..
1f060 00 27 20 20 20 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 3d 20 72 6f 77 73 20 2a 20 63 68 61 .'....window_height.=.rows.*.cha
1f080 72 5f 68 65 69 67 68 74 3b 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 64 65 73 74 72 6f 79 r_height;................destroy
1f0a0 5f 62 75 66 66 65 72 28 29 3b 00 00 00 3f 20 20 20 20 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 20 _buffer();...?....window_buffer.
1f0c0 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c 20 77 69 =.create_buffer(window_width,.wi
1f0e0 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 14 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 ndow_height);........need_redraw
1f100 20 3d 20 31 3b 00 00 00 15 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 30 3b 00 00 .=.1;........needs_resize.=.0;..
1f120 00 04 20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 ..............if.(pty_master.>=.
1f140 30 29 20 7b 00 00 00 76 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 77 69 6e 73 69 7a 65 20 77 0).{...v........struct.winsize.w
1f160 73 20 3d 20 7b 20 2e 77 73 5f 72 6f 77 20 3d 20 72 6f 77 73 2c 20 2e 77 73 5f 63 6f 6c 20 3d 20 s.=.{..ws_row.=.rows,..ws_col.=.
1f180 63 6f 6c 73 2c 20 2e 77 73 5f 78 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 77 69 64 74 68 2c cols,..ws_xpixel.=.window_width,
1f1a0 20 2e 77 73 5f 79 70 69 78 65 6c 20 3d 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 20 7d 3b 00 00 ..ws_ypixel.=.window_height.};..
1f1c0 00 2b 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 54 49 4f 43 .+........ioctl(pty_master,.TIOC
1f1e0 53 57 49 4e 53 5a 2c 20 26 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 SWINSZ,.&ws);........}....}.....
1f200 00 00 4f 73 74 61 74 69 63 20 76 6f 69 64 20 66 72 61 6d 65 5f 64 6f 6e 65 28 76 6f 69 64 20 2a ..Ostatic.void.frame_done(void.*
1f220 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 20 2a 63 61 6c 6c 62 61 data,.struct.wl_callback.*callba
1f240 63 6b 2c 20 75 69 6e 74 33 32 5f 74 20 74 69 6d 65 29 00 00 00 01 7b 00 00 00 30 20 20 20 20 69 ck,.uint32_t.time)....{...0....i
1f260 66 20 28 63 61 6c 6c 62 61 63 6b 29 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 64 65 73 74 72 6f 79 f.(callback).wl_callback_destroy
1f280 28 63 61 6c 6c 62 61 63 6b 29 3b 00 00 00 04 20 20 20 20 00 00 00 17 20 20 20 20 69 66 20 28 6e (callback);................if.(n
1f2a0 65 65 64 73 5f 72 65 73 69 7a 65 29 20 7b 00 00 00 35 20 20 20 20 20 20 20 20 72 65 73 69 7a 65 eeds_resize).{...5........resize
1f2c0 5f 77 69 6e 64 6f 77 28 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 2c 20 70 65 6e 64 69 6e 67 5f 68 _window(pending_width,.pending_h
1f2e0 65 69 67 68 74 29 3b 00 00 00 2b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 eight);...+........pending_width
1f300 20 3d 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 .=.pending_height.=.0;........}.
1f320 00 00 04 20 20 20 20 00 00 00 24 20 20 20 20 69 66 20 28 6e 65 65 64 5f 72 65 64 72 61 77 20 26 ..........$....if.(need_redraw.&
1f340 26 20 70 69 78 65 6c 5f 64 61 74 61 29 20 7b 00 00 00 16 20 20 20 20 20 20 20 20 64 72 61 77 5f &.pixel_data).{............draw_
1f360 73 63 72 65 65 6e 28 29 3b 00 00 00 18 20 20 20 20 20 20 20 20 6e 65 65 64 5f 72 65 64 72 61 77 screen();............need_redraw
1f380 20 3d 20 30 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 18 20 20 20 20 69 66 .=.0;........}................if
1f3a0 20 28 77 69 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 77 6c .(window_buffer).{...8........wl
1f3c0 5f 73 75 72 66 61 63 65 5f 61 74 74 61 63 68 28 73 75 72 66 61 63 65 2c 20 77 69 6e 64 6f 77 5f _surface_attach(surface,.window_
1f3e0 62 75 66 66 65 72 2c 20 30 2c 20 30 29 3b 00 00 00 46 20 20 20 20 20 20 20 20 77 6c 5f 73 75 72 buffer,.0,.0);...F........wl_sur
1f400 66 61 63 65 5f 64 61 6d 61 67 65 28 73 75 72 66 61 63 65 2c 20 30 2c 20 30 2c 20 77 69 6e 64 6f face_damage(surface,.0,.0,.windo
1f420 77 5f 77 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 23 20 20 20 20 w_width,.window_height);...#....
1f440 20 20 20 20 77 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 ....wl_surface_commit(surface);.
1f460 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 55 20 20 20 20 73 74 61 74 69 63 20 63 .......}...........U....static.c
1f480 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 74 65 6e 65 72 onst.struct.wl_callback_listener
1f4a0 20 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 64 6f 6e 65 20 3d 20 66 72 61 6d .frame_listener.=.{..done.=.fram
1f4c0 65 5f 64 6f 6e 65 20 7d 3b 00 00 00 2f 20 20 20 20 66 72 61 6d 65 5f 63 61 6c 6c 62 61 63 6b 20 e_done.};.../....frame_callback.
1f4e0 3d 20 77 6c 5f 73 75 72 66 61 63 65 5f 66 72 61 6d 65 28 73 75 72 66 61 63 65 29 3b 00 00 00 44 =.wl_surface_frame(surface);...D
1f500 20 20 20 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 66 72 61 ....wl_callback_add_listener(fra
1f520 6d 65 5f 63 61 6c 6c 62 61 63 6b 2c 20 26 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 me_callback,.&frame_listener,.NU
1f540 4c 4c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 53 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 67 LL);....}.......Sstatic.void.xdg
1f560 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 _wm_base_ping(void.*data,.struct
1f580 20 78 64 67 5f 77 6d 5f 62 61 73 65 20 2a 62 61 73 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 .xdg_wm_base.*base,.uint32_t.ser
1f5a0 69 61 6c 29 00 00 00 01 7b 00 00 00 23 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 6f 6e ial)....{...#....xdg_wm_base_pon
1f5c0 67 28 62 61 73 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 59 73 74 61 g(base,.serial);....}.......Ysta
1f5e0 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 6c 69 73 tic.const.struct.xdg_wm_base_lis
1f600 74 65 6e 65 72 20 77 6d 5f 62 61 73 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 20 2e 70 69 6e 67 tener.wm_base_listener.=.{..ping
1f620 20 3d 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 70 69 6e 67 20 7d 3b 00 00 00 00 00 00 00 4d 73 74 .=.xdg_wm_base_ping.};.......Mst
1f640 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6f 6e 66 69 67 75 72 65 atic.void.xdg_toplevel_configure
1f660 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c (void.*data,.struct.xdg_toplevel
1f680 20 2a 74 6f 70 6c 65 76 65 6c 2c 00 00 00 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .*toplevel,...Q.................
1f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 33 32 5f 74 20 77 2c 20 69 6e 74 ..................int32_t.w,.int
1f6c0 33 32 5f 74 20 68 2c 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 79 20 2a 73 74 61 74 65 73 29 32_t.h,.struct.wl_array.*states)
1f6e0 00 00 00 01 7b 00 00 00 19 20 20 20 20 69 66 20 28 77 20 3e 20 30 20 26 26 20 68 20 3e 20 30 29 ....{........if.(w.>.0.&&.h.>.0)
1f700 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 77 69 64 74 68 20 3d 20 77 3b .{............pending_width.=.w;
1f720 00 00 00 1b 20 20 20 20 20 20 20 20 70 65 6e 64 69 6e 67 5f 68 65 69 67 68 74 20 3d 20 68 3b 00 ............pending_height.=.h;.
1f740 00 00 19 20 20 20 20 20 20 20 20 6e 65 65 64 73 5f 72 65 73 69 7a 65 20 3d 20 31 3b 00 00 00 05 ...........needs_resize.=.1;....
1f760 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 49 73 74 61 74 69 63 20 76 6f 69 64 20 78 64 ....}....}.......Istatic.void.xd
1f780 67 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 g_toplevel_close(void.*data,.str
1f7a0 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 20 2a 74 6f 70 6c 65 76 65 6c 29 00 00 00 01 7b uct.xdg_toplevel.*toplevel)....{
1f7c0 00 00 00 10 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 ........running.=.0;....}.......
1f7e0 3f 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 78 64 67 5f 74 6f 70 6c 65 76 65 ?static.const.struct.xdg_topleve
1f800 6c 5f 6c 69 73 74 65 6e 65 72 20 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b l_listener.toplevel_listener.=.{
1f820 00 00 00 28 20 20 20 20 2e 63 6f 6e 66 69 67 75 72 65 20 3d 20 78 64 67 5f 74 6f 70 6c 65 76 65 ...(.....configure.=.xdg_topleve
1f840 6c 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 20 20 20 20 20 2e 63 6c 6f 73 65 20 3d 20 78 64 67 l_configure,.........close.=.xdg
1f860 5f 74 6f 70 6c 65 76 65 6c 5f 63 6c 6f 73 65 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 5b 73 74 _toplevel_close,....};.......[st
1f880 61 74 69 63 20 76 6f 69 64 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 28 atic.void.xdg_surface_configure(
1f8a0 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 20 2a void.*data,.struct.xdg_surface.*
1f8c0 73 75 72 66 61 63 65 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 29 00 00 00 01 7b 00 00 surface,.uint32_t.serial)....{..
1f8e0 00 2f 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 63 6b 5f 63 6f 6e 66 69 67 75 72 65 28 ./....xdg_surface_ack_configure(
1f900 73 75 72 66 61 63 65 2c 20 73 65 72 69 61 6c 29 3b 00 00 00 19 20 20 20 20 69 66 20 28 21 77 69 surface,.serial);........if.(!wi
1f920 6e 64 6f 77 5f 62 75 66 66 65 72 29 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 ndow_buffer).{...C........window
1f940 5f 62 75 66 66 65 72 20 3d 20 63 72 65 61 74 65 5f 62 75 66 66 65 72 28 77 69 6e 64 6f 77 5f 77 _buffer.=.create_buffer(window_w
1f960 69 64 74 68 2c 20 77 69 6e 64 6f 77 5f 68 65 69 67 68 74 29 3b 00 00 00 22 20 20 20 20 20 20 20 idth,.window_height);...".......
1f980 20 66 72 61 6d 65 5f 64 6f 6e 65 28 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 29 3b 00 00 00 05 20 .frame_done(NULL,.NULL,.0);.....
1f9a0 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 41 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 ...}....}.......Astatic.const.st
1f9c0 72 75 63 74 20 78 64 67 5f 73 75 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 78 64 67 5f 73 75 ruct.xdg_surface_listener.xdg_su
1f9e0 72 66 61 63 65 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 27 20 20 20 20 2e 63 6f 6e 66 69 rface_listener.=.{...'.....confi
1fa00 67 75 72 65 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 63 6f 6e 66 69 67 75 72 65 2c 00 00 00 gure.=.xdg_surface_configure,...
1fa20 02 7d 3b 00 00 00 00 00 00 00 71 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f .};.......qstatic.void.keyboard_
1fa40 6b 65 79 6d 61 70 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 keymap(void.*data,.struct.wl_key
1fa60 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 2c 20 75 69 6e 74 33 32 5f 74 20 66 6f 72 6d 61 74 board.*keyboard,.uint32_t.format
1fa80 2c 20 69 6e 74 33 32 5f 74 20 66 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 69 7a 65 29 00 00 00 01 ,.int32_t.fd,.uint32_t.size)....
1faa0 7b 00 00 00 0e 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 8b {........close(fd);....}........
1fac0 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 28 76 6f 69 64 20 static.void.keyboard_enter(void.
1fae0 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f *data,.struct.wl_keyboard.*keybo
1fb00 61 72 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c 5f ard,.uint32_t.serial,.struct.wl_
1fb20 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 2c 20 73 74 72 75 63 74 20 77 6c 5f 61 72 72 61 surface.*surface,.struct.wl_arra
1fb40 79 20 2a 6b 65 79 73 29 20 7b 7d 00 00 00 74 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f y.*keys).{}...tstatic.void.keybo
1fb60 61 72 64 5f 6c 65 61 76 65 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f ard_leave(void.*data,.struct.wl_
1fb80 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 keyboard.*keyboard,.uint32_t.ser
1fba0 69 61 6c 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 75 72 66 61 63 65 20 2a 73 75 72 66 61 63 65 29 ial,.struct.wl_surface.*surface)
1fbc0 20 7b 7d 00 00 00 00 00 00 00 80 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f .{}........static.void.keyboard_
1fbe0 6b 65 79 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 key(void.*data,.struct.wl_keyboa
1fc00 72 64 20 2a 6b 65 79 62 6f 61 72 64 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 rd.*keyboard,.uint32_t.serial,.u
1fc20 69 6e 74 33 32 5f 74 20 74 69 6d 65 2c 20 75 69 6e 74 33 32 5f 74 20 6b 65 79 2c 20 75 69 6e 74 int32_t.time,.uint32_t.key,.uint
1fc40 33 32 5f 74 20 73 74 61 74 65 29 00 00 00 01 7b 00 00 00 44 20 20 20 20 69 66 20 28 73 74 61 74 32_t.state)....{...D....if.(stat
1fc60 65 20 3d 3d 20 57 4c 5f 4b 45 59 42 4f 41 52 44 5f 4b 45 59 5f 53 54 41 54 45 5f 50 52 45 53 53 e.==.WL_KEYBOARD_KEY_STATE_PRESS
1fc80 45 44 20 26 26 20 70 74 79 5f 6d 61 73 74 65 72 20 3e 3d 20 30 29 20 7b 00 00 00 13 20 20 20 20 ED.&&.pty_master.>=.0).{........
1fca0 20 20 20 20 63 68 61 72 20 63 20 3d 20 30 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 3f 20 ....char.c.=.0;...............?.
1fcc0 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3e 3d 20 38 20 26 26 20 6b 65 79 20 3c 3d 20 39 29 .......if.(key.>=.8.&&.key.<=.9)
1fce0 20 63 20 3d 20 28 6b 65 79 20 3d 3d 20 38 29 20 3f 20 30 78 37 66 20 3a 20 27 5c 74 27 3b 00 00 .c.=.(key.==.8).?.0x7f.:.'\t';..
1fd00 00 44 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 31 36 20 26 26 20 .D........else.if.(key.>=.16.&&.
1fd20 6b 65 79 20 3c 3d 20 32 35 29 20 63 20 3d 20 22 71 77 65 72 74 79 75 69 6f 70 22 5b 6b 65 79 20 key.<=.25).c.=."qwertyuiop"[key.
1fd40 2d 20 31 36 5d 3b 00 00 00 43 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3e -.16];...C........else.if.(key.>
1fd60 3d 20 32 36 20 26 26 20 6b 65 79 20 3c 3d 20 33 35 29 20 63 20 3d 20 22 61 73 64 66 67 68 6a 6b =.26.&&.key.<=.35).c.=."asdfghjk
1fd80 6c 22 5b 6b 65 79 20 2d 20 32 36 5d 3b 00 00 00 41 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 l"[key.-.26];...A........else.if
1fda0 20 28 6b 65 79 20 3e 3d 20 33 36 20 26 26 20 6b 65 79 20 3c 3d 20 34 35 29 20 63 20 3d 20 22 7a .(key.>=.36.&&.key.<=.45).c.=."z
1fdc0 78 63 76 62 6e 6d 22 5b 6b 65 79 20 2d 20 33 36 5d 3b 00 00 00 44 20 20 20 20 20 20 20 20 65 6c xcvbnm"[key.-.36];...D........el
1fde0 73 65 20 69 66 20 28 6b 65 79 20 3e 3d 20 34 36 20 26 26 20 6b 65 79 20 3c 3d 20 35 35 29 20 63 se.if.(key.>=.46.&&.key.<=.55).c
1fe00 20 3d 20 22 30 31 32 33 34 35 36 37 38 39 22 5b 6b 65 79 20 2d 20 34 36 5d 3b 00 00 00 24 20 20 .=."0123456789"[key.-.46];...$..
1fe20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 37 29 20 63 20 3d 20 27 20 ......else.if.(key.==.57).c.=.'.
1fe40 27 3b 00 00 00 25 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 35 38 ';...%........else.if.(key.==.58
1fe60 29 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 25 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 ).c.=.'\n';...%........else.if.(
1fe80 6b 65 79 20 3d 3d 20 31 34 29 20 63 20 3d 20 27 5c 62 27 3b 00 00 00 24 20 20 20 20 20 20 20 20 key.==.14).c.=.'\b';...$........
1fea0 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 32 32 29 20 63 20 3d 20 27 77 27 3b 00 00 00 24 else.if.(key.==.22).c.=.'w';...$
1fec0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 39 29 20 63 20 3d 20 27 ........else.if.(key.==.9).c.=.'
1fee0 5c 74 27 3b 00 00 00 25 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 \t';...%........else.if.(key.==.
1ff00 34 31 29 20 63 20 3d 20 27 5c 6e 27 3b 00 00 00 08 20 20 20 20 20 20 20 20 00 00 00 10 20 20 20 41).c.=.'\n';...................
1ff20 20 20 20 20 20 69 66 20 28 63 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 .....if.(c).{...%............wri
1ff40 74 65 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 26 63 2c 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 te(pty_master,.&c,.1);..........
1ff60 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 b2 73 74 61 74 69 63 20 ..}........}....}........static.
1ff80 76 6f 69 64 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 28 76 6f 69 64 20 2a 64 61 void.keyboard_modifiers(void.*da
1ffa0 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 20 2a 6b 65 79 62 6f 61 72 64 ta,.struct.wl_keyboard.*keyboard
1ffc0 2c 20 75 69 6e 74 33 32 5f 74 20 73 65 72 69 61 6c 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 ,.uint32_t.serial,.uint32_t.mods
1ffe0 5f 64 65 70 72 65 73 73 65 64 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 61 74 63 68 65 _depressed,.uint32_t.mods_latche
20000 64 2c 20 75 69 6e 74 33 32 5f 74 20 6d 6f 64 73 5f 6c 6f 63 6b 65 64 2c 20 75 69 6e 74 33 32 5f d,.uint32_t.mods_locked,.uint32_
20020 74 20 67 72 6f 75 70 29 20 7b 7d 00 00 00 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 t.group).{}.......>static.const.
20040 73 74 72 75 63 74 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 6b 65 79 62 struct.wl_keyboard_listener.keyb
20060 6f 61 72 64 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b 00 00 00 1e 20 20 20 20 2e 6b 65 79 6d 61 70 oard_listener.=.{.........keymap
20080 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 6d 61 70 2c 00 00 00 1c 20 20 20 20 2e 65 6e 74 65 .=.keyboard_keymap,.........ente
200a0 72 20 3d 20 6b 65 79 62 6f 61 72 64 5f 65 6e 74 65 72 2c 00 00 00 1c 20 20 20 20 2e 6c 65 61 76 r.=.keyboard_enter,.........leav
200c0 65 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6c 65 61 76 65 2c 00 00 00 18 20 20 20 20 2e 6b 65 79 20 e.=.keyboard_leave,.........key.
200e0 3d 20 6b 65 79 62 6f 61 72 64 5f 6b 65 79 2c 00 00 00 24 20 20 20 20 2e 6d 6f 64 69 66 69 65 72 =.keyboard_key,...$.....modifier
20100 73 20 3d 20 6b 65 79 62 6f 61 72 64 5f 6d 6f 64 69 66 69 65 72 73 2c 00 00 00 02 7d 3b 00 00 00 s.=.keyboard_modifiers,....};...
20120 00 00 00 00 56 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 61 74 5f 63 61 70 61 62 69 6c 69 74 69 ....Vstatic.void.seat_capabiliti
20140 65 73 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 72 75 63 74 20 77 6c 5f 73 65 61 74 20 2a 73 es(void.*data,.struct.wl_seat.*s
20160 65 61 74 2c 20 75 69 6e 74 33 32 5f 74 20 63 61 70 61 62 69 6c 69 74 69 65 73 29 00 00 00 01 7b eat,.uint32_t.capabilities)....{
20180 00 00 00 35 20 20 20 20 69 66 20 28 63 61 70 61 62 69 6c 69 74 69 65 73 20 26 20 57 4c 5f 53 45 ...5....if.(capabilities.&.WL_SE
201a0 41 54 5f 43 41 50 41 42 49 4c 49 54 59 5f 4b 45 59 42 4f 41 52 44 29 20 7b 00 00 00 2e 20 20 20 AT_CAPABILITY_KEYBOARD).{.......
201c0 20 20 20 20 20 6b 65 79 62 6f 61 72 64 20 3d 20 77 6c 5f 73 65 61 74 5f 67 65 74 5f 6b 65 79 62 .....keyboard.=.wl_seat_get_keyb
201e0 6f 61 72 64 28 73 65 61 74 29 3b 00 00 00 45 20 20 20 20 20 20 20 20 77 6c 5f 6b 65 79 62 6f 61 oard(seat);...E........wl_keyboa
20200 72 64 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 6b 65 79 62 6f 61 72 64 2c 20 26 6b 65 79 62 6f rd_add_listener(keyboard,.&keybo
20220 61 72 64 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 ard_listener,.NULL);........}...
20240 01 7d 00 00 00 00 00 00 00 36 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c .}.......6static.const.struct.wl
20260 5f 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 73 65 61 74 5f 6c 69 73 74 65 6e 65 72 20 3d 20 7b _seat_listener.seat_listener.=.{
20280 00 00 00 26 20 20 20 20 2e 63 61 70 61 62 69 6c 69 74 69 65 73 20 3d 20 73 65 61 74 5f 63 61 70 ...&.....capabilities.=.seat_cap
202a0 61 62 69 6c 69 74 69 65 73 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 7b 73 74 61 74 69 63 20 76 abilities,....};.......{static.v
202c0 6f 69 64 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 61 6c 28 76 6f 69 64 20 2a 64 61 74 61 2c 20 73 74 oid.handle_global(void.*data,.st
202e0 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 72 79 2c 20 75 69 6e 74 ruct.wl_registry.*registry,.uint
20300 33 32 5f 74 20 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 69 6e 74 65 72 66 61 63 65 32_t.name,.const.char.*interface
20320 2c 20 75 69 6e 74 33 32 5f 74 20 76 65 72 73 69 6f 6e 29 00 00 00 01 7b 00 00 00 30 20 20 20 20 ,.uint32_t.version)....{...0....
20340 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 63 6f 6d 70 6f 73 if.(strcmp(interface,."wl_compos
20360 69 74 6f 72 22 29 20 3d 3d 20 30 29 00 00 00 53 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 itor").==.0)...S........composit
20380 6f 72 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 or.=.wl_registry_bind(registry,.
203a0 6e 61 6d 65 2c 20 26 77 6c 5f 63 6f 6d 70 6f 73 69 74 6f 72 5f 69 6e 74 65 72 66 61 63 65 2c 20 name,.&wl_compositor_interface,.
203c0 34 29 3b 00 00 00 2e 20 20 20 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 4);........else.if.(strcmp(inter
203e0 66 61 63 65 2c 20 22 77 6c 5f 73 68 6d 22 29 20 3d 3d 20 30 29 00 00 00 45 20 20 20 20 20 20 20 face,."wl_shm").==.0)...E.......
20400 20 73 68 6d 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 .shm.=.wl_registry_bind(registry
20420 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 68 6d 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 ,.name,.&wl_shm_interface,.1);..
20440 00 35 20 20 20 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c .5....else.if.(strcmp(interface,
20460 20 22 78 64 67 5f 77 6d 5f 62 61 73 65 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 4e 20 20 20 20 20 ."xdg_wm_base").==.0).{...N.....
20480 20 20 20 77 6d 5f 62 61 73 65 20 3d 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 62 69 6e 64 28 72 65 ...wm_base.=.wl_registry_bind(re
204a0 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 78 64 67 5f 77 6d 5f 62 61 73 65 5f 69 6e 74 65 72 gistry,.name,.&xdg_wm_base_inter
204c0 66 61 63 65 2c 20 31 29 3b 00 00 00 43 20 20 20 20 20 20 20 20 78 64 67 5f 77 6d 5f 62 61 73 65 face,.1);...C........xdg_wm_base
204e0 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 77 6d 5f 62 61 73 65 2c 20 26 77 6d 5f 62 61 73 65 5f _add_listener(wm_base,.&wm_base_
20500 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 33 20 20 20 20 7d 20 65 6c 73 65 20 69 listener,.NULL);...3....}.else.i
20520 66 20 28 73 74 72 63 6d 70 28 69 6e 74 65 72 66 61 63 65 2c 20 22 77 6c 5f 73 65 61 74 22 29 20 f.(strcmp(interface,."wl_seat").
20540 3d 3d 20 30 29 20 7b 00 00 00 47 20 20 20 20 20 20 20 20 73 65 61 74 20 3d 20 77 6c 5f 72 65 67 ==.0).{...G........seat.=.wl_reg
20560 69 73 74 72 79 5f 62 69 6e 64 28 72 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 2c 20 26 77 6c 5f 73 istry_bind(registry,.name,.&wl_s
20580 65 61 74 5f 69 6e 74 65 72 66 61 63 65 2c 20 31 29 3b 00 00 00 39 20 20 20 20 20 20 20 20 77 6c eat_interface,.1);...9........wl
205a0 5f 73 65 61 74 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 73 65 61 74 2c 20 26 73 65 61 74 5f 6c _seat_add_listener(seat,.&seat_l
205c0 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 istener,.NULL);........}....}...
205e0 00 00 00 00 3e 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 ....>static.const.struct.wl_regi
20600 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 6e 65 72 20 stry_listener.registry_listener.
20620 3d 20 7b 00 00 00 1c 20 20 20 20 2e 67 6c 6f 62 61 6c 20 3d 20 68 61 6e 64 6c 65 5f 67 6c 6f 62 =.{.........global.=.handle_glob
20640 61 6c 2c 00 00 00 1a 20 20 20 20 2e 67 6c 6f 62 61 6c 5f 72 65 6d 6f 76 65 20 3d 20 4e 55 4c 4c al,.........global_remove.=.NULL
20660 2c 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1a 73 74 61 74 69 63 20 69 6e 74 20 73 65 74 75 70 5f ,....};........static.int.setup_
20680 70 74 79 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 31 20 20 20 20 70 74 79 5f 6d 61 73 74 65 72 pty(void)....{...1....pty_master
206a0 20 3d 20 70 6f 73 69 78 5f 6f 70 65 6e 70 74 28 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 .=.posix_openpt(O_RDWR.|.O_NOCTT
206c0 59 29 3b 00 00 00 22 20 20 20 20 69 66 20 28 70 74 79 5f 6d 61 73 74 65 72 20 3c 20 30 29 20 72 Y);..."....if.(pty_master.<.0).r
206e0 65 74 75 72 6e 20 2d 31 3b 00 00 00 04 20 20 20 20 00 00 00 2b 20 20 20 20 69 66 20 28 67 72 61 eturn.-1;...........+....if.(gra
20700 6e 74 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b ntpt(pty_master).<.0).return.-1;
20720 00 00 00 2c 20 20 20 20 69 66 20 28 75 6e 6c 6f 63 6b 70 74 28 70 74 79 5f 6d 61 73 74 65 72 29 ...,....if.(unlockpt(pty_master)
20740 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 04 20 20 20 20 00 00 00 3d 20 20 20 20 .<.0).return.-1;...........=....
20760 69 6e 74 20 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 70 74 79 5f 6d 61 73 int.slave.=.open(ptsname(pty_mas
20780 74 65 72 29 2c 20 4f 5f 52 44 57 52 20 7c 20 4f 5f 4e 4f 43 54 54 59 29 3b 00 00 00 1d 20 20 20 ter),.O_RDWR.|.O_NOCTTY);.......
207a0 20 69 66 20 28 73 6c 61 76 65 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 04 20 20 .if.(slave.<.0).return.-1;......
207c0 20 20 00 00 00 18 20 20 20 20 73 74 72 75 63 74 20 74 65 72 6d 69 6f 73 20 74 65 72 6d 3b 00 00 ..........struct.termios.term;..
207e0 00 1c 20 20 20 20 74 63 67 65 74 61 74 74 72 28 73 6c 61 76 65 2c 20 26 74 65 72 6d 29 3b 00 00 ......tcgetattr(slave,.&term);..
20800 00 15 20 20 20 20 63 66 6d 61 6b 65 72 61 77 28 26 74 65 72 6d 29 3b 00 00 00 25 20 20 20 20 74 ......cfmakeraw(&term);...%....t
20820 63 73 65 74 61 74 74 72 28 73 6c 61 76 65 2c 20 54 43 53 41 4e 4f 57 2c 20 26 74 65 72 6d 29 3b csetattr(slave,.TCSANOW,.&term);
20840 00 00 00 11 20 20 20 20 63 6c 6f 73 65 28 73 6c 61 76 65 29 3b 00 00 00 04 20 20 20 20 00 00 00 ........close(slave);...........
20860 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 .....return.0;....}........stati
20880 63 20 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 17 20 c.void.run_shell(void)....{.....
208a0 20 20 20 73 68 65 6c 6c 5f 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 04 20 20 20 20 00 00 ...shell_pid.=.fork();..........
208c0 00 19 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 36 20 ......if.(shell_pid.==.0).{...6.
208e0 20 20 20 20 20 20 20 69 6e 74 20 73 6c 61 76 65 20 3d 20 6f 70 65 6e 28 70 74 73 6e 61 6d 65 28 .......int.slave.=.open(ptsname(
20900 70 74 79 5f 6d 61 73 74 65 72 29 2c 20 4f 5f 52 44 57 52 29 3b 00 00 00 11 20 20 20 20 20 20 20 pty_master),.O_RDWR);...........
20920 20 73 65 74 73 69 64 28 29 3b 00 00 00 23 20 20 20 20 20 20 20 20 69 6f 63 74 6c 28 73 6c 61 76 .setsid();...#........ioctl(slav
20940 65 2c 20 54 49 4f 43 53 43 54 54 59 2c 20 30 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 64 75 70 e,.TIOCSCTTY,.0);............dup
20960 32 28 73 6c 61 76 65 2c 20 30 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 64 75 70 32 28 73 6c 61 2(slave,.0);............dup2(sla
20980 76 65 2c 20 31 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 64 75 70 32 28 73 6c 61 76 65 2c 20 32 ve,.1);............dup2(slave,.2
209a0 29 3b 00 00 00 15 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 73 6c 61 76 65 29 3b 00 00 00 1a 20 );............close(slave);.....
209c0 20 20 20 20 20 20 20 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 08 20 20 20 .......close(pty_master);.......
209e0 20 20 20 20 20 00 00 00 2c 20 20 20 20 20 20 20 20 73 65 74 65 6e 76 28 22 54 45 52 4d 22 2c 20 ........,........setenv("TERM",.
20a00 22 78 74 65 72 6d 2d 32 35 36 63 6f 6c 6f 72 22 2c 20 31 29 3b 00 00 00 26 20 20 20 20 20 20 20 "xterm-256color",.1);...&.......
20a20 20 63 68 61 72 20 2a 73 68 65 6c 6c 20 3d 20 67 65 74 65 6e 76 28 22 53 48 45 4c 4c 22 29 3b 00 .char.*shell.=.getenv("SHELL");.
20a40 00 00 28 20 20 20 20 20 20 20 20 69 66 20 28 21 73 68 65 6c 6c 29 20 73 68 65 6c 6c 20 3d 20 22 ..(........if.(!shell).shell.=."
20a60 2f 62 69 6e 2f 62 61 73 68 22 3b 00 00 00 22 20 20 20 20 20 20 20 20 65 78 65 63 6c 28 73 68 65 /bin/bash";..."........execl(she
20a80 6c 6c 2c 20 73 68 65 6c 6c 2c 20 4e 55 4c 4c 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 ll,.shell,.NULL);............exi
20aa0 74 28 31 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 0e 69 6e 74 20 6d t(1);........}....}........int.m
20ac0 61 69 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 28 20 20 20 20 6d 65 6d 73 65 74 28 73 63 72 ain(void)....{...(....memset(scr
20ae0 65 65 6e 2c 20 27 20 27 2c 20 73 69 7a 65 6f 66 28 73 63 72 65 65 6e 29 29 3b 00 00 00 1d 20 20 een,.'.',.sizeof(screen));......
20b00 20 20 73 69 67 6e 61 6c 28 53 49 47 43 48 4c 44 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 04 20 ..signal(SIGCHLD,.SIG_IGN);.....
20b20 20 20 20 00 00 00 1a 20 20 20 20 69 66 20 28 73 65 74 75 70 5f 70 74 79 28 29 20 3c 20 30 29 20 ...........if.(setup_pty().<.0).
20b40 7b 00 00 00 31 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 {...1........fprintf(stderr,."fa
20b60 69 6c 65 64 20 74 6f 20 73 65 74 75 70 20 70 74 79 5c 6e 22 29 3b 00 00 00 11 20 20 20 20 20 20 iled.to.setup.pty\n");..........
20b80 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 00 10 ..return.1;........}............
20ba0 20 20 20 20 72 75 6e 5f 73 68 65 6c 6c 28 29 3b 00 00 00 04 20 20 20 20 00 00 00 27 20 20 20 20 ....run_shell();...........'....
20bc0 64 69 73 70 6c 61 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 63 6f 6e 6e 65 63 74 28 4e 55 4c display.=.wl_display_connect(NUL
20be0 4c 29 3b 00 00 00 13 20 20 20 20 69 66 20 28 21 64 69 73 70 6c 61 79 29 20 7b 00 00 00 3a 20 20 L);........if.(!display).{...:..
20c00 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 66 61 69 6c 65 64 20 74 6f ......fprintf(stderr,."failed.to
20c20 20 63 6f 6e 6e 65 63 74 20 74 6f 20 77 61 79 6c 61 6e 64 5c 6e 22 29 3b 00 00 00 11 20 20 20 20 .connect.to.wayland\n");........
20c40 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 04 20 20 20 20 00 00 ....return.1;........}..........
20c60 00 44 20 20 20 20 73 74 72 75 63 74 20 77 6c 5f 72 65 67 69 73 74 72 79 20 2a 72 65 67 69 73 74 .D....struct.wl_registry.*regist
20c80 72 79 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 74 5f 72 65 67 69 73 74 72 79 28 64 69 73 ry.=.wl_display_get_registry(dis
20ca0 70 6c 61 79 29 3b 00 00 00 41 20 20 20 20 77 6c 5f 72 65 67 69 73 74 72 79 5f 61 64 64 5f 6c 69 play);...A....wl_registry_add_li
20cc0 73 74 65 6e 65 72 28 72 65 67 69 73 74 72 79 2c 20 26 72 65 67 69 73 74 72 79 5f 6c 69 73 74 65 stener(registry,.&registry_liste
20ce0 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 22 20 20 20 20 77 6c 5f 64 69 73 70 6c 61 79 5f 72 6f ner,.NULL);..."....wl_display_ro
20d00 75 6e 64 74 72 69 70 28 64 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 2a 20 20 20 undtrip(display);...........*...
20d20 20 69 66 20 28 21 63 6f 6d 70 6f 73 69 74 6f 72 20 7c 7c 20 21 73 68 6d 20 7c 7c 20 21 77 6d 5f .if.(!compositor.||.!shm.||.!wm_
20d40 62 61 73 65 29 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 base).{...8........fprintf(stder
20d60 72 2c 20 22 6d 69 73 73 69 6e 67 20 77 61 79 6c 61 6e 64 20 69 6e 74 65 72 66 61 63 65 73 5c 6e r,."missing.wayland.interfaces\n
20d80 22 29 3b 00 00 00 11 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 05 20 20 20 20 ");............return.1;........
20da0 7d 00 00 00 04 20 20 20 20 00 00 00 37 20 20 20 20 73 75 72 66 61 63 65 20 3d 20 77 6c 5f 63 6f }...........7....surface.=.wl_co
20dc0 6d 70 6f 73 69 74 6f 72 5f 63 72 65 61 74 65 5f 73 75 72 66 61 63 65 28 63 6f 6d 70 6f 73 69 74 mpositor_create_surface(composit
20de0 6f 72 29 3b 00 00 00 40 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 20 3d 20 78 64 67 5f 77 6d or);...@....xdg_surface.=.xdg_wm
20e00 5f 62 61 73 65 5f 67 65 74 5f 78 64 67 5f 73 75 72 66 61 63 65 28 77 6d 5f 62 61 73 65 2c 20 73 _base_get_xdg_surface(wm_base,.s
20e20 75 72 66 61 63 65 29 3b 00 00 00 47 20 20 20 20 78 64 67 5f 73 75 72 66 61 63 65 5f 61 64 64 5f urface);...G....xdg_surface_add_
20e40 6c 69 73 74 65 6e 65 72 28 78 64 67 5f 73 75 72 66 61 63 65 2c 20 26 78 64 67 5f 73 75 72 66 61 listener(xdg_surface,.&xdg_surfa
20e60 63 65 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 04 20 20 20 20 00 00 00 35 20 ce_listener,.NULL);...........5.
20e80 20 20 20 74 6f 70 6c 65 76 65 6c 20 3d 20 78 64 67 5f 73 75 72 66 61 63 65 5f 67 65 74 5f 74 6f ...toplevel.=.xdg_surface_get_to
20ea0 70 6c 65 76 65 6c 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 00 42 20 20 20 20 78 64 67 5f plevel(xdg_surface);...B....xdg_
20ec0 74 6f 70 6c 65 76 65 6c 5f 61 64 64 5f 6c 69 73 74 65 6e 65 72 28 74 6f 70 6c 65 76 65 6c 2c 20 toplevel_add_listener(toplevel,.
20ee0 26 74 6f 70 6c 65 76 65 6c 5f 6c 69 73 74 65 6e 65 72 2c 20 4e 55 4c 4c 29 3b 00 00 00 31 20 20 &toplevel_listener,.NULL);...1..
20f00 20 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 73 65 74 5f 74 69 74 6c 65 28 74 6f 70 6c 65 76 65 ..xdg_toplevel_set_title(topleve
20f20 6c 2c 20 22 74 65 72 6d 69 6e 61 6c 22 29 3b 00 00 00 04 20 20 20 20 00 00 00 1f 20 20 20 20 77 l,."terminal");................w
20f40 6c 5f 73 75 72 66 61 63 65 5f 63 6f 6d 6d 69 74 28 73 75 72 66 61 63 65 29 3b 00 00 00 04 20 20 l_surface_commit(surface);......
20f60 20 20 00 00 00 19 20 20 20 20 73 74 72 75 63 74 20 70 6f 6c 6c 66 64 20 66 64 73 5b 32 5d 3b 00 ..........struct.pollfd.fds[2];.
20f80 00 00 2b 20 20 20 20 66 64 73 5b 30 5d 2e 66 64 20 3d 20 77 6c 5f 64 69 73 70 6c 61 79 5f 67 65 ..+....fds[0].fd.=.wl_display_ge
20fa0 74 5f 66 64 28 64 69 73 70 6c 61 79 29 3b 00 00 00 1b 20 20 20 20 66 64 73 5b 30 5d 2e 65 76 65 t_fd(display);........fds[0].eve
20fc0 6e 74 73 20 3d 20 50 4f 4c 4c 49 4e 3b 00 00 00 1b 20 20 20 20 66 64 73 5b 31 5d 2e 66 64 20 3d nts.=.POLLIN;........fds[1].fd.=
20fe0 20 70 74 79 5f 6d 61 73 74 65 72 3b 00 00 00 1b 20 20 20 20 66 64 73 5b 31 5d 2e 65 76 65 6e 74 .pty_master;........fds[1].event
21000 73 20 3d 20 50 4f 4c 4c 49 4e 3b 00 00 00 04 20 20 20 20 00 00 00 15 20 20 20 20 77 68 69 6c 65 s.=.POLLIN;................while
21020 20 28 72 75 6e 6e 69 6e 67 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 69 66 20 28 70 6f 6c 6c .(running).{...(........if.(poll
21040 28 66 64 73 2c 20 32 2c 20 2d 31 29 20 3c 20 30 29 20 62 72 65 61 6b 3b 00 00 00 08 20 20 20 20 (fds,.2,.-1).<.0).break;........
21060 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 69 66 20 28 66 64 73 5b 30 5d 2e 72 65 76 65 6e .......&........if.(fds[0].reven
21080 74 73 20 26 20 50 4f 4c 4c 49 4e 29 20 7b 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ts.&.POLLIN).{...:............if
210a0 20 28 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 70 61 74 63 68 28 64 69 73 70 6c 61 79 29 20 3d .(wl_display_dispatch(display).=
210c0 3d 20 2d 31 29 20 62 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 08 20 20 20 =.-1).break;............}.......
210e0 20 20 20 20 20 00 00 00 26 20 20 20 20 20 20 20 20 69 66 20 28 66 64 73 5b 31 5d 2e 72 65 76 65 ........&........if.(fds[1].reve
21100 6e 74 73 20 26 20 50 4f 4c 4c 49 4e 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 63 nts.&.POLLIN).{................c
21120 68 61 72 20 62 75 66 5b 34 30 39 36 5d 3b 00 00 00 37 20 20 20 20 20 20 20 20 20 20 20 20 69 6e har.buf[4096];...7............in
21140 74 20 6e 20 3d 20 72 65 61 64 28 70 74 79 5f 6d 61 73 74 65 72 2c 20 62 75 66 2c 20 73 69 7a 65 t.n.=.read(pty_master,.buf,.size
21160 6f 66 28 62 75 66 29 29 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e of(buf));................if.(n.>
21180 20 30 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61 .0).{...(................termina
211a0 6c 5f 6f 75 74 70 75 74 28 62 75 66 2c 20 6e 29 3b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 l_output(buf,.n);...............
211c0 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 20 3d 3d 20 30 29 20 7b 00 00 00 1c 20 20 20 20 20 20 20 .}.else.if.(n.==.0).{...........
211e0 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 20 3d 20 30 3b 00 00 00 0d 20 20 20 20 20 20 20 .........running.=.0;...........
21200 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 04 .....}............}........}....
21220 20 20 20 20 00 00 00 30 20 20 20 20 69 66 20 28 73 68 65 6c 6c 5f 70 69 64 20 3e 20 30 29 20 6b .......0....if.(shell_pid.>.0).k
21240 69 6c 6c 28 73 68 65 6c 6c 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 29 3b 00 00 00 16 20 20 20 20 ill(shell_pid,.SIGTERM);........
21260 63 6c 6f 73 65 28 70 74 79 5f 6d 61 73 74 65 72 29 3b 00 00 00 04 20 20 20 20 00 00 00 15 20 20 close(pty_master);..............
21280 20 20 64 65 73 74 72 6f 79 5f 62 75 66 66 65 72 28 29 3b 00 00 00 30 20 20 20 20 69 66 20 28 6b ..destroy_buffer();...0....if.(k
212a0 65 79 62 6f 61 72 64 29 20 77 6c 5f 6b 65 79 62 6f 61 72 64 5f 64 65 73 74 72 6f 79 28 6b 65 79 eyboard).wl_keyboard_destroy(key
212c0 62 6f 61 72 64 29 3b 00 00 00 24 20 20 20 20 69 66 20 28 73 65 61 74 29 20 77 6c 5f 73 65 61 74 board);...$....if.(seat).wl_seat
212e0 5f 64 65 73 74 72 6f 79 28 73 65 61 74 29 3b 00 00 00 31 20 20 20 20 69 66 20 28 74 6f 70 6c 65 _destroy(seat);...1....if.(tople
21300 76 65 6c 29 20 78 64 67 5f 74 6f 70 6c 65 76 65 6c 5f 64 65 73 74 72 6f 79 28 74 6f 70 6c 65 76 vel).xdg_toplevel_destroy(toplev
21320 65 6c 29 3b 00 00 00 36 20 20 20 20 69 66 20 28 78 64 67 5f 73 75 72 66 61 63 65 29 20 78 64 67 el);...6....if.(xdg_surface).xdg
21340 5f 73 75 72 66 61 63 65 5f 64 65 73 74 72 6f 79 28 78 64 67 5f 73 75 72 66 61 63 65 29 3b 00 00 _surface_destroy(xdg_surface);..
21360 00 2d 20 20 20 20 69 66 20 28 73 75 72 66 61 63 65 29 20 77 6c 5f 73 75 72 66 61 63 65 5f 64 65 .-....if.(surface).wl_surface_de
21380 73 74 72 6f 79 28 73 75 72 66 61 63 65 29 3b 00 00 00 2e 20 20 20 20 69 66 20 28 77 6d 5f 62 61 stroy(surface);........if.(wm_ba
213a0 73 65 29 20 78 64 67 5f 77 6d 5f 62 61 73 65 5f 64 65 73 74 72 6f 79 28 77 6d 5f 62 61 73 65 29 se).xdg_wm_base_destroy(wm_base)
213c0 3b 00 00 00 36 20 20 20 20 69 66 20 28 63 6f 6d 70 6f 73 69 74 6f 72 29 20 77 6c 5f 63 6f 6d 70 ;...6....if.(compositor).wl_comp
213e0 6f 73 69 74 6f 72 5f 64 65 73 74 72 6f 79 28 63 6f 6d 70 6f 73 69 74 6f 72 29 3b 00 00 00 21 20 ositor_destroy(compositor);...!.
21400 20 20 20 69 66 20 28 73 68 6d 29 20 77 6c 5f 73 68 6d 5f 64 65 73 74 72 6f 79 28 73 68 6d 29 3b ...if.(shm).wl_shm_destroy(shm);
21420 00 00 00 30 20 20 20 20 69 66 20 28 72 65 67 69 73 74 72 79 29 20 77 6c 5f 72 65 67 69 73 74 72 ...0....if.(registry).wl_registr
21440 79 5f 64 65 73 74 72 6f 79 28 72 65 67 69 73 74 72 79 29 3b 00 00 00 30 20 20 20 20 69 66 20 28 y_destroy(registry);...0....if.(
21460 64 69 73 70 6c 61 79 29 20 77 6c 5f 64 69 73 70 6c 61 79 5f 64 69 73 63 6f 6e 6e 65 63 74 28 64 display).wl_display_disconnect(d
21480 69 73 70 6c 61 79 29 3b 00 00 00 04 20 20 20 20 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 isplay);................return.0
214a0 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 06 02 00 00 00 00 00 00 01 00 ;....}5.........................
214c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67 3d 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 ..............g=..............5.
214e0 5f d0 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 01 00 00 00 00 00 00 _...............................
21500 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
215a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
215c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
215e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21660 00 00 00 00 6a 01 12 d1 04 01 00 00 00 10 00 f5 18 00 00 01 87 00 00 00 00 00 00 00 00 00 00 00 ....j...........................
21680 01 00 00 00 0c 20 20 20 20 2e 67 6c 6f 62 61 6c 5f f5 18 00 00 01 88 00 00 00 00 00 00 00 00 00 ..........global_...............
216a0 00 00 00 f5 18 00 00 01 16 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 3d 20 20 20 20 73 74 61 ........................=....sta
216c0 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 77 6c 5f 63 61 6c 6c 62 61 63 6b 5f 6c 69 73 tic.const.struct.wl_callback_lis
216e0 74 65 6e 65 72 20 66 72 61 6d 65 5f 6c 69 73 74 65 6e 65 72 20 3d f5 18 00 00 01 17 00 00 00 00 tener.frame_listener.=..........
21700 00 00 00 00 00 00 00 00 f5 18 00 00 00 86 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 1f 20 20 ................................
21720 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 70 78 20 3d 20 30 3b 20 70 78 20 3c 20 63 f5 18 00 ......for.(int.px.=.0;.px.<.c...
21740 00 00 87 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 00 00 ................................
21760 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 00 00 .......................5........
21780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 00 00 00 1f 00 00 00 00 00 00 00 00 00 00 00 00 ................................
217a0 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 86 00 00 00 1f 00 00 00 00 00 00 ................................
217c0 00 00 00 00 00 90 00 00 00 3d 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 .........=......................
217e0 00 00 00 00 00 f5 18 00 00 00 00 16 01 00 00 3d 00 00 00 00 00 00 00 00 00 00 00 71 00 00 00 0c ...............=...........q....
21800 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 00 00 ................................
21820 00 87 01 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 7a 00 00 00 01 00 00 00 f7 2f 00 00 00 00 00 .................z......../.....
21840 00 00 00 00 00 00 00 00 00 e5 0c 00 00 00 00 00 00 35 81 e7 aa .................5...