Самый низкий уровень ввода с клавиатуры, полученный emacs lisp - это событие клавиатуры , которое объединяет базовый код с настройками включения / выключения модификаторов emacs (meta
,control
, shift
, hyper
, super
и alt
).Из-за этой комбинации, похоже, нет никакого способа узнать код lisp, когда вы, например, нажимаете и удерживаете клавишу Shift.Также обратите внимание, что вообще нет представления CAPS LOCK или NUM LOCK.
В примечании стороны, emacs фактически различает newline
и C-m
, но на очень низком уровне в lispкод, первый сопоставляется с последним.См. lisp/term/x-win.el
(обычно находится под /usr/share/emacs/NN.X
), если вы действительно хотите узнать кровавые подробности.
Итак, из в emacs lisp я считаю, что невозможно делать то, что вы хотите.
Однако, можно вставлять текст из внешних команд в строку режима emacs и регулярно обновлять его.Итак, в принципе вы можете найти команду linux, которая возвращает статус caps lock, shift и numlock и периодически вводит ее в командную строку.Это, вероятно, не совсем соответствует вашим потребностям, поскольку не будет обновлять модельную линию в режиме реального времени при нажатии клавиш shift, capslock и numlock.Но если вы хотите продолжить это, проверьте реализации display-time-mode
и display-battery-mode
.