dotnet/Silk.NET

The encoding of GetClipboardString method in Glfw is not correct.

XiaofengdiZhu opened this issue · 1 comments

Summary

The encoding of GetClipboardString method in Glfw is not correct, it should be LPUTF8Str.

Steps to reproduce

  • Platform: Desktop (Windows 11 in Simplified Chinese)
  • Framework Version: .NET 9
  • Package: Silk.NET.Input.Glfw version 2.22.0
  • API: /
  • API Version: /
  1. Copy a Chinese character, then run Console.WriteLine(inputContext.Keyboards[0].ClipboardText), the output is wrong.
  2. For example, I copy , the output will be 浣?
  3. Then I run Encoding.GetEncoding("gb2312").GetString(Encoding.UTF8.GetBytes("你")), the result is 浣? too. (gb2312 is the default encoding of my system.)
  4. I set a breakpoint in SilkMarshal.PtrToString method and run Utf8PtrToString(input), I get the correct character .

Comments

In the document of GLFW:

const char* glfwGetClipboardString	(	GLFWwindow * 	window	)	
This function returns the contents of the system clipboard, if it contains or is convertible to a UTF-8 encoded string.

So we have to use UTF-8 too.

If you know how to fix this issue, please submit a pull request instead!
The code of GetClipboardString seems autogenerated, I don't know how to fix it.