emersonrp / bindcontrol Goto Github PK
View Code? Open in Web Editor NEWKeybind manager for City of Heroes
License: GNU General Public License v3.0
Keybind manager for City of Heroes
License: GNU General Public License v3.0
CityBinder's "Bodyguard Mode" logic may have never actually worked as advertised, or the game may have changed out from under it. In any case, it's not working as documented. IIRC, the pets that are not on bodyguard mode can't be addressed as a group (two minions and a lieutenant for instance), and "one power per bind" means they can't be stacked as separate commands. This needs some research, but might simply not be possible to do as intended.
The "Player has Hover" tickbox status does not check to see if you have the flight pool meaning that you can have a situation where Mystic Flight will try to insert Hover into the bind files. (I only checked Bo000000.txt; I assume other ones are compromised as mystic flight would detoggle in-game.)
This can be fixed manually by enabling Flight as a power pool, going to the SoD tab, un-ticking the Hover box (while it's no longer grey-ed out) and then removing Flight again.
(perhaps related, "Hide Windows when Teleporting" doesn't work for Mystic Flight's translocate)
Going up from hovering turns on Fly but does not turn off Hover. stopping going up stops you from going up, but does not turn off Fly
showbind "space" while Fly is on
+down$$up 1$$down 0$$forward 0$$backward 0$$left 0$$right 0$$powexectoggleon Fly$$bindloadfilesilent F:\TCB\RedWater\F\F100000.txt
showbind "space" while Fly is off
+down$$up 1$$down 0$$forward 0$$backward 0$$left 0$$right 0$$bindloadfilesilent F:\TCB\RedWater\R\R100000.txt
showbind "f" (toggle Fly) while Fly is on
+down$$bindloadfilesilent F:\TCB\RedWater\F\F000000r.txt
showbind "f" (toggle Fly) while Fly is off
+down$$powexectoggleoff Sprint$$powexectoggleon Fly$$up 1$$down 0$$forward 0$$backward 0$$left 0$$right 0$$bindloadfilesilent F:\TCB\RedWater\BO\BO000000.txt
Sorcery/Mystic Flight seems to work fine.
(I did see you updated, but it doesn't seem like it changed any of the bind writing, only configuring in-software, so I've been lazy and haven't updated.)
Probably needs a .Layout() somewhere, maybe with some .Freeze() .Thaw() magic.
Making an issue to track my attempt to replicate one of my current sets.
COMMON.txt
rollchat1.txt
rollchat2.txt
rollchat3.txt
stub.txt
stub-REST-OFF.txt
stub-REST-ON.txt
stub-WALK-01.txt
stub-WALK-02.txt
stub-WALK-03.txt
stub-WALK-04.txt
stub-WALK-05.txt
stub-WALK-B1.txt
stub-WALK-B2.txt
stub-WALK-B3.txt
stub-WALK-B4.txt
stub-windows.txt
Due to limits on the length of directory and file names, it's preferable to have short directory names for all the bind files.
Due to the freedom of character naming in CoX, you can have some really abusive bar-code style names, or really long silly names, or names with a bunch of glottal stops. Directory names like these (especially with apostrophes) can be cumbersome.
Currently, the solution in BindControl is to use a nickname that will hopefully be memorable and recognizable. This might not always be feasible if you have a tanker named Lilgren Mann saved as "LGM" and a mastermind named Little Green Men.
Perhaps the bind directory name has it's own unique-ish field, while the text field for "Character name" can have the actual name which would also serve as the profile's file name.
This also might suggest having BC automatically generate it's own unique identifier to use for the bind directory. Presumable the software knows how long the longest namespace is for all of the bind files when including the base bind directory as well. Given that it is possible (if quite absurd and highly unrealistic) to have something like 5000 characters on Homecoming servers, having BC in charge of directory naming could be helpful.
...instead of allowing "ENTER" to be chosen as a bindable key.
This may be a change in wxPython that needs to be worked around.
Currently this update does not recognize inputs from controllers, keyboards, or mouse Buttons when using the Key select menu.
All menu Options are selectable as normal, but any attempt to input a key for a bind in any of the tabs yields no response.
Pressing the Return/Enter Key Closes the window, The 'Ok" and "Cancel" menu options are selectable, and the "Bind left/Right mod keys Separately" checkbox is selectable
Things that still seem to Work as Usual:
All of the the options under "Profile" Help" and "Log" seem to function as usual
The "write Binds" function works as usual
All interactable Options elements In the "General" "Gameplay" "Custom Binds" "speed on Demand" "inspiration Popper" and "Mastermind/Pet Binds" tabs
Issue 27 Page 7 updated the default keybinds to a new "Modern" set. The "Classic" set is still available. BindControl should have a preference to choose between these for when we reset to default.
With the Speed-on-Demand binds, tapping keys quickly can sometimes get the "mobile" power and the "stationary" power toggled into incorrect states. This is assuredly due to lag and latency in bind_load_file, but it might be that re-ordering the "powexec_toggle" steps and the "up down forward etc" steps in some way would help -- putting the powexec first might make sure that executes earlier?
It's not clear whether this is actually a path to victory; it's most likely in the actual bind_load_file step where the lag happens; this probably won't help. But it's worth a tinker to see.
Warshade's Shadow Step isn't present as a teleport in the SoD panel.
It seems like it still gets a bind for some reason. (bound to "shift")
It also appears that Peacebringer's flight abilities aren't, either.
Work to use Github Actions to automate some of the busywork around automated testing and packaging of new releases.
Really the Name and the Filename should always be in sync for least madness. This is not an urgent issue.
I feel like we've been through this at least once before. Need to investigate permutations of this -- "/show_bind SHIFT+CTRL" reports Invalid Key Combination, but the game still allows such a bind. However, "SHIFT+CTRL+R" for instance seems to trigger "SHIFT+CTRL" instead. Need to clean this up and only allow BindControl to create valid binds. Yet Another KeySelectDialog logic rewrite, sigh.
SoD bindings to use Mystic Flight as a flight power are currently unusable.
Enabling SoD Flight with Mystic Flight will make the character jump nonstop or might actually turn on Mystic Flight, and then you soar into the heavens. Moving in any of the three dimensions turns off the behaviour of flying straight up (tangent: I remember this being an optional setting in SoD), and you can fly around or teleport without issues.
Hitting "F" to toggle Mystic Flight off does not toggle it off, but sets you to soaring straight up as described above (though, since MF is already active, there's no jumping).
I believe Mystic Flight worked fine prior to 0.14, though I hadn't played my Sorcery toons much since restarting playing a few weeks ago. (edited to correct version from 0.4.14... I got over enthusiastic with my 4s.)
This will potentially break if/when new powersets get added.
Had to add this to the reset file manually.
MOUSEWHEEL "+camdistadjust$$playerturn"
If this preference is selected, either generally in the Preferences dialog, or at the time in the Key Binding dialog, pressing the left control key, for instance, results in "LCTRL + CTRL" which no.
The team select bind logic, with the team size / position / rotation, is unfinished. Not clear if it ever worked even in CityBinder. It needs to be polished up and finished, or removed as "WONTFIX".
See if there's some way to speed up loading custom binds. Alternatively, restructure to show the window sooner but throw up a "busy" cursor while loading.
Specific symptom: setting another bind after deleting a custom bind will barf and stack trace inside CheckConflicts because there are UI elements still in Page.Ctrls (most likely) that don't exist any more.
Additional Movement powers not listed/supported - Mystical Flight/ Translocation, Speed of Sound, Infiltration, Mighty Leap.
Looks like the S binding to 'back' should be 'backward' instead?
CoH chat shows "Unknown command: back" on a new profile on Homecoming.
ie, "S+SPACE" is getting saved in the Profile and into the bindstrings, instead of just being for display purposes only.
Binding "jump" into the cardinal movent directions can feel awkward in a way that doesn't happen with flight or running. Typically flying is one dimensional movement at any given instant, while jumping (either Super Jump or Mighty Leap) is two dimensional unless you're jumping straight up.
This two dimensional movement can be an annoyance when you just need to move over slightly and you end up hitting your head on something (as in-game translation for "feels bad" or "camera gets weird").
While turning jumping's SoD into a toggle defeats the purpose of SoD (switching to low endurance drain movement or single-key movement), ... I'll hit my head less? (I don't have a good justification for putting that toggle here other than just keeping all my movement bindings managed in once place (the software) rather than setting up the keybinding in-game.)
It would be nice if there was a function to delete all the old binds before writing the new ones, either as an on-demand button (delete now) or just before writing out bind files.
Your recent patch note about not writing unused MM binds if they're not set, suggests for people upgrading versions are going to have a lot of junk laying around. While this doesn't necessarily hurt anything, it's unsightly.
Going forward, this will still be useful after respec'ing a character out of one travel power to another. (For example, going from Teleportation to Flight, or Sorcery to Force of Will.)
...and therefore does not offer to save changes on app close.
Currently, if the Typing Notifier box is checked, the bind for Start Chat is ends with "beginchat " - which doesn't work. I'd likely want to replace that with "startchat" since we're not feeding the command any text to enter into the new chat.
The original CityBinder temp movement power logic relied on tray icon position to trigger things. We can do better. With the list of temporary movement powers that's available in GameData, we can provide a picker (or pickers), and enable temp movement powers by-name.
It would be nice if we could choose where to put profiles files. My particular installation has CoX installed on a NAS, with sundry support software in a directory nested below. (This is mostly so I have an extra copy of bind profiles and costumes laying around rather than on my local drive.)
Prt SC/SysRq cannot be assigned as a bind key. Not sure if it's a general Windows issue blocking the input, as this will bring up the Snip Tool, or something else.
Typically if you pick a few different keys then go back to the existing one.
On startup, the window covers the full height of my desktop (1440p resolution) and refuses to allow itself to be shortened. This creates a lot of wasted space (roughly 1/5 of the vertical space) and also makes it frustrating to move around, as the "write binds" button is at the bottom of the window making it inaccessible if I reposition the window so it sits lower on the screen.
Windows Defender claims that it detects "Trojan:Win32/Bearfoos.A!ml", and then chucks it in the bin.
I tested 0.17.10.2 and Windows forced a scan before it let me run it this time, but that one seems to be fine.
https://forums.homecomingservers.com/topic/20650-i26-expanded-mastermind-numpad-controls/
https://forums.homecomingservers.com/messenger/9084/
ETA: This will involve plugging in a keyboard with a ten-key.
To very clumsily explain, if we could press the teleport hotkey as a sort of "initiate teleportation" step. This could do things like Hiding Windows and/or showing the teleport targeting reticle for as long as the key is depressed.
On releasing the key, the game actually executes the teleportation (and re-shows windows/etc).
The code exists but the UI isn't exposed and the logic isn't tested at all.
With 0.14.2.1 (and earlier versions as well, I think), dragging the window around the desktop is strangely laggy.
If I click and drag the window, the movement does not keep up with where the mouse cursor actually should be based on mouse movement. This can be demonstrated by releasing the window ("unclicking" the mouse) and the cursor will be exactly where expected, while a phantom cursor remains with the software window. During this "phantom time", the window will continue moving to finish the path that was traced out with the mouse, and will end where it's supposed to.
I believe this must be related to my monitor's refresh rate. When set to 120Hz, the window's movement also appears to be unreasonably smooth. If I set it to 60Hz, the movement is still laggy, but much less smooth.
This behavior is not present when resizing the window when resizing from any of the 8 drag handles.
This doesn't seem to break anything, though I did experience with 0.14.1 that my cursor was off-set from the mouse after running and persisted after closing the program. This was resolved on rebooting my computer so I didn't think anything of it. I can't reproduce this behavior now so might have been a fluke.
I do not know if it's related but making when the window wider, when trying to recenter all the various binding options on any tab, that stuff is a bit jerky. Changing window width when it would be too narrow to show everything is properly smooth. This jerkiness is present at both 120 and 60Hz.
This issue will be open for a long long time. I need to move more code into files/modules that can be tested offline without pulling in all of wx and requiring GUI testing frameworks etc. Mostly this is here as a constant TODO.
Currently in a fresh install it seems to want to save to Documents since Documents/bindcontrol doesn't exist.
From kenlon:
"3: Deselecting a power pool hides the associated powers, but does not change the binding settings. This led to some confusion when my default profile, with no power pools selected, was causing all my windows to vanish when I hit shift."
This is going to be tweaks to how hidden controls are treated when writing bindfiles -- removing all pools will make, for instance, the fly control group invisible, but the picker/wx.Choice inside it is still active. Need to check for Visible as well as Enabled.
Where do the Custom Chat Colors get written? I couldn't find it.
I had to manually edit a file I created, Duke-Options.txt to save/load them.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.