Отображение мертвых ключей типа "^"

В настоящее время я перевязываю почти все мои привязки Emacs, чтобы соответствовать моей новой раскладке клавиатуры, bépo, французскому эквиваленту dvorak.

У меня возникли проблемы с отображением моего ключа ^. Клавиша ^ является мертвой клавишей, но не на уровне материала.

Я хотел бы иметь возможность отображать C-^, но в настоящее время он не работает. Потому что "dead-circumflex" и "circumflex" - это два разных ключа.

Если я это сделаю:

(global-set-key "C-^" 'next-line)

Затем нажатие клавиши управления клавишей "^" выполняет следующие действия:

 <C-dead-circumflex> is undefined

У нас есть доказательства emacs, которые видят мертвые-circumflex. Но я все равно не могу его отобразить.

Я знаю, что могу делать

(global-set-key "^" 'next-line)

и что он будет работать, дважды нажав ^, но это не обходное решение, которое я ищу.

Ответ 1

Сообщение об ошибке сообщает, какое имя Emacs использует для ключа. Вы можете передать эту строку в функцию kbd, чтобы связать ее.

(global-set-key (kbd "<C-dead-circumflex>") 'next-line)

Ответ 2

У меня была такая же досадная ошибка, но только при использовании графического интерфейса emacs, а не из терминала. Проблема с предлагаемым решением заключается в том, что ^ не является единственным персонажем, который не работает. Для меня это было как минимум "и".

Из этой темы: https://bugzilla.redhat.com/show_bug.cgi?id=918740 Я обнаружил, что изменение XMODIFIERS с "@im = ibus" на "" решило проблему. Во время поиска, где XMODIFIERS, где я настроен, я затронул следующую проблему: https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1125944 Оказывается, удалив ~/.config/ibus/bus, который решает эту проблему, также решает проблему в emacs с мертвыми ключами

rm -rf ~/.config/ibus/bus

Ответ 3

Добавьте в свой ~/.emacs следующее:

(require 'iso-transl)

Это устраняет проблему с undefined мертвыми ключами.