a13 / xkb-custom

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Что это?

Универсальная кириллическая(если быть точным: ru/ua/by) раскладка для X-ов. Особенностью является то, что знаки пунктуации находятся на тех же клавишах, что и в английской (us).

Зачем?

Чтобы при наборе знаков пунктуации не задумываться про текущую раскладку.

Минусы:

  1. некоторые символы прихошлось перетащить на 3 уровень, для русского языка пришлось пожертвовать «юэщжёцфъ»(в старой версии «юэщжёцйъ»).
  2. как следствие их достаточно тяжело набирать одной рукой. Как воркэраунд можно включить режим sticky modifiers.
  3. раскладка немного отличается от «йцукен»,

Кандидаты на перенос «наверх» тщательно выбирались из соображений минимальной частотности использования и как можно меньшей разницы с «йцукен». Таким образом, из наиболее часто используемых 26 букв радикально “переехали” только «жбх», «ф» осталась на той же клавише, только на другом уровне.

Раскладки для украинского/беларусского языков для меня вторичны, так что символы из них, отсутствующие в русском, тоже на третьем уровне. Было бы неплохо сделать альтернативные варианты с «і/ы» (украинский) и «і/и» (беларусский), но пока нет времени.

Использование

Инсталляция

cd /path/to/repo/dir
git clone https://github.com/a13/xkb-custom.git
ln -sf `pwd`/xkb-custom ~/.xkb

Настройка X-ов

Чтобы не приходилось лезть в системные файлы (которые всё равно перезаписываются при обновлении), приходится использовать такой костыль в автозагрузке(например в ~/.xsession):

# сброс старых настроек
setxkbmap us -option
# минимальный вариант (главное - забидить клавишу-модификатор для 3 уровня).
setxkbmap us,rup -option "lv3:menu_switch" -print | xkbcomp -I"$HOME/.xkb" - "$DISPLAY"

Все возможные(в базовой) варианты выбора модификаторов можно посмотреть командой

grep lv3: /usr/share/X11/xkb/rules/base.lst

Настройка Emacs (при необходимости):

например так:

(add-to-list 'load-path "~/.xkb/contrib")
(require 'unipunct)

или автоматически с помощью Quelpa (использование master из чужого репозитория в общем случае небезопасно, возможно лучше указывать конкретный хэш)

(use-package unipunct
  :quelpa
  (unipunct
   :url "https://raw.githubusercontent.com/a13/xkb-custom/master/contrib/unipunct.el"
   :fetcher url))

После этого для использования будет доступен метод ввода “russian-unipunct-ng” (главное не забыть установить default-input-method или активировать с помощью reverse-im).

Схема раскладки

новый вариант

Изменения:

  • Й вернулась на старую клавишу
  • Ф перешла на 3й уровень старой клавиши, под Х
  • Э под З
  • Є под Е
+----------------------------------------------------------------+
| 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | -_ | =+ | ’~ |
+----------------------------------------------------------------+
  |йЙїЇ| бБ |уУюЮ| кК |еЕєЄ| нН |гГґҐ|шШщЩ | жЖ |зЗэЭ| [{ | }] |
  +------------------------------------------------------------+
   |хХфФ|ыЫіІ|вВўЎ| аА | пП |рР₽₴|оОёЁ| лЛ | дД | ;: | '" | \| |
   +-----------------------------------------------------------+
       | яЯ |чЧцЦ| сС | мМ | иИ | тТ |ьЬъЪ| ,< | .> | /? |
       +-------------------------------------------------+

старый вариант

+----------------------------------------------------------------+
| 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | -_ | =+ | ’~ |
+----------------------------------------------------------------+
  |ххїЇ| бБ |уУюЮ| кК |еЕэЭ| нН |гГґҐ|шШщЩ | жЖ |зЗєЄ| [{ | }] |
  +------------------------------------------------------------+
   | фФ |ыЫіІ|вВўЎ| аА | пП | рР |оОёЁ| лЛ | дД | ;: | '" | \| |
   +-----------------------------------------------------------+
       |яЯѣѢ|чЧцЦ| сС | мМ |иИйЙ| тТ |ьЬъЪ| ,< | .> | /? |
       +-------------------------------------------------+

  • [ ] Ukrainian-first variant (swap i/ы?)
  • [ ] Literate the sources
  • [ ] Generate all layouts(xkb/emacs) from one source
  • [ ] Support other OSes

About


Languages

Language:Emacs Lisp 100.0%