[LINUX] Je souhaite utiliser les raccourcis clavier Mac / emacs (raccourcis clavier) sur les recommandations Ubuntu xkeysnail

Xkeysnail qui peut convertir des raccourcis clavier est merveilleux, alors utilisons-le.

Sur Mac, vous pouvez utiliser Ctrl + a pour aller au début d'une ligne et Ctrl + k pour couper jusqu'à la fin d'une ligne, pas seulement dans le terminal emacs, mais partout. Je veux également y parvenir sur Ubuntu. Réalisation des raccourcis clavier emacs dans Gnome gnome-tweak-tool key-theme = Je n'étais pas tout à fait satisfait d'Emacs; il a été écrasé par un raccourci de type Windows dans le navigateur, en particulier dans le bloc-notes Jupyter avec Ctrl-a. Il est difficile de dire «sélectionner le tout». Dans xkeysnail, Ctrl + a est fait pour penser comme la touche Accueil pour se déplacer au début de la ligne, afin qu'il puisse être utilisé dans le navigateur (tant que l'application Web prend en charge les expressions Windows ordinaires). Il n'y a pas d'élément Ubuntu en particulier et il peut être utilisé sous Linux en général.

1. Installation

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

pip est un logiciel de gestion de paquets de bibliothèques Python.

2. Créez config.py

Pour le moment, cela peut être n'importe où, alors créez config.py. Cliquez ici pour le fichier config.py officiel.

3. Exécuter

Dans le répertoire où se trouve ce config.py:

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

Troubleshooting

  1. command not found: xkeysnail

Si vous faites pip3 install ... au lieu de sudo pip3 install ..., il sera installé dans ~ / .local / bin / xkeysnail et votre PATH n'est probablement pas dans votre chemin.

$ pip3 show xkeysnail
(Omis)
Location: /usr/local/lib/python3.6/dist-packages

Vous pouvez trouver la destination de l'installation en regardant. Si vous utilisez de nombreux environnements tels que conda ou pyenv, faites attention à l'environnement que vous avez installé. L'environnement peut différer selon que sudo est utilisé ou non. Pour refaire le pip sudo oublié

$ pip3 uninstall xkeysnail
$ sudo pip3 install xkeysnail

Sinon, passez-le par le PATH si vous le souhaitez, ou exécutez-le avec le PATH absolu.

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

Si vous regardez plus haut, vous trouverez des erreurs plus spécifiques. Par exemple

FileNotFoundError: [Errno 2] No such file or directory: 'config.pu'

Nom de fichier incorrect dans config.py. Vous avez peut-être le mauvais nom de clé dans config.py.

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

Il apparaît si vous n'avez pas fait xhost +.

Mon 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,  #Utilisez le verrouillage des majuscules comme Echap. Il peut y avoir de nombreux groupes Ctrl
    Key.LEFT_META: Key.RIGHT_META, #vue d'ensemble Désactiver:Gauche ⌘ → Droite ⌘
})

# Always paste with ⌘-v including terminals
#Aucun n'est inconditionnel=Désigne toutes les applications
define_keymap(None, {
    K("Super-v"): [K("C-v"), set_mark(False)],
}, "Paste")


# Mac-like keybindings outside emacs and terminals
#Liaison de touches emacs minimale.
#Config officielle.py est plus emacs. C-x C-s → Vous pouvez également enregistrer.
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)],
}

#Ctrl ⌘α pour tous les alphabets α+Supposons que vous appuyez sur α
for c in string.ascii_lowercase:
    mapping[K('Super-' + c)] = K('C-' + c)

#Modifiez le raccourci en dehors d'Emacs et du Terminal. Hyper est le nom de l'application de terminal que j'utilise.
define_keymap(lambda wm_class: wm_class not in ("Emacs", "Hyper", "Gnome-terminal"),
              mapping, "Mac-like")

Vous pouvez le voir en regardant la sortie standard du terminal où ** wm_class ** exécute xkeysnail avec le nom de l'application. L'affichage de cette WM_CLASS et des clés est supprimé en ajoutant l'option xkeysnail -q.

Python minimal

Pour ceux qui ne sont pas familiers avec Python.

commentaire

Commentaires de «#» à la fin de la ligne.

Chaîne
Dictionnaire dict

Structure de données qui stocke la paire Clé - Valeur; Raccourci que vous souhaitez définir: Utilisé pour donner le raccourci à exécuter.

d = {key1: value1.
     key2: value2,
     key3: value3}

Vous pouvez ajouter une virgule à la fin ou non {key3: value3,}.


Peut être ajouté après la création:

d[key4] = value4



#### Tuple, list, set

