X compose и русский [РЕШЕНО]

Никакой DE нет, голый openbox.
Настроил compose так: setxkbmap -option "compose:caps".
Всё работает, хоть с зажатым caps, хоть после тычка. Но только на латинской раскладке. Очень неудобно, что, скажем, для ввода знака градуса в русском тексте надо переключиться на латиницу, нажать Caps,o,o, и опять вернуться на кириллицу.
Нет ли какого-то способа вводить compose-последовательности независимо от текущей раскладки? Попробовал внаглую добавить grp:caps_switch - не помогает.

UPD Решение ниже
akorop
для ввода знака градуса в русском тексте надо переключиться на латиницу, нажать Caps,o,o, и опять вернуться на кириллицу

Через ~/.XCompose можете настроить
Вики
Вики русский с примером
Статья на хабре с примерами
В ~/.xprofile
export GTK_IM_MODULE=xim
export QT_IM_MODULE="xim"
export XMODIFIERS="@im=none"

В ~/.XCompose
# .XCompose
#бла бла предыдущие комбинации
#знак градуса
<Multi_key> <o>                 : "°"   degree       # DEGREE SIGN
<Multi_key> <Cyrillic_shcha>    : "°"   degree       # DEGREE SIGN
#бла бла следущие

После настройки перезагрузить иксы или просто ребут

Может сейчас и что поновее есть, но старый метод тоже по прежнему работает.
А не проще не устанавливать никаких compose, а просто, в случае необходимости, перейти в utf-режим и ввести 16-ричный utf-код символа. Эти символы используются редко, а часто употребляемых символов, думаю, не больше 10. Если трудно запомнить, можно создать текстовой файл-подсказку с описанием этих символов, а вызов файла повесить на горячую клавишу - а потом или набрать этот код (набирается даже в libreoffice) или скопировать символ.
Пример файла-подсказки
±  - 00b1
°  - 00b0 (знак градуса)
⁰  - 2070 (верхний ноль)
§ - 00a7
Σ - 03a3
Ошибки не исчезают с опытом - они просто умнеют
vs220
Через ~/.XCompose можете настроить
Правильно ли я понял, что предлагается вместо временного переключения клавы на латиницу тупо продублировать все реально нужные коды для кириллических клавиш? Типа если для градуса было Compose+o+o (латинское o), то добавить также и Compose+щ+щ ?
В принципе, решение, но очень уж горбатое... РЕШЕНО пока не ставлю...
vasek
А не проще не устанавливать никаких compose, а просто, в случае необходимости, перейти в utf-режим и ввести 16-ричный utf-код символа. Эти символы используются редко, а часто употребляемых символов, думаю, не больше 10. Если трудно запомнить, можно создать текстовой файл-подсказку с описанием этих символов, а вызов файла повесить на горячую клавишу
От такого градусы не в радость будут :)
Я сейчас пользуюсь куда более удобным способом - несколько чаще других применяющихся символов брал по очереди в clipboard, а затем закрепил в истории clipit. Но хочется такого решения, которым можно воспользоваться и на чужом компьютере, не устанавливая левых хелпов или менеджеров буфера обмена.
akorop
но очень уж горбатое
Мало чем отличается от того что используется по умолчанию.
Compose сочетания прописываются в /usr/share/X11/locale/используемая локаль/Compose
В ru_RU.UTF-8 просто ссылка на en_US.UTF-8 а там градусы для кириллицы не прописаны.
Так что в любом случае прописывать самому или искать готовый.
В сети есть готовые ~/.XCompose если лень самому прописать, ну и по крайней мере удобней чем ваш метод с clipboard

Есть еще IBus но я его не крутил

И можно еще такой вариант использовать
добавить
setxkbmap -option grp:rwin_switch
Тогда при нажатой rwin можно будет временно ввести английские символы при русской раскладке ( и наоборот - временное включение другой раскладки при зажатой клавише)
Для градуса тогда жмем Compose rwin и щ щ
Вместо rwin_switch можно использовать
grp:switch Right Alt (while pressed)
grp:lswitch Left Alt (while pressed)
grp:lwin_switch Left Win (while pressed)
grp:rwin_switch Right Win (while pressed)
grp:win_switch Any Win key (while pressed)
grp:caps_switch Caps Lock (while pressed), Alt+Caps Lock does the original capslock action
grp:rctrl_switch Right Ctrl (while pressed)
см ман xkeyboard-config
vs220
setxkbmap -option grp:rwin_switch
Тогда при нажатой rwin можно будет временно ввести английские символы при русской раскладке
К сожалению, это работает не так. rwin_switch и все ей подобные включают безусловно вторую группу, то есть в данном случае русский. А хочется в аккурат наоборот.
akorop
К сожалению, это работает не так. rwin_switch и все ей подобные включают безусловно вторую группу, то есть в данном случае русский
Что то вы не правильно прописали.
Вот такое в автозагрузке и при нажатом правом альте работает противоположная раскладка ( проведение аналогично shift только не для больших букв а для раскладки)
setxkbmap -layout "us,ru"
setxkbmap -option caps:none
setxkbmap -option grp_led:scroll
setxkbmap -option compose:rwin
setxkbmap -option grp:switch
s1kls 133 66

Ввел сейчас setxkbmap -option grp:rwin_switch и меняется и при нажатом rwin
Если вы хотите и раскладку переключать setxkbmap
то такая примерно конструкция( правый win при нажатой другая раскладка, левый win переключает раскладки)
setxkbmap -layout "us,ru" -option grp:rwin_switch
setxkbmap -layout us,ru  -option  grp:lwin_toggle
setxkbmap -option grp_led:scroll
setxkbmap -option compose:caps
Проверил все работает так как и говорил так что ищите ошибку
vs220
Проверил все работает так как и говорил так что ищите ошибку
Иксы у нас, что ли, разные... Вот что у меня написано открытым текстом в файле /usr/share/X11/xkb/symbols/group:
// The right Win key (while pressed) chooses the second keyboard group.
// (Using this map, you should declare your keyboard as pc101 or pc102
// instead of pc104 or pc105.)
partial modifier_keys
xkb_symbols "rwin_switch" {
    key <RWIN> {
        symbols[Group1] = [ Mode_switch, Multi_key ],
        virtualMods= AltGr
    };
};
И именно так оно и работает - устанавливает second keyboard group, а вовсе не переключает от текущей раскладки к другой.
Тут, правда, есть малопонятные слова про pc101 or pc102 instead of pc104 or pc105, а у меня как раз pc105...
 
Зарегистрироваться или войдите чтобы оставить сообщение.