Как я добавляю пользовательский, составляют ключевые правила в 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
незначительный сбой:
.
Когда я попробовал 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
.
Что я должен сделать, чтобы заставить мой Составлять ключевую работу правильно?
Ссылка, на которую Вы указываете, в основном корректна с несколькими протестами:
Сочините вставляет символ, соответствующий первому (самому короткому) соответствию. Предположим .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):
GtkIMContextSimple читает дополнительные составные последовательности из первого из следующих файлов, который найден:
~/.config/gtk-3.0/Compose
~/.XCompose,/usr/share/X11/locale/$locale/Compose (для локалей, которые имеют нетривиальное, Составляют файл),
Таким образом, gtk-im-context-simple метод имеет встроенную таблицу, и он загружает составные последовательности из нескольких дополнительных местоположений. Это означает, что могло возможная загрузка более короткие последовательности, которые Вы не ожидаете.
Существует несколько возможностей для 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 является более современным методом ввода.
Существует несколько методов ввода, которые используются для языков, которые используют нелатинские сценарии / алфавиты.
Существует два встроенных модуля, которые не перечислены инструментом, которые являются:
Возможно записать Ваш собственный модуль, если у Вас есть необходимые навыки программирования, см. документацию 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
и т.д.