108 lines
3.4 KiB
Scheme
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")
|