예제 #1
0
파일: keyboard.c 프로젝트: sylware/lboxwm
void t_keyboard_reload(void)
{
	gint i, j, k;
	if(started)
		t_keyboard_shutdown();
	started = TRUE;
	xim_init();
	for(i = 0; i < T_KEYBOARD_NUM_MODKEYS; ++i)
		modkeys_keys[i] = 0;
	modmap = XGetModifierMapping(t_display);
	XDisplayKeycodes(t_display, &min_keycode, &max_keycode);
	keymap = XGetKeyboardMapping(t_display, min_keycode, max_keycode - min_keycode + 1, &keysyms_per_keycode);
	alt_l = meta_l = super_l = hyper_l = FALSE;
	for(i = 0; i < NUM_MASKS; ++i) {
		for(j = 0; j < modmap->max_keypermod; ++j) {
			KeySym sym;
			KeyCode keycode = modmap->modifiermap[i * modmap->max_keypermod + j];
			if(keycode) {
				for(k = 0; k < keysyms_per_keycode; ++k) {
					sym = keymap[(keycode - min_keycode) * keysyms_per_keycode + k];
					if(sym != NoSymbol) {
						set_modkey_mask(nth_mask(i), sym);
					}
				}
			}
		}
	}
	modkeys_keys[T_KEYBOARD_MODKEY_CAPSLOCK] = LockMask;
	modkeys_keys[T_KEYBOARD_MODKEY_SHIFT] = ShiftMask;
	modkeys_keys[T_KEYBOARD_MODKEY_CONTROL] = ControlMask;
}
예제 #2
0
int
main(int argc, char **argv)
{
    command_switch(argc, argv);

    signal(SIGQUIT, sighandler);
    signal(SIGTERM, sighandler);
    signal(SIGINT,  sighandler);

    /* 初始化 OXIM */
    oxim_init();

    gui_init(&oxim_core);
    xim_init(&oxim_core);
    
    ReloadPanel(&oxim_core);
    gui_loop(&oxim_core);
    return 0;
}