Close
Page 1 of 5 1 2 3 ... LastLast
Showing results 1 to 10 of 41
  1. #1

    Default Build 14: New code for injecting keystrokes

    My apologies for the long delay since the last build.

    This new build has a lot of new code in it, but most of it is invisible. Or should be invisible. You may see new bugs in things that used to work.

    (How much new code? 43 new files and 66 changed files.)

    There are two new features.

    1. The code for injecting keystrokes was totally rewritten. It uses a new technique that I never tried in HotkeyNet. Hopefully, if this works:

    -- All broadcasted characters will get shifted (capitalized) correctly.

    -- The code is very fast (it's done without thread changes).

    -- Quick bar icons change appearance correctly if they are bound to [modifier:] macros.

    -- It's done purely with the normal operating system API (no hooking or hackery).

    -- It works no matter if WoW is remote, local, foreground, or background.

    2. The WoW button now displays icons and info for WoWs that are either running on the computer or are configured to be launched by Mojo. In this build, this stuff is only eye candy. It doesn't yet do anything. However you should be able to add icons for instances of WoW that you want to run, and the program should save that info and redisplay it when it restarts.
    Last edited by Freddie : 01-06-2010 at 01:20 PM
    �Author of HotkeyNet and Mojo

  2. #2
    Member Fursphere's Avatar
    Join Date
    Mar 2007
    Location
    Northern California
    Posts
    1026

    Default

    I'll download it later today and get to the testing.

    Thanks!
    -Legion of Boom Founder-
    -Retired-

  3. #3
    Member Fursphere's Avatar
    Join Date
    Mar 2007
    Location
    Northern California
    Posts
    1026

    Default

    So - fired up mojo and saw the auto-update feature kick off and work flawlessly. Nice!

    Did some simple 'boxing this morning - everything worked fine. I didn't check out the CTRL - ALT - SHIFT passing, totally forgot about that.

    Also notice it was picking up and "showing" each running WoW on each instance of mojo - but it didn't show clients from other PCs. I assume thats a work in progress still?

    I was thinking maybe you could code in a hook to Windows Notepad.exe for testing? That way I can just test a crap ton of key combinations and see the output outside of WoW? (sometimes WoW does funny stuff with combinations)
    -Legion of Boom Founder-
    -Retired-

  4. #4
    Member Fursphere's Avatar
    Join Date
    Mar 2007
    Location
    Northern California
    Posts
    1026

    Default

    I take part of that back - CTRL passes just fine. Has since build 13 at least - just dawned on me that I use it all the time for some stuff.
    -Legion of Boom Founder-
    -Retired-

  5. #5

    Default

    Quote Originally Posted by Fursphere View Post
    So - fired up mojo and saw the auto-update feature kick off and work flawlessly. Nice!
    Thanks for testing!

    Microsoft gets the credit for auto-update -- it's handled entirely by CickOnce.

    Quote Originally Posted by Fursphere
    Also notice it was picking up and "showing" each running WoW on each instance of mojo - but it didn't show clients from other PCs. I assume thats a work in progress still?
    Right. I'm having trouble figuring out how much info should be sent from one PC to the others. Here's the problem. My first inclination was to show info from each Mojo on all Mojos. That's a simple rule: everything appears everywhere.

    But if all the Mojos know everything about all the WoWs that are configured to be launched, people will expect to be able to change the info on any copy of Mojo. But that won't work because the config info will break if the user makes a change while one Mojo is off and then later turns all the Mojos on and they find themselves out of sync with each other. So there has to be some limitation on info-trading, or some indication that one particular Mojo is in control, and I'm not sure how to do that without making the program seem complicated.

    Quote Originally Posted by Fursphere
    I was thinking maybe you could code in a hook to Windows Notepad.exe for testing? That way I can just test a crap ton of key combinations and see the output outside of WoW? (sometimes WoW does funny stuff with combinations)
    I could do that but it will only test a fraction of what needs to be tested. I think the new key broadcast code can only be tested thoroughly with WoW.

    Edit: I'll explain what I just said in a second. But first, I don't think it's necessary to test this thoroughly now because it will get tested very thoroughly in normal use as people use the program more and more.

    As far as keystroke signals go (which is only part of what this new code does) Notepad would only show whether character keys get shifted properly and whether a handful of Ctrl combos (the ones that are assigned to Notepad's menu items) get received.

    There's another aspect to this code that wouldn't get tested very well. In addition to sending keystroke signals, the code maintains something called a keyboard state for each WoW. Normally this is maintained by the operating system but in order to handle shifting on remote PCs (and also things like AltGr keys in foreign languages), build 14 has a system where Mojo counterfeits the keyboard state for each WoW. Different programs (WoW, Notepad, etc.) may use their keyboard states in different ways, and I'm afraid that the only way to see if the code works with WoW is to test it with WoW.
    Last edited by Freddie : 01-08-2010 at 10:51 AM
    �Author of HotkeyNet and Mojo

  6. #6

    Default

    Quote Originally Posted by Freddie View Post
    But if all the Mojos know everything about all the WoWs that are configured to be launched, people will expect to be able to change the info on any copy of Mojo. But that won't work because the config info will break if the user makes a change while one Mojo is off and then later turns all the Mojos on and they find themselves out of sync with each other. So there has to be some limitation on info-trading, or some indication that one particular Mojo is in control, and I'm not sure how to do that without making the program seem complicated.
    Do you cache the settings in a file somewhere (or in memory somewhere)? Then, when the already open Mojo with changes detects a new Mojo on the network, it can send over all the settings at the same time, and update the new Mojo.

    I suppose then you have to start thinking about which Mojo has more up to date information, and the order in which Mojos are opened.

    Just a thought.

  7. #7

    Default

    Quote Originally Posted by Pocalypse View Post
    Do you cache the settings in a file somewhere (or in memory somewhere)?
    Settings are saved in files.

    Then, when the already open Mojo with changes detects a new Mojo on the network, it can send over all the settings at the same time, and update the new Mojo.
    That works in that case but there are many other cases. Suppose one Mojo has run and been changed and shut down by itself. Then the same thing with the second. Then you start the first. Then you start the second. See the problem?

    I suppose then you have to start thinking about which Mojo has more up to date information, and the order in which Mojos are opened.
    Exactly. That's the problem. In general, it seems to be impossible to know which file is newer because the files have timestamps based on clocks in different computers.

    I think probably the only way to do this is with a central repository for the info which means Mojo would no longer be 100% peer to peer. I'd like to hold on to peer to peer as a "100% design invariant" for the life of the project, if that's possible.

    This problem has already arisen with mouseover and I handled it by creating entirely separate settings on each PC. I'm inclined to think the solution lies in that direction.

    The basic idea would be, each computer is the master repository for settings that were created on that computer. As a result, each Mojo could have different settings.

    It would be easier for me if each computer is the master repository for its own instances of WoW, but then maybe it starts to get complicated for the user.
    Last edited by Freddie : 01-08-2010 at 01:58 PM
    �Author of HotkeyNet and Mojo

  8. #8
    Member Fursphere's Avatar
    Join Date
    Mar 2007
    Location
    Northern California
    Posts
    1026

    Default

    I would just make it click via tooltip or something that information shown for other mojo's is INFORMATIONAL ONLY, and that each mojo must be configured independently.

    Which makes perfect sense btw - when I switch computers (via Input Director software KVM) - the new computer "owns" the keyboard and mouse - so do I want keystrokes to be broadcast from the "current" master?

    Master is whatever has "focus" at the time. Once you start thinking this way, its quite simple. Assuming most people use HARDARE KVM switches to manage multiple PCs on one desk, this makes perfect since anyway...
    -Legion of Boom Founder-
    -Retired-

  9. #9

    Default

    I agree with the info (show only) for other computers. I expect 80% of boxers use 1 computer. I also expect 99% of boxers to not change their setup (start of WOW) once it works. So it shouldn't have to be changed very often and they can do it from the other Mojos.

  10. #10
    Member Fursphere's Avatar
    Join Date
    Mar 2007
    Location
    Northern California
    Posts
    1026

    Default

    I expect 80% of boxers use 1 computer.
    I'd wager that this number is much closer to 95%
    -Legion of Boom Founder-
    -Retired-

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •