[LINUX] Ich möchte Mac / Emacs-Tastenkombinationen (Tastaturkürzel) für Ubuntu xkeysnail-Empfehlungen verwenden

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.

1. Installation

$ sudo apt install python3-pip
$ sudo pip3 install xkeysnail

pip ist eine Python-Bibliothekspaketverwaltungssoftware.

2. Erstellen Sie config.py

Vorerst kann es überall sein, also erstelle config.py. Klicken Sie hier für die offizielle config.py.

3. Führen Sie aus

In dem Verzeichnis, in dem sich diese config.py befindet:

$ xhost +SI:localuser:root
$ sudo xkeysnail config.py

Troubleshooting

  1. command not found: xkeysnail

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.

  1. ImportError: sys.meta_path is None, Python is likely shutting down

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.

  1. Xlib.error.DisplayConnectionError: Can't connect to display ":0":

Es wird angezeigt, wenn Sie "xhost +" nicht ausgeführt haben.

Meine config.py


# -*- 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.

Minimaler Python

Für diejenigen, die nicht mit Python vertraut sind.

Kommentar

Kommentar von "#" bis zum Ende der Zeile.

String
Wörterbuch diktieren

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.

define_Keymap-Funktion

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

Key.CAPSLOCKUndKey.ESCDie 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

Reference

Artikel des Autors: https://qiita.com/mooz@github/items/c5f25f27847333dd0b37 GitHub: https://github.com/mooz/xkeysnail

Recommended Posts

Ich möchte Mac / Emacs-Tastenkombinationen (Tastaturkürzel) für Ubuntu xkeysnail-Empfehlungen verwenden
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte wissen, ob Sie Python auf Mac ・ Iroha installieren
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Ich möchte ein Glas aus Python verwenden
Ich möchte IPython Qt Console verwenden
Ich möchte Android-Apps auf Android entwickeln
Ich habe versucht, Resultoon auf Mac + AVT-C875 zu verwenden, war aber unterwegs frustriert.
Wenn ich versuche, Jupiter Notebook auf einem Mac zu verwenden, kann ich nur Python2 auswählen
Ich möchte so etwas wie AutoHotkey mit AutoKey unter Ubuntu (Kali Linux) erreichen.
Ich möchte MATLAB feval mit Python verwenden
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte Ceres Solver aus Python verwenden
Ich möchte -inf nicht mit np.log verwenden
Ich möchte ip vrf mit SONiC verwenden
Ich möchte pyenv + pipenv auch unter Windows machen
Ich möchte die Aktivierungsfunktion Mish verwenden
Vorbereiten der Verwendung von aws cli unter Mac OS X.
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.
Ich möchte ein beliebtes Paket auf PyPi finden
Ich möchte R-Datensatz mit Python verwenden
Ich möchte eine GUI-Entwicklungsumgebung mit Python oder Golang auf dem Mac einrichten
Ich twittere nicht, aber ich möchte tweepy verwenden: Zeigen Sie einfach die Suchergebnisse auf der Konsole an
Ich möchte vorerst Ubuntus Desktop-Umgebung auf Android verwenden (UserLAnd-Version)