2013-02-26 8 views
5

Come è possibile convertire un vettore di chiaviequacmato di emacs (ovvero il risultato del simbolo di lettura-chiave-sequenza) in una stringa leggibile dall'utente? I.e, dato [7], restituisci 'C-g'.Conversione del vettore di sequenza di chiavi in ​​una rappresentazione stringa leggibile dall'utente?

Ho bisogno di un metodo affidabile per verificare l'uguaglianza tra le sequenze di chiavi di lunghezza arbitraria, nonché per visualizzare le sequenze di tasti in un formato non vettoriale (cioè leggibile dall'uomo).

Per i dettagli, la mia funzione deve effettuare le seguenti operazioni:

  • Definire una HashMap di keysequences di valori (stringhe). Le equivalenze di chiavi hanno lunghezze arbitrarie (ad esempio, "q" "w" 3 "" 4 ") e non sono limitate dalle keymap di emacs
  • Visualizza i mapping (keysequence -> string) all'utente in un buffer . Pertanto, i keysequences devono essere intelligibile dall'utente, cioè non può essere in formato vettoriale.
  • Leggi una keysequence dall'utente, restituisce la stringa appropriata.

ci sono due funzioni posso utilizzare, read-key-sequence e read-key-sequence-vector. Il precedente restituisce talvolta come stringa, a volte come vettore, la keysdance digitata dall'utente. Ad esempio, a volte restituisce "1", ma a volte, [49], per la chiave "uno". Questo comportamento imprevedibile non mi permette di testare l'uguaglianza.

Quest'ultimo restituisce le chiavi come un vettore, che come ho detto non mi è utile perché ho bisogno che l'utente visualizzi le possibili chiavi.

Suppongo di poter creare manualmente un hasmap di tutti i tasti sulla tastiera della mia macchina corrente. Ma temo che non sia portabile ad altre macchine.

risposta

8
(key-description [7]) => "C-g" 
+0

Grazie! Pensavo di aver cercato inutilmente questa soluzione. chiaramente bisogno di cercare più a fondo! – erjoalgo

Problemi correlati