Ticket #1563: hotkey-label.diff

File hotkey-label.diff, 3.0 KB (added by angel_il, 15 years ago)
  • src/keybind.c

    diff --git a/src/keybind.c b/src/keybind.c
    index 7917650..5599faf 100644
    a b int lookup_action (char *keyname) 
    711711} 
    712712 
    713713void 
    714 keymap_add(GArray *keymap, int key, int cmd) 
     714keymap_add(GArray *keymap, int key, int cmd, char *caption) 
    715715{ 
    716716    global_key_map_t new_bind, *map; 
    717717    map = &(g_array_index(keymap, global_key_map_t, 0)); 
    keymap_add(GArray *keymap, int key, int cmd) 
    719719    if (key !=0 && cmd !=0) { 
    720720        new_bind.key = key; 
    721721        new_bind.command = cmd; 
     722        new_bind.caption = g_strdup (caption); 
    722723        g_array_append_val(keymap, new_bind); 
    723724    } 
    724725 
    keymap_add(GArray *keymap, int key, int cmd) 
    727728void 
    728729keybind_cmd_bind(GArray *keymap, char *keybind, int action) 
    729730{ 
    730     keymap_add(keymap, lookup_key(keybind), action); 
     731    char *caplion 
     732    int key = lookup_key(keybind, caplion); 
     733    keymap_add(keymap, lookup_key(keybind), action, caplion); 
     734    g_free (caplion); 
    731735} 
  • src/keybind.h

    diff --git a/src/keybind.h b/src/keybind.h
    index 7a36661..7ddb79d 100644
    a b typedef struct key_config_t { 
    2020typedef struct global_key_map_t { 
    2121    long key; 
    2222    long command; 
     23    char *caption; 
    2324} global_key_map_t; 
    2425 
    2526int lookup_action (char *keyname); 
  • src/tty/key.c

    diff --git a/src/tty/key.c b/src/tty/key.c
    index 5d000ce..0b91e94 100644
    a b lookup_keyname (char *keyname) 
    12491249 
    12501250/* Return the code associated with the symbolic name keyname */ 
    12511251int 
    1252 lookup_key (char *keyname) 
     1252lookup_key (char *keyname, char **label) 
    12531253{ 
    12541254    int k = -1; 
    12551255    char **keys; 
    12561256    guint keys_count = -1; 
    12571257    int key = 0; 
    12581258    int i = 0; 
    1259  
     1259    char buf[BUF_TINY]; 
     1260    int buf_pos = 0; 
     1261    char *p; 
    12601262    if (keyname == NULL) 
    12611263        return 0; 
    12621264 
    lookup_key (char *keyname) 
    12691271 
    12701272            if (key & KEY_M_SHIFT) { 
    12711273                if (k < 127) { 
     1274                    if (buf_pos > 0) 
     1275                        buf[++buf_pos] = '-'; 
     1276                    } 
     1277                    buf[++buf_pos] = 'S'; 
    12721278                    k = (gchar) g_ascii_toupper ((gchar) k); 
    12731279                    continue; 
    12741280                } 
    12751281            } 
    12761282            if (key & KEY_M_CTRL) { 
     1283                if (buf_pos > 0) 
     1284                    buf[++buf_pos] = '-'; 
     1285                } 
     1286                buf[++buf_pos] = 'C'; 
    12771287                if (k < 256) 
    12781288                    k = XCTRL (k); 
    12791289                else 
    lookup_key (char *keyname) 
    12831293                    if (key < 127) 
    12841294                        key = (gchar) g_ascii_tolower ((gchar) key); 
    12851295                    k = key; 
    1286                 } else 
     1296                } else { 
     1297                    buf[++buf_pos] = '-'; 
    12871298                    k |= key; 
     1299                } 
     1300 
     1301                for (p = keys[i]; *p; p++) 
     1302                    buf[++buf_pos] = *p; 
     1303                buf[buf_pos] = '\0'; 
    12881304            } 
    12891305        } 
    12901306    } 
    lookup_key (char *keyname) 
    12921308    if (k == -1) 
    12931309        return 0; 
    12941310 
     1311    *label = g_strdup (buf); 
    12951312    return k; 
    12961313} 
    12971314