Mientras aprendo francés y uso el teclado QWERTY me resulta difícil escribir las tildes que se usan en las letras, por ejemplo “à”, “ô”, “ù”, entre otras letras, el único código que pude aprender es la cedilla “ç” (ALT+135), como creo que esto me hace perder tiempo cada vez que escribo en francés escribí un programa en Python que copia estas letras al portapapeles.
Encuentra el script completo aquí y al final de este post, los módulos Python utilizados:
- os para usar os.system(“pause”) que muestra lo que ocurrió al ejecutar el programa con solo hacer doble clic en él en Windows. Esto se puede comentar para ahorrar algunos segundos cada vez que se ejecuta el programa.
- sys, para tener una forma rápida y conveniente de pasar las letras que nos gustaría copiar
- pyperclip, el único módulo que necesita estar instalado, lo uso para guardar las letras acentuadas en francés en el portapapeles con pyperclip.copy.
- time, como solución temporal para poder guardar todas las entradas en el portapapeles, en mi caso ha estado funcionando bien con time.sleep(0.3), pero esto puede variar según los recursos del sistema.
Aquí un programa similar para letras acentuadas en español
#!/usr/bin/env python
"""
This program copies French accented letters and cedilla (i.e. À, é, ç) to the clipboard, there are two uses:
1. Run the program without passing any argument, it copies the common French accented letters (e.g. à, é, ç) uppercase and lowercase
2. Run the program passing one or multiple of the following letters: aeiouyc, it will copy all French accented letters related to the passed letter, uppercase and lowercase
Dependency: it needs pyperclip module installed to access the clipboard, and Windows clipboard history enabled
"""
import os, sys, time
try:
import pyperclip
except ModuleNotFoundError:
print("Module pyperclip is not installed")
os.system("pause")
#Parameter letter currently does not have any use, it might have a use in the future
def get_french_letters(letter = None):
#Storing all French accented letters and cedilla
all_french_letters = {"a" : ("À", "Â", "Æ", "à", "â", "æ"), #6
"e" : ("É", "È", "Ê", "Ë", "é", "è", "ê", "ë"), #8
"i" : ("Î", "Ï", "î", "ï"), #4
"o" : ("Ô", "Œ", "ô", "œ"), #4
"u" : ("Ù", "Û", "Ü", "ù", "û", "ü"), #6
"y" : ("Ÿ", "ÿ"), #2
"c" : ("Ç", "ç")} #2
common_french_letters = {"a" : ("À", "Â", "à", "â"), #4
"e" : ("É", "È", "Ê", "é", "è", "ê", "ë"), #7
"i" : ("Î", "î", "ï",), #3
"o" : ("Ô", "Œ", "ô", "œ"), #4
"u" : ("ù", "û", "ü"), #3
"y" : ("ÿ"), #1
"c" : ("Ç", "ç")} #2
#Command line arguments passed:
if len(sys.argv) == 1: #If no argument is passed, use number 1
for values in common_french_letters.values():
for item in values:
pyperclip.copy(item)
print(item)
time.sleep(0.3)
print("Copied all common French letters to clipboard,\nCheck clipboard history with windows key + v")
elif len(sys.argv) > 1: #If an argument is passed, use number 2
list_of_letters = []
for element in sys.argv[1:]:
letter_fixed = element.lower()
if len(letter_fixed) > 1: # In case user entered many letters without whitespace
for char in letter_fixed:
list_of_letters.append(char)
else:
list_of_letters.append(letter_fixed)
for letter in list_of_letters:
if letter in all_french_letters.keys():
for item in all_french_letters[letter]:
pyperclip.copy(item)
print(item)
time.sleep(0.3)
print(f"Copied the French letters associated with {letter},")
print(f"Check clipboard history with windows key + v")
os.system("pause") #To give enough time for user to check the screen
#TODO considering using propmt_toolkit, pyinputplus or click for prompting the user for the letter
get_french_letters()