Character Name: Crags Where are you having an issue(s): In-game Date and Time when issue(s) occurred (GMT): -- Details of the issue: See below. What error code were you given (if any): -- This thread is related to a technical issue previously raised here: https://royals.ms/forum/threads/unable-to-jump-continuously.143027. I've been facing this and related issues ever since purchasing a new laptop months ago, and it's incredibly limiting and frustrating. I finally developed a solution using AutoHotkey and would like official feedback as to whether I can legally use it in-game. I'm not an expert on this, but will try to explain as best I can. Problem: The keys on most keyboards "auto-repeat" when pressed and held down. For example, if you press and hold down the "a" key, an initial "a" appears followed, after some delay, by "aaaaaaa" (and so on) which appear at a fixed rate. The most significant in-game implication of this is that actions or skills bound to these keys can be repeated by holding the key, rather than mashing it over and over and over again. However, on some laptop keyboards, it seems that important keys such as "Ctrl", "Alt", and "Shift", which are "modifier" keys, are not designed to auto-repeat. This is the case for the built-in keyboard which came with a laptop I purchased a while ago, and also for the author in the thread I linked above (who had the jumping action bound to "Alt"). Previously available solutions: Avoid using affected keys. This isn't a satisfactory solution, as I usually have lots of keybinds (especially for my Buccaneer main) and need all keys available. Attempt to simulate auto-repeat for these keys via the fix discussed in the thread above (commented by @Zancks), which involves using FilterKeys (RepeatKeys) and making registry edits. It straight up did not work for me. (I also think that registry manipulation by inexperienced users, such as myself, is not really something to be encouraged.) Buy and use an external keyboard which doesn't have this problem. This isn't a satisfactory solution, as it requires buying new hardware and is super clunky. Proposed solution: I wrote a basic AutoHotkey script which simulates auto-repeat for the affected keys. Here is an example for the right "Ctrl" key: Code: $RCtrl:: { send '{RCtrl down}' sleep 450 while GetKeyState('RCtrl', 'P'){ send '{RCtrl down}' sleep 30 } send '{RCtrl up}' return } The script first sends the initial "keydown" event, then waits 450 ms to see if the key is still being held. If it is, then the auto-repeat behavior is simulated by repeatedly sending keydown events every 30 ms. Finally, when the key is no longer held, the "keyup" event is sent. I very briefly tested this script with my main (Lv. 200 Buccaneer) in Henesys Hunting Ground I for about a minute, and with another character (Lv. 72 Sniper), which has more spammy gameplay, in the Free Market for about a minute. From what I can tell, it works as intended and solves the issue. To really know if it's a viable fix, I would have to test it further by actually playing with this script running. Comments: I am concerned that using this script may be seen as a violation of the Terms of Service, and would like some official feedback. I know that the general rule for control modifications is that they must be "1:1", but I'm not sure how this applies in this case. Even on totally unmodified keyboards, key auto-repeat allows users to perform multiple, repeated in-game actions (corresponding to multiple keydown events) with just one physical action (holding a key). To me, it seems that the only way this doesn't contradict the 1:1 guideline is if either the multiple in-game actions (resulting from auto-repeat) are actually considered as one action, or if holding a key is actually considered more than one physical action. In either of these cases, I think that my script should comply. Thanks for your help!
For the mentioned solution 2, registry edits are only required if you wish to have quicker repeats than 0.3 seconds Is 0.3 seconds too slow for you or?
For most skills, no. (For some, like Flash Fist, it is still too slow.) Also, note that turning RepeatKeys on affects all keys on the keyboard, so the ability to use auto-repeat for non-problematic keys is lost. For example, to delete some text I've written, I now have to either mash "Backspace" or wait as it slowly deletes one character every 0.3s.
Hi, still awaiting an official response. (Would really love to have Strafe on my Shift key for my Marksman.) Thanks!
As there's a possibility of complications, will check with Staff team and get back to you within a few days
Hello, I have discussed the issue + your proposed solution with some Staff We, the Staff, cannot endorse the usage of AutoHotKey, and can only recommend you either use AutoRepeat (0.3), or an external keyboard
Your issue isn't about the rebinding of keys though You may reference to this https://royals.ms/forum/threads/is-ahk-allowed.122579/
The example script I provided is exactly a key rebind. Also, I'm sorry, but the thread you referenced is irrelevant. This person wants to press a key ("keydown" + "keyup") and have their character do something continuously until they press the key again (another "keydown" + "keyup"). This is clearly not "1:1". My example script doesn't do anything as soon as the key is released.
Your script would be repeating action as if it were tapping that key upon holding down, which isn't a rebind of the key You may elaborate further if I have misunderstood your script usage (I have also discussed your script function with other Staff)
It's still a rebind of the key, but it's not a simple rebind such as just mapping one key to another. (Such simple rebinds trivially correspond to a "1:1" remapping of controls. There would be no need to ask about these as they are clearly in accordance with the Terms of Service.) A technical note: The script does not simulate the repeated "tapping" of a key. Pressing and releasing a key corresponds to two keyboard events ("keydown" followed by "keyup"). My script only sends one of these events (the "keydown" event) repeatedly while held, and only sends the "keyup" event when released. This is exactly how auto-repeat works, by default, for all keys on most keyboards and for all non-modifier keys on all keyboards. The point of identifying my script as a key rebind is only to pose the following question (which I asked above): If the response to my inquiry from the Staff is that they "cannot endorse the use of AutoHotkey" then how do they propose users modify their keyboard controls in accordance with the Terms of Service? (Note that it is not a violation of the Terms of Service to use AutoHotkey.) The larger, more important question (which needs to be addressed) is how keyboard auto-repeat fits into the "1:1" guideline for admissible controls. This very often default keyboard functionality allows multiple, repeated in-game actions to occur when prompted by a single physical action (holding the key). Nevertheless, as default keyboard behavior, it is allowed. The separate question of whether it's allowed to simulate such behavior is somewhat secondary.
I think you have misunderstood my reply, the response of "cannot endorse the usage of AutoHotKey" is for your mentioned scenario - hence why I have included the 0.3 seconds and external keyboard in my response as well "We, the Staff, cannot endorse the usage of AutoHotKey, and can only recommend you either use AutoRepeat (0.3), or an external keyboard" For the rest of the content, I will forward it to the Staff team
Thanks for clarifying. I deduce that this specific use of AutoHotkey is what's referred to. In that case, it's definitely important to clear up misunderstandings about what the script does. Thanks again for forwarding!
To clarify, utilizing AutoHotKey for a straightforward 1:1 key bind is permissible under our Terms of Service. However, your script, which simulates repeated CTRL key inputs while held down, exceeds a simple rebind. Although not explicitly forbidden, this functionality raises concerns about potential exploits and inconsistencies in gameplay experience. Instead, we recommend the Windows built-in Repeat Keys function (set to 0.3 seconds) or utilizing external keyboards with native auto-repeat capabilities. As for AutoHotKey, while its use is not a violation, we would need to conduct individual reviews of each script and setup to ensure compliance with our guidelines if we endorse your specific usage.
Hello. Just to clarify, we cannot endorse the use of AHK with what you’re looking to use it for. The only thing that staff has approved is 1:1 key bindings which this is not quite that. I understand what you’re trying to do and I know this is isn’t what you were hoping to hear, but it opens the door to a bunch of potential abuse. The only alternative suggestions that we have are: Use an external keyboard Use the Windows built-in Key Repeat functionality set to 0.3 seconds.
Hi Bacon, thanks for replying. I understand. Any thoughts about the problem below? To me, this seems like a bug in the Terms of Service.
It is not a bug in the Terms of Service. If we opened up that portion of the rule it could (and probably would) allow players to start justifying their rule breaking by saying they were doing this. We discussed it internally and it not something that we are comfortable opening up at this time.
Sorry, I don't understand. The Staff isn't comfortable elaborating on how keyboard auto-repeat is allowed under the "1:1" guideline for admissible controls? (This is the bug I'm referring to.) (Technical discussions of this guideline between players and Staff have occurred in the past, such as the subject of rebinding mouse clicks to the mouse scroll wheel for the purpose of dropping mesos.)
Yes, technical discussions have occurred. Both Dave and I have given you Staff’s stance on this specific matter (using AHK to run a custom script that mimics what other keyboards can do by default) which is we are not comfortable allowing that specifically at this time. Please understand that the 1:1 T&C statement was written with the sole intent of a single key press being mapped to a single key press. We cannot adjust the T&C to account for every edge case like yours unfortunately. You have been given solutions (whether you like them or not) to the problem. I won’t be responding further as our stance won’t change on this.