Пример #1
0
/** Init WMFS
*/
void
init(void)
{
     /* Init lists heads */
     SLIST_INIT(&bwhead);
     SLIST_INIT(&clients);
     SLIST_INIT(&trayicons);

     /* First init */
     ewmh_init_hints();
     init_conf();
     init_gc();
     init_font();
     init_cursor();
     init_key();
     init_root();
     screen_init_geo();
     event_make_array();
     infobar_init();
     systray_acquire();
     ewmh_update_current_tag_prop();
     grabkeys();

     return;
}
Пример #2
0
void sendkey(void *s,int press_and_release,int toggled){
	symbol_x11 *sym=(symbol_x11 *)s;
	KeyCode modifier;
	KeySym modifier_sym;
	assert(dpy);

	kbio.lastsent=sym->keycode;

	ungrabkeys();
	XFlush(dpy);

	uk_log("send keysym 0x%x keycode %i %s modifier=%i",
			(unsigned int)sym->ks,
			(int)sym->keycode,
			XKeysymToString(sym->ks),
			sym->modifier);

	XTestFakeKeyEvent(dpy,sym->keycode,1,CurrentTime); 
	XFlush(dpy);
	XTestFakeKeyEvent(dpy,sym->keycode,0,CurrentTime+100); 
	XFlush(dpy);

	XFlush(dpy);

	grabkeys();
}
Пример #3
0
Файл: main.c Проект: profil/wimp
int main(int argc, char *argv[]) {

	if(!(dpy = XOpenDisplay(NULL))) {
		printf("wimp: error: Can't open display!\n");
		return 1;
	}
	if(init()) {
		printf("fail\n");
		return 1;
	}
	grabkeys();


	/* This is the main loop! */
	printf("wimp: Starting main event loop.\n");
	while(running) {
		XNextEvent(dpy, &ev);
		switch(ev.type) {
			case KeyPress:
				keypress(&ev);
			break;
		}
	}
	XCloseDisplay(dpy);
	return 0;
}
Пример #4
0
static void
mappingnotify(XEvent *e) {
	XMappingEvent *ev = &e->xmapping;

	XRefreshKeyboardMapping(ev);
	if(ev->request == MappingKeyboard)
		grabkeys();
}
Пример #5
0
Файл: event.c Проект: n4cht/kwm
/** MappingNotify handle event
 * \param ev XMappingEvent pointer
*/
static void
mappingnotify(XMappingEvent *ev)
{
     XRefreshKeyboardMapping(ev);

     if(ev->request == MappingKeyboard)
          grabkeys();

     return;
}
Пример #6
0
/** Init MWM
*/
void
init(void)
{
     /* First init */
     ewmh_init_hints();
     init_conf();
     init_gc();
     init_font();
     init_cursor();
     init_key();
     init_root();
     screen_init_geo();
     infobar_init();
     systray_acquire();
     init_status();
     ewmh_update_current_tag_prop();
     grabkeys();

     return;
}
Пример #7
0
void ui_init(int w,int h,int x,int y){
	start_time=get_msec();
	setup_modifiers();

	_w=w;
	_h=h;
	winX=x;
	winY=y;
	
	dpy=XOpenDisplay("");
	screen=DefaultScreen(dpy);
	root=DefaultRootWindow(dpy);

	XMatchVisualInfo(dpy, screen, 32, TrueColor, &visualinfo);

	uk_log("Iniitializing UI");
	uk_log("Win @ (%i,%i,%i,%i)",x,y,w,h);
	
	 attr.colormap   = XCreateColormap( dpy, root, visualinfo.visual, AllocNone) ;
	 attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask;
	 attr.background_pixmap = None ;
	 attr.border_pixel      = 0 ;

	uk_log("root=%x\n",root);
	uk_log("%i %i %i %i\n",x,y,w,h);
	win=XCreateWindow(dpy,root,
		x,y,w,h,
		0,
		visualinfo.depth,
		InputOutput,
		visualinfo.visual,
		CWColormap|CWEventMask|CWBackPixmap|CWBorderPixel,
		&attr);

	XWindowAttributes wa;

	XGetWindowAttributes(dpy,win,&wa);

	gc = XCreateGC(dpy,win,0,0);
	double_buffer=XCreatePixmap(dpy,win,wa.width,wa.height,wa.depth);

	XColor black=_rgb2XColor(255,255,255);
	XAllocColor(dpy,attr.colormap,&black);
	XSetForeground(dpy,gc,black.pixel);
	XFillRectangle(dpy,double_buffer,gc,0,0,wa.width,wa.height);

	d=double_buffer;

	uk_log("Created pixmap = %x",double_buffer);

	XGetWindowAttributes(dpy,win,&wa);

	load_font();

	uk_log("window = %x root = %x",win,root);

	_set_on_top(dpy,win);
	_set_sticky(dpy,win);

	_set_alpha(dpy,win,conf_get_float("alpha",ALPHA));

	XMapWindow(dpy,win);
	XMoveWindow(dpy,win,x,y);

	// Try to make borderless
	_make_borderless(dpy,win);

	// Bind to what stuff?
	unsigned long eventmask;
	eventmask=StructureNotifyMask|SubstructureNotifyMask;
	uk_log("event mask = x%x",eventmask);
	XSelectInput(dpy,root,eventmask);

	XFlush(dpy);

	kbio.start=kbio.stop=kbio.n=0;
	_setupkeymap();

	grabkeys();
//	grabkeyboard();
}
Пример #8
0
int
main(int argc, char *argv[]) {
    int i, j;
    unsigned int mask;
    Window w;
    XEvent ev;
    XModifierKeymap *modmap;
    XSetWindowAttributes wa;

    if(argc == 2 && !strncmp("-v", argv[1], 3))
        eprint("cswm-"VERSION", Copyright 2006 Anselm R. Garbe, 2012 Christopher L. Simons\n");
    else if(argc != 1)
        eprint("usage: cswm [-v]\n");
    setlocale(LC_CTYPE, "");
    dpy = XOpenDisplay(0);
    if(!dpy)
        eprint("cswm: cannot open display\n");
    screen = DefaultScreen(dpy);
    root = RootWindow(dpy, screen);
    otherwm = False;
    XSetErrorHandler(xerrorstart);
    /* this causes an error if some other window manager is running */
    XSelectInput(dpy, root, SubstructureRedirectMask);
    XSync(dpy, False);
    if(otherwm)
        eprint("cswm: another window manager is already running\n");

    XSync(dpy, False);
    XSetErrorHandler(NULL);
    xerrorxlib = XSetErrorHandler(xerror);
    XSync(dpy, False);

    /* init atoms */
    wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
    wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
    wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
    netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
    netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
    XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
            PropModeReplace, (unsigned char *) netatom, NetLast);
    /* init cursors */
    cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
    cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
    cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
    /* init modifier map */
    numlockmask = 0;
    modmap = XGetModifierMapping(dpy);
    for (i = 0; i < 8; i++) {
        for (j = 0; j < modmap->max_keypermod; j++) {
            if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
                numlockmask = (1 << i);
        }
    }
    XFreeModifiermap(modmap);
    /* select for events */
    wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask
        | EnterWindowMask | LeaveWindowMask;
    wa.cursor = cursor[CurNormal];
    XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
    grabkeys();
    /* style */
    normcol = getcolor(NORMCOLOR);
    selcol = getcolor(SELCOLOR);
    /* geometry */
    sx = 0;
    sy = SY;
    sw = DisplayWidth(dpy, screen);
    sh = SH;
    master = MASTER;
    nmaster = NMASTER;
    /* multihead support */
    selscreen = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
    scan();
    runAutostart();

    /* main event loop, also reads status text from stdin */
    XSync(dpy, False);

    while(running) {
         XNextEvent(dpy, &ev);
        if(handler[ev.type])
            (handler[ev.type])(&ev); /* call handler */
    }
    cleanup();
    XCloseDisplay(dpy);
    return 0;
}