Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет polytheme ([info]polytheme)
@ 2008-11-29 15:17:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
читаю устаревшую, но интересную книжку
Writing GNU Emacs Extensions, желая
научиться у нее уму-разуму. Начинается
книжка описанием дурацкой проблемы,
которая, по признанию автора, "многих
людей, способных стать правоверными
емаксерами, ниспровергла обратно в ад
старого доброго vi". А именно, раньше
при нажатии на Backspace в Emacs открывалось
окно помощи, обескураживая новичков
донельзя. Это происходило от того, что
код, генерируемый Baskspace - 8, что,
как понимают люди, увлекавшиеся шахматами,
в точности равно коду Control-H, на который,
очевидно, привешено это самое окно помощи.
Я прочел это, и понял, что где-то под ковром,
когда я был еще маленький, и у меня не было
своего компьютера, разыгралась драма,
в результате которой теперь в emacs и
Backspace работает, как положено, и Del
работает, как в Windows, и даже Control-H
остался на месте и выводит окно помощи.

Вопрос, в основном, к Антону Москалю, Юре или
Пете, возможно, к Диме Каледину, если ему
попадет на глаза этот текст: не поделитесь
воспоминаниями, было такое на вашей памяти ?
И как им удалось расклеить Backspace с C-h,
Backspace теперь в иксах другой код генерирует,
или как ? Кстати, describe-bindings утверждает,
что DEL генерирует backward-delete-char-untabify,
но что это за DEL ? Так как раз поступает
backspace, а Del работает нормально - парадокс :)


(Читать комментарии) - (Добавить комментарий)


[info]polytheme
2008-11-29 16:37 (ссылка)
да, я даже проверил на своей Toshiba Portege G910 - это такой коммуникатор с клавиатурой -
там тоже бэкспейс генерит восьмерку (а вот под линуксом пока не удосужился посмотреть).
на самом деле emacs может смотреть значения модификаторов, нажат Control или нет
(см. комментарий Шеня ниже).
т.е. жизнь черного ящика обстоит следующим образом - на входе клавиша <---, на выходе
событие , к которому привязано DEL, к которому привязано backward-delete-char-untabify
(но не везде ! в сплэш-буфере, который приветственно машет хвостом при загрузке,
backspace замэплен на что-то другое, пойти в начало, кажется). тайна происходит
между <--- и backspace: либо на уровне X, либо на уровне emacs :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2008-11-29 16:46 (ссылка)
Там поразбираться надо - я думаю, что скан-коды клавиш тоже доступны: /etc/X11/xkb/keycodes/ задает соотвествие скан-кодов функциям кнопок.

Но есть еще один момент - емакс же изначально-то заточен под работу на обычном текстовом терминале, у которого все не так, а иксы - это уже новейшая заморочка.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2008-11-29 17:48 (ссылка)
я проверил на консоли - там тоже все три кода работают, как им положено -
backspace, del и C-h.
так что вероятно емакс действительно в своих C-кишках смотрит на клавиши-модификаторы - это можно делать и в консоли и под Xами.

(Ответить) (Уровень выше)


(Читать комментарии) -