module Yavie.Keybind (

  Keybind
, Cmdbind

, Event(..)
, Key(..)
, Modifier(..)
, Button(..)

) where

import Control.EventDriven
import Yavie.Editor

data Event = EvKey Key [ Modifier ]
           | EvMouse Int Int Button [ Modifier ]
           | EvResize Int Int
           | EvExpose
           | EvDeleteEditor
           | UnknownEvent

data Key =
    KEsc
  | KFun Int
  | KBS      | KDel     | KIns     | KTab     | KBackTab | KEnter
  | KUp      | KDown    | KLeft    | KRight
  | KHome    | KEnd     | KPageUp  | KPageDown
  | KMenu    | KPause   | KPrtScr
  | KASCII Char
  | KOthers Int
  | KUnknown

data Modifier = MShift | MCtrl | MAlt | MMeta

data Button = BLeft | BMiddle | BRight

type Keybind   c = Event  -> EventMonad Event ( Editor c ) ()
type Cmdbind   c = String -> EventMonad Event ( Editor c ) ()