Мои комментарии к статье про комбинации Emacspeak.
Комбинации Emacspeak не всегда начинаются с C-e. Emacspeak довольно часто определяет свои команды в раскладках разных режимов Emacs. Например, в Dired есть a (читать время доступа к выбранному файлу), c (читать время модификации выбранного файла), z (читать размер выбранного файла). Обычно имена команд Emacspeak начинаются с emacspeak-, dtk-, tts- и их нетрудно обнаружить в буфере списка комбинаций, доступных в текущем буфере, который вызывается по C-h b. Их можно отфильтровать, например, с помощью ещё одной полезной команды Emacspeak, которая вызывается по C-e (emacspeak-filtertext). Действует она следующим образом. Выделяем интересующую нас область текста и жмём C-e ^. Появится буфер с копией выделенного текста. В этом буфере можно редактировать текст так, как вы пожелаете. Для этого там сделаны дополнительные комбинации для некоторых команд редактирования. Наша задача - оставить в буфере список команд Emacspeak, которые назначены на комбинации, не начинающиеся с C-e. Для этого в открывшемся буфере нажимаем = (команда keep-lines) и вводим регулярное выражение, которому отвечают команды Emacspeak: emacspeak-\|dtk-\|tts- Команда оставит в буфере после курсора только те строки, которые содержат совпадение для регулярного выражения. Если перед выполнением операции курсор стоял в начале буфера, то получим список всех команд Emacspeak, доступных по комбинации в исходном буфере. Нам нужно убрать из него все те, которые начинаются с C-e. Для этого нажимаем ^ (команда flush-lines) и вводим регулярное выражение: ^C-e Команда уберёт из буфера все строки после курсора, которые содержат совпадение для регулярного выражения. То есть, строки, начинающиеся с C-e. Буфер можно вернуть к начальному состоянию, нажав r. Ещё одна полезная функция Emacspeak - возможность задавать фильтры для строк. Фильтр позволяет сделать так, чтобы при построчном чтении читалась не вся строка, а только её часть, определённая фильтром. Его можно использовать, например, для того, чтобы в буфере w3m отфильтровать ненужные колонки таблицы. Фильтр можно задать комбинацией C-e | (команда emacspeak-speak-line-set-column-filter). Раньше этот фильтр надо было вводить в виде списка, состоящего из пар (начало конец), где начало - номер столбца, с которого начинается фильтр, а конец - столбец, перед которым фильтр заканчивается. Например, фильтр ((0 10) (20 44)) будет отфильтровывать из строки столбцы с 0 по 9 и с 20 по 43. Далее, у Emacspeak есть много всяких команд, но не все из них нужно знать. Я, например, совсем не пользуюсь командами для чтения окон и командами типа C-e стрелка вправо (emacspeak-speak-this-buffer-next-display). Мне проще переключиться в нужное окошко и там прочитать всё, что надо. Также я не пользуюсь командой для чтения строки, на которой установлена пометка. Мне проще перейти туда, поменяв местами курсор и пометку с помощью C-x C-x. При этом автоматически читается строка, на которой раньше была пометка, а теперь - курсор. Обратно вернуться можно той же комбинацией C-x C-x. Для некоторых команд Emacspeak я сделал переназначения. Например, мне кажется неудобным набирать C-u C-e l, чтобы услышать конец строки. Поэтому я сделал две очень простые команды для чтения начала и конца строки и назначил их на шифт со стрелкой влево и шифт со стрелкой вправо соответственно (в обозначениях Emacs это - S-left и S-right). Чтение всей строки я назначил на шифт со стрелкой вниз (S-down), а чтение символа под курсором - на шифт со стрелкой вверх (S-up). Привожу здесь эти команды и назначение их на клавиши. (defun emacspeak-speak-line-right () (interactive) (emacspeak-speak-line 1)) (defun emacspeak-speak-line-left () (interactive) (emacspeak-speak-line -1)) (global-set-key [S-right] 'emacspeak-speak-line-right) (global-set-key [S-left] 'emacspeak-speak-line-left) (global-set-key [S-down] 'emacspeak-speak-line) (global-set-key [S-up] 'emacspeak-speak-char) Кроме того, удобно иметь под рукой прерывание речи, поэтому я назначил его на клавишу insert на цифровой клавиатуре: (global-set-key [kp-insert] 'dtk-stop) И ещё назначил перемещение по параграфам на C-up и C-down, а по словам - на C-left и C-right. Хотя, возможно, некоторые из этих комбинаций работают уже из коробки. (global-set-key [C-right] 'forward-word) (global-set-key [C-left] 'backward-word) (global-set-key [C-up] 'backward-paragraph) (global-set-key [C-down] 'forward-paragraph) Ещё нужно сказать, что некоторые параметры, такие как разделение слов, содержащих смешанный регистр, выделение больших букв и слов, состоящих сплошь из больших букв, должны быть реализованы на уровне речевого сервера. А Multispeech не все из них обрабатывает. Те, которые я перечислил, в имеющейся у меня версии Multispeech не обрабатываются. -- Дмитрий Падучих -- Blinux-rus mailing list [email protected] http://www.a11ywiki.org/cgi-bin/mailman/listinfo/blinux-rus
