TODO ==== 2018.09.24: v Add `MapGroup` to `State` (2018.09.25) v FFI function to load `MapGroup` into `State` (2018.09.25) v Dealloc `_state` v Key simulation for special keys v F1 etc. v Modifier keys v Escaping :help <> 1. Any printable characters are typed directly, except backslash and '<' 2. A backslash is represented with "\\", double backslash, or "". 3. A real '<' is represented with "\<" or "". When there is no confusion possible, a '<' can be used directly. v Figure out special function keys like volume, media, etc. v v Default keys v Fix: when in mode, non-mode mappings should not be enabled v Command handling v DKMap Parser v Fail if no newline at the end of the file v Fix error with comments and whitespace v Cleanup v Remove result from `run_key_action_for_mode()` v Remove Objective-C key press simulation v C header file v cocoa_bridge v Rename to `ffi` module v Get rid of unused structs v Get rid of debug print statements v Get rid of `unwrap`s and `expect`s / Documentation v README - Code docs v man page(s) v Command-line argument handling x Custom config file x DKMap file v Register license v Daemon v Reload DKMap file (XPC services, communicate with running daemon to reload its mappings) v IPC v Reload mappings v Show error output in client process x Write LaunchAgent plist file v Config file v Read from a config file (XDG etc.) v Timeout x Log file? (Thinking always stdout) v LaunchAgent v Load mappings from file v Logging S Always output consistent timestamp v Log errors v Remove `unwrap`s v Check error messages of parser v Errors on lines >1 v Errors in actions v Errors in the middle of definitions after the first line - Other headphones v Test with single-button headphones (/) > Only triggers a middle button, no prev or next v Test with Bluetooth headphones (--doesn't work) - Make it work with Bluetooth headphones See: . https://stackoverflow.com/questions/32499676/capture-osx-media-control-buttons-in-swift . https://github.com/nevyn/SPMediaKeyTap . https://weblog.rogueamoeba.com/2007/09/29/ v Licensing v Add Aquatic Prime or some such v 30-day trial v Check that you can still register after trial expires v Audio v Mode activated v Mode deactivated v Play audio on mode change / DKMap editor plugins v Vim - Emacs v Homebrew formula v Add an example config to brew caveats v Website v Demo video