Safe Haskell | None |
---|---|
Language | Haskell2010 |
Karabiner.Config
Description
Provides support for generating a Karabiner config via Haskell.
Synopsis
- mkMain :: Root -> IO ()
- encodeRoot :: Root -> ByteString
- litPat :: Text -> Text
- data KeyBinding a = KeyBinding [a] KeyCode
- singleKey :: KeyCode -> KeyBinding PhysicalModifier
- (|->) :: KeyBinding a -> KeyBinding a -> [KeyBinding a]
- class ToKeyBinding a b c | a b -> c where
- (|+|) :: a -> b -> KeyBinding c
- class ManipulatorBuilder a b where
- (!>) :: a -> b -> Manipulator
- frontmostApplicationIf :: Manipulator -> [Text] -> Manipulator
- (?) :: Manipulator -> [Text] -> Manipulator
- (??) :: [Manipulator] -> [Text] -> [Manipulator]
- frontmostApplicationUnless :: Manipulator -> [Text] -> Manipulator
- (?!) :: Manipulator -> [Text] -> Manipulator
- (??!) :: [Manipulator] -> [Text] -> [Manipulator]
- data Root = Root {}
- data Rule = Rule {}
- data Manipulator = Manipulator {}
- data ManipulatorType = Basic
- manipulatorTypeToText :: ManipulatorType -> Text
- data ManipulatorFrom = ManipulatorFrom {}
- data ManipulatorTo = ManipulatorTo {}
- data ManipulatorCondition = ManipulatorCondition {}
- data ManipulatorConditionType
- manipulatorConditionTypeToText :: ManipulatorConditionType -> Text
- data FromModifiers = FromModifiers {}
- data PhysicalModifier
- data MetaModifier
- data AnyModifier
- class AsAnyModifier a where
- asAnyModifier :: a -> AnyModifier
- data KeyCode
- numbers :: [KeyCode]
- keyCodeToString :: IsString a => KeyCode -> a
Documentation
encodeRoot :: Root -> ByteString Source #
Encode a Root
to a JSON lazy ByteString.
data KeyBinding a Source #
Represents a key binding of [a]
modifiers (e.g. shift, control) and a key code.
The a
is polymorphic so we can make distinctions between PhysicalModifier
and MetaModifier.
Constructors
KeyBinding [a] KeyCode |
Instances
(TypeError (('Text "Unsupported ManipulatorBuilder (!>) usage;" :$$: 'Text "'to' binding must use a PhysicalModifier (e.g. RightControl)") :$$: 'Text "not a MetaModifier (e.g. Control)") :: Constraint) => ManipulatorBuilder a (KeyBinding MetaModifier) Source # | |
Defined in Karabiner.Config Methods (!>) :: a -> KeyBinding MetaModifier -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) KeyCode Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> KeyCode -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) [KeyBinding PhysicalModifier] Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> [KeyBinding PhysicalModifier] -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) (KeyBinding PhysicalModifier) Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> KeyBinding PhysicalModifier -> Manipulator Source # |
singleKey :: KeyCode -> KeyBinding PhysicalModifier Source #
Key binding with no modifiers.
(|->) :: KeyBinding a -> KeyBinding a -> [KeyBinding a] infix 5 Source #
Helper for a key binding sequence, only slightly prettier than using a list.
class ToKeyBinding a b c | a b -> c where Source #
Type class for constructing a single key binding from multiple keys.
Methods
(|+|) :: a -> b -> KeyBinding c infix 6 Source #
Instances
ToKeyBinding MetaModifier KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: MetaModifier -> KeyCode -> KeyBinding MetaModifier Source # | |
ToKeyBinding PhysicalModifier KeyCode PhysicalModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: PhysicalModifier -> KeyCode -> KeyBinding PhysicalModifier Source # | |
ToKeyBinding [MetaModifier] KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: [MetaModifier] -> KeyCode -> KeyBinding MetaModifier Source # | |
ToKeyBinding [PhysicalModifier] KeyCode PhysicalModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: [PhysicalModifier] -> KeyCode -> KeyBinding PhysicalModifier Source # |
class ManipulatorBuilder a b where Source #
Maps first KeyBinding
to second KeyBinding
We can map physical modifiers to physical modifiers or meta modifiers
to physical modifiers, but we can't (or rather, shouldn't) map
any modifiers to meta modifiers; these type class instances enforce this.
We provide an instance for this via TypeError
to provide nice error
messages.
Methods
(!>) :: a -> b -> Manipulator infix 4 Source #
Instances
(TypeError (('Text "Unsupported ManipulatorBuilder (!>) usage;" :$$: 'Text "'to' binding must use a PhysicalModifier (e.g. RightControl)") :$$: 'Text "not a MetaModifier (e.g. Control)") :: Constraint) => ManipulatorBuilder a (KeyBinding MetaModifier) Source # | |
Defined in Karabiner.Config Methods (!>) :: a -> KeyBinding MetaModifier -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) KeyCode Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> KeyCode -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) [KeyBinding PhysicalModifier] Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> [KeyBinding PhysicalModifier] -> Manipulator Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) (KeyBinding PhysicalModifier) Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> KeyBinding PhysicalModifier -> Manipulator Source # |
frontmostApplicationIf :: Manipulator -> [Text] -> Manipulator Source #
Adds frontmost_application_if
condition to Manipulator
(?) :: Manipulator -> [Text] -> Manipulator Source #
Alias for frontmostApplicationIf
(??) :: [Manipulator] -> [Text] -> [Manipulator] Source #
Same as frontmostApplicationIf
except updates a list of Manipulator
frontmostApplicationUnless :: Manipulator -> [Text] -> Manipulator Source #
Adds frontmost_application_unless
condition to Manipulator
(?!) :: Manipulator -> [Text] -> Manipulator infix 3 Source #
Alias for frontmostApplicationUnless
(??!) :: [Manipulator] -> [Text] -> [Manipulator] Source #
Same as ?!
except updates a list of Manipulator
Most top-level node of the karabiner config
A set of manupulations that can be enabled or disabled via the
Complex modifications
section in the Karabiner UI.
Constructors
Rule | |
Fields |
data Manipulator Source #
A configured key rebinding
Constructors
Manipulator | |
Instances
ToJSON Manipulator Source # | |
Defined in Karabiner.Config Methods toJSON :: Manipulator -> Value # toEncoding :: Manipulator -> Encoding # toJSONList :: [Manipulator] -> Value # toEncodingList :: [Manipulator] -> Encoding # |
data ManipulatorType Source #
Constructors
Basic |
Instances
ToJSON ManipulatorType Source # | |
Defined in Karabiner.Config Methods toJSON :: ManipulatorType -> Value # toEncoding :: ManipulatorType -> Encoding # toJSONList :: [ManipulatorType] -> Value # toEncodingList :: [ManipulatorType] -> Encoding # |
data ManipulatorFrom Source #
Constructors
ManipulatorFrom | |
Fields |
Instances
ToJSON ManipulatorFrom Source # | |
Defined in Karabiner.Config Methods toJSON :: ManipulatorFrom -> Value # toEncoding :: ManipulatorFrom -> Encoding # toJSONList :: [ManipulatorFrom] -> Value # toEncodingList :: [ManipulatorFrom] -> Encoding # |
data ManipulatorTo Source #
Constructors
ManipulatorTo | |
Fields
|
Instances
ToJSON ManipulatorTo Source # | |
Defined in Karabiner.Config Methods toJSON :: ManipulatorTo -> Value # toEncoding :: ManipulatorTo -> Encoding # toJSONList :: [ManipulatorTo] -> Value # toEncodingList :: [ManipulatorTo] -> Encoding # |
data ManipulatorCondition Source #
Constructors
ManipulatorCondition | |
Fields |
Instances
ToJSON ManipulatorCondition Source # | |
Defined in Karabiner.Config Methods toJSON :: ManipulatorCondition -> Value # toEncoding :: ManipulatorCondition -> Encoding # toJSONList :: [ManipulatorCondition] -> Value # toEncodingList :: [ManipulatorCondition] -> Encoding # |
data ManipulatorConditionType Source #
Constructors
FrontmostApplicationUnless | |
FrontmostApplicationIf |
Instances
ToJSON ManipulatorConditionType Source # | |
Defined in Karabiner.Config Methods toJSON :: ManipulatorConditionType -> Value # toEncoding :: ManipulatorConditionType -> Encoding # toJSONList :: [ManipulatorConditionType] -> Value # |
data FromModifiers Source #
Constructors
FromModifiers | |
Fields |
Instances
ToJSON FromModifiers Source # | |
Defined in Karabiner.Config Methods toJSON :: FromModifiers -> Value # toEncoding :: FromModifiers -> Encoding # toJSONList :: [FromModifiers] -> Value # toEncodingList :: [FromModifiers] -> Encoding # |
data PhysicalModifier Source #
Constructors
LeftShift | |
RightShift | |
LeftControl | |
RightControl | |
LeftOption | |
RightOption | |
LeftCommand | |
RightCommand |
Instances
data MetaModifier Source #
Instances
ToJSON MetaModifier Source # | |
Defined in Karabiner.Config Methods toJSON :: MetaModifier -> Value # toEncoding :: MetaModifier -> Encoding # toJSONList :: [MetaModifier] -> Value # toEncodingList :: [MetaModifier] -> Encoding # | |
AsAnyModifier MetaModifier Source # | |
Defined in Karabiner.Config Methods | |
ToKeyBinding MetaModifier KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: MetaModifier -> KeyCode -> KeyBinding MetaModifier Source # | |
(TypeError (('Text "Unsupported ManipulatorBuilder (!>) usage;" :$$: 'Text "'to' binding must use a PhysicalModifier (e.g. RightControl)") :$$: 'Text "not a MetaModifier (e.g. Control)") :: Constraint) => ManipulatorBuilder a (KeyBinding MetaModifier) Source # | |
Defined in Karabiner.Config Methods (!>) :: a -> KeyBinding MetaModifier -> Manipulator Source # | |
ToKeyBinding [MetaModifier] KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: [MetaModifier] -> KeyCode -> KeyBinding MetaModifier Source # |
data AnyModifier Source #
Instances
ToJSON AnyModifier Source # | |
Defined in Karabiner.Config Methods toJSON :: AnyModifier -> Value # toEncoding :: AnyModifier -> Encoding # toJSONList :: [AnyModifier] -> Value # toEncodingList :: [AnyModifier] -> Encoding # |
class AsAnyModifier a where Source #
Methods
asAnyModifier :: a -> AnyModifier Source #
Instances
AsAnyModifier MetaModifier Source # | |
Defined in Karabiner.Config Methods | |
AsAnyModifier PhysicalModifier Source # | |
Defined in Karabiner.Config Methods |
Key codes available for binding The full list can be viewed in the Karabiner-Elements source https://github.com/tekezo/Karabiner-Elements/blob/master/src/share/types.hpp
Constructors
A | |
B | |
C | |
D | |
E | |
F | |
G | |
H | |
I | |
J | |
K | |
L | |
M | |
N | |
O | |
P | |
Q | |
R | |
S | |
T | |
U | |
V | |
W | |
X | |
Y | |
Z | |
One | |
Two | |
Three | |
Four | |
Five | |
Six | |
Seven | |
Eight | |
Nine | |
Zero | |
Spacebar | |
Backspace | |
OpenBracket | |
CloseBracket | |
RightArrow | |
LeftArrow | |
UpArrow | |
DownArrow | |
ReturnOrEnter | |
Tab | |
Comma | |
Semicolon |
Instances
ToJSON KeyCode Source # | |
Defined in Karabiner.Config | |
ToKeyBinding MetaModifier KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: MetaModifier -> KeyCode -> KeyBinding MetaModifier Source # | |
ToKeyBinding PhysicalModifier KeyCode PhysicalModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: PhysicalModifier -> KeyCode -> KeyBinding PhysicalModifier Source # | |
AsAnyModifier a => ManipulatorBuilder (KeyBinding a) KeyCode Source # | |
Defined in Karabiner.Config Methods (!>) :: KeyBinding a -> KeyCode -> Manipulator Source # | |
ToKeyBinding [MetaModifier] KeyCode MetaModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: [MetaModifier] -> KeyCode -> KeyBinding MetaModifier Source # | |
ToKeyBinding [PhysicalModifier] KeyCode PhysicalModifier Source # | |
Defined in Karabiner.Config Methods (|+|) :: [PhysicalModifier] -> KeyCode -> KeyBinding PhysicalModifier Source # |
keyCodeToString :: IsString a => KeyCode -> a Source #