I found the solution, my workaround:
Old versions of SDL have the function SDL_EnableKeyRepeat that we can set to 0 and disable it, in the newer version, we should be able to see if the event KEY DOWN and UP are repeat looking into the var ev.Key.Repeat (0 user key press, 1 repeat event). But i tried to check the repeat value here:
with no luck, it returns 0 and 1 randomly.
I tried to import the SDL function SDL_GetKeyboardState and check if the key value is pressed in the KEYUP event, and it returns 0 and 1 randomly too, as the key was pressed and released multiple times.
IntPtr keyboardState = Sdl.Keyboard.GetKeyboardState(out numkeys);
byte keybardBuffer = new byte[numkeys];
Marshal.Copy(keyboardState, keybardBuffer, 0, numkeys);
I saw a fix for something like this released recently in the SDL and people talking about the same issue in some keyboard configs.
I tried to change my keyboard settings to disable the keyrepeat, but it didn't work as well, even if this solution was only for testing.
Then i got the lastest version of SDL and replaced the libSDL2-2.0.so.0 from the x64 bin dir by the /usr/local/lib/libSDL2-2.0.so.0.5.0 and it worked as expected. So i recommend update the MG SDL version to fix it.