xkbcommon-0.0.3: xkbcommon.cabal
-- Initial xkbcommon.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: xkbcommon
version: 0.0.3
synopsis: Haskell bindings for libxkbcommon
description:
Wrapper library for libxkbcommon, which is the new alternative for the X11 XKB.h keyboard input
API. Specifically, it finds keymap files from disk based on Rule\/Model\/Layout\/Variant\/Option
specifications, and compiles them into a 'Keymap'. From this 'Keymap', a 'KeyboardState' can be
constructed which represents the states of various physical buttons such as the shift/alt/ctrl
keys, and can give the correct key symbol based on keyboard events. E.g., pressing the @\<h\>@ key
while @\<shift\>@ is pressed produces the @H@ symbol in the common QWERTY keymaps, but in e.g.
the Dvorak keymap, it produces the D symbol.
.
After keymap creation, which libxkbcommon can do based on locale preferences and enviroment
variables, this is all handled by routing keyboard events through libxkbcommon.
.
At this stage, these haskell bindings do not make libxkbcommon look much like a haskell library.
For example, in principle the entire libxkbcommon library is just a stateful processor, and has
nothing to do with the IO monad.
However, because I am not yet a very good haskell programmer, and because
in most realistic use cases input data comes from the IO monad anyway, the stateful operations
are encoded in the IO monad anyway.
.
Note that these bindings load the keysym constants from the libxkbcommon C header files at
compile time using TH, and similarly keycodes from the Linux header files.
These should be present for correct compilation.
license: MIT
license-files: LICENSE LICENSE.gl
author: Auke Booij
maintainer: auke@tulcod.com
category: Text
build-type: Custom
cabal-version: >=1.8
extra-source-files:
-- Used by Setup.hs
Module.hs
Utils.hs
-- test artifacts
data/compat/accessx
data/compat/basic
data/compat/caps
data/compat/complete
data/compat/iso9995
data/compat/ledcaps
data/compat/lednum
data/compat/ledscroll
data/compat/level5
data/compat/misc
data/compat/mousekeys
data/compat/pc
data/compat/xfree86
data/keycodes/aliases
data/keycodes/aliases-xkbcommon
data/keycodes/empty
data/keycodes/evdev
data/keycodes/evdev-xkbcommon
data/keycodes/xfree86
data/keymaps/bad.xkb
data/keymaps/basic.xkb
data/keymaps/comprehensive-plus-geom.xkb
data/keymaps/divide-by-zero.xkb
data/keymaps/no-types.xkb
data/keymaps/quartz.xkb
data/keymaps/stringcomp.data
data/keymaps/unbound-vmod.xkb
data/rules/base
data/rules/evdev
data/rules/evdev-xkbcommon
data/rules/groups
data/rules/index
data/rules/multiple-options
data/rules/simple
data/symbols/altwin
data/symbols/ca
data/symbols/capslock
data/symbols/ch
data/symbols/compose
data/symbols/ctrl
data/symbols/cz
data/symbols/de
data/symbols/empty
data/symbols/eurosign
data/symbols/group
data/symbols/il
data/symbols/in
data/symbols/inet
data/symbols/keypad
data/symbols/kpdl
data/symbols/latin
data/symbols/level3
data/symbols/level5
data/symbols/nbsp
data/symbols/pc
data/symbols/ru
data/symbols/rupeesign
data/symbols/shift
data/symbols/srvr_ctrl
data/symbols/terminate
data/symbols/us
data/sync.sh
data/types/basic
data/types/complete
data/types/extra
data/types/iso9995
data/types/level5
data/types/mousekeys
data/types/numpad
data/types/pc
source-repository head
type: git
location: https://github.com/tulcod/haskell-xkbcommon.git
library
exposed-modules:
Text.XkbCommon,
Text.XkbCommon.KeysymList,
Text.XkbCommon.KeysymPatterns,
Text.XkbCommon.KeycodeList,
Text.XkbCommon.ModList,
Text.XkbCommon.Constants,
Text.XkbCommon.Types,
Text.XkbCommon.InternalTypes,
Text.XkbCommon.Context,
Text.XkbCommon.Keymap,
Text.XkbCommon.KeyboardState,
Text.XkbCommon.Keysym
other-modules:
Text.XkbCommon.ParseDefines
-- other-modules:
build-depends: base <5, transformers, storable-record, process, cpphs, template-haskell, text, bytestring, data-flags, filepath
-- build-tools: c2hs
extra-libraries: xkbcommon
-- this is actually not a test but a benchmark
Benchmark bench-key-proc
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: bench-key-proc.hs
build-depends : base, xkbcommon, random, vector, time
Test-Suite context
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: context.hs
build-depends : base, xkbcommon
Test-Suite filecomp
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: filecomp.hs
build-depends : base, xkbcommon
Test-Suite keyseq
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: keyseq.hs
build-depends : base, xkbcommon
Test-Suite keysym
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: keysym.hs
build-depends : base, xkbcommon
Test-Suite rulescomp
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: rulescomp.hs
build-depends : base, xkbcommon, unix
Test-Suite state
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: state.hs
build-depends : base, xkbcommon
Test-Suite stringcomp
type: exitcode-stdio-1.0
hs-source-dirs: tests
other-modules: Common
main-is: stringcomp.hs
build-depends : base, xkbcommon
custom-setup
setup-depends: base, Cabal, cpphs, directory, filepath, process, template-haskell, text