使用Haskell处理关节按键

Stu*_*ton 3 haskell keyboard-events

在Haskell中编写程序,我正在努力处理ctrl-s和ctrl-l形式的按键操作

我使用以下代码:

main :: IO ()
main = do
  hSetBuffering stdin NoBuffering
  x <- getChar
  putStrLn ("You pressed: " ++ [x])
Run Code Online (Sandbox Code Playgroud)

如何识别按下的Ctrl按钮?

drq*_*ver 6

getChar让您可以访问角色,而不是按键.您获得的角色取决于您的用户的操作系统,键盘布局和输入法的选择.按键Ctrl-S或Ctrl-L不会生成"标准"字符(当然,某些系统会为这些控制字符提供标准ASCII代码,其他系统则不会).

如果你想要正确的按键处理,你需要一个真正的输入库 - 例如,SDL或WxWidgets或GTK; 每个都不仅仅是一个输入库,但他们确实有按键抽象.