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.
$ sudo apt install python3-pip
$ sudo pip3 install xkeysnail
pip
est un logiciel de gestion de paquets de bibliothèques Python.
Pour le moment, cela peut être n'importe où, alors créez config.py
. Cliquez ici pour le fichier config.py officiel.
Dans le répertoire où se trouve ce config.py:
$ xhost +SI:localuser:root
$ sudo xkeysnail config.py
Troubleshooting
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.
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.
Il apparaît si vous n'avez pas fait xhost +
.
⌘ space
pour basculer entre l'anglais et le japonais, et l'utiliser séparément du jeu de marques emacs ctrl-space
. En d'autres termes, définir command = ctrl est excessif.
# -*- 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.
Pour ceux qui ne sont pas familiers avec Python.
Commentaires de «#» à la fin de la ligne.
chaîne de caractères '' soit
chaîne de caractères '' est OKStructure 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.
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.CAPSLOCK
EtKey.ESC
La 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
Article de l'auteur: https://qiita.com/mooz@github/items/c5f25f27847333dd0b37 GitHub: https://github.com/mooz/xkeysnail
Recommended Posts