Gibt es eine Anwendung oder einen Befehl, mit dem Sie Sonderzeichen, Umlaute und Fremdbuchstaben einfügen können?

Gibt es eine Anwendung oder einen Befehl, mit dem Sie Sonderzeichen, Umlaute und Fremdbuchstaben einfügen können?

Ich schreibe und arbeite in mehreren Sprachen: Deutsch, Spanisch, Französisch, Griechisch, Englisch. Wenn Sie auf einem Mac eine Taste länger als 2 Sekunden drücken, können Sie zwischen Sonderzeichen wählen, die von einem Hauptzeichen abgeleitet sind. Unter Windows gibt es eine Software namens Holdkey, die dasselbe tut. Gibt es etwas Ähnliches unter Linux? Ich habe es noch nicht gefunden.

Antwort1

Ich habe zwei Ratschläge:

  1. Verwenden Sie ein geeignetes Tastaturlayout, also ein Layout mit Tottasten. Wenn Sie eine englische Tastatur haben, wählen Sie zum BeispielEnglisch (USA, international, mit Tottasten). Es gibt aber noch zahlreiche andere Varianten.
  2. Definieren Sie einenCompose-Taste. Auf diese Weise können Sie viele Zeichen eingeben, die nicht im von Ihnen verwendeten Tastaturlayout enthalten sind. (Die Compose-Taste ist eine XKB-Funktion und daher in Kubuntu verfügbar, Sie müssen jedoch herausfinden, wie Sie sie dort definieren.)

Antwort2

Wenn Sie keine Angst vor der Einrichtung haben (die Anweisungen sollten klar sein), finden Sie unten möglicherweise eine Alternative zum schnellen Einfügen Ihrer häufig verwendeten Sonderzeichen (-Alternativen).

Editierbares Sonderzeichen-Tool

Das folgende Skript ist ein flexibles Tool (Fenster zum Einfügen von Zeichen mit einem Klick), um häufig verwendete Zeichen in Sekundenschnelle zur Verfügung zu haben:

Bildbeschreibung hier eingeben

Wie es funktioniert

  • Rufen Sie das Fenster mit einer Verknüpfung auf
  • Um ein Zeichen einzufügen, klicken Sie einfach darauf. Das Zeichen wird dann in das Fenster eingefügt, in dem Sie gearbeitet haben.
  • Um einen Satz von Zeichen hinzuzufügen, drücken Sie. + Ein Texteditorfenster wird geöffnet. Fügen Sie Ihren „Familiennamen“ in die erste Zeile ein und die entsprechenden Sonderzeichen in die nächsten Zeilen, ein Zeichen pro Zeile, zum Beispiel:

    a
    å
    ä
    ã
    â
    á
    à
    ª
    

    (aus dem Bild). Schließen Sie die Datei, die Sonderzeichen stehen Ihnen ab sofort beim nächsten Aufruf des Fensters zur Verfügung.

  • um einen Satz verfügbarer Zeichen zu löschen, drücken Siex

Wie stellt man das ein

  1. Sie müssen einige Abhängigkeiten erfüllen:

    • python3-xlib

      sudo apt install python3-xlib
      
    • pyautogui:

      pip3 install pyautogui
      
    • pyperclip:

      sudo apt install python3-pyperclip xsel xclip
      
    • Möglicherweise müssen Sie Wnck installieren:

      python3-gi gir1.2-wnck-3.0
      

    Melden Sie sich ab und wieder an.

  2. Kopieren Sie das untenstehende Skript in eine leere Datei, speichern Sie es unter specialchars.pyundausführbar machen

    #!/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()
    
  3. Richten Sie eine Tastenkombination zum Ausführen ein:

    python3 /path/to/specialchars.py
    

Beim ersten Ausführen wird nur eine +Schaltfläche angezeigt. Beginnen Sie mit dem Hinzufügen Ihrer Charakter-„Familien“ und starten Sie das Fenster neu (-aufrufen), um alles mit einem Klick verfügbar zu haben.

Das ist es...

Antwort3

Sie können Unicode verwenden, um Sonderzeichen unter Linux einzugeben.

Um ein Sonderzeichen einzugeben, drücken Sie zuerst CTRL+ SHIFT+ Uund lassen Sie dann die Tasten los.

Geben Sie anschließend den Hexadezimalcode für das Zeichen ein, das Sie einfügen möchten, und drücken Sie dannENTER

Der Hexadezimalcode für „ü“ ist 00fc.

Klicken Sie hier, um die Wikipedia-Seite zu Unicode-Zeichen anzuzeigen.

Klicken Sie hier, um die Wikipedia-Seite für Unicode-Mathematikzeichen anzuzeigen.

verwandte Informationen