Пользовательский ComposeKey упорядочивает в 18,04

Как я добавляю пользовательский, составляют ключевые правила в Ubuntu 18.04? Я повернулся, мои Сочинять включают Тонкие настройки Gnome использования (это находится на CapsLock), создал a .XCompose запуск с этих строк:

include "%L"   # import the default Compose file for your locale

# IPA

<Multi_key> <a> <h>                        : "ɑ" 
<Multi_key> <A> <h>                        : "Ɑ"
# Some more lines
<Multi_key> <ampersand> <underscore> <m>   : "̼"



# Math

<Multi_key> <minus> <0>          : "−"
<Multi_key> <asterisk> <1>       : "⋅"
<Multi_key> <x> <x>              : "×"
# ...

Я последовал этому совету, установленному uim и набор это как GTK_ и QT_IM_MODULE но каждая последовательность, запускающаяся с <minus> <0> строка проигнорирована. Когда я попробовал xim, это сделало немного лучше, но это сделало gedit незначительный сбой:

xim glitch

.

Когда я попробовал GTK_IM_MODULE=gtk-im-context-simple, большинство последовательностей начало работать, но некоторые из них просто не делают.

<Multi_key> <minus> <0>          : "−"  # doesn't work
<Multi_key> <asterisk> <1>       : "⋅"  # doesn't work
<Multi_key> <e> <m> <o> <colon> <space>          : " "  # works
<Multi_key> <e> <m> <o> <colon> <Up>             : " "  # works
<Multi_key> <e> <m> <o> <x> <asterisk> <space>   : " "  # doesn't work
<Multi_key> <e> <m> <o> <c> <a> <l> <l>          : " "  # doesn't work
<Multi_key> <e> <m> <o> <o> <k>                  : " "  # works
<Multi_key> <w> <t> <f>                    : "ಠ_ಠ"       # doesn't work
<Multi_key> <w> <h> <y>                    : "ლ(ಠ益ಠლ)"  # doesn't work
<Multi_key> <0> <space>      : "​" # zero-width space doesn't work

.

Что я должен сделать, чтобы заставить мой Составлять ключевую работу правильно?

2
задан 20 May 2018 в 17:52

2 ответа

Ссылка, на которую Вы указываете, в основном корректна с несколькими протестами:

  • Сочините вставляет символ, соответствующий первому (самому короткому) соответствию. Предположим .XCompose содержит следующие записи:

     <Multi_key> <space>                  : " "   nobreakspace # NO-BREAK SPACE
     <Multi_key> <space> <space>          : " "   U2002        # EN SPACE
     <Multi_key> <space> <space> <space>  : " "   U2003        # EM SPACE
    

    Попытки использовать КОРОТКИЙ ПРОБЕЛ или ДЛИННЫЙ ПРОБЕЛ никогда не будут работать.

  • Для получения Сочиняют, чтобы работать с GTK, добавить следующую строку к .profile:

    export GTK_IM_MODULE=gtk-im-context-simple
    

Относительно gtk-im-context-simple, Jens Mühlenhoff отмечает (1, 2):

В документации API:

GtkIMContextSimple читает дополнительные составные последовательности из первого из следующих файлов, который найден:

  • ~/.config/gtk-3.0/Compose

  • ~/.XCompose,/usr/share/X11/locale/$locale/Compose (для локалей, которые имеют нетривиальное, Составляют файл),

Таким образом, gtk-im-context-simple метод имеет встроенную таблицу, и он загружает составные последовательности из нескольких дополнительных местоположений. Это означает, что могло возможная загрузка более короткие последовательности, которые Вы не ожидаете.

1
ответ дан 2 December 2019 в 04:43

Существует несколько возможностей для Gtk + модули метода ввода.

Я является модулем, решает, как дополнительный вход в стороне прямой ключевой перевод обрабатывается в Gtk +.

Таким образом, доступные сочиняют, сочетания клавиш зависят от того, что я - модуль, который Вы используете. (Символьное название X11 составить ключа Multi_key btw.)

gtk-query-immodules-3.0 команда может использоваться для показа установленных модулей, и она может также привыкнуть к upate кэш (с sudo gtk-query-immodules-3.0 --update-cache).

Демонстрационный вывод:

