]> git.sur5r.net Git - i3/i3/blobdiff - i3-config-wizard/xcb.c
Move get_mod_mask to libi3, use it in i3 and i3-config-wizard
[i3/i3] / i3-config-wizard / xcb.c
index 461dfd529b7dbbe3bd731dd21b94bd8205684746..753568e3c6cd0409fcf1eed75a5996f16f70d3ed 100644 (file)
 extern xcb_window_t root;
 unsigned int xcb_numlock_mask;
 
-/*
- * Convenience-wrapper around xcb_change_gc which saves us declaring a variable
- *
- */
-void xcb_change_gc_single(xcb_connection_t *conn, xcb_gcontext_t gc, uint32_t mask, uint32_t value) {
-        xcb_change_gc(conn, gc, mask, &value);
-}
-
-/*
- * Returns the colorpixel to use for the given hex color (think of HTML).
- *
- * The hex_color has to start with #, for example #FF00FF.
- *
- * NOTE that get_colorpixel() does _NOT_ check the given color code for validity.
- * This has to be done by the caller.
- *
- */
-uint32_t get_colorpixel(xcb_connection_t *conn, char *hex) {
-        char strgroups[3][3] = {{hex[1], hex[2], '\0'},
-                                {hex[3], hex[4], '\0'},
-                                {hex[5], hex[6], '\0'}};
-        uint32_t rgb16[3] = {(strtol(strgroups[0], NULL, 16)),
-                             (strtol(strgroups[1], NULL, 16)),
-                             (strtol(strgroups[2], NULL, 16))};
-
-        return (rgb16[0] << 16) + (rgb16[1] << 8) + rgb16[2];
-}
-
-/*
- * Returns the mask for Mode_switch (to be used for looking up keysymbols by
- * keycode).
- *
- */
-uint32_t get_mod_mask(xcb_connection_t *conn, uint32_t keycode) {
-       xcb_key_symbols_t *symbols = xcb_key_symbols_alloc(conn);
-
-       xcb_get_modifier_mapping_reply_t *modmap_r;
-       xcb_keycode_t *modmap, kc;
-       xcb_keycode_t *modeswitchcodes = xcb_key_symbols_get_keycode(symbols, keycode);
-       if (modeswitchcodes == NULL)
-               return 0;
-
-       modmap_r = xcb_get_modifier_mapping_reply(conn, xcb_get_modifier_mapping(conn), NULL);
-       modmap = xcb_get_modifier_mapping_keycodes(modmap_r);
-
-       for (int i = 0; i < 8; i++)
-               for (int j = 0; j < modmap_r->keycodes_per_modifier; j++) {
-                       kc = modmap[i * modmap_r->keycodes_per_modifier + j];
-                       for (xcb_keycode_t *ktest = modeswitchcodes; *ktest; ktest++) {
-                               if (*ktest != kc)
-                                       continue;
-
-                               free(modeswitchcodes);
-                               free(modmap_r);
-                               return (1 << i);
-                       }
-               }
-
-       return 0;
-}
-
 /*
  * Opens the window we use for input/output and maps it
  *
@@ -165,58 +104,3 @@ int get_font_id(xcb_connection_t *conn, char *pattern, int *font_height) {
 
         return result;
 }
-
-/*
- * Finds out which modifier mask is the one for numlock, as the user may change this.
- *
- */
-void xcb_get_numlock_mask(xcb_connection_t *conn) {
-    xcb_key_symbols_t *keysyms;
-    xcb_get_modifier_mapping_cookie_t cookie;
-    xcb_get_modifier_mapping_reply_t *reply;
-    xcb_keycode_t *modmap;
-    int mask, i;
-    const int masks[8] = { XCB_MOD_MASK_SHIFT,
-                           XCB_MOD_MASK_LOCK,
-                           XCB_MOD_MASK_CONTROL,
-                           XCB_MOD_MASK_1,
-                           XCB_MOD_MASK_2,
-                           XCB_MOD_MASK_3,
-                           XCB_MOD_MASK_4,
-                           XCB_MOD_MASK_5 };
-
-    /* Request the modifier map */
-    cookie = xcb_get_modifier_mapping_unchecked(conn);
-
-    /* Get the keysymbols */
-    keysyms = xcb_key_symbols_alloc(conn);
-
-    if ((reply = xcb_get_modifier_mapping_reply(conn, cookie, NULL)) == NULL) {
-        xcb_key_symbols_free(keysyms);
-        return;
-    }
-
-    modmap = xcb_get_modifier_mapping_keycodes(reply);
-
-    /* Get the keycode for numlock */
-#ifdef OLD_XCB_KEYSYMS_API
-    xcb_keycode_t numlock = xcb_key_symbols_get_keycode(keysyms, XCB_NUM_LOCK);
-#else
-    /* For now, we only use the first keysymbol. */
-    xcb_keycode_t *numlock_syms = xcb_key_symbols_get_keycode(keysyms, XCB_NUM_LOCK);
-    if (numlock_syms == NULL)
-        return;
-    xcb_keycode_t numlock = *numlock_syms;
-    free(numlock_syms);
-#endif
-
-    /* Check all modifiers (Mod1-Mod5, Shift, Control, Lock) */
-    for (mask = 0; mask < 8; mask++)
-        for (i = 0; i < reply->keycodes_per_modifier; i++)
-            if (modmap[(mask * reply->keycodes_per_modifier) + i] == numlock)
-                xcb_numlock_mask = masks[mask];
-
-    xcb_key_symbols_free(keysyms);
-    free(reply);
-}
-