The repeat is nearly immediate – so way faster than the autorepeat. but it’s not instant
The autorepeat we are interested in is the autorepeat timeout causing the first repetition. The further repetitions of the same key continue because the “key release” event is not received by the remote, presumably because of a network problem. So what really counts is that the round-trip time is less than the (first) autorepeat timeout.
This problem can be caused by a particular delay between packets being introduced by the network. A SSH terminal is not affected by this, since the characters sent by the terminal application are produced on the client side and only echoed by the server. Same for a voice or a video call, where the buffer underflows or the network jitter can be easily compensated. For voice and video 1 second delay (caused by buffering) is the norm. You just don’t notice that because audio and video are synchronized. When you are talking with somebody there are not many “round-trips”, but YouTube is full of videos showing the funny effect when people try to “synchronize”. Unfortunately in a system like NoMachine you can’t produce characters on the client, since how each key press is translated depends on whatever keymap or program is running on the server. NoMachine has some tricky algorithms to “compensate” the key presses, but evidently they don’t work in your case. Probably this depends on big spikes in latency, happening from time to time.
If you want, we can provide a test version with some logs enabled. This should shed more light on the issue and surely help to improve the code.