Xkeysnail, mit dem Tastaturkürzel konvertiert werden können, ist wunderbar. Verwenden wir sie also.
Auf einem Mac können Sie mit "Strg + a" zum Zeilenanfang und mit "Strg + k" bis zum Zeilenende schneiden, nicht nur im Emacs-Terminal, sondern überall. Ich möchte dies auch unter Ubuntu erreichen. Realisieren von Emacs-Tastenkombinationen in Gnome gnome-tweak-tool
key-theme = Ich war mit Emacs nicht ganz zufrieden, es wurde mit einer Windows-ähnlichen Verknüpfung im Browser überschrieben, insbesondere im Jupyter-Notizbuch. Es ist schwer zu sagen "wähle das Ganze aus". In xkeysnail wird "Strg + a" als Home-Taste gedacht, um an den Anfang der Zeile zu gelangen, damit sie im Browser verwendet werden kann (solange die Webanwendung normale Windows-Ausdrücke unterstützt). Es gibt kein Ubuntu-Element im Besonderen und es kann unter Linux im Allgemeinen verwendet werden.
$ sudo apt install python3-pip
$ sudo pip3 install xkeysnail
pip
ist eine Python-Bibliothekspaketverwaltungssoftware.
Vorerst kann es überall sein, also erstelle config.py
. Klicken Sie hier für die offizielle config.py.
In dem Verzeichnis, in dem sich diese config.py befindet:
$ xhost +SI:localuser:root
$ sudo xkeysnail config.py
Troubleshooting
Wenn Sie "pip3 install ..." anstelle von "sudo pip3 install ..." ausführen, wird es in "~ / .local / bin / xkeysnail" installiert und Ihr PATH befindet sich wahrscheinlich nicht in Ihrem Pfad.
$ pip3 show xkeysnail
(Weggelassen)
Location: /usr/local/lib/python3.6/dist-packages
Sie können das Installationsziel anhand von ansehen. Wenn Sie viele Umgebungen wie conda und pyenv verwenden, achten Sie darauf, welche Umgebung Sie installiert haben. Die Umgebung kann unterschiedlich sein, je nachdem, ob sudo verwendet wird oder nicht. Den vergessenen Sudo Pip wiederholen
$ pip3 uninstall xkeysnail
$ sudo pip3 install xkeysnail
Alternativ können Sie den Pfad auch durchlaufen, wenn Sie möchten, oder ihn mit dem absoluten Pfad ausführen.
Wenn Sie höher schauen, werden Sie spezifischere Fehler finden. Zum Beispiel
FileNotFoundError: [Errno 2] No such file or directory: 'config.pu'
Falscher Dateiname in config.py. Möglicherweise haben Sie in config.py den falschen Schlüsselnamen.
Es wird angezeigt, wenn Sie "xhost +" nicht ausgeführt haben.
# -*- coding: utf-8 -*-
import string
from xkeysnail.transform import *
# define timeout for multipurpose_modmap
define_timeout(1)
# [Global modemap] Change modifier keys as in xmodmap
define_modmap({
Key.CAPSLOCK: Key.ESC, #Verwenden Sie die Feststelltaste als Esc. Es kann viele Strg-Gruppen geben
Key.LEFT_META: Key.RIGHT_META, #Übersicht Deaktivieren:Links ⌘ → Rechts ⌘
})
# Always paste with ⌘-v including terminals
#Keiner ist bedingungslos=Bedeutet alle Anwendungen
define_keymap(None, {
K("Super-v"): [K("C-v"), set_mark(False)],
}, "Paste")
# Mac-like keybindings outside emacs and terminals
#Minimale Emacs-Tastenkombination.
#Offizielle Konfiguration.py ist mehr emacs. C-x C-s → Sie können auch speichern.
mapping = {
# Beginning/End of line
K("C-a"): with_mark(K("home")),
K("C-e"): with_mark(K("end")),
# Delete
K("C-d"): [K("delete"), set_mark(False)],
K("C-h"): with_mark(K("backspace")),
# Kill line
K("C-k"): [K("Shift-end"), K("C-x"), set_mark(False)],
}
#Strg ⌘α für alle Alphabete α+Angenommen, Sie drücken α
for c in string.ascii_lowercase:
mapping[K('Super-' + c)] = K('C-' + c)
#Ändern Sie die Verknüpfung außerhalb von Emacs und Terminal. Hyper ist der Name der Terminalanwendung, die ich verwende.
define_keymap(lambda wm_class: wm_class not in ("Emacs", "Hyper", "Gnome-terminal"),
mapping, "Mac-like")
Sie können es sehen, indem Sie sich die Standardausgabe des Terminals ansehen, auf dem ** wm_class ** xkeysnail mit dem Anwendungsnamen ausführt. Die Anzeige dieser WM_CLASS und der Schlüssel wird durch Hinzufügen der Option xkeysnail -q unterdrückt.
Für diejenigen, die nicht mit Python vertraut sind.
Kommentar von "#" bis zum Ende der Zeile.
Datenstruktur zum Speichern des Schlüssel-Wert-Paares; Verknüpfung, die Sie definieren möchten: Wird verwendet, um die auszuführende Verknüpfung zu geben
.
d = {key1: value1.
key2: value2,
key3: value3}
Es ist in Ordnung, am Ende ein nachfolgendes Komma einzufügen oder nicht "{key3: value3,}".
Kann nach der Erstellung hinzugefügt werden:
d[key4] = value4
#### Tuple, list, set
```python
wm_class not in ("Hyper", "Gnome-terminal", "Emacs")
String wm_Richtig, wenn die Klasse keine der drei ist. Durch den negativen Operator nicht
not (wm_class in ("Hyper", "Gnome-terminal", "Emacs"))
Gleich wie. Wenn du wahr sein willst
wm_class in ("Hyper", "Gnome-terminal", "Emacs")
("a", "b", "c")Ist ein Array, das nicht geändert werden kanntuple.Ein Array, das geändert werden kann, wenn Sie sich nicht um die Details kümmernlist ["a", "b", "c"]Auch eingestelltset {"a", "b", "c"}Ist dasselbe.
Wenn man
wm_class == "Hyper" # True wenn gleich
wm_class! = "Hyper" # True wenn nicht gleich
Aber es ist gut. Vergessen Sie nicht das letzte Komma, wenn Sie ein Tupel mit einem Element verwenden:
wm_class in ("Hyper",)
Ohne Komma
wm_class in "Hyper"
Die Bedeutung ändert sich, wenn sie mit "wm" identisch wird_Klasse ist"Hyper"Ist es ein Teilstring von? Bedeutet.
"ype" in "Hyper" # => True
"ype" in ("Hyper") # => True, ("Hyper") = "Hyper"
"tippe" in ("Hyper",) # => False, "ype" ist "Hyper"
Es ist kein Element einer Menge, die aus einem Element # besteht.
#####Anonyme Funktion Lambda
f = lambda x: x**2
Ist
def f(x):
return x**2
Gleich wie. Anwendungsname wm_Wird verwendet, um eine Funktion zu definieren, die zurückgibt, ob eine Tastenkombination für die Klasse geändert werden soll oder nicht.
Anwendungsnamewm_classSie können ändern, ob die Verknüpfung von konvertiert werden soll.
def define_keymap(condition, mappings: dict, name: str):
BedingungenconditionWörterbücher wannmappingsFührt die in definierte Verknüpfungskonvertierung durch.nameIst der Name einer Einstellung.
Es gibt drei Möglichkeiten, die Bedingung anzugeben:
condition:
Keine: Bedingungslos anwenden
Funktion: Eine Funktion, die den Anwendungsnamen wm_class verwendet und True / False zurückgibt
Regulärer Ausdruck: Regulärer Ausdruck, mit dem wm_class übereinstimmen sollte (Details weggelassen)
Key.CAPSLOCK
UndKey.ESC
Die Liste der Dingekey.pyEs ist geschrieben in.
f Key |
---|
ESC |
TAB |
CAPSLOCK |
LEFT_CTRL, RIGHT_CTRL |
LEFT_SHIFT, RIGHT_SHIFT |
Key | Apple Magic keyboard | Windows keyboard |
---|---|---|
LEFT_META, RIGHT_META | command ⌘ | Win key |
LEFT_ALT, RIGHT_ALT | option ⌥ | Alt |
##K-Funktion
K("C-b")Mit Strg+Repräsentiert b. C kann Strg sein oder durch Hinzufügen von LR auf links oder rechts begrenzt werden.Sie können sehen, wie Sie schreiben, indem Sie eine Taste drücken und die Standardausgabe von xkeysnail anzeigen.Die Modifikatortaste hat auch einen Oberbegriff oder Alias (Win kann Super usw. sein), wenn sie links oder rechts stehen kann..
Modifier key | str for K |
---|---|
Ctrl ^ | C, Ctrl, LC, RC, LCtrl, RCtrl |
Shift | Shift, LShift, RShift |
Win/command ⌘ | Win, Super, LWin, RWin, LSuper, RSuper |
Alt/option ⌥ | Alt, M, LAlt, RAlt, RM, LM |
Referenz: create_modifiers_from_strings(modifier_strs) in transform.py.
##Automatischer Start
Wenn die Einstellungen abgeschlossen sind und es funktioniert, möchte ich es automatisch ausführen, wenn der Computer gestartet wird. Vorerst:
https://hidakatsuya.hateblo.jp/entry/2019/11/20/215608
Artikel des Autors: https://qiita.com/mooz@github/items/c5f25f27847333dd0b37 GitHub: https://github.com/mooz/xkeysnail
Recommended Posts