It does correctly move the cursor, however it also types the broken character.
Okay thanks for letting me know. If you want to attempt fixing, the relevant function is called InputField in the UI class. Specifically this code:
foreach (char c in InputHelper.InputStringThisFrame) { bool invalidChar = char.IsControl(c) || char.IsSurrogate(c) || char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.Format; if (invalidChar) continue; state.TryInsertText(c + "", validation); }
Once I got into the project, it took less than 10 minutes. It was a single line of code I had to modify. I just added logging to find out how to filter it out, and then did that. I used Unity for a very short period years ago, but I seem to have remembered most of the basic functionality, which made it easier.