Я пишу и работаю на нескольких языках: немецком, испанском, французском, греческом, английском. В Mac при нажатии клавиши дольше 2 секунд можно выбирать между специальными символами, производными от основного символа. В Windows есть программное обеспечение Holdkey, которое делает то же самое. Есть ли что-то подобное в Linux? Пока не нашел.
решение1
У меня есть два совета:
- Используйте подходящую раскладку клавиатуры, т.е. раскладку с мертвыми клавишами. Если у вас английская клавиатура, выберите, напримерАнглийский (США, междунар., с неработающими клавишами). Но есть и несколько других вариантов.
- Определитесоставить ключ. Таким образом, вы сможете вводить множество символов, которые не включены в используемую вами раскладку клавиатуры. (Клавиша Compose — это функция XKB, поэтому она доступна в Kubuntu, но вам нужно выяснить, как ее там определить.)
решение2
Если вы не боитесь настройки (инструкции должны быть понятными), ниже вы можете найти альтернативный вариант для быстрой вставки часто используемых специальных символов (-альтернатив).
Инструмент редактирования специальных символов
Приведенный ниже скрипт представляет собой гибкий инструмент (окно для вставки символов одним щелчком мыши), позволяющий быстро получить доступ к часто используемым символам:
Как это работает
- Вызов окна с помощью сочетания клавиш
- Чтобы вставить символ, просто щелкните по нему, и он будет вставлен в окно, в котором вы работали.
Чтобы добавить набор символов, нажмите + Откроется окно текстового редактора. Добавьте свою «семейную» фамилию в первую строку, соответствующие специальные символы в следующие строки, по одному символу в каждой строке, например:
a å ä ã â á à ª
(из изображения). Закройте файл, специальные символы будут доступны с этого момента при следующем вызове окна.
- чтобы удалить набор доступных символов, нажмитеx
Как настроить
Вам необходимо удовлетворить несколько зависимостей:
python3-xlib
sudo apt install python3-xlib
pyautogui:
pip3 install pyautogui
пиперклип:
sudo apt install python3-pyperclip xsel xclip
Возможно, вам придется установить Wnck:
python3-gi gir1.2-wnck-3.0
Выйдите из системы и войдите снова.
Скопируйте скрипт ниже в пустой файл, сохраните его как
specialchars.py
исделать его исполняемым#!/usr/bin/env python3 import os import gi gi.require_version("Gtk", "3.0") gi.require_version('Wnck', '3.0') from gi.repository import Gtk, Wnck, Gdk import subprocess import pyperclip import pyautogui css_data = """ .label { font-weight: bold; color: blue; } .delete { color: red; } """ fpath = os.environ["HOME"] + "/.specialchars" def create_dirs(): try: os.mkdir(fpath) except FileExistsError: pass def listfiles(): files = os.listdir(fpath) chardata = [] for f in files: f = os.path.join(fpath, f) chars = [s.strip() for s in open(f).readlines()] try: category = chars[0] members = chars[1:] except IndexError: os.remove(f) else: chardata.append([category, members, f]) chardata.sort(key=lambda x: x[0]) return chardata def create_newfamily(button): print("yay") n = 1 while True: name = "charfamily_" + str(n) file = os.path.join(fpath, name) if os.path.exists(file): n = n + 1 else: break open(file, "wt").write("") subprocess.Popen(["xdg-open", file]) class Window(Gtk.Window): def __init__(self): Gtk.Window.__init__(self) self.set_decorated(False) # self.set_active(True) self.set_keep_above(True); self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) self.connect("key-press-event", self.get_key) self.set_default_size(0, 0) self.provider = Gtk.CssProvider.new() self.provider.load_from_data(css_data.encode()) self.maingrid = Gtk.Grid() self.add(self.maingrid) chardata = listfiles() # get the currently active window self.screendata = Wnck.Screen.get_default() self.screendata.force_update() self.curr_subject = self.screendata.get_active_window().get_xid() row = 0 for d in chardata: bbox = Gtk.HBox() fambutton = Gtk.Button(d[0]) fambutton_cont = fambutton.get_style_context() fambutton_cont.add_class("label") fambutton.connect("pressed", self.open_file, d[2]) Gtk.StyleContext.add_provider( fambutton_cont, self.provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION, ) fambutton.set_tooltip_text( "Edit special characters of '" + d[0] + "'" ) bbox.pack_start(fambutton, False, False, 0) for c in d[1]: button = Gtk.Button(c) button.connect("pressed", self.replace, c) button.set_size_request(1, 1) bbox.pack_start(button, False, False, 0) self.maingrid.attach(bbox, 0, row, 1, 1) deletebutton = Gtk.Button("X") deletebutton_cont = deletebutton.get_style_context() deletebutton_cont.add_class("delete") Gtk.StyleContext.add_provider( deletebutton_cont, self.provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION, ) deletebutton.connect("pressed", self.delete_file, d[2], bbox) deletebutton.set_tooltip_text("Delete family") self.maingrid.attach(deletebutton, 100, row, 1, 1) row = row + 1 addbutton = Gtk.Button("+") addbutton.connect("pressed", create_newfamily) addbutton.set_tooltip_text("Add family") self.maingrid.attach(addbutton, 100, 100, 1, 1) self.maingrid.attach(Gtk.Label("- Press Esc to exit -"), 0, 100, 1, 1) self.show_all() Gtk.main() def get_key(self, button, val): # keybinding to close the previews if Gdk.keyval_name(val.keyval) == "Escape": Gtk.main_quit() def replace(self, button, char, *args): pyperclip.copy(char) subprocess.call(["wmctrl", "-ia", str(self.curr_subject)]) pyautogui.hotkey('ctrl', 'v') Gtk.main_quit() def open_file(self, button, path): subprocess.Popen(["xdg-open", path]) def delete_file(self, button, path, widget): os.remove(path) widget.destroy() button.destroy() self.resize(10, 10) create_dirs() Window()
Настройте сочетание клавиш для запуска:
python3 /path/to/specialchars.py
При первом запуске вы увидите только +кнопку. Начните добавлять "семьи" ваших персонажей и перезапустите (-вызовите) окно, чтобы все было доступно в один клик.
Вот и все...
решение3
Для ввода специальных символов в Linux можно использовать Unicode.
Чтобы ввести специальный символ, сначала нажмите клавиши CTRL+ SHIFT+ U, а затем отпустите клавиши.
Затем введите шестнадцатеричный код символа, который вы хотите вставить, и нажмитеENTER
Шестнадцатеричный код для «ü» — 00fc
.
Нажмите здесь, чтобы увидеть страницу Википедии о символах Unicode.
Нажмите здесь, чтобы увидеть страницу Википедии о математических символах Unicode.