| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Workflow.Keys
- 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")
throwMs 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)]
=readEmacsKeySequenceemacsKeyChordSyntax
readEmacsKeyChord :: String -> Maybe KeySequence Source #
>>>readEmacsKeyChord "H-S-t"Just ([HyperModifier,ShiftModifier],TKey)
=readEmacsKeyChordemacsKeyChordSyntax
readEmacsModifier :: String -> Maybe Modifier Source #
>>>readEmacsModifier "H"Just HyperModifier
=readModifieremacsModifierSyntax
readEmacsKey :: String -> Maybe KeyChord Source #
>>>readEmacsKey "<tab>"Just TabKey
=readKeyemacsKeySyntax
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.
Constructors
| KeyChordSyntax | |
Fields | |
Instances
| 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 #