¿Existe alguna aplicación o comando que permita insertar caracteres especiales, diéresis y letras extranjeras?

¿Existe alguna aplicación o comando que permita insertar caracteres especiales, diéresis y letras extranjeras?

Escribo y trabajo en varios idiomas: alemán, español, francés, griego, inglés. En mac, cuando presionas una tecla durante más de 2 segundos, puedes elegir entre caracteres especiales derivados de un personaje principal. En windows existe un software llamado Holdkey que hace lo mismo. ¿Hay algo similar en Linux? No lo he encontrado todavía.

Respuesta1

Tengo dos consejos:

  1. Utilice una distribución de teclado adecuada, es decir, una distribución con teclas muertas. Si tienes un teclado en inglés, elige, por ejemploInglés (EE. UU., intl., con teclas muertas). Pero existen varias otras variantes.
  2. Definir uncomponer clave. De esa manera podrás escribir muchos caracteres que no están incluidos en la distribución del teclado que estás utilizando. (La clave de redacción es una característica de XKB, por lo que está disponible en Kubuntu, pero debes descubrir cómo definirla allí).

Respuesta2

Si no tiene miedo de configurar (las instrucciones deben ser claras), a continuación puede brindarle una alternativa para insertar rápidamente el carácter especial que usa con frecuencia (-alternativas).

Herramienta de carácter especial editable

El siguiente script es una herramienta flexible (una ventana desde la que insertar caracteres, con un clic) para tener disponibles los caracteres de uso frecuente en un segundo:

ingrese la descripción de la imagen aquí

Cómo funciona

  • Llama a la ventana con un atajo.
  • Para insertar un carácter, simplemente haga clic en él y lo pegará en la ventana en la que estaba trabajando.
  • Para agregar un conjunto de caracteres, presione. + Se abrirá una ventana del editor de texto, agregue su nombre "familiar" en la primera línea, caracteres especiales relacionados en las siguientes líneas, un carácter por línea, por ejemplo:

    a
    å
    ä
    ã
    â
    á
    à
    ª
    

    (de la imagen). Cierre el archivo, los caracteres especiales estarán disponibles a partir de ahora la próxima vez que abra la ventana.

  • para eliminar un conjunto de caracteres disponibles, presionex

Como instalar

  1. Necesita satisfacer algunas dependencias:

    • python3-xlib

      sudo apt install python3-xlib
      
    • pyautogui:

      pip3 install pyautogui
      
    • hiperclip:

      sudo apt install python3-pyperclip xsel xclip
      
    • Quizás tengas que instalar Wnck:

      python3-gi gir1.2-wnck-3.0
      

    Cerrar sesión y volver a iniciar sesión.

  2. Copie el siguiente script en un archivo vacío, guárdelo como specialchars.pyyhacerlo ejecutable

    #!/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. Configure una tecla de acceso directo para ejecutar:

    python3 /path/to/specialchars.py
    

En la primera ejecución, solo verá un +botón. Comience a agregar las "familias" de sus personajes y reinicie (-llame) la ventana para tenerlos todos disponibles con un clic.

Eso es todo...

Respuesta3

Puede utilizar Unicode para escribir caracteres especiales en Linux.

Para escribir un carácter especial, primero presione CTRL+ SHIFT+ Uy luego suelte las teclas.

A continuación, escriba el código hexadecimal del carácter que desea insertar y luego presioneENTER

El código hexadecimal para "ü" es 00fc.

Haga clic aquí para ver la página de Wikipedia para caracteres Unicode.

Haga clic aquí para ver la página de Wikipedia sobre caracteres matemáticos Unicode.

información relacionada