gpt4 book ai didi

keyboard - Elm 键盘组合快捷键

转载 作者:行者123 更新时间:2023-12-05 03:12:13 24 4
gpt4 key购买 nike

在我的 Elm 程序中,我想要一些键盘快捷键。

我有一个快捷键 d 可以满足我的要求,但是,我希望组合键是 alt+d

StartApp.start { 
init = (emptyModel, Effects.none),
view = view,
update = update,
inputs = [ Signal.map forwardKey Keyboard.presses]
}

forwardKey : Int -> Action
forwardKey keyCode =
case (Char.fromCode keyCode) of
'd' -> Add
_ -> NoOp

我注意到有一个 keyboard.alt 信号返回 Signal Bool 以检查是否按下了 alt。

如何使用此信号将快捷方式从 d 更改为 alt+d

最佳答案

See this answer to the same underlying question .

请注意,要捕获 Alt-D 将非常困难甚至不可能,因为这是浏览器使用的常见组合键。例如,当您按下 Alt-D 时,Chrome 会将焦点转移到地址栏。出于这个原因,我将恢复到上面的示例并在此处使用 Alt-0 作为和弦:

您可以使用 map2 创建一个新的 bool 信号,告知您的组合键是否被按下。我们将创建一个名为 chordPressed 的新信号,如下所示:

chordPressed : Signal Bool
chordPressed =
Signal.map2 (&&) Keyboard.alt (Keyboard.isDown <| Char.toCode '0')

现在,我们需要将该信号转换为 Action,然后才能将其传递到 inputs 列表中。

chordToAction : Signal Action
chordToAction =
let
toAction b =
case b of
True -> Add
False -> NoOp
in
Signal.dropRepeats
<| Signal.map toAction chordPressed

现在,您可以将 chordToAction 传递到 inputs 列表中。同样,您可能希望选择一个不会首先被浏览器捕获的键和弦,就像 Alt-D 一样。

inputs = [ chordToAction ]

关于keyboard - Elm 键盘组合快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com