Я пишу и работаю на нескольких языках: немецком, испанском, французском, греческом, английском. В Mac, когда вы нажимаете клавишу более 2 секунд, вы можете выбирать между специальными символами, производными от основного символа. В Windows есть программное обеспечение под названием Holdkey, которое делает то же самое. Есть ли что-нибудь подобное в Linux. Я еще не нашел его.
Вы можете использовать юникод для ввода специальных символов в Linux.
Чтобы ввести специальный символ, сначала нажмите клавишу CTRL kbd> + SHIFT kbd> + U kbd>
Затем введите шестнадцатеричный код для символа, который вы хотите вставить, а затем нажмите ENTER kbd>
Шестнадцатеричный код для «ü» - 00fc
.
Нажмите здесь, чтобы увидеть страницу Википедии для символов Юникода.
Нажмите здесь, чтобы увидеть страницу Википедии с математическими символами Юникода.
У меня есть два совета:
Если Вы не боитесь настроить (указания должны быть четкими), ниже мог бы дать Вам альтернативу для быстрой вставки часто используемого специального символа (-альтернативы).
Сценарий ниже является гибким инструментом (окно для вставки символов от в щелчке), чтобы часто использовать символы, доступные за секунду:
Для добавления ряда символов нажмите +, окно текстового редактора откроется, добавить имя "семейства" на первой строке, связанные специальные символы на следующих строках, один символ на строку, например:
a
å
ä
ã
â
á
à
ª
(из изображения). Закройте файл, специальные символы будут доступны с этого времени со следующего раза, когда Вы называете окно.
Необходимо удовлетворить несколько зависимостей:
python3-xlib
sudo apt install python3-xlib
pyautogui:
pip3 install pyautogui
pyperclip:
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
На первом показе Вы будете только видеть + кнопка. Начните Добавлять свои символьные "семейства" и перезапуск (-вызов) окно для имения всех в наличии в щелчке.
Именно...