Beispiel #1
0
Datei: keyb.c Projekt: rbn42/rofi
gboolean parse_keys_abe ( void )
{
    for ( int iter = 0; iter < NUM_ABE; iter++ ) {
        char *keystr = g_strdup ( abe[iter].keystr );
        char *sp     = NULL;

        g_free ( abe[iter].kb );
        abe[iter].kb           = NULL;
        abe[iter].num_bindings = 0;

        // Iter over bindings.
        const char *const sep = ",";
        for ( char *entry = strtok_r ( keystr, sep, &sp ); entry != NULL; entry = strtok_r ( NULL, sep, &sp ) ) {
            abe[iter].kb = g_realloc ( abe[iter].kb, ( abe[iter].num_bindings + 1 ) * sizeof ( KeyBinding ) );
            KeyBinding *kb = &( abe[iter].kb[abe[iter].num_bindings] );
            memset ( kb, 0, sizeof ( KeyBinding ) );
            if ( !x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ), &( kb->release ) ) ) {
                g_free ( keystr );
                return FALSE;
            }
            abe[iter].num_bindings++;
        }

        g_free ( keystr );
    }
    return TRUE;
}
Beispiel #2
0
int mode_grab_key ( Mode *mode, Display *display )
{
    g_assert ( mode != NULL );
    g_assert ( display != NULL );
    if ( mode->keystr != NULL ) {
        x11_parse_key ( mode->keystr, &( mode->modmask ), &( mode->keysym ) );
        if ( mode->keysym != NoSymbol ) {
            x11_grab_key ( display, mode->modmask, mode->keysym );
            return TRUE;
        }
    }
    return FALSE;
}
Beispiel #3
0
Datei: x11.c Projekt: 7max/glc
int x11_init(glc_t *glc)
{
	x11.glc = glc;

	get_real_x11();

	if (getenv("GLC_HOTKEY")) {
		if (x11_parse_key(getenv("GLC_HOTKEY"), &x11.capture_key, &x11.capture_key_mask)) {
			glc_log(x11.glc, GLC_WARNING, "x11",
				 "invalid hotkey '%s'", getenv("GLC_HOTKEY"));
			glc_log(x11.glc, GLC_WARNING, "x11",
				 "using default <Shift>F8\n");
			x11.capture_key_mask = X11_KEY_SHIFT;
			x11.capture_key = XK_F8;
		}
	} else {
		x11.capture_key_mask = X11_KEY_SHIFT;
		x11.capture_key = XK_F8;
	}

	if (getenv("GLC_RELOAD_HOTKEY")) {
		if (x11_parse_key(getenv("GLC_RELOAD_HOTKEY"), &x11.reload_key, &x11.reload_key_mask)) {
			glc_log(x11.glc, GLC_WARNING, "x11",
				 "invalid reload hotkey '%s'", getenv("GLC_HOTKEY"));
			glc_log(x11.glc, GLC_WARNING, "x11",
				 "using default <Shift>F9\n");
			x11.reload_key_mask = X11_KEY_SHIFT;
			x11.reload_key = XK_F9;
		}
	} else {
		x11.reload_key_mask = X11_KEY_SHIFT;
		x11.reload_key = XK_F9;
	}

	return 0;
}
Beispiel #4
0
void parse_keys_abe ( void )
{
    for ( int iter = 0; iter < NUM_ABE; iter++ ) {
        char *keystr = g_strdup ( abe[iter].keystr );
        char *sp     = NULL;

        g_free ( abe[iter].kb );
        abe[iter].num_bindings = 0;

        // Iter over bindings.
        for ( char *entry = strtok_r ( keystr, ",", &sp ); entry != NULL; entry = strtok_r ( NULL, ",", &sp ) ) {
            abe[iter].kb = g_realloc ( abe[iter].kb, ( abe[iter].num_bindings + 1 ) * sizeof ( KeyBinding ) );
            KeyBinding *kb = &( abe[iter].kb[abe[iter].num_bindings] );
            x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ) );
            abe[iter].num_bindings++;
        }

        g_free ( keystr );
    }
}