【问题标题】:Elm: signal for two keyboard keys together?榆树:两个键盘键的信号?
【发布时间】:2015-11-20 17:33:10
【问题描述】:

如何为 alt+o 或 Elm 中的任何其他键对创建信号?

有没有内置的方法可以做到这一点,还是我必须自己创造一些东西?

我对 Elm 很陌生,所以欢迎任何额外的解释。

【问题讨论】:

    标签: elm


    【解决方案1】:

    我自己想通了:

    Signal.map2 (&&) Keyboard.alt (Keyboard.isDown <| Char.toCode 'O')
    

    这会创建一个Signal Bool,当两者都关闭时为真,否则为假。

    【讨论】:

    • 如果你对 Elm Signal 感兴趣,我解释了here
    【解决方案2】:

    是的,elm 中有一种内置方式来处理键盘输入

    模块是keyboard.elm

    根据我的理解,您必须能够使用它

    import keyboard
    import Signal exposing ((<~))
    

    keysDown 函数创建一个信号,通知当前正在按下哪些键

    import Keyboard
    import Signal exposing ((<~))
    import Graphics.Element exposing (show)
    
    
    main = show <~ Keyboard.keysDown
    

    isDown 函数将键代码作为其参数,并返回一个布尔信号,指示当前是否正在按下给定键。对于某些特殊键,还有一些根据 isDown 定义的辅助函数:shiftctrlspace 和 输入。

    import Char
    import Graphics.Element exposing (show)
    import Keyboard
    import Signal exposing ((<~))
    
    
    main = show <~ Keyboard.isDown (Char.toCode 'A')
    

    【讨论】:

    • 谢谢!虽然我现在自己想通了。这也没有解释如何将多台印刷机组合成一台印刷机。
    • 是的,没问题。我自己是stackoverflow的新手。我很高兴能帮上忙……嗯,有点
    • Elm 0.16 昨天刚刚发布,&lt;~ 运算符已从与该版本对应的核心库版本中删除。也许将您的代码 sn-ps 更改为使用 Signal.map 是个好主意。
    • @TheOddler 如果你自己想通了,你能提交你自己的答案吗?
    • @Apanatshka 他们确实在下面看到了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多