Étant donné une chaîne dans elisp, je voudrais simuler emacs recevant toutes les touches nécessaires pour recréer cette chaîne. Donc, étant donné la chaîne "Hello", emacs agirait exactement de la même manière que si j'avais appuyé sur Maj + H, e, l, l, o. Notez que ce n'est pas toujours la même chose que d'insérer du texte dans le tampon - certains modes comme le mode isearch écoutent directement les événements de pression de touche.
La raison pour laquelle cela est nécessaire est qu'il existe de nombreux modes et extensions qui supposent que toutes les entrées proviennent du clavier ou supposent que tout changement de tampon / fenêtre / cadre sera associé à l'événement d'entrée de clavier, et beaucoup de le moment où ils inspectent les données associées à cet événement. Pour que le mode de reconnaissance vocale sur lequel je travaille fonctionne de manière transparente avec le corps de code existant, il ne peut pas simplement appeler directement elisp pour effectuer des actions, il doit plutôt dire à elisp d'appuyer sur les touches pour que ces actions se produisent.
J'ai trouvé des événements de commande non lus, mais je ne connais aucun code existant qui traduira les chaînes en séquences de touches nécessaires. Est-ce que quelque chose comme ça existe déjà?
(let ((string "C-Beams")) (execute-kbd-macro (kbd (mapconcat #'char-to-string string " "))))
marchera. Il y a probablement une meilleure façon ...