LINUX.ORG.RU

Emacs: как заставить работать <kp-divide>, <kp-decimal> в русской раскладке?

 


0

1

Использую метод ввода «russian-computer», и все бы хорошо, но пользоваться нумпадом при этом невозможно — слэш транслируется в точку, точка в букву. Можно ли как-нибудь отключить трансляцию именно для клавиш нумпада?

Я понимаю так себе совет: ты спроси у Gemini, то есть у гугловского ИИ. Он говорит, что нужно сделать так:

(with-eval-after-load 'quail
  (define-key local-function-key-map (kbd "<kp-divide>") (kbd "/"))
  (define-key local-function-key-map (kbd "<kp-decimal>") (kbd "."))
  ;; Если точка на нампаде превращается в запятую:
  (define-key local-function-key-map (kbd "<kp-separator>") (kbd "."))
Он конечно галлюцинирует через раз, но вот такие хотелки с правкой конфига вполне себе решает (как минимум направляет в нужную сторону).

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Попробовал это, а также

(add-hook 'quail-activate-hook
          (lambda ()
            (when (equal current-input-method "russian-computer")
              (keymap-set (quail-translation-keymap) (kbd "<kp-divide>") "/"))))

— не помогает. Такое впечатление, что замена происходит уровнем ниже.

Zeta_Gundam
() автор топика
Ответ на: комментарий от Zeta_Gundam

А как ты переключаешься? Через системную переключалку или emacsову встроенную?

Если через системную, то систему и нужно настраивать, но IMHO лучше на встроенную emacsову перейти, тогда от системы зависеть не будешь больше никогда.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

Пример настройки своей карты (переключение по Ctrl+\ — вопрос привычки) через пакет quile, можно глянуть здесь: Как поставить ударение над кириллическим символом?

Только нужно ненужные комбинации убрать и свои добавить.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Не знаю, правильно ли я делаю, но попробовал добавить ([kp-divide] ?/) — все равно вводится точка. По-моему, quail совсем не отличает kp-divide от слэша на основном блоке.

P.S. В коде из статьи многовато пробелов, неудобно редактировать.

Zeta_Gundam
() автор топика
Ответ на: комментарий от Zeta_Gundam

можно попробовать понять что за клавиша нажимается: C-h k затем клавишу / на дополнительном блоке

P.S. Пробелы вроде пробовал убрать, но похоже в конце при очередном cut+paste забыл это сделать.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

ещё одна гипотеза: если emacs запускается в терминале, то терминал преобразует клавиши дополнительного блока в обычные ещё до emacs.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

C-h c «клавиша» показывает по идее то, что приходит в emacs. Если разница между блоком и клавиатурной клавишей / есть, то эта уже проблема emacs, а иначе проблема окружения.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

Если снаружи доставляется то, что нужно, то возможно это ещё поможет:

(define-key local-function-key-map [kp-divide] [kp-divide])
чтобы не преобразовывалось.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)