+ fixed bugs in scx_Display_Keycodes_Per_Keysym and

scx_Keycode_To_Keysym.
+ added comments.
This commit is contained in:
frese 2001-10-04 12:21:25 +00:00
parent 45c05c8475
commit f388edb0f1
2 changed files with 36 additions and 2 deletions

View File

@ -27,6 +27,7 @@ s48_value scx_Display_Keysyms_Per_Keycode (s48_value d) {
XDisplayKeycodes(SCX_EXTRACT_DISPLAY(d), &mink, &maxk);
ksyms = XGetKeyboardMapping(SCX_EXTRACT_DISPLAY(d), (KeyCode)mink,
maxk - mink + 1, &ksyms_per_kode);
XFree(ksyms);
return s48_enter_integer(ksyms_per_kode);
}
@ -58,7 +59,8 @@ s48_value scx_Keycode_To_Keysym (s48_value d, s48_value k, s48_value index) {
(int)s48_extract_integer (k),
(int)s48_extract_integer (index));
//Enable_Interrupts;
return s48_enter_integer((unsigned long)ks);
if (ks == NoSymbol) return S48_FALSE;
else return s48_enter_integer((unsigned long)ks);
}
s48_value scx_Keysym_To_Keycode (s48_value d, s48_value k) {

View File

@ -1,3 +1,5 @@
;; for display-min/max-keycode see XDisplayKeycodes.
(define (display-min-keycode display)
(%display-min-keycode (display-Xdisplay display)))
@ -10,12 +12,20 @@
(import-lambda-definition %display-max-keycode (Xdisplay)
"scx_Display_Max_Keycode")
;; display-keysyms-per-keycode returns the number of keysyms per
;; keycode. See XGetKeyboardMapping.
(define (display-keysyms-per-keycode display)
(%display-keysyms-per-keycode (display-Xdisplay display)))
(import-lambda-definition %display-keysyms-per-keycode (Xdisplay)
"scx_Display_Keysyms_Per_Keycode")
;; Standard KeySym names are obtained from <X11/keysymdef.h> by
;; removing the XK_ prefix from each name. But there may also be
;; implementation dependand names. See XStringToKeysym or
;; XKeysymToString.
(define (string->keysym string)
(%string->keysym (if (symbol? string)
(symbol->string string)
@ -30,6 +40,10 @@
(import-lambda-definition %keysym->string (k)
"scx_Keysym_To_String")
;; keycode->keysym uses internal Xlib tables to return the KeySym
;; defined for the specified KeyCode. If no symbol is defined false is
;; returned. See XKeycodeToKeysym.
(define (keycode->keysym display keycode index)
(%keycode->keysym (display-Xdisplay display)
keycode index))
@ -37,6 +51,10 @@
(import-lambda-definition %keycode->keysym (Xdisplay kc i)
"scx_Keycode_To_Keysym")
;; keysym->keycode returns the defined keycode for the specified
;; keysym. If the keysym is not defined then 0 is returned. See
;; XKeysymToKeycode.
(define (keysym->keycode display keysym)
(%keysym->keycode (display-Xdisplay display)
keysym))
@ -44,6 +62,10 @@
(import-lambda-definition %keysym->keycode (Xdisplay ks)
"scx_Keysym_To_Keycode")
;; lookup-string translates a keycode and a modifier mask, as obtained
;; from a key event, to a key name (like the ones returned by
;; keysym->string). See XLookupString.
(define (lookup-string display keycode mask)
(%lookup-string (display-Xdisplay display)
keycode mask))
@ -51,6 +73,10 @@
(import-lambda-definition %lookup-string (Xdisplay kc m)
"scx_Lookup_String")
;; rebind-keysym rebinds the meaning of a keysym/modifier pair for the
;; client. It does not redefine any key in the X server. lookup-string
;; returns this string afterwards. See XRebindKeysym.
(define (rebind-keysym display keysym modifiers string)
(%rebind-keysym (display-Xdisplay display)
keysym
@ -60,10 +86,16 @@
(import-lambda-definition %rebind-keysym (Xdisplay ks mods str)
"scx_Rebind_Keysym")
;; refresh-keyboard-mapping refreshes the stored modifier and keymap
;; information. You usually call this function when a MappingNotify
;; event with a request member of MappingKeyboard or MappingModifier
;; occurs. The result is to update Xlib's knowledge of the
;; keyboard. See XRefreshKeyboardMapping.
(define (refresh-keyboard-mapping window type)
(%refresh-keyboard-mapping (display-Xdisplay (window-display window))
(window-Xwindow window)
type))
(import-lambda-definition %refresh-keyboard-mapping (Xdisplay Xwindow type)
"scx_Refresh_Keyboard_Mapping")
"scx_Refresh_Keyboard_Mapping")