私はドイツ語、スペイン語、フランス語、ギリシャ語、英語など、いくつかの言語で執筆や仕事をしています。Mac では、キーを 2 秒以上押し続けると、メイン文字から派生した特殊文字を選択できます。Windows には、同じ機能を持つ Holdkey というソフトウェアがあります。Linux にも同様のものがあるのでしょうか。まだ見つけていません。
答え1
アドバイスが2つあります。
- 適切なキーボードレイアウト、つまりデッドキーのあるレイアウトを使用してください。英語キーボードを使用している場合は、たとえば英語(米国、国際、デッドキー付き)ただし、他にもいくつかのバリエーションがあります。
- 定義するキーを作成するそうすれば、使用しているキーボード レイアウトに含まれていない多くの文字を入力できるようになります。(Compose キーは XKB の機能なので、Kubuntu でも使用できますが、そこで定義する方法を理解する必要があります。)
答え2
設定に不安がない場合は(手順が明確であるはずです)、以下に、よく使用する特殊文字(-alternatives)をすばやく挿入する代替手段を示します。
編集可能な特殊文字ツール
以下のスクリプトは、よく使用する文字をすぐに使用できるようにする柔軟なツール (クリックして文字を挿入するウィンドウ) です。
使い方
- ショートカットでウィンドウを呼び出す
- 文字を挿入するには、その文字をクリックするだけで、作業していたウィンドウにその文字が貼り付けられます。
文字セットを追加するには、 を押します。+ テキスト エディター ウィンドウが開きます。最初の行に「家族」の名前を追加し、次の行に関連する特殊文字を 1 行に 1 文字ずつ追加します。例:
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
初回実行時には+ボタンのみが表示されます。キャラクターの「ファミリー」の追加を開始し、ウィンドウを再起動 (-call) すると、クリックするだけですべてが使用できるようになります。
それでおしまい...
答え3
Linux では Unicode を使用して特殊文字を入力できます。
特殊文字を入力するには、まずCTRL+ SHIFT+を押してUからキーを放します。
次に、挿入したい文字の16進コードを入力して、ENTER
「ü」の16進コードは です00fc
。