2013-02-26 14 views
5

Bir emacs anahtar sözcük vektörünü (örneğin okuma-okuma-dizi-vektörünün sonucu) bir kullanıcı tarafından okunabilir dizeye nasıl dönüştürebilirim? Evet, verilen [7], 'C-g' döndür.Anahtar sıra vektörünü kullanıcı tarafından okunabilir dize gösterime dönüştürme?

Keyfi uzunluktaki tuş dizileri arasındaki eşitliği kontrol etmenin yanı sıra anahtar dizilerini vektör olmayan bir biçimde (yani, insan tarafından okunabilir) göstermenin güvenilir bir yoluna ihtiyacım var.

ayrıntı için benim işlevi aşağıdakileri yapmanız gerekir:

  • değerleri (dizeleri) için keysequences bir hashmap tanımlayın. Anahtar sözcükler isteğe bağlı uzunluklara sahiptir (örneğin, "q" "w" 3 "" 4 ") ve emacs 'keymaps tarafından sınırlandırılmamıştır.
  • Arabelleğe eşlemeleri (keysequence -> string) gösterme . Bu nedenle, keysequences vektör formatında olamaz yani kullanıcı tarafından anlaşılabilir olmalıdır.
  • , kullanıcıdan gelen bir keysequence oku uygun dize döndürür.

kullanabileceğim iki fonksiyon, vardır read-key-sequence ve read-key-dizisi-vektörü.İlk bazen küme, bazen vektör olarak, kullanıcının yazılan anahtar dizisi olarak döner.Örneğin, bazen "1" değerini döndürür, ancak bazen "bir" anahtar için [49]. Bu öngörülemeyen davranış, eşitlik için test etmeme izin vermiyor.

Bu anahtarlar, bir vektör olarak anahtarları döndürür. Bu, sözünü ettiğim gibi bana yararlı olmaz çünkü olası anahtar sözcükleri görmesi gerekir.

Mevcut makinemin klavyesinde tüm tuşların el işaretlerini el ile oluşturabilirim. Fakat korkarım ki bu diğer makineler için taşınabilir değil.

cevap

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

Teşekkür ederiz! Bu çözümü arandığımı düşünmemiştim. açıkça daha derinlerde arama yapmalı! – erjoalgo