Autocorrector

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

xdanielhf
Posts: 1
Joined: 11 Oct 2021, 18:36

Autocorrector

Post by xdanielhf » 11 Oct 2021, 18:49

buenas noches a todos, recién descubro el mundo de AutoHotkey y me gustaría hacer un autocorrector de palabras, es decir, ir juntando muchas palabras que suelo escribir incorréctamente; para hacer esto he visto que se hace mediante scritps como este: "::atiempo::a tiempo", se me ocurre hacer un banco o lista de palabras enorme, podría hacer un script que al seleccionar la palabra mal escrita, me la copie y almacene en un .txt, y de esta manera ir juntando muchas palabras con errores ortográficos, para luego escribirlas corréctamente como indica el script : "::atiempo::a tiempo".

¿alguna manera de seleccionar la palabra, almacene, abra el bloc de notas y pegue las palabras que vaya seleccionando ?
gracias a todos por su tiempo y atención.

Lepes
Posts: 141
Joined: 06 May 2021, 07:32
Location: Spain

Re: Autocorrector

Post by Lepes » 12 Oct 2021, 22:32

Curioso el asunto.

Code: Select all

 
#NoEnv
#SingleInstance Force
SetWorkingDir %A_ScriptDir%

F2::Reload
F1::
{
  Send, ^x
  FileAppend,`n::%clipboard%, D:\lepes\Downloads\ahk\corrector.ahk
  Reload
}

::atiempo::a tiempo
Ese texto lo copias y pegas en un bloc de notas. Lo guardas asegurándote de poner extensión ahk en lugar de txt (te aconsejo el notepad++ mejor que el de windows)

Tendrás que cambiar la ruta y nombre que obviamente yo lo he puesto en D:\lepes\Downloads\ahk\corrector.ahk

El funcionamiento actual es:
- Ejecutas el script con doble clic (lo puedes tener el menú de arranque de windows y que se cargue solo siempre)
- estás escribiendo en word y escribes una palabra mal, por ejemplo escribes "qeu" pues ahí mismo en word, modificas el texto a "qeu::que" y seleccionas todo eso
- Presiona la tecla de función F1 (eso hace que el texto seleccionado se corte al portapapeles, abra el fichero corrector.ahk y añada esa palabra al diccionario. Por último recarga el script).
- Listo,ya funciona la próxima vez que lo escribas.
- Al usar Ctrl+x (cortar), el texto ha desaparecido de word, vuelve a escribirlo mal y al pulsar espacio, Autohotkey te lo corregirá


La clave del asunto está en el texto que se añade al fichero: `n::%clipboard%
`n significa que añada un salto de línea y salto de carro... vamos, como si tú le das a intro para una linea nueva
:: pone los puntos iniciales, porque en el texto que resaltaste no estaban.
%clipboard% pega el texto que estaba en el portapapeles, el que tú seleccionaste.

Quizás te suene extraño eso de que un script se modifique a sí mismo y se ordene recargar, pero bueno, es la magia de Autohotkey :dance:

Si tienes alguna duda y puedo echarte un cable, avisa.
Saludos!

gmoises
Posts: 74
Joined: 18 Nov 2017, 16:43

Re: Autocorrector

Post by gmoises » 13 Oct 2021, 08:05

Me parece una idea muy interesante, y la solución de Lepes es muy buena.
Me permito desarrollarla un poco:

Code: Select all

/*
	La lista podría estar en un documento aparte
	en este ejemplo se puso en el mismo directorio que el Script

	Se condiciona a una cierta ventana activa, pero podrían ser varias

	Se pide la corrección para grabar ya todo el comando
	Si el usuario cancela el diálogo, no se modifica la lista
*/

#NoEnv
#SingleInstance Force
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 1														; el título de la ventana debe comenzar con
#Include Lista.txt

#If WinActive("TextPad - ")													; acá poner el título de la ventana de trabajo
F10::Reload																	; estos dos podrían no ser necesarios despues del debug
F11::ExitApp																; o podrían ponerse antes del #If Winactive
F9::
{	SoundBeep, 750, 200
	Antiguo := Clipboard													; guardar el clipboard para restablecerlo al final del ciclo
	SendInput, +^{Left}														; copiar la palabra mal escrita
	Sleep, 60																; tiempo ajustable, si no copia aumentarlo
	SendInput, ^x
	InputBox, Corrección													; pedir la corrección
			, Corrector
			, % "¿cual es la corrección de " . Clipboard . "?"
	If !ErrorLevel															; si no se canceló
	{	FileAppend, % "::" . Clipboard . "::" Corrección . "`n"
			, Lista.txt
			, UTF-8
		SoundBeep, 900, 300
		SendInput, %Corrección%
		Clipboard := Antiguo
		Sleep, 60
		Reload
	} Else
		SoundBeep, 600, 300
}

gmoises
Posts: 74
Joined: 18 Nov 2017, 16:43

Re: Autocorrector

Post by gmoises » 23 Oct 2021, 11:32

versión 0.2

la lista estaá en un documento aparte

Se pide la corrección para grabar todo el comando
Si el usuario cancela el diálogo o no hace cambios,
  • no se modifica la lista
  • no se restablece el clipboard antiguo
  • se pude usar Ctrl-V para volver a poner la palabra
Si hubo cambios
  • se modifica la lista
  • se pega la corrección en el texto
  • se restablece el clipboard antiguo

Code: Select all

; ver 0.2
#NoEnv
#SingleInstance Force
SetWorkingDir %A_ScriptDir%
StringCaseSense, On
SetTitleMatchMode, 1														; el título de la ventana debe comenzar con
#Include Lista.txt

#If WinActive("TextPad - ")													; acá poner el título de la ventana de trabajo
F10::Reload																	; estos dos podrían no ser necesarios despues del debug
F11::ExitApp																; o podrían ponerse antes del #If Winactive
F9::
{	SoundBeep, 750, 200
	Antiguo := Clipboard													; guardar el clipboard para restablecerlo al final del ciclo
	SendInput, +^{Left}														; copiar la palabra mal escrita
	Sleep, 40																; tiempo ajustable, si no copia aumentarlo
	SendInput, ^x
	Sleep, 40
	Prompt := "¿cual es la corrección de " . Clipboard . "?"
	InputBox, Corrección						; OutputVar					; pedir la corrección
			, Corrector							; Title
			, % Prompt							; Prompt
			, , , 100							; hide, Width, Height
			, , , Locale						; X, Y, Locale
			, , % Clipboard						; TimeOut, Default
	If !ErrorLevel and Corrección != Clipboard								; si no se canceló y no son iguales
	{	FileAppend, % "::" . Clipboard . "::" Corrección . "`n"
			, Lista.txt
			, UTF-8
		SoundBeep, 900, 300
		SendInput, %Corrección%
		Clipboard := Antiguo												; podría pasarse al final antes del último } para restablecer el antiguo clipboard en ambos casos
		Sleep, 40
		Reload
	} Else
		SoundBeep, 600, 300
}

wetware05
Posts: 750
Joined: 04 Dec 2020, 16:09

Re: Autocorrector

Post by wetware05 » 24 Oct 2021, 07:35

Hola, me incorporo al canal español.

Ya existe un guión sólido para la ayuda al escribir: https://www.autohotkey.com/board/topic/49517-ahk-11typingaid-v2220-word-autocompletion-utility/. Incluso tiene dos diccionarios (que es el trabajo más engorroso) de palabras españolas.

Post Reply

Return to “Pedir Ayuda”