blob: 4609ea91447438088640f74e60c9943e10272807 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
(define-module (wm)
#:use-module (system foreign)
#:export (wm-init
key-from-str
wm-grab-key-with-mod
wm-grab-key-with-mod-shift
wm-set-key-press-handler!
wm-focus-next
wm-run
wm-quit))
(define libschewm (dynamic-link "libschewm"))
(define (int-as-bool i)
(not (eq? 0 i)))
(define (schewm-func return-type name args)
(pointer->procedure
return-type
(dynamic-func name libschewm)
args))
(define c/key-from-str
(schewm-func uint32
"keysym_from_str"
(list '*)))
(define (key-from-str s)
(c/key-from-str (string->pointer s)))
(define c/wm-init
(schewm-func int "wm_init" '()))
(define (wm-init)
(int-as-bool (c/wm-init)))
(define wm-quit
(schewm-func void "wm_quit" '()))
(define wm-run
(schewm-func void "wm_run" '()))
(define wm-grab-key-with-mod
(schewm-func void "wm_grab_key_with_mod"
(list uint32)))
(define wm-grab-key-with-mod-shift
(schewm-func void "wm_grab_key_with_mod_shift"
(list uint32)))
(define (wm-focus-next)
'())
(define c/wm-set-key-press-handler
(schewm-func void
"wm_set_key_press_handler"
(list '*)))
(define (wm-set-key-press-handler! handler)
;; mod (state, uint16)
;; keysym (detail, uint8)
(c/wm-set-key-press-handler
(procedure->pointer void
handler
(list uint16 uint8))))
|