# GTK+ Input Method Modules file
# Automatically generated file, do not edit
# Created by gtk-query-immodules-3.0 from gtk+-3.24.1
#
# ModulesPath = /usr/lib64/gtk-3.0/3.0.0/x86_64-pc-linux-gnu/immodules:/usr/lib64/gtk-3.0/3.0.0/immodules:/usr/lib64/gtk-3.0/x86_64-pc-linux-gnu/immodules:/usr/lib64/gtk-3.0/immodules
#
"/usr/lib64/gtk-3.0/3.0.0/immodules/im-am-et.so" 
"am_et" "Amharic (EZ+)" "gtk30" "/usr/share/locale" "am" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-cedilla.so" 
"cedilla" "Cedilla" "gtk30" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-cyrillic-translit.so" 
"cyrillic_translit" "Cyrillic (Transliterated)" "gtk30" "/usr/share/locale" "" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-ibus.so" 
"ibus" "IBus (Intelligent Input Bus)" "ibus" "" "ja:ko:zh:*" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-inuktitut.so" 
"inuktitut" "Inuktitut (Transliterated)" "gtk30" "/usr/share/locale" "iu" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-ipa.so" 
"ipa" "IPA" "gtk30" "/usr/share/locale" "" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-multipress.so" 
"multipress" "Multipress" "gtk30" "" "" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-thai.so" 
"thai" "Thai-Lao" "gtk30" "/usr/share/locale" "lo:th" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-ti-er.so" 
"ti_er" "Tigrigna-Eritrean (EZ+)" "gtk30" "/usr/share/locale" "ti" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-ti-et.so" 
"ti_et" "Tigrigna-Ethiopian (EZ+)" "gtk30" "/usr/share/locale" "ti" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-viqr.so" 
"viqr" "Vietnamese (VIQR)" "gtk30" "/usr/share/locale" "vi" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-wayland.so" 
"wayland" "Wayland" "gtk30" "/usr/share/locale" "" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-waylandgtk.so" 
"waylandgtk" "Waylandgtk" "gtk30" "/usr/share/locale" "" 

"/usr/lib64/gtk-3.0/3.0.0/immodules/im-xim.so" 
"xim" "X Input Method" "gtk30" "/usr/share/locale" "ko:ja:th:zh" 

xim является традиционным Методом ввода X11.

ibus является более современным методом ввода.

Существует несколько методов ввода, которые используются для языков, которые используют нелатинские сценарии / алфавиты.

Существует два встроенных модуля, которые не перечислены инструментом, которые являются:

  • gtk-im-context-none (который отключает весь усовершенствованный вход),
  • gtk-im-context-simple (который описан хорошо в ответе xiotas),

Возможно записать Ваш собственный модуль, если у Вас есть необходимые навыки программирования, см. документацию API здесь:

https://developer.gnome.org/gtk3/stable/GtkIMContext.html#GtkIMContext.description

Я нашел, что полезный инструмент тестирования легко испытал методы ввода:

https://github.com/ibus/ibus/files/1829333/window.py.txt

from gi import require_version as gi_require_version
gi_require_version('Gtk', '3.0')
gi_require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
import sys

label = None

def __entry_key_press_cb(entry, event):
    label.set_text('%s %x %x' % (Gdk.keyval_name(event.keyval), event.hardware_keycode, event.state))

Gtk.init(sys.argv)
window = Gtk.Window(type = Gtk.WindowType.TOPLEVEL)
window.connect('destroy', Gtk.main_quit)
box = Gtk.Box(orientation = Gtk.Orientation.VERTICAL, spacing = 0)
window.add(box)
entry = Gtk.Entry()
entry.connect('key-press-event', __entry_key_press_cb)
#box.pack_start(entry, False, False, 0)
box.add(entry)
label  = Gtk.Label(label = 'Press keys')
#box.pack_start(label, False, False, 0)
box.add(label)
window.show_all()
Gtk.main()

Можно выполнить его как это:

env GTK_IM_MODULE=gtk-im-context-simple python window.py

или

env GTK_IM_MODULE=xim python window.py

и т.д.

0
ответ дан 2 December 2019 в 04:43

Другие вопросы по тегам:

Похожие вопросы: