Thanks for reporting this.
Fixed in the next release: https://feedback.objo.dev/bug/505
Internally Objo receives some punctuation keys from the desktop UI framework with names like OemQuotes, OemCloseBrackets, and OemMinus. Those names should not have been exposed through Objo.
I’ve changed this so KeyDown(keyName As String) As Boolean stays as the single event, but Objo now normalises those values to Objo-friendly key names. For example:
OemQuotes → Key.Quote
OemMinus → Key.Minus
OemCloseBrackets → Key.RightBracket
So you should compare against Key constants rather than hard-coded strings:
Function TextField1_KeyDown(keyName As String) As Boolean
If keyName = Key.Quote Then
Print("Quote key")
End If
Return False
End Function