packages feed

kmonad-0.4.1: kmonad.cabal

cabal-version:      2.2
name:               kmonad
version:            0.4.1
license:            MIT
license-file:       LICENSE
maintainer:         janssen.dhj@gmail.com
author:             David Janssen
synopsis:           Advanced keyboard remapping utility
description:
    KMonad is a cross-platform command-line utility that runs as a daemon. It
    captures keyboard input (exactly how depends on the OS) and remaps it. The
    mapping is highly configurable, and provides options like (transparent) layer
    overlays, tap-mod buttons, multi-tap buttons, leader-key style buttons, and
    keyboard macros. Functionality heavily inspired by the QMK-firmware.

category:           Application
build-type:         Simple
extra-source-files: changelog.md

library
    exposed-modules:
        Data.LayerStack
        Data.MultiMap
        KMonad.Action
        KMonad.App
        KMonad.App.BEnv
        KMonad.App.Dispatch
        KMonad.App.Hooks
        KMonad.App.Keymap
        KMonad.App.Sluice
        KMonad.Args
        KMonad.Args.Cmd
        KMonad.Args.Parser
        KMonad.Args.Joiner
        KMonad.Args.Types
        KMonad.Button
        KMonad.Keyboard
        KMonad.Keyboard.Keycode
        KMonad.Keyboard.ComposeSeq
        KMonad.Keyboard.IO
        KMonad.Prelude
        KMonad.Util

    hs-source-dirs:     src
    default-language:   Haskell2010
    default-extensions:
        ConstraintKinds DeriveFunctor DeriveGeneric DeriveTraversable
        FlexibleContexts FlexibleInstances FunctionalDependencies
        GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses
        MultiWayIf NoImplicitPrelude OverloadedStrings RankNTypes
        TemplateHaskell TupleSections TypeFamilies

    ghc-options:        -Wall -Wno-name-shadowing -Wno-unused-imports
    build-depends:
        base >=4.12.0.0 && <4.13,
        cereal >=0.5.8.1 && <0.6,
        lens >=4.17.1 && <4.18,
        megaparsec >=7.0.5 && <7.1,
        mtl >=2.2.2 && <2.3,
        optparse-applicative >=0.14.3.0 && <0.15,
        resourcet >=1.2.2 && <1.3,
        rio >=0.1.14.0 && <0.2,
        time >=1.8.0.2 && <1.9,
        unliftio >=0.2.12 && <0.3

    if os(linux)
        exposed-modules:
            KMonad.Keyboard.IO.Linux.DeviceSource
            KMonad.Keyboard.IO.Linux.Types
            KMonad.Keyboard.IO.Linux.UinputSink

        c-sources:       c_src/keyio.c
        build-depends:   unix >=2.7.2.2 && <2.8

    if os(windows)
        exposed-modules:
            KMonad.Keyboard.IO.Windows.LowLevelHookSource
            KMonad.Keyboard.IO.Windows.SendEventSink
            KMonad.Keyboard.IO.Windows.Types

        c-sources:       c_src/keyio_win.c
        build-depends:   Win32 >=2.6.1.0 && <2.7

    if os(osx)
        exposed-modules:
            KMonad.Keyboard.IO.Mac.IOKitSource
            KMonad.Keyboard.IO.Mac.KextSink
            KMonad.Keyboard.IO.Mac.Types

        cxx-options:     -std=c++14
        frameworks:      CoreFoundation IOKit
        cxx-sources:     c_src/mac/keyio_mac.cpp
        extra-libraries: c++
        build-depends:   unix >=2.7.2.2 && <2.8

executable kmonad
    main-is:          Main.hs
    hs-source-dirs:   app
    default-language: Haskell2010
    ghc-options:      -threaded -rtsopts -with-rtsopts=-N
    build-depends:
        base >=4.12.0.0 && <4.13,
        kmonad -any