LINUX.ORG.RU

Помогите настроить key-translation-map для клавиши Enter.

 


0

2

Приветствую всех.

Пытаюсь «поменять местами» клавиши <Ctrl> и <Alt> в emacs используя только elisp.

Делаю вот такую замену для клавиши <m>:

;; m
(define-key key-translation-map (kbd "C-\155") (kbd "M-\155"))
(define-key key-translation-map (kbd "M-\155") (kbd "C-\155"))

Клавиши <Ctrl> и <Alt> «меняются местами» без вопросов.

Но при этом перестаёт работать <RET>, то есть при нажатии на <Enter> ничего не происходит.

Посмотрел help по <Ctrl-h>+<k>, затем <Enter>.

До замены при нажатии на <Enter>:

RET (translated from <return>) runs the command push-button, which is
an interactive compiled Lisp function in `button.el'.

После замены

M-m (translated from <return>) runs the command back-to-indentation,
which is an interactive compiled Lisp function in `simple.el'.
То есть, как я понял, после замены <return> возвращает <M-m>.

Подскажите, как настроить key-translation-map для клавиши <Enter>?


По существу пока не отвечу, но не могу не поинтересоваться, что, собственно, мешает поменять местами «альт» и «контрол» по-нормальному — вне Емакса?

C-\155

И кстати, а почему такая странная форма записи? С человеческим C-m какие-то проблемы?

Zmicier ★★★★★
()

А вот теперь отвечаю по существу: key-translation-map — это слишком высоко, надо ниже:

(define-key input-decode-map (kbd "C-m") (kbd "M-m"))
(define-key input-decode-map (kbd "M-m") (kbd "C-m"))

Но совсем правильно, разумеется, — вне Емакса перепривязать четыре клавиши, а не более сотни внутри Емакса.

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

что, собственно, мешает поменять местами «альт» и «контрол» по-нормальному — вне Емакса

Я хочу чтобы клавиши менялись местами только в emacs.

И кстати, а почему такая странная форма записи?

Чтобы можно было генерировать замены скриптом. Предыстория вопроса — вот здесь

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

Я хочу чтобы клавиши менялись местами только в emacs.

Дико странное, право, желание. Что за ним стоит? Вы же запутаетесь: в Емаксе у вас, скажем, переход в начало строки будет <модификатор-под-большим-пальцем>-a, а в Ридлайне (то есть в большинстве консольных программ) и в ГТК — <модификатор-под-мизинцем>-a.

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

Но совсем правильно, разумеется, — вне Емакса перепривязать четыре клавиши, а не более сотни внутри Емакса.

Я знаю этот способ поменять клавиши местами, но мне нужно, чтобы <alt> и <ctrl> вне emacs работали стандартным способом.

А вот теперь отвечаю по существу: key-translation-map — это слишком высоко, надо ниже

Вроде помогло. Отмечу тему, как решенную, если что — создам новую. Спасибо!

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

но мне нужно, чтобы <alt> и <ctrl> вне emacs работали стандартным способом.

Да нафига вы себе проблемы-то создаете?

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

Дико странное, право, желание.

Вполне допускаю. Но на вкус и цвет — все фломастеры разные.

Вы же запутаетесь

Не запутаюсь. Я менял глабально местами клавиши, и путался когда садился за другую машину с обычной раскладкой. Сейчас у меня в OS будут работать стандартные сочетания с <alt> и <ctrl> (как и на других машинах), а Meta и Ctrl будут переназначены только в emacs.

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

Да нафига вы себе проблемы-то создаете?

Вне emacs — обычная раскладка, с обычными сочетаниями; внутри — мои сочетания. Какие проблемы? Допускаю, что проблемы будут у стороннего человека, запустившего emacs с моими настройками.

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

и путался когда садился за другую машину
Сейчас у меня в OS будут работать стандартные сочетания с <alt> и <ctrl> (как и на других машинах), а Meta и Ctrl будут переназначены только в emacs.

И вы будете путаться, никуда не пересаживаясь, только переключая окна — прогресс, че!

Ох, ладно, хозяин — барин; хотите в этом убедиться на собственном опыте — удачи.

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

И вы будете путаться, никуда не пересаживаясь, только переключая окна — прогресс, че!

Почему я буду путаться, если глобально <alt> и <ctrl> остались на месте и глобальные сочетания клавишь не изменились?

Ох, ладно, хозяин — барин; хотите в этом убедиться на собственном опыте — удачи.

Жизнь рассудит!

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

Почему я буду путаться, если глобально <alt> и <ctrl> остались на месте и глобальные сочетания клавиш не изменились?

Очевидно потому, что они изменились локально в Емаксе.

Вы полагаете, что когда вы будете переключаться между окнами — у вас в голове будет что-то щелкать, и мышечная память будет тоже переключаться? Что ж тогда, когда вы пересаживались с машинки на машинку, ничего не «щелкало» — куда больше ведь было на что среагировать.

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

Вы полагаете, что когда вы будете переключаться между окнами — у вас в голове будет что-то щелкать, и мышечная память будет тоже переключаться? Что ж тогда, когда вы пересаживались с машинки на машинку, ничего не «щелкало» — куда больше ведь было на что среагировать.

В том то и дело.

Поменяли глобально: на одной машине копируем вставляем в OS, <ctrl-c>, <ctrl-v>; на другой — <alt-c>,<alt-v>. В первом случае мизинец жмет <ctrl>, во втором <alt>. Мышечная память переключается.

Меняем локально: на одной машине <ctrl-c>, <ctrl-v> и на другой те же клавиши, теми же пальцами, с тем же результатом. Глобальные сочетания в OS не поменялись, нажимаются те ми же пальцами с тем же результатом.

pol01
() автор топика
12 июня 2016 г.

Как, успехи? Не задолбались еще со своим разнобоем?

Если нет, то я тут листал документацию по ГНУ Емаксу, и случайно обнаружил, что под Иксами у него модификаторы можно переназначить и очень легко, ну, например, «Мету» и «Супер» местами поменять:

(setq x-meta-keysym 'super
      x-super-keysym 'meta)

Одна проблема — «Контрол» нельзя.

Я не смотрел тексты (а это сишная часть, разумеется), но по-моему здесь все просто вопиет о том, что не сделали только только потому, что решили, что это никому не нужно.

Короче, я бы на вашем месте написал обоснованное пожелание в багтрекер.

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

Очевидно потому, что в Емаксе по-одному, а вне Емакса — с точностью до наоборот.

Однако, заметьте, что основная мысль моего письма была вовсе не о разнобое — это я так, к слову.

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

Клавиши <meta> и <ctrl> В emacs, это не клавиши <alt> <ctrl> в OS.

Хотя, я владею классическим десятипальцевым слепым методом печати на клавиатуре, может быть по этому для меня никакого разнобоя нет?

Одна проблема — «Контрол» нельзя.

Вот в этом то и проблема, что нужно было настраивать <ctrl>. Но input-decode-map решил её.

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

владею классическим десятипальцевым слепым методом печати на клавиатуре, может быть по этому для меня никакого разнобоя нет?

Не уловил глубины вашей мысли совершенно.

Вот в этом то и проблема, что нужно было настраивать <ctrl>

Мне кажется, что я помню, что́ надо было.

Но input-decode-map решил её.

Я правило понял, что изыскав костыль, вы более дергаться не намерены, и даже написать пожелание (с высокой вероятностью получить его исполненным) вам уже недосуг?

Что ж, извините, что отвлек.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.