Maximum Key Rollover Speed.
-
Not many will have heard of this before, but its the maximum speed in Milliseconds that a key press has to be held before the required function is recognised and activated. I personally in the old days have seen a typist who used to have a really high words per minute rate on a standard electric typewriter, but when it came to using a word processor, it missed out so many characters due to it having a slow scan rate that it affected what it was receiving and hence put total gibberish on the screen. When she slowed down and found the fastest speed it could work at she was fine but still knew she could type faster than it.
Now I know that BMS as it stands is a mixing up of Falcon 4 (1997/8 when scan rates were low) for a start with additions from SP3, SP4, and a lot of other individual addons. BUT. This question is aimed at the programmers more than anything, what is Falcons maximum key press speed before it missed the command. For instance I have a keyboard capable of making a macro that could send a stream of input 100 characters per sicond at a PC that will accept that kind of input, however the keyboard scan rate in any certain game is held back and so out of that 100 characters only a certain number say 30 will actually get through, which does kind of defeat the purpose of having stuff that goes this fast.
Generally Ive been trying as have others to use the SST software, recently updated by LOGITECH who now sell the old Saitek gear and own the rights. so the new driver sets for all Saitek sticks except the X55 which is out of date and been replaced with the X56. The new software and drivers also add a time factor to key presses and durations and is it necessary for such time constraints to still be in place.
Now lets look toward the golden stick of the sticks, the top dog supposedly, the Cougar. its either USB 1.0 or USB 2 depnding on when you bought it. Its old, its out of production and has been replaced by the New Warthog in the Thrustmaster series and maybe, just maybe this stick works so well is because of its age and its ability to match the necessary call speed of each command signal. This would explain why people with newer USB 2 stick which have a faster transfer rate, suffer with missed commands sent from their sticks either through the SST software or through the directx inputs.
So please would it be possible to give us the maximum scan code so that newer equipment may be slowed down via advanced macro timing to make all instructions queue up in the buffer and get activated without having missed any out.
As an example of manual input I used an online tool to time some keypresses at random the reuslts are shown below and vary greatly. Would the faster ones be missed while the slower ones get used?
Manually input stream of random keys
s: 73ms
d: 121ms
v: 164ms
alt: 153ms
alt: 92ms
x: 116ms
148ms
x: 180ms
208ms
x: 352ms
x: 160ms
200ms
x: 149ms
f: 216ms
d: 329ms
f: 80ms
e: 208ms
d: 124ms
s: 71msAutomated Macro input of random characters with set timing
e: 62ms
f: 250ms
e: 437ms
g: 313ms
h: 125ms
u: 187ms
d: 63ms
j: 62ms
a: 63ms
k: 63ms
r: 63ms
t: 63ms
f: 63ms
g: 126ms
d: 126ms
h: 126ms
a: 113msSomewhat faster and more reliable than a human input.
Classic in game example, EJECT you have to hold the keys in for 3 seconds I think it is for the command to be accepted, what about the rest.
Those wishing to have a play with the rate tool, its free to use as is here online. http://blog.seethis.link/scan-rate-estimator/
Try it out and make a macro and then try it with your own fingers and see the speed differences. Im thinking the latest sticks are sending commands too fast into Falcon to all get buffered correctly. I noticed on some macros that the game actually stalled while it sorted them out.
-
Classic in game example, EJECT you have to hold the keys in for 3 seconds I think it is for the command to be accepted
Don’t know anything about the rest of your post, but the reason you need to hold that key press has nothing to do with the time needed to register it. It’s simply because you wouldn’t want an accidental eject. IRL, the ejection sequence won’t trigger if you just pull the cord out 1-2cm either, for the same reason. You really need to yank it out some distance.
-
Which is why i mentioned it as a classic example, it is a time constrained activation. If you want to you can actually find out how computers work and why they manage to do what they do. May I suggest using Google and do a search for “How does a keyboard Work” or how does a computer know what key I pressed" as you said you dont know about the rest of the post. Ive only flown Falcon since 1998. Ive been buillding computers since i was at school since 1976 and know how they work inside and out. You too could have the same knowledge if you read up on it.
My point is that I am trying to find out if indeed there are other default times set out in the sim for the activation to occur. This issue has been with us since SP3, where some people have no issues at all and also with some Sticks / HOTAS due to their programming software. There is also the ping time to be added in for receiving an activation of operation from the server. Some of us dont live in the USA and have to contend with a 45000 mile round trip through sattelites. So if say I had a mmacro set that ran for 100ms would it have time to make the trip prior to dropout seeing as my ping time to most US servers is over 150ms.
All I wish to know is if there is a list of default times for each action then could it please be published so it can be accomodated in Advanced or timed macros in other sticks. I never had a single issue at all when I flew with a Microsoft Sidewinder 2 way back in the day and it still works fine today. But as for Saitek ( and yes Ive seen the posts on the SST software that it doesnt work) well it does BUT it sends keypress data very quickly and if this is missed by the keyscan in the sim then obviously it isnt going to work. For example TMS Up, simple key press coded into the SST software will not function yet the software is merely sending the SHIFT HOME keypresses, now send the same command using the Keyboard manual pressing and it does work. I also have a Gaming Keyboard that can send timed or standard keypress combinations, Shift is held at the start, then 50ms later the Home Ky is pressed and held until released then the HOME key is released given a gap of 50ms and then the SHIFT is released 50ms later.
I am aware of the eject system ive flown the silk more times tha I care to admit. But thanks for pointing that out I should have made my first post a little clearer the example was meant to show that some key combos do have a set time delay prior to activation. Sorry for the confusion. Thanks for taking the time to look at my other posts.
-
Actually, what these times are most relevant for is in diagnosing (or predicting) key collisions - I had an issue where stepping on a brake and trying to retract speed brakes was causing my hook to cycle…because the two key were clobbering each other. I fixed it with a programmed key timeout on my speed brake switch but all I had to go with was timing how long it takes the boards to retract…probably overkill, but it solves my problem.
With a tool like this I could be more precise. Also - be aware that if you press and hold a key is will generally repeat at a 20-22 Hz (I think…?) rate. Need to factor this in, in those cases.
-
20 - 22 times a second, that sounds like the key scan of a standard keyboard, yet this Corsair K50 according to its specs does 5 times that for some reason. However the scripting collision does make a compelling argument for some of the things that are happening in the SST file.
I wonder if its actually a similar problem between the SST and my keyboard. but that doesnt explain when just a key is pressed everything works as it should and when a button is pressed on the stick it just does squat.
You may well have found an answer in there bud. According to the macro timing above it runs nearly twice the speed of manual pressing and the SST hmm, i didnt try that one out. And there you have it, check this out a random set of characters in a simple macro
spacebar: 12ms
s: 12ms
f: 8ms
e: 11ms
r: 11ms
d: 11ms
t: 8ms
f: 12ms
y: 11ms
g: 11ms
t: 11ms
h: 11ms
j: 30ms
k: 11msTheres no wonder the SST softwares been screwing up, ill bet there not half of the commands being sent by it not even making it through the ping at these speeds. And catching a lot of them in the double bounce part of its internal software or reading inputs as mispressed keys.
Therefore if each macro on the stick is given a key down time of around the human press down time the commands should all function in the SST software without question. Or so this seems to be the case in this instance. I would point out for those wishing to try it that I am using the latest set of drivers, series 8 from the logitec site and not Saitek or Madcatz. For those who didnt know Logitech have bought all the flight stick rights from Madcatz and from Saitek so all driver updates for Saitek sticks with the exception of the X55 can be downloaded from the Logitech support downloads page.
This would also explain why directx input which would equate to manual keypressing in key down time works where the SST doesnt. So the advanced macro setup looks like the correct way to go and thos with Gaming keyboards set the key down times to around 80-100ms this would give the input time to be recognised as a genuine key press and not an accidental fat fingers press as most of us have done from time to time.
Without knowing it Stevie I think you may have found the answer I was looking for. Many Thanks.
-
Well done Stevie.
You had indeed found the answer to the problem with the SST software. If a standard macro is made in the SST Programming software it sends each key down the keyboard buffer at nearly twice the rate the buffer fills up ie at between the 20 - 22Hz suggested by Stevie. After the above test I deceided to make a series of macros for operations that usually failed in Falcon as if the keys had never ben pressed/ One in particular was TMS Up to lock onto an area or target. This wouldnt work going through the SST as a normal macro and now I know why. so for those who have never made an advanced macro in SST or indeed other programming software for joysticks heres a quick reference, Read the stick manual it is available still from Saitek, Madcatz and Logitech you want the part on advanced Macros. Set the press down start time at 0.00, the second key its delay at 100mm or 0.100 in the delay window and the same for any further keys this gives all keyboards, gaming or normal enough time to scan that the key has been pressed. Then as you release each key do it in reverse order, set each release timing to 50ms or 0.050 in the delay window and off you go . No more mashing of the buttons on the HOTAS. It may even work on cougar programming software.
And after a few hours of testing not a single advanced macro function has failed to make the relevant operation in the pit work, apart from obviously the list of parts in the pit that dont work, IFF etc.
Thanks Stevie
-
Quite welcome. Buffering outside of the keyboard itself (within any of BMS/FAF or a scrip) is one more link it the chain - thanks to you for pointing that out.