Basically the same functionality Syngery has with the hotkey switching to different Pc's, appreciate all your hard work Micah :)
Printable View
Basically the same functionality Syngery has with the hotkey switching to different Pc's, appreciate all your hard work Micah :)
What buruan describes is exactly what I meant :) And an echo of all the thanks to you, this is great software :)
A couple more suggestions for features:
* Mouse broadcast with absolute positioning rather than relative (e.g. mouse in same place on screen on both boxes. Bonus points for multi resolution support
* If not the ability to not broadcast keystrokes based on a user-specified set, perhaps just a tickbox to not broadcast the qweasd keys(standard movement keys) .
* The option to filter out the broadcast and mouse toggle hotkeys so that they don't interfere with the game (e.g. you decided you want to chat, started typing then realised halfway you want to turn off broadcast and now you have a ` in the middle :P )
If you don't mind and you can post the latest source I can help with the coding of some of these.
to not broadcast the qweasd keys
just go to key binding on 2nd ( -> 5th computers) and unbind qweasd keys :)
I tried using multibox for the first time today and I encountered an issue with my Num Lock key.
I tested multibox while in windows and found that the num locks key worked on the server computer, but not the clients.
The other issue is while in WoW, my num locks key was not recognized at all for auto run, but it does change the state of my keypad. So, by pressing num lock, it changes the '8' key to the 'up arrow' key on the server computer only, but auto run doesn't work.
This just adds a bit of confusion in my control setup, is there a work around for this issue, or shall I just change my keyboard setup?
I always hated the default of NumLock for auto-run. I've had it as `(~) almost since I started playing. It was annoying to have to check my NumLock state to use the numberpad to enter prices in the AH, or use it for anything after quitting WoW. It was a REAL pain if I played on my laptop and forgot to check it before locking my desktop; passwords are difficult when the center of your keyboard is a numberpad and you don't realize it. :lol:
The problem with that is when you mouse to the other screen you then can't move (or have to use different keys which "wastes" a set of keybindings).Quote:
Originally Posted by Qcybershop
well i multibox differently :(
i use keyboard boardcast box and mouse for each of the computer :wink:
i move my 2nd to 5th computer with mouse :shock:
Unfortunately I haven't really been maintaining the software of late. When I get home tonight I'll try to zip up the latest source code package so others can work on it and make changes if they like. One day I will probably get back into it but I don't know when that will be so don't hold your breath. Sorry. :(
Just something I noticed about the numlock key on clients that the server isn't running. Just for fun try pressing the Pause/Break key and see what that does. In WoW this does Auto-run even though it's bound to the numlock key. I'm thinking it's back to the original problem with passing scancodes in some form or another. USB scancodes are different then ps'2 scancodes. Even without WoW running you can try this out. open notepad on the server machine and a client machine. Now type some numbers in using the numpad. On the server computer Numlock will function as it's supposed to, on the clients though you'll have to use Pause/Break as your numlock key. Now if you have broadcast enabled you'll have to press Pause/Break as your numlock key.
I'm guessing you're using USB keyboard as well. If you are you media keys probably don't work either I'm guessing. These are problems I've encountered with multibox myself and have looked Micah's code over and tried figuring out how to fix it, but haven't found a solution yet as I haven't had the time really to rebuild his source and test any of my theories. Since it all goes awry when you either 1) have broadcast enabled, or 2) are on a comptuer the keyboard is not directly connected to I believe it has to do with how Multibox passes the keyboard input, which it does VIA scancodes. I posted before about the a possiblity of changing the flag to use with scancodes that may fix it, but I'll have to wait for Micah to post the updated source before I can even get the chance to test it.
On a final note, my whole input freezing problem I beleive was inexperience with Multibox and beleive it's from holding keys down when mousing over to other clients. I've not been able to get input frozen for sometime now that I reconize when ALT, CTRL, or SHIFT is being pressed.
Updated source code in original post for anyone interested in poking around in it.
If I only know how to program outside of LUA =(
First off, let me say what a great program this is :)
However, I had no luck in sending middle mouse button clicks while I was focused on the second screen. Am I missing something?
In hopes micah will see this before to long, I'm trying to open up your solution file and it tells me "The selected file is not a valid Visual Studio solution file." I'm curious what IDE you use and what version if visual studio.
*EDIT*
So I just opened it with 2003 and it told me it was made with a newer version... So I don't have a newer version and am kind of partial to the versions I have. I could I guess get 2005 somehow, maybe express edition if it's still available will work. All that aside I could rebuild it in 2003 if you would be kind enough to tell me any special settings you made in the solution or project settings. Thanks in advance.
is there a current project to port this to Mac?
I have started looking into it, but i am not a programmer so yeah, it may take a while.... but i think i am on the right track.
I found bakefile from the wxWidgets site - Bakefile is cross-platform, cross-compiler native makefiles generator. It takes compiler-independent description of build tasks as input and generates native makefile (autoconf's Makefile.in, Visual C++ project, bcc makefile etc.).
I also have access to the mac edition of MetroWorks CodeWarrior 8.0, and of course have Apple's XCode installed with the newest gcc compiler.
Alright so I have both wxWidgets 2.8.0 and multibox building and running from my build. I created a 2003 project and used that to build everything with since 2005 was giving me headaches. Now I'm trying to learn wxWidgets. It's alright for the most part, but I find the lack of a graphical interface to create and place dialogs items a bit slow. I may end up porting it over to MFC by the end as I know MFC much better then wxWidgets.
I have a multibox feature request.
How hard would if be to make Multibox also send keystrokes to multiple WoW instances on the same computer and across the network? I would love this feature as I would not have to bother with AutoHotkey.
I have 6 years of coding experience, so I can do it myself, but I'm not too familiar with Windows Programming. Could you point me in the right direction on how to get Windows/instances and send keystrokes to them?
So I modified Multibox and have it so you can only broadcast keys you want, I'm still testing it a bit. It seems to work for the most part. There is a lot of useless bindings I show you, but it was easy and best way I could think of it quickly to not bog down multibox with lag. After I get home from work tonight sometime I'll test it a bit more then upload it for anyone who wanted that feature in.
shockbeta, thanks very much for taking this on.
I really appreciate that this is being continued.
If you have the time, can you also look into the hot switching fucntionality discussed earlier in this thread.
Upon keypress i take control of Machine 1 or 2 (Mouse and Keyboard) and when pressing the same key again it goes back to normal control.
Would a be fantastic feature.
Thanks again.
That was the next thing I was trying to get in. I'm not to familiar with wxWidgets, so adding controls to the interface is becoming tedious for me. I was trying to mimic how Micah had the dynamic selection boxes to hotkey the computers. I'll come up with some way though for it to know which computer each hotkey is for. I know you don't want to rebind each time you run it. Anyways, it's all coder talk from here on so I'll spare everyone and work on it a bit. Later on tonight I'll post the new version, have a few things I need to take care of before I can get it taken care of. Oh, also only the server changed. The old verison clients can connect just fine to the new version.
Alright... I had caught something I missed so it took me a little bit longer then I thought. The interface is scary for binding keys, but like I said I was going for speed and making it work. The "GIANT" list of all the possible bound keys was to hopefully allow it to work with any keyboard. Meaning any of your special keys that aren't on english keyboards. I also list even reservered key codes. Anything that is undefined is pointless to have on there, but it just made it work better in my code to keep them. I won't go into coding detail of why just I use arrays and the such and having everything match made it very easy.
Alright so pretty self explanatory when you open it, click the broadcastable keys button and you'll see a new window. scale it to fit the lists if you want. Should be 7 lists. last list should be shorter. Okay now click where it tells you and type away. Any key you press in that box will auto toggle it off and on. Checked = it will broadcast. Alternatively you can manually check keys if you prefer(I don't know who would). Last thing I was working on was I forgot when you hit shift the code is sent as shift. It doesn't differentiate[sic] between left and right, a seperate call had to be made to find what one it is. So in short ignore the SHIFT, CTRL, MENU in the first list. and look for LSHIFT, RSHIFT, LCTRL, RCTRL, .... in the 5th column I think for those. The first ones don't really affect broadcasting. Also if you don't know MENU = ALT, I don't know... I always though it was ALT too, but in the keycodes it came out to MENU so whatever. All cosmetic at that point anyways. I'll clean it up a bit and remove a lot of the excess when I have more time.
Test it as you will and let me know what isn't or is working...
Micah's Multibox w/Broadcastable keys: http://ultrashare.net/hosting/fl/8651cd8601
And again.. sorry for the HUGE key binding window.. I really need to make that smaller....
Thanks! Looks like I can now remap my arrow keys in game :P I may contact you in the future about what dependencies are there for a build (once I finally get VC++ going) so I can help out with feature updates.
Alright so I got hotkey switching in. Initial testing proves to be working. Of course with testing comes ideas, which inevitably lead to problems or more coding:(
So, Here's what I noticed as pros and cons with how it's coded as it is:
Pros:
Able to switch instantly to said monitor.
Kills broadcasting so you have full control of one computer
Remembers last mouse position so can hotkey between and keep mouse position.
cons:
Remembers mouse position so if you mouse between your mouse is on the border of said monitor.
Kills broadcasting so if you just want to hop mouse control you're out of luck.
There's others but here's a start. As you noticed everything is pretty much two sided. It's good but also bad. Good news is anyone who uses a keyboard like me or anything really that has macros you can have your macros to swithc monitor and re-enable broadcasting. I think that is the better solution for the time being as you would want to be able to utilize both ways. Only thing I can think to add is maybe some checkboxes maybe or a keybinding spot for modifier to hit. I.e. 1-5 switch between monitors and give instant control of said monitor... bind left shift to modifier so shift + 1-5 instantly goes to that monitor but leaves broadcasting enabled. I'll probably do something like that if you think it would be better then not having the option at all to hotkey between and keep broadcasting.
Once I get this in and working, I'm kind of interested in making the mouse broadcasting better support different resolutions. Whether it's absolute or relative makes no difference really. I would believe it would be easiest when enabled it broadcasts to all clients absolute position. Then each client figures out it's own ratio to place the cursor, then takes relative movement and modifies it by it's ratio compared to the server..
Hmm I'll have to look at the code. I'm sure there is a nice slick way of doing it with low overhead. Should only need to happen once per connection. Then jsut needs to mousePos.x * xRatio everytime it got a relative movement. And if it ever got out of synch you could just toggle broadcasting on off and it would realign the mouse position. Anyways, I'll look into that, and any ideas on display hopping let me know. I'll see if I can post a build of it tonight, if not then it will be up here tomorrow after I get home from work.
*EDIT*
Uploaded:
MultiBox w/Display Shortcuts: http://ultrashare.net/hosting/fl/69107c171c
Alright so with using multibox I find it useful in many ways, not just gaming. I have 3 of my 4 computers linked up with multibox currently. I only dual box right now so the third is more like a internet, chat, guides, whatever else machine. With that being said when I'm dual boxing I use broadcast at times and with only 2 of the 3 in game it didn't really allow me to use the third with multibox. I decided I wanted a feature to disable broadcasting entirely to a certain display. I added checkboxes below the display shortcuts to check if you never wanted it to receive broadcasted keys. As it is now when you have broadcasting on the checked displays will never receive keyboard input. You can mouse over to it and it still won't receive broadcsated input. If you toggle broadcasting off then it will receive input normally. I was considering making it so if that display has mouse focus it gets the input and others don't, but I'm on the wall about that. As sometimes it's still nice to be able to sent the other comptuers input while that one has mouse focus.
Anyways, if anyone else would like that I'll post a new server.exe. If not then I'll wait until mroe features and fixes are in it before releasing it.
Very nice! Thanks for adding that, will test it out Shockbeta and add it to our list.
Alright first thing I need to say is thank you very much to Micah for doing the original coding of Multibox. He coded it very well and as eased my time with picking up on what the code was doing. With a little effort and time I have managed to get mouse broadcasting supporting multiple resolutions. I was unaware of the 65535 mouse position mapping. Don't know how I never knew that, never came across it always was screen resolution when I was coding games:p oh well you live and learn.
Anyways.. as I said I have multiple resolution support for mouse broadcasting. I'm still fine tuning it and getting the code more dynamic, currently it's hardcoding a few things that should be dynamic. Basically you enable mouse broadcasting and the mouse on the other computers synch to the server computer(this will change to which ever screen has focus if I can get it working). Then as you move your mouse the all move to the same portion of the screen I.e. you move to the upper right all are in the upper right at teh same time then you move to the lower left and all hit the lower left corner at same time. This will make using Targeted AOE spells and the such a little easier. Of course you'll still have to make sure they're looking the right way:p
After I get it tested a bit more and working more dynamically I'll post the new server.
*EDIT*
One more thing, I could use someone who has a dual monitor setup to test it for me before I post it for everyone saying it's working. I have no dual monitor setups and it may not behave the same way. If anyone is interested let me know and I'll send it to you or give you direct link.
Great modified app of it :) Only thing I would suggest is the ability for display shortcuts to have a control + key feature, instead of just a single key. If that is possible.
Also wanted to note I use dual screen on each pc, and it seems to be working pretty smooth.
Hmm, so you want a hotkey to know which monitor to send input to? like pushing ctrl and any button will send the any button to the monitor with ctrl as it's hotkey? Or are you meaning like I said before giving the ability to map a modifer button to the shortcut so pressing ctrl+1 or whatver would activate the display with ctrl-1 as shortcut? I know it's probably easy mapping them by allowing you to type a key, but I was figuring if the modifier idea was wanted I would give you a checkbox or spin control to pick which modifier. The problem with all the ctrl, shift, and alt keys is that you can only test which one is down(left or right) by using a seperate call. It would just be easier to allow me to set the possible keys as a modifier.
If you want the modifier in I'll see what I can do to add that in somehow. I also am pretty much finished testing the multi-res support for the mouse. I encountered a small bug with it but I think I got it worked out. I also implemented if have displays checked to never broadcast, while broadcsating mouse the mosue will move around on the screen but no button presses will be sent to it. This had to be done as the mouse position is directly related to the server/client combo. If I didn't ever move the mosue on the server machine then absolute position wouldn't be able to be used. This is what I need a dual monitor setup to check. I need to make sure that it only mimics one screen, and not two as one. Like left is the left side of your first monitor. and the right side is the right side of your second monitor.
[code:1]
client computer Server(Dual)
__________ __________ __________
| | | | | |
| | | | | |
| | | | | |
|_________x| |__________| |_________x|
__________ __________ __________
|x | |X | | |
| | | | | |
| | | | | |
|__________| |__________| |__________|
[/code:1]
I'll upload the new version tonight so someone can test it to see if the above happens.. if so back to the drawing board with it. Quick fix would be to have you specify if it's dual monitor style..
Alright new multibox server. If anyone with dual monitor setup *looks at Ellay* would be kind enough to test it out for me I would appreciate it. Looking for the above scenario with mouse broadcasting on.
Micah's awesome Multibox modified: http://ultrashare.net/hosting/fl/d3c104343e
Haff mah bebes, Shockbeta!!!
I love you man.
I have dual screens at my server as well will test tonight, alongside with installing LOTRO on both machines.
If you have a paypal account ill gladly shoot you some dosh.
Same goes for Micah.
Now I just need to find a way to weasel out of work early.
Any chance of getting you to add a Keybroad caster to multiple wow instances on the same computer? It doesn't have to be fancy. If I have 3-5 instances of WoW on the same computer, then the keystrokes would be sent to each instance.
I dont think that is easily possible.
From my understanding all multibox does is simulating keystrokes, which by default go to the window that currently has focus.
For this to work a whole lot more of complicated routines have to be added to send keystrokes to different windows.
It might be possible, but it also would move multibox more into the gray area where warden might disagree with it.
Maybe some coder can elaborate better.
Buruan is right. Multibox is a simple hook program. It hooks to the keyboard and mouse and captures all input prior to sending to the OS. To code that in would be a lot more code that a lot of people actually won't ever use. I'm trying my best to keep runtime code to a minimal on multibox as to avoid any lag with keypresses. What you could do is use another type of software that allows you to send inpout to more then one window at the same time on one machine. I'm sure someone on the forum has mentioned one before. I can't recall the post or name of the software they used, but I remember reading something about it. Just poke around on the forum and you'll find it.
As Buruan has stated, right now there is nothing illegal in WoW sense to using multibox. It only hooks the keyboard and mouse and then sends them to all connected clients. I'm sure you could make it send input to all windows on one machine as well and it wouldn't be illegal, but it does add a lot more complicated calls and a lot more code. With me not even needing that feature I won't be adding that myself to multibox.
shockbeta you da man!
I think that's a great idea, but am happy to wait for a release :)Quote:
Originally Posted by shockbeta
One problem I have with the mouse switching hotkey is this:
Set VK_NUMPAD1 to screen 1
Set VK_NUMPAD2 to screen 2
Pressing numpad2 will switch to screen 2 then send a 2 key to screen 2
Pressing numpad1 will switch to screen 1 then send a 1 to screen 1
I would think that not sending the hotkey to the screen you are switching to would be a better option.
Not sure if this was addressed or not, but currently, mouse clicks (not right/left click) do not send to another screen that you've pulled your mouse over to. Middle click, and side buttons (bound to Win4 / Win5)
I was going to write a post about how annoying it is for these file download sites to artificially inflate wait times / file queues whilst spamming people with offers for a "premium membership".
And since the files we're downloading are less than a couple megs, I was going to offer to grab dualboxsoftware.com or something and just host it myself with no waiting since I doubt there's jillions of people cool enough like us to be into dual-boxing, yet.
But then I realized thats its 3am and I'm just tired so I decided not to rant and have people thinking I'm a ninnymugginswhinerpants.
Hi Shockbeta thanks for all your efforts. You too Micah :)
I have a couple possible bugs, but perhaps I'm missing out because I'm not a coder and can't just read the code.
I have a desktop and a laptop from left to right. The desktop on my left is the main machine running the server and client, the laptop on my right runs only the client.
I downloaded and ran the latest link, I'm assuming I overwrite the first multiboxserver.exe I already had so I did. It seems if I create and then use a hotkey to manipulate only the laptop, it switches roles and assumes the laptop is running the server. I.E., when I disable all broadcasting and even if I hit the hotkey to be controlling my main, I can only control my secondary laptop once I switch to it. In my case I had ` set to control the left and page down set to control the right. If I hit page down I can only ever control the right unless I turn broadcasting back on. But that only works while broadcasting is on, once I turn it off I can only control my laptop even though my main desktop is the server.
------
Secondly, for a split second I was able to pan from one display to the next just by moving across the right edge of my left screen. I know this is what people use synergy for but I had no idea it was built into multibox, even after reading all 8 pages of this post so far :p
Is there a way I can turn that back on? I've tried tweaking and messing around with settings but there's really only so many I can manipulate and nothing seems to work.
In the server setup I have MAIN on the left and LAPTOP on the right. I'm assuming its supposed to automatically pan to the other display if broadcasting is off but it's not. Probably missing something here.
Perhaps someone can post a couple paragraphs as a HOWTO since there's no docs that I could find for multibox :)
In all likeliness I'm a moron and there's an easy fix for both of my issues, thanks for the neat software. Just gotta get it working for me.
Sorry, is there a way to pick which network adapter it tries to use as default? I have to disable my hamachi and activesync adapters before it tries to use my actual lan nic.