scx/scheme/xlib/grab.scm

108 lines
3.4 KiB
Scheme

;; Copyright (c) 2001-2003 by Norbert Freudemann, David Frese
;; *** grab the pointer **********************************************
(define-enumerated-type grab-mode :grab-mode
grab-mode? grab-modes grab-mode-name grab-mode-index
(sync async))
(define-exported-binding "scx-grab-mode" :grab-mode)
(define-enumerated-type grab-status :grab-status
grab-status? grab-states grab-status-name grab-status-index
(success already-grabbed invalid-time not-viewable frozen))
(define-exported-binding "scx-grab-states" grab-states)
(import-xlib-function grab-pointer
(display grab-window owner-events? events ptr-mode kbd-mode
confine-to cursor time)
"scx_Grab_Pointer")
(import-xlib-function ungrab-pointer (display time)
"scx_Ungrab_Pointer")
(import-xlib-function change-active-pointer-grab
(display events cursor time)
"scx_Change_Active_Pointer_Grab")
;; *** grab pointer buttons ******************************************
(define-enumerated-type state :state
state? states state-name state-index
(shift lock control mod1 mod2 mod3 mod4 mod5
button1 button2 button3 button4 button5
state-13 state-14
any-modifier))
(define-exported-binding "scx-state" :state)
(define-exported-binding "scx-states" states)
(define-enum-set-type state-set :state-set
state-set? make-state-set
state state? states state-index)
(define-exported-binding "scx-state-set" :state-set)
(define-enumerated-type button :button
button? buttons button-name button-index
(any-button button1 button2 button3 button4 button5))
(define-exported-binding "scx-button" :button)
(define-exported-binding "scx-buttons" buttons)
(import-xlib-function grab-button
(display button modifiers grab-window owner-events? events ptr-mode
kbd-mode confine-to cursor)
"scx_Grab_Button")
(import-xlib-function ungrab-button (display button modifiers grab-window)
"scx_Ungrab_Button")
;; *** grab the keyboard *********************************************
(import-xlib-function grab-keyboard
(display grab-window owner-events? ptr-mode kbd-mode time)
"scx_Grab_Keyboard")
(import-xlib-function ungrab-keyboard (display time)
"scx_Ungrab_Keyboard")
;; *** grab keyboard keys ********************************************
(import-xlib-function grab-key
(display keycode modifiers grab-window owner-events? ptr-mode kbd-mode)
"scx_Grab_Key")
(import-xlib-function ungrab-key (display keycode modifiers grab-window)
"scx_Ungrab_Key")
;; *** release queued events *****************************************
(define-enumerated-type event-mode :event-mode
event-mode? event-modes event-mode-name event-mode-index
(async-pointer sync-pointer replay-pointer async-keyboard
sync-keyboard replay-keyboard async-both sync-both))
(define-exported-binding "scx-event-mode" :event-mode)
(import-xlib-function allow-events (display event-mode time)
"scx_Allow_Events")
;; *** grab the server ***********************************************
;; grab-server disables processing of requests and close downs on all
;; other connections than the one this request arrived on. You should
;; not grab the X server any more than is absolutely necessary. See
;; XGrabServer.
(import-xlib-function grab-server (display)
"scx_Grab_Server")
;; ungrab-server restarts processing of requests and close downs on
;; other connections. You should avoid grabbing the X server as much
;; as possible. See XUngrabServer.
(import-xlib-function ungrab-server (display)
"scx_Ungrab_Server")