crislivinitup Posted March 26, 2007 Posted March 26, 2007 I have a GUI and I want to implement a way to set a hotkey for macros that I have already programmed. the macros are chosen from a list. I saw on many GUIs before -not from autoit - where if a user presses a button it will appear in an input box and they can save the hotkey for that task or function. here is what I have so far, it's very disorganized though - it's just the rough draft to help me tweak the programming until I get the desired result. I'm sure there is a much easier way then I have went about it. I built a list to convert all the _ispressed values from misc.au3 to a format which hotkeyset() will accept. I have included what's in my ini file at the bottom in the comment section. Can anyone help me please? expandcollapse popup#include<misc.au3> GUICreate("shit",200,200,200,200) HotKeySet("{NUMPADADD}","set") GUIsetstate() call("readkeylist") Local $hotkey Local $nodubs $c=0 $loop=0 while $loop=0 for $i = 1 to 149 if _IsPressed(hex($i)) Then if not StringRegExp($nodubs," "&$i&",") and $keylist[$i] <> "invalid hotkey" Then ;~ if $i = 16 or $i=17 or $i = 18 and Not StringRegExp($nodubs," 1[678],") Then ;I want to configure it so it only accepts a key value of 16-18 if there is no other key value of 16-18 because those values are ctrl alt and shift. I just want to let the user use one of them for the hot keys. It would be nice to have it allow only a modifier, such as: ctrl, alt and shift, and 1 other key but I'll get to doing that later. $hotkey=$hotkey&$keylist[$i] $nodubs=$nodubs&" "&$i&"," msgbox (0,"key pressed",$hotkey) ;~ EndIf EndIf ;~ msgbox (0,"key pressed",hex($i),1) ;~ msgbox (0,"key pressed",$keylist[$i],1) ;~ $val_key=InputBox("key pressed","enter key value corresponding to send() command","") ;this is what I used to build the ini file - ;~ IniWrite(@DesktopDir&"/this.ini","key",$i,$val_key) ; - with this ;~ HotKeySet($keylist[$i],"quit") ;~ $nodubs=$nodubs&" "&$i&"," sleep(200) EndIf Next sleep(100) if $c=1 Then msgbox(0,"c=1","c=1"&" "&$hotkey) HotKeySet($hotkey,"quit") ;~ HotKeySet(,"quit") $loop=1 EndIf WEnd while 1 sleep(200) WEnd func quit() Exit EndFunc func readkeylist() for $i=0 to 149 $keylist[$i]=iniread(@DesktopDir&"/this.ini","key",$i,"invalid hotkey") Next EndFunc func set() $c=1 EndFunc #cs [key] 65=a 13={enter} 1={mouseleft} 83=s 68=d 70=f 71=g 72=h 74=j 75=k 76=l 144={numlock} 90=z 88=x 67=c 86=v 66=b 78=n 77=m 16=! 17=^ 18=+ 32={space} 96={numpad0} 97={numpad1} 98={numpad2} 99={numpad3} 100={numpad4} 101={numpad5} 102={numpad7} 104={numpad8} 105={numpad9} 111={numpaddiv} 106={numpadmult} 109={numpadsub} 107={numpadadd} 110={numpaddot} 49=1 50=2 51=3 52=4 53=5 54=6 55=7 56=8 57=9 48=0 9={tab} 46={delete} 45={insert} 35={end} 112={f1} 113={f2} 114={f3} 115={f4} 116={f5} 117={f6} 118={f7} 119={f8} 120={f9} 121={f10} 122={f11} 123={f12} 44={printscreen} 145={scrolllock} 12=5 37={left} 38={up} 40={down} 39={right} 27={escape} 2={mouseright} 36={home} 81=q 87=w 69=e 82=r 84=t 89=y 85=u 73=i 79=o 80=p #ce
therks Posted March 26, 2007 Posted March 26, 2007 I tried to do something like this before, but found, to my dismay, that several of the punctuation keys are not the same IsPressed number across different languages. The best thing I was able to come up with was a function I just recently posted, which you can grab here. And uh, why are you using call? That's not how you're supposed to run a function like that. My AutoIt Stuff | My Github
crislivinitup Posted March 26, 2007 Author Posted March 26, 2007 And uh, why are you using call? That's not how you're supposed to run a function like that.Well it does the same thing as putting readkeylist() by itself, does it not?
crislivinitup Posted March 26, 2007 Author Posted March 26, 2007 I like this script alot! I was thinking about taking that sort of approach but I like the idea of the user inputting commands directly into the keyboard, however I am very pleased will use this, thank you very much for the reply.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now