(Derrubar um roteiro preliminar que fazia a função básica era tão fácil quanto eu pensava. Demorou apenas alguns minutos e funcionou razoavelmente bem. O problema é que há muitas pequenas dicas e casos extremos em que algo pode não funciona em alguma circunstância específica ou se existir alguma outra expectativa específica.Eu ainda estou trabalhando em uma versão aprimorada do script que lida com cliques duplos e arrastando, mas enquanto há muitos exemplos e tentativas, não há nenhum sólido, efetivo, e exemplos concisos de como lidar com esses problemas neste momento, então é um trabalho em andamento.)
Em qualquer caso, o script abaixo é uma versão mais antiga que eu joguei junto (e limpei um pouco para consumo público). Faz o que foi pedido (e um pouco mais). Não há manual real; você acabou de executar o script e ele inicia no modo de espelhamento. Cliques do mouse em ambos os lados da tela são duplicados na outra metade (vertical). Existem algumas teclas de atalho que podem ser usadas para modificar o comportamento do script:
- Alt + Shift + Q ativa e desativa o espelhamento
- Ctrl + Shift + Q liga e desliga o autofire (repetição rápida)
- Ctrl + Alt + Shift + Q pausa o script para que o mouse se comporte normalmente
- Ctrl + Alt + Shift + Win + Q sai do script
Aqui está um exemplo de saída do script:
Mirror.ahk
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Mirror.ahkmirrorsmouseclicksononehalfofthescreentotheotherhalf;http://superuser.com/questions/393738/;;(cl)2012-Synetechinc.,AlecSoroudi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Hotkeys:;Alt+Shift+Qtotogglemirroring;Ctrl+Shift+Qtotoggleautofire;Ctrl+Alt+Shift+Qtocompletelypausethescript(mousebehavesnormally);Ctrl+Alt+Shift+Win+Qtoquit;;Defaultstosingle-click,mirrored;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#SingleInstanceforceCoordMode,Mouse,ScreenSetDefaultMouseSpeed,0SetMouseDelay,-1SendModePlay;TrymodesEvent,Input,orPlay;VariablesSysGet,MonitorWorkArea,MonitorWorkArea,%A_Index%Half:=(MonitorWorkAreaRight-MonitorWorkAreaLeft)>>1Mirror:=1Autofire:=0;MainfunctionDupe(action,var){;CalculateotherhalfMouseGetPos,x,yGlobalHalfif(x<Half){Left:=(Half+x)}else{Left:=(x-Half)}GlobalMirrorif(action=0){;Mouseif(var=0){;Left-clickifMirrorClick%Left%%y%LeftClick%x%%y%Left}elseif(var=1){;Right-clickClick%Left%%y%RightClick%x%%y%Right}elseif(var=2){;Middle-clickClick%Left%%y%MiddleClick%x%%y%Middle}elseif(var=3){;Button4-clickClick%Left%%y%X1Click%x%%y%X1}elseif(var=4){;Button5-clickClick%Left%%y%X2Click%x%%y%X2}};elseif(action=1){;Keyboard-dowhat???;}};Hotkeys!+q::;PausemirroringwithAlt+Shift+QMirror:=!Mirror;MsgBoxMirror:%Mirror%return^+q::;ToggleautofirewithCtrl+Shift+QAutofire:=!Autofire;MsgBoxAutofire:%Autofire%return^!+q::;PausescriptwithCtrl+Alt+Shift+QSuspend;if(A_IsSuspended=1);MsgBoxHotkeyssuspended;else;MsgBoxHotkeysresumedreturn^!+#q::;QuitwithCtrl+Alt+Shift+Win+Q;MsgBoxQuittingExitAppreturn+#q::;Reload/restartscriptwithShift+Win+Q;MsgBoxReloadingReloadreturn;Handlers*$LButton::Loop{;if(Mirror)Dupe(0,0)GetKeyState,State,LButton,Pif(!Autofire||State="U")
Break
}
return
*$RButton::
Loop {
if (Mirror)
Dupe(0, 1)
GetKeyState, State, RButton, P
if (!Autofire || State = "U")
Break
}
return
*$MButton::
Loop {
if (Mirror)
Dupe(0, 2)
GetKeyState, State, MButton, P
if (!Autofire || State = "U")
Break
}
return
*$XButton1::
Loop {
if (Mirror)
Dupe(0, 3)
GetKeyState, State, XButton1, P
if (!Autofire || State = "U")
Break
}
return
*$XButton2::
Loop {
if (Mirror)
Dupe(0, 4)
GetKeyState, State, XButton2, P
if (!Autofire || State = "U")
Break
}
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;