Página 1 de 1

Redefinir Hotkeysets

Publicado: 09 Jul 2010, 04:18
por Turczyk
Hola es posible redefinir los hotkeysets? probé con esto pero no me funciona

Defino que $act es igual a 1 al iniciar el script, luego manualmente apreto f6 para ejecutar la funcion

Código: Seleccionar todo

$act = 1
HotKeySet("{F10}", "Terminate")
HotKeySet("{F6}", "activarteclas")

Código: Seleccionar todo

Func activarteclas($act)
 if $act = 0 then
	HotKeySet("x", "mensaje1")
	HotKeySet("c", "mensaje2")
	HotKeySet("v", "mensaje3")
    ToolTip("")
	$act = 1
	return $act
 
 elseif $act = 1 then
	HotKeySet("{F2}", "mensaje1")
	HotKeySet("{F3}", "mensaje2")
	HotKeySet("{F4}", "mensaje3")
        ToolTip('Teclas desactivadas',0,0)
        $act = 0
	return $act
	
     Else
 endif
EndFunc
Me setea las teclas para las 3 funciones en f2,f3 y f4 y setea $act en 0 para cuando entre nuevamente a la funcion redefina los hotkeys pero no funciona como necesito, sino que define que tanto f2,f3 y f4 y x,c,v son hotkeysets de las funciones : <
Gracias de antemano.

Re: Redefinir Hotkeysets

Publicado: 09 Jul 2010, 08:50
por Ximorro
A las funciones de HotKey no les puedes pasar parámetros.
En realidad ese $act de activarteclas($act) (parámetro local a la función) no es el mismo que el que tienes en el programa principal (variable global).

El de la función siempre valdrá cero, pues no se le pasa nada. (De hecho me es raro que no te dé error)
Efectivamente, lo acabo de comprobar y no se puede definir una función de HotKeySet con parámetros, da error de compilación. ¿Cómo compiláis los programas para que no os den errores? ¿De verdad los probáis? :smt012 :smt017

Haz esto:
Quita el parámetro y usa directamente la variable $act global.
Quita los return de activarteclas, HotKeySet no recoge ningún valor.
Quita el else del final, está vacío y no tiene ningún sentido. Los else son opcionales y en realidad es casi un error ponerlo pues "no hace nada".

Así el programa será correcto pero no hace lo que quieres, primero asocias las tres funciones a las teclas x, c y v, y después las mismas funciones a las teclas F2, F3 y F4, pero eso no desactiva las anteriores, simplemente ahora tienes dos teclas para cada función, por ejemplo ahora activas mensaje1 tanto con x como con F2.

Para desactivar un Hotkey se pone la tecla sin función, tal como pone en la ayuda:

Código: Seleccionar todo

HotKeySet("x")
desactivará el HotKey en la tecla "X".

Re: Redefinir Hotkeysets

Publicado: 09 Jul 2010, 15:00
por Turczyk
Hola Ximorro, mira si pruebo todo sino no preguntaria : < , cuando compilaba de esa manera no me daba ningun error de compilacion ni tampoco en tiempo de ejecucion. La version que estoy usando del SciTE es:
Sc1
Version 1.79
Apr 16 2010 08:48:29
by Neil Hodgson.
Updated: Valik & Jos
Modified version of SC1 which only contains
the AutoIt3 Lexer.
Check the SciTE4AutoIt3 Homepage for a
full version with lots of extras.
http://www.autoitscript.com/autoit3/scite
El programa estaba funcionando antes como vos decias, asignaba las 2 teclas a un misma funcion. Con lo que me has dicho consegui hacer que se desactiven y vuelvan a activar cuando yo quiera.
Gracias por la ayuda :smt001

Re: Redefinir Hotkeysets

Publicado: 12 Jul 2010, 09:10
por Ximorro
Me alegro de que ya esté solucionado.

Es extremadamente extraño que la compilación no te pille ese error, a mí sí me lo cogía, uso el Scite completo pero en realidad el que lo ve es el AU3Check, que Scite debe lanzar cuando compilas o ejecutas un script (el compilador es otro módulo, AU3Check se ejecuta antes de compilar).

No sé, me parece muy raro que Scite no pase el comprobador, aunque sea la versión reducida, bueno, pues si no lo pasa mejor lo cambias y pones el completo.
Yo cuando compilo un script me sale algo así, pongo en negrita lo que corresponde al chequeador, si eso no te sale con tu versión de Scite... ¡mejor la cambias!:

>"C:\Archivos de programa\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /AU3Check /in "D:\Programacion\AutoIt\Coordenadas\CambioCoordenadas.au3"
+>09:08:09 Starting AutoIt3Wrapper v.2.0.0.1 Environment(Language:0C0A Keyboard:0000040A OS:WIN_XP/Service Pack 3 CPU:X64 OS:X86)
>Running AU3Check (1.54.14.0) from:C:\Archivos de programa\AutoIt3
+>09:08:09 AU3Check ended.rc:0
+>09:08:09 AutoIt3Wrapper Finished
>Exit code: 0 Time: 0.330