Skip to content

Instantly share code, notes, and snippets.

@MichaelXavier
Forked from anonymous/gist:25dd96829f15d989225a
Last active August 29, 2015 14:04

Revisions

  1. MichaelXavier revised this gist Aug 3, 2014. 1 changed file with 12 additions and 7 deletions.
    19 changes: 12 additions & 7 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -5,13 +5,18 @@ data GUIEvent = KeyDownEvent { key_down__ctrl :: !Bool
    | MouseEvent { mouse__x :: !Int
    , mouse__y ::!Int }
    deriving (Show)



    instance FromJSON GUIEvent where
    parseJSON = withObject "GUIObject" parseGUIEvent
    parseGUIEvent v = parseKeyDownEvent v <|> parseMouseEvent
    parseKeyDownEvent = KeyDownEvent <$> v .: "ctrlKey"
    <*> v .: "shiftKey"
    <*> v .: "keyCode"
    parseMouseEvent = MouseEvent <$> v .: "x"
    <*> v .: "y"
    parseKeyDownEvent = do
    tag <- v .: "tag"
    guard (tag == String "KeyDownEvent")
    KeyDownEvent <$> v .: "ctrlKey"
    <*> v .: "shiftKey"
    <*> v .: "keyCode"
    parseMouseEvent = do
    tag <- v .: "tag"
    guard (tag == String "MouseEvent")
    MouseEvent <$> v .: "x"
    <*> v .: "y"
  2. MichaelXavier revised this gist Aug 3, 2014. 1 changed file with 10 additions and 23 deletions.
    33 changes: 10 additions & 23 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -1,30 +1,17 @@
    {-# LANGUAGE OverloadedStrings #-}
    data GUIEvent = KeyDownEvent { key_down__ctrl :: !Bool
    , key_down__shift :: !Bool
    , key_down__code :: !Int }
    | MouseEvent { mouse__x :: !Int
    , mouse__y ::!Int }
    deriving (Show)


    instance FromJSON GUIEvent where
    parseJSON (Data.Aeson.Object v) = KeyDownEvent <$>
    v .: (pack "ctrlKey") <*>
    v .: (pack "shiftKey") <*>
    v .: (pack "keyCode")
    parseJSON _ = mzero


    =============

    function js_set_keydown_ (elem, cb) {
    // console.log(elem);
    elem.addEventListener(
    "keydown",
    function (evt) {
    cb({ "tag" : "KeyDownEvent",
    "ctrlKey" : evt.ctrlKey,
    "shiftKey" : evt.shiftKey,
    "keyCode" : evt.keyCode });
    }, false);
    }

    parseJSON = withObject "GUIObject" parseGUIEvent
    parseGUIEvent v = parseKeyDownEvent v <|> parseMouseEvent
    parseKeyDownEvent = KeyDownEvent <$> v .: "ctrlKey"
    <*> v .: "shiftKey"
    <*> v .: "keyCode"
    parseMouseEvent = MouseEvent <$> v .: "x"
    <*> v .: "y"
  3. @invalid-email-address Anonymous created this gist Aug 3, 2014.
    30 changes: 30 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    data GUIEvent = KeyDownEvent { key_down__ctrl :: !Bool
    , key_down__shift :: !Bool
    , key_down__code :: !Int }
    | MouseEvent { mouse__x :: !Int
    , mouse__y ::!Int }
    deriving (Show)


    instance FromJSON GUIEvent where
    parseJSON (Data.Aeson.Object v) = KeyDownEvent <$>
    v .: (pack "ctrlKey") <*>
    v .: (pack "shiftKey") <*>
    v .: (pack "keyCode")
    parseJSON _ = mzero


    =============

    function js_set_keydown_ (elem, cb) {
    // console.log(elem);
    elem.addEventListener(
    "keydown",
    function (evt) {
    cb({ "tag" : "KeyDownEvent",
    "ctrlKey" : evt.ctrlKey,
    "shiftKey" : evt.shiftKey,
    "keyCode" : evt.keyCode });
    }, false);
    }