summaryrefslogtreecommitdiff
path: root/xbindkeysrc.scm
diff options
context:
space:
mode:
authorPhilippe Brochard <pbrochard@common-lisp.net>2009-05-18 15:28:11 +0200
committerPhilippe Brochard <pbrochard@common-lisp.net>2009-05-18 15:28:11 +0200
commit0d5a90f36acc602d993075bbccaebb44e671dca6 (patch)
tree71f73266ef446b8f030f7182544ef21593318fb1 /xbindkeysrc.scm
parentbe5b5354a2af10580bde41d3cbf6d2c9db72bb9b (diff)
downloadxbindkeys-0d5a90f36acc602d993075bbccaebb44e671dca6.tar.gz
Initial import
Diffstat (limited to 'xbindkeysrc.scm')
-rw-r--r--xbindkeysrc.scm167
1 files changed, 167 insertions, 0 deletions
diff --git a/xbindkeysrc.scm b/xbindkeysrc.scm
new file mode 100644
index 0000000..1802be1
--- /dev/null
+++ b/xbindkeysrc.scm
@@ -0,0 +1,167 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Start of xbindkeys guile configuration ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This configuration is guile based.
+;; http://www.gnu.org/software/guile/guile.html
+;; any functions that work in guile will work here.
+;; see EXTRA FUNCTIONS:
+
+;; Version: 1.8.3
+
+;; If you edit this file, do not forget to uncomment any lines
+;; that you change.
+;; The semicolon(;) symbol may be used anywhere for comments.
+
+;; To specify a key, you can use 'xbindkeys --key' or
+;; 'xbindkeys --multikey' and put one of the two lines in this file.
+
+;; A list of keys is in /usr/include/X11/keysym.h and in
+;; /usr/include/X11/keysymdef.h
+;; The XK_ is not needed.
+
+;; List of modifier:
+;; Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
+;; Mod3 (CapsLock), Mod4, Mod5 (Scroll).
+
+
+;; The release modifier is not a standard X modifier, but you can
+;; use it if you want to catch release instead of press events
+
+;; By defaults, xbindkeys does not pay attention to modifiers
+;; NumLock, CapsLock and ScrollLock.
+;; Uncomment the lines below if you want to use them.
+;; To dissable them, call the functions with #f
+
+
+;;;;EXTRA FUNCTIONS: Enable numlock, scrolllock or capslock usage
+;;(set-numlock! #t)
+;;(set-scrolllock! #t)
+;;(set-capslock! #t)
+
+;;;;; Scheme API reference
+;;;;
+;; Optional modifier state:
+;; (set-numlock! #f or #t)
+;; (set-scrolllock! #f or #t)
+;; (set-capslock! #f or #t)
+;;
+;; Shell command key:
+;; (xbindkey key "foo-bar-command [args]")
+;; (xbindkey '(modifier* key) "foo-bar-command [args]")
+;;
+;; Scheme function key:
+;; (xbindkey-function key function-name-or-lambda-function)
+;; (xbindkey-function '(modifier* key) function-name-or-lambda-function)
+;;
+;; Other functions:
+;; (remove-xbindkey key)
+;; (run-command "foo-bar-command [args]")
+;; (grab-all-keys)
+;; (ungrab-all-keys)
+;; (remove-all-keys)
+;; (debug)
+
+
+;; Examples of commands:
+
+(xbindkey '(control shift q) "xbindkeys_show")
+
+;; set directly keycode (here control + f with my keyboard)
+(xbindkey '("m:0x4" "c:41") "xterm")
+
+;; specify a mouse button
+(xbindkey '(control "b:2") "xterm")
+
+;;(xbindkey '(shift mod2 alt s) "xterm -geom 50x20+20+20")
+
+;; set directly keycode (control+alt+mod2 + f with my keyboard)
+(xbindkey '(alt "m:4" mod2 "c:0x29") "xterm")
+
+;; Control+Shift+a release event starts rxvt
+;;(xbindkey '(release control shift a) "rxvt")
+
+;; Control + mouse button 2 release event starts rxvt
+;;(xbindkey '(releace control "b:2") "rxvt")
+
+
+;; Extra features
+(xbindkey-function '(control a)
+ (lambda ()
+ (display "Hello from Scheme!")
+ (newline)))
+
+(xbindkey-function '(shift p)
+ (lambda ()
+ (run-command "xterm")))
+
+
+;; Double click test
+(xbindkey-function '(control w)
+ (let ((count 0))
+ (lambda ()
+ (set! count (+ count 1))
+ (if (> count 1)
+ (begin
+ (set! count 0)
+ (run-command "xterm"))))))
+
+;; Time double click test:
+;; - short double click -> run an xterm
+;; - long double click -> run an rxvt
+(xbindkey-function '(shift w)
+ (let ((time (current-time))
+ (count 0))
+ (lambda ()
+ (set! count (+ count 1))
+ (if (> count 1)
+ (begin
+ (if (< (- (current-time) time) 1)
+ (run-command "xterm")
+ (run-command "rxvt"))
+ (set! count 0)))
+ (set! time (current-time)))))
+
+
+;; Chording keys test: Start differents program if only one key is
+;; pressed or another if two keys are pressed.
+;; If key1 is pressed start cmd-k1
+;; If key2 is pressed start cmd-k2
+;; If both are pressed start cmd-k1-k2 or cmd-k2-k1 following the
+;; release order
+(define (define-chord-keys key1 key2 cmd-k1 cmd-k2 cmd-k1-k2 cmd-k2-k1)
+ "Define chording keys"
+ (let ((k1 #f) (k2 #f))
+ (xbindkey-function key1 (lambda () (set! k1 #t)))
+ (xbindkey-function key2 (lambda () (set! k2 #t)))
+ (xbindkey-function (cons 'release key1)
+ (lambda ()
+ (if (and k1 k2)
+ (run-command cmd-k1-k2)
+ (if k1 (run-command cmd-k1)))
+ (set! k1 #f) (set! k2 #f)))
+ (xbindkey-function (cons 'release key2)
+ (lambda ()
+ (if (and k1 k2)
+ (run-command cmd-k2-k1)
+ (if k2 (run-command cmd-k2)))
+ (set! k1 #f) (set! k2 #f)))))
+
+
+;; Example:
+;; Shift + b:1 start an xterm
+;; Shift + b:3 start an rxvt
+;; Shift + b:1 then Shift + b:3 start gv
+;; Shift + b:3 then Shift + b:1 start xpdf
+
+(define-chord-keys '(shift "b:1") '(shift "b:3")
+ "xterm" "rxvt" "gv" "xpdf")
+
+;; Here the release order have no importance
+;; (the same program is started in both case)
+(define-chord-keys '(alt "b:1") '(alt "b:3")
+ "gv" "xpdf" "xterm" "xterm")
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; End of xbindkeys guile configuration ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;