mikeastock / elm-keys

Advanced keyboard event bindings for Elm

Home Page:http://package.elm-lang.org/packages/derrickreimer/elm-keys/latest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Keyboard Events for Elm

This library provides keyboard event functions, similar to the helpers provided in Html.Events.

Travis build status

Usage

The core event types this library supports are keydown, keypress, and keyup. Since it's often necessary to listen for multiple keyboard events on a given form control, the event functions accept a list of listener criteria that map to particular message constructor.

Suppose you have a <textarea> and you would like to:

  • Close the editor when the user presses Esc,
  • Submit the value when Meta + Enter is pressed (on a Mac, the meta key is Command), and
  • Prevent the default behavior when either of those keys are pressed.

Your program (partially) might look something like this:

import Keys exposing (Modifier(..), KeyboardEvent, preventDefault, onKeydown)


type Msg
    = MetaEnterPressed KeyboardEvent
    | EscPressed KeyboardEvent


view : Html Msg
view =
    textarea
        [ onKeydown preventDefault
            [ ( [ Meta ], Keys.enter, MetaEnterPressed )
            , ( [], Keys.esc, EscPressed )
            ]
        ]
        []


-- Other program details omitted

The first argument is a set of options (see Html.Events options).

The second is a list of three-part tuples containing:

  • a list of modifier keys,
  • a key code, and
  • a message constructor.

About

Advanced keyboard event bindings for Elm

http://package.elm-lang.org/packages/derrickreimer/elm-keys/latest

License:MIT License


Languages

Language:Elm 99.4%Language:Shell 0.6%