Safe Haskell | None |
---|---|
Language | Haskell2010 |
- press :: (MonadWorkflow m, MonadThrow m) => String -> m ()
- readEmacsKeySequence :: String -> Maybe KeySequence
- readEmacsKeyChord :: String -> Maybe KeySequence
- readEmacsModifier :: String -> Maybe Modifier
- readEmacsKey :: String -> Maybe KeyChord
- press' :: (MonadWorkflow m, MonadThrow m) => KeyChordSyntax -> String -> m ()
- readKeySequence :: KeyChordSyntax -> String -> Maybe KeySequence
- readKeyChord :: KeyChordSyntax -> [String] -> Maybe KeyChord
- readModifier :: ModifierSyntax -> String -> Maybe Modifier
- readKey :: KeySyntax -> String -> Maybe KeyChord
- data KeyChordSyntax = KeyChordSyntax {}
- type ModifierSyntax = Map String Modifier
- type KeySyntax = Map String KeyChord
- defaultKeyChordSyntax :: KeyChordSyntax
- defaultModifierSyntax :: ModifierSyntax
- defaultKeySyntax :: KeySyntax
- emacsKeyChordSyntax :: KeyChordSyntax
- emacsModifierSyntax :: ModifierSyntax
- emacsKeySyntax :: KeySyntax
- addMods :: [Modifier] -> KeyChord -> KeyChord
- addMod :: Modifier -> KeyChord -> KeyChord
- char2keychord :: MonadThrow m => Char -> m KeyChord
Documentation
press :: (MonadWorkflow m, MonadThrow m) => String -> m () Source #
Parses and executes a keyboard shortcut. (via readKeySequence
and sendKeyChord
).
e.g. compare:
press "H-S-t H-l"
to:
traverse_
sendKeyChord'
[KeyChord
[HyperModifier
,ShiftModifier
]TKey
,KeyChord
[HyperModifier
)LKey
]
(a keyboard shortcut to "re-open tab, then jump to url bar")
throwM
s on a "syntax error"
The default syntax is inspired by Emacs:
press =press'
defaultKeyChordSyntax
readEmacsKeySequence :: String -> Maybe KeySequence Source #
>>>
readEmacsKeySequence "H-S-t H-l"
Just [([HyperModifier,ShiftModifier],TKey),([HyperModifier],LKey)]
=readEmacsKeySequence
emacsKeyChordSyntax
readEmacsKeyChord :: String -> Maybe KeySequence Source #
>>>
readEmacsKeyChord "H-S-t"
Just ([HyperModifier,ShiftModifier],TKey)
=readEmacsKeyChord
emacsKeyChordSyntax
readEmacsModifier :: String -> Maybe Modifier Source #
>>>
readEmacsModifier "H"
Just HyperModifier
=readModifier
emacsModifierSyntax
readEmacsKey :: String -> Maybe KeyChord Source #
>>>
readEmacsKey "<tab>"
Just TabKey
=readKey
emacsKeySyntax
press' :: (MonadWorkflow m, MonadThrow m) => KeyChordSyntax -> String -> m () Source #
Build your own press
. e.g.
import Workflow.Core hiding (press) press = press' KeyChordSyntax{..} modifierSyntax :: ModifierSyntax modifierSyntax = defaultModifierSyntax -- defaulting keySyntax :: KeySyntax -- overriding keySyntax = Map.fromList [ ... ]
readKeySequence :: KeyChordSyntax -> String -> Maybe KeySequence Source #
readKeyChord :: KeyChordSyntax -> [String] -> Maybe KeyChord Source #
readModifier :: ModifierSyntax -> String -> Maybe Modifier Source #
surjective, non-injective.
data KeyChordSyntax Source #
A table for parsing strings of modifiers and keys.
Eq KeyChordSyntax Source # | |
Data KeyChordSyntax Source # | |
Ord KeyChordSyntax Source # | |
Read KeyChordSyntax Source # | |
Show KeyChordSyntax Source # | |
Generic KeyChordSyntax Source # | |
Monoid KeyChordSyntax Source # |
|
NFData KeyChordSyntax Source # | |
type Rep KeyChordSyntax Source # | |
emacsModifierSyntax :: ModifierSyntax Source #
(see source)
emacsKeySyntax :: KeySyntax Source #
follows Emacs keybinding syntax, with some differences:
non-modifier uppercase alphabetic characters are not shifted, for consistency:
non-alphanumeric characters can be in angle brackets:
(see source)
char2keychord :: MonadThrow m => Char -> m KeyChord Source #