haskell / win32

Haskell support for the Win32 API
http://hackage.haskell.org/package/Win32
Other
97 stars 62 forks source link

Support for ReadConsoleInputW #236

Open chhackett opened 1 week ago

chhackett commented 1 week ago

There are several terminal based apps and libraries that have developed their own implementation of ReadConsoleInputW. This function allows apps to provide support for reading console input including virtual terminal sequences on the Windows platform. This is different from stdin which does not handle escape sequences.

It would be nice to consolidate these implementations in the Win32 library since these apps already use it for other purposes.

Example libraries/apps that use it: vty-windows: https://github.com/chhackett/vty-windows/blob/main/src/Graphics/Vty/Platform/Windows/WindowsConsoleInput.hsc haskeline: https://github.com/haskell/haskeline/blob/master/System/Console/Haskeline/Backend/Win32.hsc

I think there are one or two other examples out there.

This would allow library and app developers to remove duplicate code from their codebases and provide new functionality.

Mistuke commented 1 week ago

Hmm yeah agreed. I think vty's implementation is separate enough to pull in. It's license is compatible as well. I think you wrote it right @chhackett?

chhackett commented 1 week ago

Yup, that was me. And that's the main motivation to get this into Win32, so I don't have to maintain that bit of code. :) I'll get a PR put up in a few days for review. I think I saw some of the data types I need in Win32 already, so I'll make sure to re-use those.

Mistuke commented 1 week ago

Great, thank you!