Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-record-type* <interception-tools-configuration>
- interception-tools-configuration make-interception-tools-configuration
- interception-tools-configuration?
- (jobs interception-tools-configuration-jobs ;list of strings
- (default '())))
- (define (interception-tools-shepherd-service config)
- (list
- (shepherd-service
- (documentation "Run interception-tools udevmon daemon.")
- (provision '(interception-tools))
- (requirement '(user-processes))
- (start #~(make-forkexec-constructor
- (list #$(file-append coreutils "/bin/nice") "-n" "-20"
- #$(file-append interception-tools "/bin/udevmon") "-c" "/etc/interception/udevmon.yml")
- #:log-file "/var/log/interception-tools.log"))
- (stop #~(make-kill-destructor)))))
- (define (interception-tools-config-file config)
- "Return the udevmon configuration file corresponding to CONFIG."
- (list
- (list
- "interception/udevmon.yml"
- (computed-file "udevmon.yml"
- #~(begin
- (call-with-output-file #$output
- (lambda (port)
- (display "# Generated by 'interception-tools-service'.\n" port)
- (for-each (lambda (job) (format port "~a\n" job))
- '#$(interception-tools-configuration-jobs config)))))))))
- (define interception-tools-service-type
- (service-type
- (name 'interception-tools)
- (description
- "Run @command{udevmon} daemon.")
- (extensions
- (list
- (service-extension shepherd-root-service-type interception-tools-shepherd-service)
- (service-extension etc-service-type interception-tools-config-file)))
- (compose concatenate)
- (extend
- (lambda (config jobs)
- (interception-tools-configuration
- (inherit config)
- (jobs (append (interception-tools-configuration-jobs config) jobs)))))
- (default-value (interception-tools-configuration))))
- (define-record-type* <interception-dual-function-keys-configuration>
- interception-dual-function-keys-configuration make-interception-dual-function-keys-configuration
- interception-dual-function-keys-configuration?
- (mappings interception-dual-function-keys-configuration-mappings ;list of strings
- (default '()))
- (keys interception-dual-function-keys-configuration-keys ;string
- (default "")))
- (define (interception-dual-function-keys-config-file config)
- "Return the dual-function-keys configuration file corresponding to CONFIG."
- (list
- (list
- "interception/dual-function-keys.yml"
- (computed-file "dual-function-keys.yml"
- #~(begin
- (call-with-output-file #$output
- (lambda (port)
- (display "# Generated by 'interception-dual-function-keys-service'.\n" port)
- (for-each (lambda (mapping) (format port "~a\n" mapping))
- '#$(interception-dual-function-keys-configuration-mappings config)))))))))
- (define (interception-dual-function-keys-job config)
- (list
- #~(string-append
- "- JOB: \"" #$(file-append interception-tools "/bin/intercept") " -g $DEVNODE | "
- #$(file-append interception-dual-function-keys "/bin/dual-function-keys")
- " -c /etc/interception/dual-function-keys.yml | "
- #$(file-append interception-tools "/bin/uinput")" -d $DEVNODE\"
- DEVICE:
- EVENTS:
- EV_KEY: \"" #$(interception-dual-function-keys-configuration-keys config) "\"")))
- (define interception-dual-function-keys-service-type
- (service-type
- (name 'interception-dual-function-keys)
- (description
- "Run @command{dual-function-keys} via @command{udevmon} daemon.")
- (extensions
- (list
- (service-extension interception-tools-service-type interception-dual-function-keys-job)
- (service-extension etc-service-type interception-dual-function-keys-config-file)))))
- ; service instance
- (service interception-dual-function-keys-service-type
- (interception-dual-function-keys-configuration
- (mappings '("\
- MAPPINGS:
- - KEY: KEY_CAPSLOCK
- TAP: KEY_ESC
- HOLD: KEY_LEFTCTRL"))
- (keys "[KEY_CAPSLOCK]")))
Advertisement
Add Comment
Please, Sign In to add comment