Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- defaultBindings :: KeyEvent -> [Binding]
- lookupKeybinding :: Event -> KeyHandlerMap -> Maybe KeyHandler
- getFirstDefaultBinding :: KeyEvent -> Binding
- mkKb :: KeyEvent -> Text -> MH () -> KeyEventHandler
- staticKb :: Text -> Event -> MH () -> KeyEventHandler
- mkKeybindings :: [KeyEventHandler] -> KeyConfig -> KeyHandlerMap
- handleKeyboardEvent :: (KeyConfig -> KeyHandlerMap) -> (Event -> MH ()) -> Event -> MH Bool
- data EventHandler = EH {
- ehDescription :: Text
- ehAction :: MH ()
- data KeyHandler = KH {}
- data KeyEventHandler = KEH {}
- data KeyEventTrigger
- newtype KeyHandlerMap = KeyHandlerMap (Map Event KeyHandler)
- data KeyEvent
- = VtyRefreshEvent
- | ShowHelpEvent
- | EnterSelectModeEvent
- | ReplyRecentEvent
- | ToggleMessagePreviewEvent
- | InvokeEditorEvent
- | EnterFastSelectModeEvent
- | QuitEvent
- | NextChannelEvent
- | PrevChannelEvent
- | NextChannelEventAlternate
- | PrevChannelEventAlternate
- | NextUnreadChannelEvent
- | NextUnreadUserOrChannelEvent
- | LastChannelEvent
- | EnterOpenURLModeEvent
- | ClearUnreadEvent
- | ToggleMultiLineEvent
- | EnterFlaggedPostsEvent
- | ToggleChannelListVisibleEvent
- | ToggleExpandedChannelTopicsEvent
- | ShowAttachmentListEvent
- | EditorKillToBolEvent
- | EditorKillToEolEvent
- | EditorBolEvent
- | EditorEolEvent
- | EditorTransposeCharsEvent
- | EditorDeleteCharacter
- | EditorPrevCharEvent
- | EditorNextCharEvent
- | EditorPrevWordEvent
- | EditorNextWordEvent
- | EditorDeleteNextWordEvent
- | EditorDeletePrevWordEvent
- | EditorHomeEvent
- | EditorEndEvent
- | EditorYankEvent
- | SelectNextTabEvent
- | SelectPreviousTabEvent
- | CancelEvent
- | LoadMoreEvent
- | OpenMessageURLEvent
- | ScrollUpEvent
- | ScrollDownEvent
- | ScrollLeftEvent
- | ScrollRightEvent
- | PageUpEvent
- | PageDownEvent
- | PageRightEvent
- | PageLeftEvent
- | ScrollTopEvent
- | ScrollBottomEvent
- | SelectOldestMessageEvent
- | SelectUpEvent
- | SelectDownEvent
- | SearchSelectUpEvent
- | SearchSelectDownEvent
- | ActivateListItemEvent
- | ViewMessageEvent
- | FillGapEvent
- | FlagMessageEvent
- | PinMessageEvent
- | YankMessageEvent
- | YankWholeMessageEvent
- | DeleteMessageEvent
- | EditMessageEvent
- | ReplyMessageEvent
- | ReactToMessageEvent
- | AttachmentListAddEvent
- | AttachmentListDeleteEvent
- | AttachmentOpenEvent
- | FormSubmitEvent
- | NextTeamEvent
- | PrevTeamEvent
- | MoveCurrentTeamLeftEvent
- | MoveCurrentTeamRightEvent
- type KeyConfig = Map KeyEvent BindingState
- allEvents :: [KeyEvent]
- parseBinding :: Text -> Either String Binding
- keyEventName :: KeyEvent -> Text
- keyEventFromName :: Text -> Either String KeyEvent
- ensureKeybindingConsistency :: KeyConfig -> [(String, KeyConfig -> KeyHandlerMap)] -> Either String ()
Documentation
defaultBindings :: KeyEvent -> [Binding] Source #
lookupKeybinding :: Event -> KeyHandlerMap -> Maybe KeyHandler Source #
Find a keybinding that matches a Vty Event
mkKeybindings :: [KeyEventHandler] -> KeyConfig -> KeyHandlerMap Source #
:: (KeyConfig -> KeyHandlerMap) | The function to build a key handler map from a key configuration. |
-> (Event -> MH ()) | The fallback action to invoke if no matching binding can be found. |
-> Event | The event to handle. |
-> MH Bool |
Handle a keyboard event by looking it up in a map of bindings and invoking the matching binding's handler. If no match can be found, invoke a fallback action instead. Return True if the key event was handled with a matching binding; False if not (the fallback case).
data EventHandler Source #
An EventHandler
represents a event handler.
EH | |
|
data KeyHandler Source #
A handler for a specific key.
KH | |
|
data KeyEventHandler Source #
A handler for an abstract key event.
KEH | |
|
data KeyEventTrigger Source #
A trigger for a key event.
Static Event | The key event is always triggered by a specific key. |
ByEvent KeyEvent | The key event is always triggered by an abstract key event (and thus configured to be bound to specific key(s) in the KeyConfig). |
Instances
Eq KeyEventTrigger Source # | |
Defined in Matterhorn.Events.Keybindings (==) :: KeyEventTrigger -> KeyEventTrigger -> Bool # (/=) :: KeyEventTrigger -> KeyEventTrigger -> Bool # | |
Ord KeyEventTrigger Source # | |
Defined in Matterhorn.Events.Keybindings compare :: KeyEventTrigger -> KeyEventTrigger -> Ordering # (<) :: KeyEventTrigger -> KeyEventTrigger -> Bool # (<=) :: KeyEventTrigger -> KeyEventTrigger -> Bool # (>) :: KeyEventTrigger -> KeyEventTrigger -> Bool # (>=) :: KeyEventTrigger -> KeyEventTrigger -> Bool # max :: KeyEventTrigger -> KeyEventTrigger -> KeyEventTrigger # min :: KeyEventTrigger -> KeyEventTrigger -> KeyEventTrigger # | |
Show KeyEventTrigger Source # | |
Defined in Matterhorn.Events.Keybindings showsPrec :: Int -> KeyEventTrigger -> ShowS # show :: KeyEventTrigger -> String # showList :: [KeyEventTrigger] -> ShowS # |
newtype KeyHandlerMap Source #
This enum represents all the possible key events a user might want to use.
Instances
Enum KeyEvent Source # | |
Defined in Matterhorn.Types.KeyEvents | |
Eq KeyEvent Source # | |
Ord KeyEvent Source # | |
Defined in Matterhorn.Types.KeyEvents | |
Show KeyEvent Source # | |
keyEventName :: KeyEvent -> Text Source #
ensureKeybindingConsistency :: KeyConfig -> [(String, KeyConfig -> KeyHandlerMap)] -> Either String () Source #
Given a configuration, we want to check it for internal consistency
(i.e. that a given keybinding isn't associated with multiple events
which both need to get generated in the same UI mode) and also for
basic usability (i.e. we shouldn't be binding events which can appear
in the main UI to a key like e
, which would prevent us from being
able to type messages containing an e
in them!