Đưa ra một chuỗi trong elisp, tôi muốn mô phỏng các emacs nhận bất kỳ phím nhấn nào là cần thiết để tạo lại chuỗi đó. Vì vậy, các chuỗi emacs "Hello" sẽ hoạt động giống hệt như khi tôi nhấn Shift + H, e, l, l, o. Lưu ý rằng điều này không phải lúc nào cũng giống như chèn văn bản vào bộ đệm - một số chế độ như chế độ isearch nghe trực tiếp các sự kiện nhấn phím.
Lý do điều này là cần thiết là vì có rất nhiều chế độ và tiện ích mở rộng đưa ra giả định rằng tất cả đầu vào đến từ bàn phím hoặc đưa ra giả định rằng mọi thay đổi bộ đệm / cửa sổ / khung sẽ được liên kết với sự kiện nhập bàn phím và rất nhiều thời gian họ kiểm tra dữ liệu liên quan đến sự kiện đó. Đối với chế độ nhận dạng giọng nói mà tôi làm việc để hoạt động trơn tru với phần mã hiện có, nó không thể gọi trực tiếp vào elisp để thực hiện các hành động, thay vào đó, nó cần phải nói với elisp nhấn phím để khiến những hành động đó xảy ra.
Tôi đã tìm thấy các sự kiện lệnh chưa đọc, nhưng tôi không biết bất kỳ mã hiện có nào sẽ dịch các chuỗi thành các chuỗi khóa cần thiết. Có một cái gì đó như thế đã tồn tại?
(let ((string "C-Beams")) (execute-kbd-macro (kbd (mapconcat #'char-to-string string " "))))
sẽ làm việc. Có lẽ có một cách tốt hơn ...