LINUX.ORG.RU

Emacs, проблемы с раскладкой клавиатуры

 ,


0

2

Очень мне понравилась фраза: нет разницы, в какой ОС работать, если в конечном итоге грузишься в Emacs. Захотелось сделать нечто подобное, но возникла проблема: я использую раскладку клавиатуры, которая называется «дворак для программистов». Хочу, чтобы в Emacs, не зависимо от операционной системы и используемой в ней раскладки был именно дворак для программистов.

Например, хочу иметь возможность загрузиться в консоль линукса, запустить там Emacs и комфортной работы даже без прав суперпользователя (я не нашел способа сменить раскладку клавиатуры в консоли без прав суперпользователя, если кто знает - тоже подскажите). Аналогично с виндой, чтобы можно было воткнуть флешку, стартануть с нее Emacs и иметь возможность использовать свою раскладку без установки дополнительного софта.

Я даже не знаю в каком направлении копать. Нашел только input-method'ы и quail-define-rules, которые все, похоже, определяются таким образом, как будто везде установлена qwerty раскладка... Я не знаю как определить, какая в данный момент в ОС выбрана раскладка, не знаю как получить keycode символа или как заставить имакс вернуть символ с указанным keycode... В общем, мне будут полезны любые мысли и идеи...

https://github.com/yangchenyun/programmer-dvorak — я поискал в google emacs dvorak quile

Installation

Install programmer-dvorak from melpa.

M-x package-install RET programmer-dvorak

Then add this to your emacs config file.

(require 'programmer-dvorak)

Usage

`programmer-dvorak' will be registered as an standard input method in Emacs, select it with:

M-x set-input-method RET programmer-dvorak

To toggle it use C-\ (toggle-input-method).

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

оффтопик

я не нашел способа сменить раскладку клавиатуры в консоли без прав суперпользователя

оно?

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

К сожалению, это не сработает... В этом пакете по ссылке используется quail-define-rules, он переводит символы («q» ?\;) («w» ?,) («e» ?.) («r» ?p) («t» ?y) и т.д. Т.е. подразумевает, что в системе на данный момент активирована QWERTY. С любой другой раскладкой это не сработает. Если бы можно было определить какая раскладка в данный момент активирована в ОС, то это подошло бы как хак на частный случай, но как сделать это кросплатформенно я не знаю...

arte-at-marte
() автор топика
Ответ на: оффтопик от f1u77y

Не оно... Я под консолью имею ввиду не терминал в графической оболочке, а ту консоль, которая существует даже если графический сервер вообще не установлен. tty или как там они называются... Т.е. в ней оно пишет Cannot оpen display «default display».

arte-at-marte
() автор топика
Ответ на: комментарий от arte-at-marte

Можно сделать специальное правило по примеру, только проставить буквы другой раскладки.

Проблема по-моему будет ещё в том, что другая раскладка отличная от qwerty -> другие буквенные комбинации в emacs (по другому нужно будет пальцы загибать). Поэтому IMHO лучше сделать так, чтобы emacs всегда был в qwerty раскладке, а в нём уже использовать его переключалку.

Evgueni ★★★★★
()

Могу заблуждаться, но чем дворак отличается от qwerty с точки зрения ПО, а не пользователя?

Для имакса есть решения в сторону создания раскладок уникальных префиксов.

Например:

есть некоторые источники определения уникальных префиксов

задаешь, определяешь, биндишь

профит

примеры:

(define-prefix-command 'my-prefix1)
(global-set-key (kbd "C-x `") 'my-prefix1)

(define-key my-prefix1 (kbd "123") 'my-command)

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

Можно сделать специальное правило по примеру, только проставить буквы другой раскладки.

Да, можно, но как определить эту другую раскладку? Это бы подошло, если бы нашлась функция get-character-by-keycode, тогда правила можно было бы определять при помощй keycode'ов клавиатуры, не опираясь на qwerty(тоже не очень, но, имхо, уже намного лучше). Тогда можно было бы писать записи в стиле: ((get-character-by-keycode 114) ?p) Но функции такой я не нашел... И как реализовать ее кросплатформенно внутри Emacs пока не знаю...

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

Такой возможности нет. Изначально идея состоит в том, чтобы прийти за чужой компьютер, воткнуть флешку и сдалать за ним все, что нужно при помощи комфортного Emacs. Менять раскладку на чужом компьютере обычно не уместно, а иногда и вовсе не возможно... А там может стоять какой-нибудь Colemark или вообще иностранная раскладка...

Кстати в случае с двораком для программистов стандартные сочетания Emacs стали несколько удобней. Я только C-x и C-t('t' на двораке под средним пальцем правой руки) поменял метсами и стало вообще отлично.

arte-at-marte
() автор топика
Ответ на: комментарий от anonymous

Дело не в биндингах клавиш на команды... С этим проблемы нет... Ну, или пока я ее не вижу... Понимаете, я хочу, чтобы можно было сесть за абсолютно любой компьютер, воткуть туда флешку, запустить с нее Emacs со своей конфигурацией и получить привычную рабочуу среду. И частью моей привычной рабочей среды является раскладка «Дворак для программистов». Т.е. где бы я не находился(свой компьютер, чужой, windows, linux, консоль), и какая бы раскладка не была в ОС, внутри Emacs всегда должен быть дворак.

arte-at-marte
() автор топика
Ответ на: комментарий от arte-at-marte

Дааа, вот бы такую флешку, чтоб запустил с неё Emacs — и перед тобой крутой 64-битный комп последнего поколенияс 64 Гб памяти...

fat-II
()
Ответ на: комментарий от fat-II

Если это шутка, то я не понял. Если серьезно - то тоже не понял...

arte-at-marte
() автор топика

Годный кактус.

loz ★★★★★
()
Ответ на: комментарий от abacaba
  • russian-dvorak реализован таким образом, что в системе должна быть выставлена qwerty - иначе из раскладки получится каша
  • оно ремапит сочетания клавиш, что тоже неудобно - я уже привык набирать стандартные сочетания имакса в двораке
  • поверх этого нельзя реализовать свой русскоязычный транслитерный input-method

Ну и, строго говоря, russian-dvorak - это просто дворак, а не дворак для программистов. Хотя это уже не важно т.к. если бы у меня был пример, то я смог бы модифицировать его под свои нуды. Я уже исходники имакса читать начал, но он такой огромный - не могу даже найти места, где определяется базовый инпут метод ~~"

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