(primitive-load "./personally.scm")
(primitive-load "../mogrify.scm")
(use-modules
((ttn-do zzz personally) #:select (FE fso))
((ice-9 pretty-print) #:select (pretty-print))
((ttn-do mogrify) #:select (find-file-read-only
editing-buffer)))
(define K '(0))
(define S '(NoSymbol))
(define COUNT 1)
(editing-buffer (find-file-read-only "/usr/include/X11/keysymdef.h")
(while (re-search-forward "^#define XK_([A-Za-z0-9_]+).+0x([0-9a-f]+)"
#f #t)
(set! K (cons (string->number (match-string 2) 16) K))
(set! S (cons (string->symbol (match-string 1)) S))
(cond ((memq (car K) (cdr K))
(set! K (cdr K))
(set! S (cdr S))))
(set! COUNT (1+ COUNT))))
(pretty-print
`(let ((p (current-load-port))
(k #f)
(s #f))
(let loop ((count ,COUNT))
(cond ((zero? count))
(else (set! k (read p))
(set! s (read p))
(hashq-set! S2K s k)
(hashq-set! K2S k s)
(loop (1- count)))))
(for-each (lambda (n)
(hashq-set! S2K (string->symbol (number->string n))
(hashq-ref S2K n)))
(iota 10))))
(FE K S (lambda (k s)
(fso "~S ~S~%" k s)))