1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2; Start of xbindkeys configuration ;
3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4;; This configuration is guile based.
5;;
6;; This configuration allow combo keys.
7;; ie Control+z Control+e -> xterm
8;;    Control+z z         -> rxvt
9;;    Control+z Control+g -> quit second mode
10;;
11;; It also allow to add or remove a key on the fly!
12
13
14
15
16(define (display-n str)
17    "Display a string then newline"
18  (display str)
19  (newline))
20
21
22(define (first-binding)
23    "First binding"
24  (xbindkey '(control shift q) "xterm")
25  (xbindkey-function '(control a)
26		     (lambda ()
27		       (display "Hello from Scheme!")
28		       (newline)))
29  (xbindkey-function '(shift p)
30		     (lambda ()
31		       (run-command "xterm")))
32  ;; set directly keycode (here shift + m with my keyboard)
33  (xbindkey-function '("m:0x1"  "c:47")
34		     (lambda ()
35		       (display "------ Adding control k -----")
36		       (newline)
37		       (xbindkey '(control k) "rxvt")
38		       (grab-all-keys)))
39  (xbindkey-function '(shift i)
40		     (lambda ()
41		       (display "Remove control k")
42		       (newline)
43		       (remove-xbindkey '(control k))
44		       (grab-all-keys)))
45  (xbindkey-function '(shift o)
46		     (lambda ()
47		       (display "Remove control a")
48		       (newline)
49		       (remove-xbindkey '(control a))
50		       (grab-all-keys)))
51  (xbindkey-function '(control z) second-binding))
52
53
54
55(define (reset-first-binding)
56    "reset first binding"
57  (display-n "reset first binding")
58  (ungrab-all-keys)
59  (remove-all-keys)
60  (first-binding)
61  (grab-all-keys))
62
63(define (second-binding)
64    "Second binding"
65  (display "New binding")
66  (ungrab-all-keys)
67  (remove-all-keys)
68  (xbindkey-function '(control e)
69		     (lambda ()
70		       (display-n "Control e")
71		       (run-command "xterm")
72		       (reset-first-binding)))
73  (xbindkey-function 'z
74		     (lambda ()
75		       (display-n "z (second)")
76		       (run-command "rxvt")
77		       (reset-first-binding)))
78  (xbindkey-function '(control g) reset-first-binding)
79  (debug)
80  (grab-all-keys))
81
82
83
84
85(first-binding)
86
87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
88; End of xbindkeys configuration ;
89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90