Created
June 28, 2014 17:12
-
-
Save maestrith/a7674a47fbcb5f3b419e to your computer and use it in GitHub Desktop.
Posted using AHK Studio
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
addgame(){ | |
addgame: | |
InputBox,profile,New Game,New Game Title?,,200,150,,,,,WASD | |
if ErrorLevel||profile="" | |
return | |
if settings.ssn("//Profile[@name='" profile "']") | |
Return m("Profile Already Exists") | |
default:=Default(),def:=default.ssn("//*"),main:=settings.ssn("//*") | |
main.appendchild(def),def.SetAttribute("name",profile) | |
LV_Add("Select Vis Focus",profile) | |
SetTimer,selectopen,On | |
return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
change_profile(){ | |
selectopen: | |
SetTimer,selectopen,Off | |
open:=1 | |
cp: | |
if !LV_GetNext() | |
Return | |
if (A_EventInfo=46||A_EventInfo=8){ | |
MsgBox,262449,Are you sure?,Can not be undone! | |
IfMsgBox,Cancel | |
return | |
LV_GetText(profile,LV_GetNext()) | |
if rem:=settings.ssn("//Profile[@name='" profile "']"){ | |
LV_Delete(LV_GetNext()) | |
rem.ParentNode.RemoveChild(rem) | |
LV_Modify(1,"Select Vis Focus") | |
} | |
return | |
} | |
if (A_GuiEvent="Normal"||open=1||A_EventInfo=40||A_EventInfo=38){ | |
GuiControl,1:-Redraw,SysTreeView321 | |
TV_Delete(),xx:=new xml("xbox") | |
LV_GetText(profile,LV_GetNext()),open:=0 | |
if !root:=settings.ssn("//Profile[@name='" profile "']") | |
return | |
master:=all:=root,all:=sn(all,"descendant::*"),main:=tt.Add("Main") | |
while,aa:=all.item[A_Index]{ | |
if (ssn(aa,"@U").nodename=""&&aa.ParentNode.nodename="Main") | |
root:=tt.Add(aa.nodename,main,0,StrSplit(aa.text," ").1,ssn(aa,"@checked").text) | |
if (ssn(aa,"@U")&&aa.ParentNode.nodename="Main"){ | |
att:=sn(aa,"@*") | |
top:=tt.Add(aa.nodename,main,1) | |
while,aa:=att.item[A_Index-1] | |
TV_Modify(tt.Add(aa.nodename,top,1,StrSplit(aa.text," ").1),"Vis") | |
} | |
if (aa.ParentNode.nodename!="Main"&&aa.parentnode.nodename!="Mouse"&&aa.nodename!="Mouse"&&aa.xml){ | |
if (ssn(aa,"@U")){ | |
att:=sn(aa,"@*") | |
lasttop:=tt.Add(aa.nodename,root,1) | |
while,aa:=att.item[A_Index-1] | |
TV_Modify(tt.Add(aa.nodename,lasttop,1,StrSplit(aa.text," ").1),"Vis") | |
} | |
else | |
tt.Add(aa.nodename,root,1,StrSplit(aa.text," ").1) | |
} | |
} | |
mouse:=sn(master,"Mouse/*"),stick:=0 | |
keyset:={controller:1,invert:-1},root:=tt.Add("Mouse") | |
while,mm:=mouse.item[A_Index-1]{ | |
TV_Modify(tt.Add(mm.nodename,root,0,StrSplit(mm.text," ").1,ssn(mm,"@checked").text),"Vis") | |
if ssn(mm,"@checked").text | |
stick+=A_Index | |
if key:=mm.text{ | |
if A_Index=1 | |
keyset.l:=key | |
if A_Index=2 | |
keyset.r:=key | |
} | |
} | |
loop,2 | |
xx.Transform() | |
GuiControl,1:+Redraw,SysTreeView321 | |
xbx.Add(master),keyset.stick:=stick,xbox.main.Mouse(keyset) | |
debug(xx) | |
} | |
Return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Class treeviewhandle{ | |
__New(hwnd){ | |
this.hwnd:=hwnd | |
} | |
Add(name,parent=0,hidecheck=1,value="",checked=""){ | |
Gui,1:TreeView,% this.hwnd | |
checked:=checked?"Check":"" | |
tv:=TV_Add(xbox.user(name) _:=value? " = " value:"",parent,checked) | |
if hidecheck | |
hidecheck(tv) | |
root:=parent?xx.ssn("//*[@tv='" parent "']"):xx.ssn("//*"),check:=checked?1:0 | |
att:=hidecheck?{tv:tv}:{tv:tv,checked:check} | |
xx.under({node:name,under:root,att:att}).text:=value | |
return tv | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class xbox{ | |
static mousekeys:={LButton:"left",RButton:"right",WheelDown:"WheelDown",WheelUp:"WheelUp"},Buttons:={Up:1,Down:2,Left:4,Right:8,Start:16,Back:32,LeftThumb:64,RightThumb:128,LeftShoulder:256,RightShoulder:512,A:0x1000,B:0x2000,X:0x4000,Y:0x8000} | |
,axis:={LThumb:[8,10],RThumb:[12,14]},axisdirection:={lthumb:[["L","R"],["D","U"]],rthumb:[["L","R"],["D","U"]]} | |
,old:=["LThumbX","LThumbY"] | |
,triggers:={LTrigger:6,RTrigger:7},mode:="",keys:=[] | |
,dead:={lthumb:50,rthumb:50,ltrigger:50,rtrigger:50},axisdir:={U:1,D:1,L:1,R:1} | |
__New(count=1){ | |
static | |
dll:=InStr(A_OSVersion,8)?"Xinput1_4":"Xinput1_3",this.library:=DllCall("LoadLibrary","str",dll),this.ctrl:=[],VarSetCapacity(move,28),this.count:=count,main:=this,this.move:=&move,VarSetCapacity(State,16) | |
main.ctrl:=[] | |
NumPut(0,move,8),NumPut(0,move,12),NumPut(0x0001,move,16) | |
if !(this.library){ | |
m("Error loading the DLL") | |
ExitApp | |
} | |
for a,b in {xGetState:"XInputGetState",xBattery:"XInputGetBatteryInformation",xSetState:"XInputSetState",xinputid:"XInputGetKeystroke"} | |
this[a]:=DllCall("GetProcAddress","ptr",this.library,"astr",b) | |
SetTimer,getstate,30 | |
xbox.mode:="edit_keys",xbox.main:=this | |
Return this | |
getstate: | |
do:=xbox.mode,keys:=[] | |
Loop,% main.count{ | |
DllCall(main.xGetState,"uint",A_Index-1,uptr,&State),index:=A_Index,count:=1 | |
for a,b in xbox.axis{ | |
for c,d in b{ | |
value:=Floor(NumGet(state,d,"short")/32767*100) | |
direction:=a _:=c=1?"X":"Y" | |
main.ctrl[Index,direction]:=value | |
if (Abs(value)>xbox.dead[a]){ | |
vv:=value<0?1:2 | |
if (xbox.mode="edit_keys") | |
keys[a]:=xbox.axisdirection[a,A_Index,vv] | |
Else{ | |
direction:=xbox.axisdirection[a,A_Index,vv],key:=xbox.associate(a,direction) | |
if key | |
keys[direction a]:={direction:direction,key:key} | |
} | |
} | |
} | |
} | |
buttons:=NumGet(State,4),total:=1 | |
for a,b in main.Buttons{ | |
if buttons&b | |
keys[a]:=xbox.associate(a) | |
} | |
for a,b in xbox.triggers{ | |
if (NumGet(State,b,"uchar")>xbox.dead[a]) | |
keys[a]:=xbox.associate(a) | |
} | |
%do%(keys) | |
if main.mousectrl[A_Index] | |
main.xmouse(A_Index) | |
} | |
Return | |
} | |
associate(c,d=1){ | |
static axis:={thumbx:["Left","Right"],thumby:["Down","Up"]},lasttv | |
if InStr(this.mode,"edit") | |
Return c | |
if !c | |
Return | |
Return d!=1?xx.ssn("//" c "/" d).text:StrSplit(xx.ssn("//Main/" c).text," ").1 | |
} | |
user(info=""){ | |
static user:={LThumbX:"Left Analog X",LThumbY:"Left Analog Y",RThumbX:"Right Analog X" | |
,RThumbY:"Right Analog Y",LeftShoulder:"Left Shoulder",LeftThumb:"Left Thumb" | |
,RightShoulder:"Right Shoulder",RightThumb:"Right Thumb",ltrigger:"Left Trigger" | |
,rtrigger:"Right Trigger",las:"Left Analog Stick",ras:"Right Analog Stick",LButton:"Left Mouse Button",RButton:"Right Mouse Button",U:"Up",D:"Down",L:"Left",R:"Right" | |
,lthumb:"Left Analog Stick",rthumb:"Right Analog Stick"} | |
Return _:=user[info]?user[info]:info | |
} | |
Add(value){ | |
/* | |
this.current:=[] | |
sn:=sn(value,"//*") | |
while,ssn:=sn.item[A_Index-1]{ | |
;m(ssn.xml) | |
} | |
;xbox.keys[value]:=1 | |
*/ | |
} | |
modeset(x){ | |
xbox.mode:=x=1?"getstate":x=0?"edit_keys":"" | |
} | |
xinput(controller){ | |
VarSetCapacity(input,12) | |
DllCall(this.xinputid,uint,controller,int,0,uptr,&input) | |
if number:=NumGet(input,0,"uint")&0xff=6 | |
m(number&0xff,NumGet(input,4,"uint")) | |
} | |
Battery(Controller){ | |
VarSetCapacity(batt,4),DllCall(this.xBattery,"uint",Controller,"uint",0,"uptr",&batt) | |
Return NumGet(batt,1) | |
} | |
Vibrate(Controller=0,large=0,small=0){ | |
DllCall(this.xSetState,"uint",controller,"uint*",large|small<<16) | |
} | |
Mouse(info){ | |
this.mousectrl[info.controller]:=info | |
} | |
Send(key,state){ | |
if (key="") | |
Return | |
if this.mousekeys[key]{ | |
if InStr(key,"wheel")&&state="Down" | |
MouseClick,% this.mousekeys[key] | |
Else if !InStr(key,"wheel") | |
MouseClick,% this.mousekeys[key],,,,,%state% | |
} | |
else{ | |
StringLower,key,key | |
ControlSend,,{%key% %state%},A | |
} | |
} | |
xMouse(controller){ | |
static toggle:=[],axis:={1:["LThumbX","LThumbY"],2:["RThumbX","RThumbY"],3:["LThumbX","LThumbY","RThumbX","RThumbY"]},lx,ly | |
main:=this.ctrl[controller],ctrl:=this.mousectrl[controller],dd:=[] | |
for a,b in axis[ctrl.stick] | |
if (Abs(main[b])>35) | |
dd[SubStr(b,0,1)]:={value:main[b],which:SubStr(b,1,1)} | |
offsetx:=dd.x.value,offsety:=dd.y.value | |
stick:=dd.x.which?dd.x.which:dd.y.which?dd.y.which:"" | |
if (xbox.mode="edit_keys") | |
Return | |
if (ctrl[stick]&&(toggle[ctrl[stick]]!=1)){ | |
key:=ctrl[stick],this.Send(key,"Down"),toggle[ctrl[stick]]:=1 | |
Sleep,2 | |
} | |
if (ctrl[stick]=""&&toggle.prev) | |
this.Send(toggle.prev,"up"),toggle[toggle.prev]:="" | |
toggle.prev:=ctrl[stick] | |
if (Abs(offsetx)>10||Abs(offsety)>10){ | |
movex:=Floor(offsetx/7),movey:=(Floor(offsety/7)*ctrl.invert) | |
NumPut(movex,this.move,4),NumPut(movey,this.move,8) | |
Loop,5 | |
{ | |
DllCall("User32\SendInput",uint,1,uptr,this.move,uint,28) | |
sleep,1 | |
} | |
} | |
lx:=offsetx,ly:=offsety | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class xml{ | |
keep:=[] | |
__New(param*){ | |
if !FileExist(A_ScriptDir "\lib") | |
FileCreateDir,%A_ScriptDir%\lib | |
root:=param.1,file:=param.2 | |
file:=file?file:root ".xml" | |
temp:=ComObjCreate("MSXML2.DOMDocument"),temp.setProperty("SelectionLanguage","XPath") | |
this.xml:=temp | |
ifexist %file% | |
temp.load(file),this.xml:=temp | |
else | |
this.xml:=this.CreateElement(temp,root) | |
this.file:=file | |
xml.keep[root]:=this | |
} | |
CreateElement(doc,root){ | |
return doc.AppendChild(this.xml.CreateElement(root)).parentnode | |
} | |
add(info){ | |
path:=info.path,p:="/",dup:=this.ssn("//" path)?1:0 | |
if next:=this.ssn("//" path)?this.ssn("//" path):this.ssn("//*") | |
Loop,Parse,path,/ | |
last:=A_LoopField,p.="/" last,next:=this.ssn(p)?this.ssn(p):next.appendchild(this.xml.CreateElement(last)) | |
if (info.dup&&dup) | |
next:=next.parentnode.appendchild(this.xml.CreateElement(last)) | |
for a,b in info.att | |
next.SetAttribute(a,b) | |
if info.text!="" | |
next.text:=info.text | |
return next | |
} | |
under(info){ | |
new:=info.under.appendchild(this.xml.createelement(info.node)) | |
for a,b in info.att | |
new.SetAttribute(a,b) | |
new.text:=info.text | |
return new | |
} | |
ssn(node){ | |
return this.xml.SelectSingleNode(node) | |
} | |
sn(node){ | |
return this.xml.SelectNodes(node) | |
} | |
__Get(x=""){ | |
return this.xml.xml | |
} | |
Get(path,Default){ | |
return value:=this.ssn(path).text!=""?this.ssn(path).text:Default | |
} | |
transform(){ | |
static | |
if !IsObject(xsl){ | |
xsl:=ComObjCreate("MSXML2.DOMDocument") | |
style= | |
( | |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |
<xsl:output method="xml" indent="yes" encoding="UTF-8"/> | |
<xsl:template match="@*|node()"> | |
<xsl:copy> | |
<xsl:apply-templates select="@*|node()"/> | |
<xsl:for-each select="@*"> | |
<xsl:text></xsl:text> | |
</xsl:for-each> | |
</xsl:copy> | |
</xsl:template> | |
</xsl:stylesheet> | |
) | |
xsl.loadXML(style),style:=null | |
} | |
this.xml.transformNodeToObject(xsl,this.xml) | |
} | |
save(x*){ | |
if x.1=1 | |
this.Transform() | |
filename:=this.file?this.file:x.1.1 | |
file:=fileopen(filename,"rw") | |
file.seek(0) | |
file.write(this[]) | |
file.length(file.position) | |
} | |
remove(rem){ | |
if !IsObject(rem) | |
rem:=this.ssn(rem) | |
rem.ParentNode.RemoveChild(rem) | |
} | |
ea(path){ | |
list:=[] | |
if nodes:=path.nodename | |
nodes:=path.SelectNodes("@*") | |
else if path.text | |
nodes:=this.sn("//*[text()='" path.text "']/@*") | |
else if !IsObject(path) | |
nodes:=this.sn(path "/@*") | |
else | |
for a,b in path | |
nodes:=this.sn("//*[@" a "='" b "']/@*") | |
while,n:=nodes.item(A_Index-1) | |
list[n.nodename]:=n.text | |
return list | |
} | |
} | |
sn(node,path){ | |
return node.selectnodes(path) | |
} | |
ssn(node,path){ | |
return node.selectsinglenode(path) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
debug(info){ | |
Return | |
if !hwnd(2){ | |
Gui,2:+hwndhwnd | |
hwnd(2,hwnd) | |
Gui,2:Add,Edit,w500 h500 -Wrap | |
Gui,2:Show,% "x" A_ScreenWidth-530 " y0 NA",Debug | |
} | |
info.Transform() | |
Gui,2:Default | |
GuiControl,2:-Redraw,Edit1 | |
ControlSetText,Edit1,% info[],% hwnd([2]) | |
GuiControl,2:+Redraw,Edit1 | |
Gui,1:Default | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
default(){ | |
defaultbuttons:={x:"F",a:"Space",y:1,b:2,back:"Escape",start:"Enter",LTrigger:"LButton",RTrigger:"RButton"} | |
defaultaxis:={LThumb:[{U:"W"},{L:"A"},{D:"S"},{R:"D"}],RThumb:[{U:""},{L:""},{D:""},{R:""}]} | |
temp:=new xml("Profile") | |
root:=temp.Add({path:"Main"}) | |
for a,b in defaultaxis{ | |
top:=temp.under({under:root,node:a}) | |
for c,d in b | |
for e,f in d | |
top.SetAttribute(e,f) | |
} | |
for a,b in [xbox.buttons,xbox.triggers] | |
for c in b | |
temp.under({under:root,node:c,att:{checked:0}}).text:=defaultbuttons[c] | |
mouse:=temp.Add({path:"Mouse"}) | |
for a,b in ["las","ras"] | |
top:=temp.under({under:mouse,node:b,att:{checked:0}}) | |
Loop,2 | |
temp.Transform() | |
return temp | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Edit_Keys(info){ | |
list:=[] | |
for a,b in info | |
main:=xx.ssn("//Main/" a),ea:=xx.ea(main),TV_Get(ea.tv,"C")?top:=main:list.1:=[a,b] | |
if !list.1.1 | |
return | |
if IsObject(top){ | |
if (next:=ssn(top,list.1.1)) | |
if xbox.axisdir[list.1.2]{ | |
if (tv:=ssn(next,list.1.2 "/@tv").text) | |
Show(tv) | |
}Else | |
Show(ssn(next,"@tv").text) | |
}Else if (main:=xx.ssn("//Main/" list.1.1)){ | |
if xbox.axisdir[list.1.2]{ | |
if tv:=ssn(main,list.1.2 "/@tv").text | |
Show(tv) | |
}Else | |
Show(ssn(main,"@tv").text) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export(){ | |
export: | |
LV_GetText(profile,LV_GetNext()) | |
main:=settings.ssn("//Profile[@name='" profile "']") | |
clone:=main.clonenode(1) | |
save:=new xml("Settings",profile ".xml") | |
main:=save.ssn("*") | |
main.appendchild(clone) | |
save.save(1) | |
return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
getstate(info){ | |
static keystate:=[] | |
list:=[] | |
for a,b in info{ | |
a:=InStr(a,"lthumb")||InStr(a,"rthumb")?SubStr(a,2):a | |
main:=xx.ssn("//Main/" a),ea:=xx.ea(main),TV_Get(ea.tv,"C")?top:=main:list.Insert([a,b]) | |
} | |
if IsObject(top){ | |
newinfo:=[] | |
for a,b in list{ | |
if !b.1 | |
Continue | |
find:=IsObject(b.2)?b.2.direction:b.1 | |
key:=ssn(top,"descendant::" find).text | |
newinfo[b.1]:=key | |
} | |
info:=newinfo | |
} | |
for a,b in keystate{ | |
b:=b.key?b.key:b | |
if (info[a]!=b&&info[a].key!=b) | |
xbox.Send(b,"Up"),keystate.remove(a) | |
} | |
for a,b in info{ | |
b:=b.key?b.key:b | |
if (keystate[a]!=b) | |
xbox.Send(b,"Down") | |
keystate[a]:=b | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gui(){ | |
static hotkey | |
Gui,+hwndhwnd | |
hwnd(1,hwnd) | |
Gui,Margin,5,5 | |
Gui,Add,ListView,w155 h520 gcp AltSubmit -Multi,Profiles | |
Gui,Add,TreeView,x+5 w240 h520 gselect hwndhwnd Checked AltSubmit | |
Gui,Add,Hotkey,xm vhotkey w195 ghotkey | |
Gui,Add,Edit,x+5 ghkedit w200 | |
Gui,Add,Button,xm w400 gaddgame Default,Add Profile | |
Gui,Add,Radio,xm gswitchstate Checked,Edit | |
Gui,Add,Radio,x+5 gswitchstate,Run | |
Gui,Add,Button,xm gexport,Export Script | |
Gui,Add,Button,x+5 gimport,Import Script | |
Gui,Show,,XBox Setup | |
xbx:=new xbox(),xbx.modeset(0) | |
list:=settings.sn("//Profile") | |
while,ll:=list.item[A_Index-1] | |
LV_Add("",ssn(ll,"@name").text) | |
LV_Modify(1,"Select Vis Focus") | |
tt:=new treeviewhandle(hwnd) | |
SetTimer,selectopen,On | |
Return | |
Hotkey: | |
Gui,Submit,Nohide | |
node:=xx.ssn("//*[@tv='" TV_GetSelection() "']") | |
selection:=node.nodename | |
if selection in Main,Lthumb,Rthumb,Mouse | |
return | |
mirror(node,hotkey) | |
debug(xx) | |
return | |
hkedit: | |
ControlGetText,value,Edit1 | |
GuiControl,,msctls_hotkey321,%value% | |
Goto Hotkey | |
Return | |
switchstate: | |
if A_GuiControl=edit | |
xbx.modeset(0) | |
Else{ | |
SetTimer,selectopen,On | |
xbx.modeset(1) | |
} | |
return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hidecheck(list){ | |
VarSetCapacity(tvitem,28) | |
if IsObject(list){ | |
for index,id in list{ | |
info:=A_PtrSize=4?{0:8,4:id,12:0xf000}:{0:8,8:id,20:0xf000} | |
for offset,value in info | |
NumPut(value,tvitem,offset) | |
SendMessage,4415,0,&tvitem,SysTreeView321,% hwnd([1]) | |
} | |
}Else{ | |
info:=A_PtrSize=4?{0:8,4:list,12:0xf000}:{0:8,8:list,20:0xf000} | |
for offset,value in info | |
NumPut(value,tvitem,offset) | |
SendMessage,4415,0,&tvitem,SysTreeView321,% hwnd([1]) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hwnd(win,hwnd=""){ | |
static window:=[] | |
if (win.rem){ | |
Gui,% win.rem ":Destroy" | |
window.remove[win.rem] | |
} | |
if IsObject(win) | |
return "ahk_id" window[win.1] | |
if !hwnd | |
return window[win] | |
window[win]:=hwnd | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import(){ | |
import: | |
return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mirror(node,hotkey="0000"){ | |
LV_GetText(profile,LV_GetNext()) | |
ancestor:=sn(node,"ancestor-or-self::*"),main:=settings.ssn("//Profile[@name='" profile "']") | |
name:=node.nodename | |
if name in lthumb,rthumb,main,mouse | |
return | |
while,aa:=ancestor.item[A_Index]{ | |
main:=ssn(main,"@" aa.nodename "|" aa.nodename) | |
if check:=ssn(aa,"@checked") | |
main.SetAttribute("checked",check.text) | |
} | |
if (hotkey!="0000"){ | |
main.text:=hotkey | |
value:=hotkey?" = " hotkey:"" | |
TV_Modify(TV_GetSelection(),"",xbox.user(node.nodename) value) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
m(x*){ | |
for a,b in x | |
list.=b "`n" | |
msgbox %list% | |
} | |
t(x*){ | |
for a,b in x | |
list.=b "`n" | |
tooltip %list% | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
save(tv,value=""){ | |
/* | |
if !LV_GetNext() | |
return m("Select a profile") | |
main:=xx.ssn("//*[@tv='" tv "']"),LV_GetText(profile,LV_GetNext()),pro:=settings.ssn("//Profile[@name='" profile "']") | |
if xbox.axis[main.ParentNode.nodename] | |
ssn(pro,"//" main.ParentNode.nodename).SetAttribute(main.nodename,value) | |
Else{ | |
ea:=xml.ea(main) | |
for a,b in ea | |
m(a,b,pro.xml) | |
for a,b in {value:ea.value,checked:ea.checked} | |
ssn(pro,"//" ea.name).SetAttribute(a,b) | |
} | |
*/ | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Select(){ | |
select: | |
tv:=A_EventInfo>1000?A_EventInfo:TV_GetSelection() | |
if (A_GuiEvent!="Normal"&&A_GuiEvent!="K"&&A_GuiEvent!="S") | |
Return | |
value:=xx.ssn("//*[@tv='" tv "']"),open:=0,LV_GetText(profile,LV_GetNext()) | |
if (A_GuiEvent="K"&&A_EventInfo=32){ | |
ea:=xml.ea(value) | |
if ea.checked="" | |
hidecheck(TV_GetSelection()) | |
} | |
update:=xx.ssn("//*[@tv='" tv "']") | |
checked:=TV_Get(tv,"C")?1:0 | |
if (ssn(update,"@checked").nodename) | |
update.SetAttribute("checked",checked),mirror(update) | |
if (checked){ | |
if (TV_GetChild(tv)=0&&update.ParentNode.nodename!="Mouse"){ | |
MsgBox,289,Add Alt Keys,Are you sure? | |
IfMsgBox,Cancel | |
Return | |
top:=settings.ssn("//Profile[@name='" profile "']/Main/" update.nodename) | |
default:=Default() | |
list:=Default.sn("//Main/*") | |
while,ll:=list.item[A_Index-1] | |
if (ll.nodename!=top.nodename) | |
top.appendchild(ll) | |
SetTimer,selectopen,On | |
} | |
} | |
debug(xx) | |
GuiControl,1:,msctls_hotkey321,% xx.ssn("//*[@tv='" tv "']").text | |
Return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
show(tv){ | |
static lasttv | |
if (tv=lasttv) | |
return | |
GuiControl,-Redraw,SysTreeView321 | |
next:=0 | |
while,next:=TV_GetNext(next,"F") | |
TV_Modify(next,"-Expand -bold") | |
TV_Modify(tv,"Select bold") | |
GuiControl,+Redraw,SysTreeView321 | |
TV_GetText(value,TV_GetChild(tv)) | |
GuiControl,,msctls_hotkey321,%value% | |
ControlFocus,msctls_hotkey321,% hwnd([1]) | |
lasttv:=tv | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Persistent | |
#SingleInstance,Force | |
SetMouseDelay, -1 | |
xx:=new xml("xbox"),settings:=new xml("Settings") | |
global profile:=[],xx,settings,tt,xbx | |
Gui() | |
OnExit,GuiClose | |
return | |
GuiClose: | |
settings.save(1) | |
ExitApp | |
return | |
#Include D:\Projects\My Scripts\Guild Wars 2\AddGame.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\change profile.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\Class tt.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\Class xbox.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\Class xml.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\debug.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\default.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\Edit Keys.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\getstate.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\gui.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\hidecheck.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\hwnd.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\mirror.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\Msgbox.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\save.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\select.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\show.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\export.ahk | |
#Include D:\Projects\My Scripts\Guild Wars 2\import.ahk | |
#Include AddGame.ahk | |
#Include change profile.ahk | |
#Include Class tt.ahk | |
#Include Class xbox.ahk | |
#Include Class xml.ahk | |
#Include debug.ahk | |
#Include default.ahk | |
#Include Edit Keys.ahk | |
#Include getstate.ahk | |
#Include gui.ahk | |
#Include hidecheck.ahk | |
#Include hwnd.ahk | |
#Include mirror.ahk | |
#Include Msgbox.ahk | |
#Include save.ahk | |
#Include select.ahk | |
#Include show.ahk | |
#Include export.ahk | |
#Include import.ahk |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment