Files
vt1200/apps/termtris/tests/smoke.c
T

54 lines
1.1 KiB
C

/*
* smoke.c -- Task 1 acceptance: a local Xlib client installs the per-process
* Xlib context, opens the display, maps a window, and receives a real KeyPress.
*/
#include "xlib.h"
extern int vt_install_xg(void);
volatile vt_u32 mark[32];
volatile vt_u32 evbuf[24];
int main(void)
{
void *dpy;
vt_u32 root, win;
vt_u32 ks;
char buf[8];
int n;
mark[0] = 0x534D4F4BUL; /* SMOK */
if(!vt_install_xg()) return 1;
dpy = VT_XOPEN("0::0");
mark[1] = (vt_u32)dpy;
if(!dpy) return 2;
root = *(vt_u32 *)((char *)dpy + 0x90);
root = *(vt_u32 *)((char *)root + 8);
win = VT_XCREATE(dpy, root, 80, 80, 480, 312, 2, 1, 0);
mark[2] = win;
if(!win) return 3;
VT_XSELECT(dpy, win, 0x22000FUL);
VT_XMAP(dpy, win);
VT_XSYNC(dpy, 0);
mark[3] = 0;
for(;;) {
VT_XNEXT(dpy, (void *)evbuf);
mark[3] = mark[3] + 1;
mark[4] = evbuf[0];
mark[5] = evbuf[13];
if(evbuf[0] == 2) {
ks = 0;
n = VT_XLOOKUP((void *)evbuf, buf, 8, &ks, 0);
mark[6] = (vt_u32)n;
mark[7] = (vt_u32)(unsigned char)buf[0];
mark[8] = ks;
mark[9] = 0x4B455950UL; /* KEYP */
break;
}
}
return 0;
}