~ruther/guix-local

0a80981178ccf37a48474018929a8f338fb1cf4e — Ludovic Courtès 8 years ago 8bd5231
marionette: Fix typing of capital letters.

Previously we'd use "sendkey P" instead of "sendkey shift-p", which had
no effect.

* gnu/build/marionette.scm (character->keystroke): New procedure.
(string->keystroke-commands): Use it.
1 files changed, 11 insertions(+), 3 deletions(-)

M gnu/build/marionette.scm
M gnu/build/marionette.scm => gnu/build/marionette.scm +11 -3
@@ 264,6 264,14 @@ PREDICATE, whichever comes first.  Raise an error when TIMEOUT is exceeded."
    (#\bs . "backspace")
    (#\tab . "tab")))

(define (character->keystroke chr keystrokes)
  "Return the keystroke for CHR according to the keyboard layout defined by
KEYSTROKES."
  (if (char-set-contains? char-set:upper-case chr)
      (string-append "shift-" (string (char-downcase chr)))
      (or (assoc-ref keystrokes chr)
          (string chr))))

(define* (string->keystroke-commands str
                                     #:optional
                                     (keystrokes


@@ 272,9 280,9 @@ PREDICATE, whichever comes first.  Raise an error when TIMEOUT is exceeded."
to STR.  KEYSTROKES is an alist specifying a mapping from characters to
keystrokes."
  (string-fold-right (lambda (chr result)
                       (cons (string-append "sendkey "
                                            (or (assoc-ref keystrokes chr)
                                                (string chr)))
                       (cons (string-append
                              "sendkey "
                              (character->keystroke chr keystrokes))
                             result))
                     '()
                     str))