Linux Mint / Ubuntu: remplacer Ctrl+C / Ctrl+V par un raccourcis universel (ou presque)
Bonjour à tous,
Cet article s'adresse plutôt aux utilisateurs de machine Linux.
Introduction
Travaillant dans de nombreux environnements, j'utilise souvent les combinaisons claviers CTRL+C pour copier et CTRL+V pour coller des informations entre différents logiciels (console, web, application, etc)
Le HIC, c'est que j'utilise le pouce de la main gauche pour presser la touche CTRL gauche... tordant l'articulation du pouce qui fini par se plaindre.
Articulation du pouce mise-à-mal pour faire un Contrôle+C |
Recherche d'une solution plus générique
Comme cela est peu confortable, je cherche un raccourcis clavier différent, plus facile à composer, et pouvant être utilisé dans toutes les applications.
Figurer vous que les systèmes Linux, comme Windows, ne permettent pas de remplacer -au niveau du système- la combinaison de touche pour le Copier/Coller.
C'est complètement dingue que cela ne soit pas possible en 2022!
Ajout d'un mini-clavier séparé ? --> rejeté
Il est possible d'ajouter un petit clavier supplémentaire pour presser les combinaisons Ctrl+C et Ctrl+V à notre place d'une simple pression de touche.
Possible à 100% mais nécessite de déplacer les mains hors du clavier principal... ce qui est contre productif!
Combinaisons alternatives
J'ai quand même fini par trouver une solution assez confortable pouvant fonctionner à travers le système et surtout facile à faire au clavier (toujours en utilisant le pouce mais sans contorsion.
- ALT gauche+F1 = Copier dans les applications graphiques
- ALT gauche+F2 = Coller dans les applications graphiques
J'aurais aimé utiliser les mêmes combinaisons dans un terminal (ligne de commande) mais cela n'est pour l'instant pas possible. J'ai donc opté pour un autre choix intéressant pour le terminal/ligne de commande.
- F1 = Copier dans le terminal
- F2 = coller dans le terminal
Des combinaisons plus confortable à composer SANS quitter le clavier.
Cela marche plutôt bien à vu d'oeil... et s'est montré vraiment efficace dans le temps (plusieurs semaines maintenant).
Mise en place
Libérer les combinaisons autour de F1 et F2
Modifier les raccourcis clavier système. Il n'est pas rare que F1 et ses combinaisons CTRL+F1 / ALT+F1 soit associés soient associés à la présentation de l'aide. Il faut désactiver ce raccourcis système via l'application "Raccourcis Clavier"
Raccourcis clavier système |
Libérer les combinaisons autour de F1 et F2 |
Modifier les raccourcis du terminal
Par défaut, le terminal utilise Ctrl+Alt+C pour Copier et Ctrl + Alt + V pour coller.Mate Terminal propose le menu "Edition | Raccourcis Clavier" qui permet d'associer des touches différentes pour le copier-coller.
Coller=F1, Copier=F2 |
Le script PyInput
Finalement, c'est un script Python3 qui va nous permettre de capturer les saisies Alt+F1 et Alt+F2 au clavier pour les transformer en Ctrl+C et Ctrl+V envoyé à l'application.
Ce script n'est pas très compliqué et s'appuie sur la bibliothèque python pynput .
Pour installer pynput:
sudo apt-get install python3-dev sudo pip3 install pynput
Ensuite, il suffit d'exécuter le script pynput-cv.py visible ci-dessous avec python3.
Le script contient toujours quelques ligne de débogage. Il est possible de le quitter en pressant la touche scroll-clock.
#!/usr/bin/env python3 from pynput import keyboard last_pressed = None kb_controller = keyboard.Controller() def on_press(key): global last_pressed #try: # print('Alphanumeric key pressed: {0} '.format(key.char)) #except AttributeError: # print('special key pressed: {0}'.format(key)) if (key == keyboard.Key.f1) or (key == keyboard.Key.f2) or (key == keyboard.Key.scroll_lock): last_pressed = key else: last_pressed = None def on_release(key): global last_pressed global kb_controller # print('Key released: {0}'.format(key)) if key == keyboard.Key.alt: if last_pressed != None: # if F1 or F2 have been pressed if last_pressed == keyboard.Key.f1: # Send Copy KeyStroke kb_controller.press( keyboard.Key.ctrl ) kb_controller.press( 'c' ) kb_controller.release( 'c' ) kb_controller.release( keyboard.Key.ctrl ) elif last_pressed == keyboard.Key.f2: # Send Paste KeyStroke kb_controller.press( keyboard.Key.ctrl ) kb_controller.press( 'v' ) kb_controller.release( 'v' ) kb_controller.release( keyboard.Key.ctrl ) elif last_pressed == keyboard.Key.scroll_lock: return False # Stop listener last_pressed = None #if key == keyboard.Key.esc: # # Stop listener # return False # Collect events until released with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join()
Dépôt Gihub
Si vous avez la flemme de saisir le script, il est disponible dans le dépôt GitHub suivant. Je démarre toujours ce script à la main depuis un terminal... puis je l'oublie dans un coin, c'est parfait!
Écrire un commentaire