scx/scheme/xlib/key.scm

93 lines
2.8 KiB
Scheme

;; Copyright (c) 2001-2003 by David Frese
;; a keysym is a 16-bit protocol ID (see X11/keysymdef.h)
;; a keycode is an integer specifying a single key on the keyboard
;; (hardware depended)
;; *** manipulate keyboard encoding **********************************
;; a keyboard mapping is a list of lists of keysyms
(import-xlib-function change-keyboard-mapping
(display first-keycode keysyms-lists)
"scx_Change_Keyboard_Mapping")
;; returns keycode-count lists of keysyms
(import-xlib-function get-keyboard-mapping
(display first-keycode keycode-count)
"scx_Get_Keyboard_Mapping")
;; returns a pair (min-keycodes . max-keycodes)
(import-xlib-function display-keycodes (display)
"scx_Display_Keycodes")
;; a modmap is an alist mapping a modifier to a list of
;; keycodes. Valid modifiers are (state shift) (state lock) (state
;; control) (state mod1) (state mod2) (state mod3) (state mod4)
;; (state mod5)
(import-xlib-function set-modifier-mapping (display modmap)
"scx_Set_Modifier_Mapping")
(import-xlib-function get-modifier-mapping (display)
"scx_Get_Modifier_Mapping")
;; *** convert keysyms ***********************************************
(import-lambda-definition string->keysym (string)
"scx_String_To_Keysym")
(import-lambda-definition keysym->string (keysym)
"scx_Keysym_To_String")
;; TODO include X11/keysymdef.h ??
(import-xlib-function keycode->keysym (display keycode index)
"scx_Keycode_To_Keysym")
(import-xlib-function keysym->keycode (display keysym)
"scx_Keysym_To_Keycode")
;; returns a pair (lower . upper)
(import-lambda-definition convert-case (keysym)
"scx_Convert_Case")
(define (convert-to-lowercase keysym)
(car (convert-case keysym)))
(define (convert-to-uppercase keysym)
(cdr (convert-case keysym)))
;; *** handle keyboard input events in Latin-1 ***********************
(import-lambda-definition %lookup-keysym (key-event index)
"scx_Lookup_Keysym")
(define (lookup-keysym key-event index)
(call-xlib-function (key-event-display key-event) 'lookup-keysym
(lambda () (%lookup-keysym key-event index))))
(import-lambda-definition %refresh-keyboard-mapping (mapping-event)
"scx_Refresh_Keyboard_Mapping")
(define (refresh-keyboard-mapping mapping-event)
(call-xlib-function (mapping-event-display mapping-event)
'refresh-keyboard-mapping
(lambda () (%refresh-keyboard-mapping mapping-event))))
;; returns a pair (keysym . string)
(import-lambda-definition %lookup-string/keysym (key-event)
"scx_Lookup_String")
(define (lookup-string/keysym key-event)
(call-xlib-function (key-event-display key-event)
'lookup-string/keysym
(lambda () (%lookup-string/keysym key-event))))
(define (lookup-string key-event)
(cdr (lookup-string/keysym key-event)))
(import-xlib-function rebind-keysym (display keysym mod-keysyms string)
"scx_Rebind_Keysym")