```python
wm_class not in ("Hyper", "Gnome-terminal", "Emacs")

Chaîne wm_Vrai si la classe n'est aucun des trois. Par l'opérateur négatif non

not (wm_class in ("Hyper", "Gnome-terminal", "Emacs"))

Pareil que. Si tu veux être vrai

wm_class in ("Hyper", "Gnome-terminal", "Emacs")

("a", "b", "c")Est un tableau qui ne peut pas être modifiétuple.Un tableau qui peut être modifié si les détails ne vous dérangent paslist ["a", "b", "c"]Définir égalementset {"a", "b", "c"}Est le même.

Si un

 wm_class == "Hyper" # Vrai si égal
 wm_class! = "Hyper" # Vrai sinon égal

Mais c'est bien. Souvenez-vous de la dernière virgule lorsque vous utilisez un tuple d'élément unique:

wm_class in ("Hyper",)

Sans virgule

wm_class in "Hyper"

Le sens change car il devient le même que "wm_la classe est"Hyper"Est-ce une sous-chaîne de? Signifiera.

"ype" in "Hyper"  # => True
"ype" in ("Hyper")  # => True, ("Hyper") = "Hyper"
 "type" in ("Hyper",) # => False, "ype" est "Hyper"
 Ce n'est pas un élément d'un ensemble composé d'un élément #.

#####Fonction anonyme lambda

f = lambda x: x**2

Est

def f(x):
    return x**2

Pareil que. Nom de l'application wm_Utilisé pour définir une fonction qui retourne s'il faut modifier un raccourci clavier pour la classe.

define_fonction keymap

Nom de l'applicationwm_classVous pouvez modifier la conversion ou non du raccourci par.

def define_keymap(condition, mappings: dict, name: str):

conditionsconditionDictionnaires quandmappingsEffectue la conversion de raccourci définie dans.nameEst le nom de n'importe quel paramètre.

Il existe trois façons de spécifier la condition:

condition:
 Aucun: appliquer sans condition
 Fonction: une fonction qui prend le nom de l'application wm_class et renvoie Vrai / Faux
 Expression régulière: expression régulière à laquelle wm_class doit correspondre (détails omis)

Key

Key.CAPSLOCKEtKey.ESCLa liste des choseskey.pyIl est écrit.

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

##Fonction K

K("C-b")Avec Ctrl+Représente b. C peut être Ctrl ou peut être limité à gauche ou à droite en ajoutant LR.Vous pouvez voir comment écrire en appuyant sur une touche et en regardant la sortie standard de xkeysnail.La touche Modifier a également un terme générique ou un alias (Win peut être Super, etc.) lorsqu'elle peut être à gauche ou à droite..

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

référence: create_modifiers_from_strings(modifier_strs) in transform.py.

##Démarrage automatique

Si les paramètres sont complets et que cela fonctionne, je veux l'exécuter automatiquement au démarrage de l'ordinateur. Pour le moment:

https://hidakatsuya.hateblo.jp/entry/2019/11/20/215608

Reference

Article de l'auteur: https://qiita.com/mooz@github/items/c5f25f27847333dd0b37 GitHub: https://github.com/mooz/xkeysnail

Recommended Posts

Je souhaite utiliser les raccourcis clavier Mac / emacs (raccourcis clavier) sur les recommandations Ubuntu xkeysnail
Je souhaite utiliser OpenJDK 11 avec Ubuntu Linux 18.04 LTS / 18.10
Je veux AWS Lambda avec Python sur Mac!
Je veux savoir si vous installez Python sur Mac ・ Iroha
Je souhaite utiliser à la fois la clé et la valeur de l'itérateur Python
Je veux utiliser jar de python
Je souhaite utiliser la console IPython Qt
Je souhaite développer des applications Android sur Android
J'ai essayé d'utiliser Resultoon sur Mac + AVT-C875, mais j'étais frustré en chemin.
Lorsque j'essaye d'utiliser le notebook Jupiter sur Mac, je ne peux sélectionner que python2
Je veux réaliser quelque chose comme AutoHotkey avec AutoKey sur Ubuntu (Kali Linux)
Je veux utiliser MATLAB feval avec python
Je souhaite utiliser le répertoire temporaire avec Python2
Je veux utiliser le solveur ceres de python
Je ne veux pas utiliser -inf avec np.log
Je souhaite utiliser ip vrf avec SONiC
Je veux faire pyenv + pipenv même sous Windows
Je souhaite utiliser la fonction d'activation Mish
Préparation à l'utilisation de aws cli sur Mac OS X
Je veux utiliser self avec Backpropagation (tf.custom_gradient) (tensorflow)
Je veux trouver un package populaire sur PyPi
Je veux utiliser le jeu de données R avec python
Je souhaite configurer un environnement de développement GUI avec Python ou Golang sur Mac
Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console
Je souhaite utiliser l'environnement de bureau d'Ubuntu sur Android pour le moment (version UserLAnd)