karabiner-config-0.0.0.0: Karabiner elements configuration generation
Safe HaskellNone
LanguageHaskell2010

Karabiner.Config

Description

Provides support for generating a Karabiner config via Haskell.

Synopsis

Documentation

mkMain :: Root -> IO () Source #

Builds a main function which outputs the given Root as JSON.

encodeRoot :: Root -> ByteString Source #

Encode a Root to a JSON lazy ByteString.

litPat :: Text -> Text Source #

Converts a text literal to an application regex pattern.

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

Instances details
(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 # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) KeyCode Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) [KeyBinding PhysicalModifier] Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) (KeyBinding PhysicalModifier) Source # 
Instance details

Defined in Karabiner.Config

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 #

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

Instances details
(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 # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) KeyCode Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) [KeyBinding PhysicalModifier] Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier a => ManipulatorBuilder (KeyBinding a) (KeyBinding PhysicalModifier) Source # 
Instance details

Defined in Karabiner.Config

frontmostApplicationIf :: Manipulator -> [Text] -> Manipulator Source #

Adds frontmost_application_if condition to Manipulator

(??) :: [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] Source #

Same as ?! except updates a list of Manipulator

data Root Source #

Most top-level node of the karabiner config

Constructors

Root 

Fields

Instances

Instances details
ToJSON Root Source # 
Instance details

Defined in Karabiner.Config

data Rule Source #

A set of manupulations that can be enabled or disabled via the Complex modifications section in the Karabiner UI.

Constructors

Rule 

Instances

Instances details
ToJSON Rule Source # 
Instance details

Defined in Karabiner.Config

data MetaModifier Source #

Constructors

Shift 
Control 
Option 
Command 

Instances

Instances details
ToJSON MetaModifier Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier MetaModifier Source # 
Instance details

Defined in Karabiner.Config

ToKeyBinding MetaModifier KeyCode MetaModifier Source # 
Instance details

Defined in Karabiner.Config

(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 # 
Instance details

Defined in Karabiner.Config

ToKeyBinding [MetaModifier] KeyCode MetaModifier Source # 
Instance details

Defined in Karabiner.Config

class AsAnyModifier a where Source #

Instances

Instances details
AsAnyModifier MetaModifier Source # 
Instance details

Defined in Karabiner.Config

AsAnyModifier PhysicalModifier Source # 
Instance details

Defined in Karabiner.Config

data KeyCode Source #

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