Emacs для начинающих

       

Настройки клавиатурного ввода


Почитав документацию к LyX, можно убедиться, что его разработчики не имели ничего против использования своего детища с клавиатурами, отличными от английской. Тем удивительнее, что при первой попытке ввести какой-либо текст с кириллической раскладки на экране не появляется никаких символов. И всё же LyX не является «неправильным» приложением, поскольку его можно обучить понимать символы иностранных алфавитов. Для этой цели существует файл cyrillic.bind, распространяемый вместе с LyX в составе дистрибутивов фирмы ALTLinux. Если же вы не являетесь счастливым пользователем ее продукции, можете поискать данный файл где-либо в Сети или даже написать его самостоятельно. Синтаксис его очень прост: каждая строка имеет вид

\bind "Cyrillic_a" "self-insert"

Естественно, то же самое придется повторить для каждой буквы русского алфавита (точные их названия можно найти в описании какой-либо кириллической раскладки клавиатуры из каталога /etc/X11/xkb). Потом этот файл помещается в каталог LyX/bind (в usr/share или в домашнем каталоге пользователя) и прописывается (без расширения .bind) всё в том же диалоге «Preferences…» (вкладка «Look & Feel», на ней вкладка «Interface», на ней поле ввода «Bind file». С тем же успехом можно и вручную вставить в упомянутый файл preferences строку вида

\bind_file cyrillic

По крайней мере, именно такая рекомендация содержится во всех руководствах.

Вот только следует иметь в виду, что файлы из каталога bind вообще-то предназначены для задания настроек клавиатуры. И потому обрести возможность работы с русскими буквами, лишившись зато привычных клавиатурных комбинаций (даже таких обычных, как «слово вправо – слово влево») – это, очевидно, не тот эффект, которого мы хотели достичь. Иногда удается обмануть LyX, прописав сразу два bind-файла. Но – не всегда, и в любом случае этого нельзя сделать через пользовательский интерфейс. Да и не нужно, потому что никто не заставляет нас использовать cyrillic.bind в чистом виде: гораздо лучше слить его содержимое с каким-либо из имеющихся в комплекте bind-файлов (по умолчанию используется cua.bind), поместить образовавшийся файл у себя в ~/.lyx/bind и использовать его в свое удовольствие.


Создание пользовательского bind-файла целесообразно и по иной причине. Дело в том, что существует одна категория настроек LyX, которые нельзя выполнить через пользовательский интерфейс, и это как раз настройки клавиатурных комбинаций. Между тем некоторые из них традиционно было принято определять в lyxrc. Собственно, и сейчас никто не мешает употреблять в файле preferences команды вида

\bind "любая_клавиша" "любая_команда"

Только вот надо иметь в виду, что они будут начисто снесены при первой же попытке изменить какие-либо настройки LyX в интерактивном режиме. Очевидно, из этой ситуации может быть три выхода:

  • один раз задать настройки в диалоге «Preferences...», после чего править одноименный файл только вручную;
  • править не preferences, а lyxrc.defaults, что, как мы отметили, не рекомендуется разработчиками;
  • или же как раз и размещать все настройки клавиатуры там, где для них, собственно говоря, настоящее место, то есть в пользовательском bind-файле.


  • Помимо системной клавиатуры, LyX может работать и со своим внутренним переключателем раскладок. Придуман этот механизм прежде всего для удобства печати западноевропейских акцентированных символов. Дело в том, что в LaTeX для этой цели существуют специальные команды, с которыми LyX и должен сообразовываться. Пользы от этого, по-моему, в наших условиях мало. Вот если бы LyX умел динамически переключать экранный шрифт в зависимости от языка текста... А так акцентированные символы всё равно превращаются на экране в нечто, зависящее от используемой кодировки, так что, зная синтаксис соответствующих команд TeX, гораздо проще вводить их напрямую. Но как бы то ни было, возможность использования дополнительных раскладок существует. И потому полезно знать, что для их описания используются специальные файлы с расширением .kmap, хранящиеся в подкаталоге kbd программной директории lyx. В комплект поставки входит и описание русской раскладки для кодировки koi8-r (разумеется, она не нужна, если клавиатура уже русифицирована с помощью cyrillic.bind). Можно написать новую раскладку и самостоятельно: синтаксис этих файлов очень прост и к тому же хорошо описан в документации.



    Дополнительных раскладок может быть подключено две (primary и secondary). В файле lyxrc.example приводится следующий пример их настройки:

    \kbmap true \kbmap_primary german \kbmap_secondary american

    Ручное включение данных строк в конфигурационный файл эквивалентно следующей последовательности действий: вызываем диалог «Preferences...», на нем открываем вкладку «Lang Opts» и вкладку следующего уровня «Язык», там активизируем опцию «Keyboard map» и прописываем нужные значения в ставших после этого доступными полях «1st» и «2nd». Хотелось бы только предостеречь насчет задания раскладки american: здесь имеется в виду вполне определенный файл american.kmap, содержащий описание международной раскладки с «мертвыми клавишами». Если это не тот эффект, который вам нужен, то не вписывайте в поле «2nd» ничего или впишите значение «null». Стандартную же американскую клавиатуру в LyX определять вообще не нужно: она получается сама собой (вернее, берется из системы) при третьем состоянии переключателя (обе раскладки отключены). К сожалению, этих состояний будет именно три даже в том случае, если одна из раскладок не задана.

    Задав дополнительные раскладки, необходимо назначить клавиши, с помощью которых мы сможем получить к ним доступ. В lyxrc.example предлагается включить для этого в конфигурационный файл строку

    \bind "Pause" "keymap-toggle"

    Разумеется, «Пауза» здесь только для примера: можно назначить любую другую клавишу. Существуют также команды «keymap-primary», «keymap-secondary» и «keymap-off», обеспечивающие быстрый доступ к трем состояниям переключателя. Выше было отмечено, что помещать эти команды, если уж в них возникла необходимость, лучше всего в предварительно созданном пользовательском bind-файле.


    Содержание раздела