diff -r 74d7fcbe1365 -r 4e457b74f5d2 XWorkstation.st --- a/XWorkstation.st Mon Mar 10 10:37:42 2008 +0100 +++ b/XWorkstation.st Sat Mar 15 18:17:21 2008 +0100 @@ -562,8 +562,6 @@ !XWorkstation class methodsFor:'initialization'! initialize - |d| - ConservativeSync := OperatingSystem platformName == #win32. "/ some XServers crash, when given too long strings in XDrawString/XDrawInageString. @@ -575,17 +573,18 @@ DefaultXLibTimeoutForWindowCreation := 5*60. RawKeySymTranslation isNil ifTrue:[ - "/ the following table maps X-keyevents to ST/X - "/ device independend events. - "/ It is NOT meant as a keyboardMap replacement. - - RawKeySymTranslation := d := Dictionary new. - d at:'Delete_line' put:#DeleteLine. - d at:'Delete_word' put:#DeleteWord. - d at:'Down' put:#CursorDown. - d at:'Up' put:#CursorUp. - d at:'Left' put:#CursorLeft. - d at:'Right' put:#CursorRight. + "/ the following table maps X-keyevents to ST/X + "/ device independend events. + "/ It is NOT meant as a keyboardMap replacement. + + RawKeySymTranslation := Dictionary new:6. + RawKeySymTranslation + at:#'Delete_line' put:#DeleteLine; + at:#'Delete_word' put:#DeleteWord; + at:#Down put:#CursorDown; + at:#Up put:#CursorUp; + at:#Left put:#CursorLeft; + at:#Right put:#CursorRight. ] "Modified: / 27.4.1999 / 17:21:30 / cg" @@ -4578,24 +4577,32 @@ keyPress:view key:key code:keyCode state:state x:x y:y rootX:rX rootY:rY time:time "forward a key-press event for some view" + |commonKey| + lastEventTime := time. altDown := state bitTest:altModifierMask. metaDown := state bitTest:metaModifierMask. shiftDown := state bitTest:(self shiftModifierMask). ctrlDown := state bitTest:(self ctrlModifierMask). key isNil ifTrue:[ - "/ happens sometimes on some systems - "/ (alt-graph on sun has no keysym) - ^ self + "/ happens sometimes on some systems + "/ (alt-graph on sun has no keysym) + ^ self ]. eventRootX := rX. eventRootY := rY. - self keyPress:key x:x y:y view:view. + + "very low-level mapping of X11 event symbols to common ST/X event symbols" + commonKey := rawKeySymTranslation at:key ifAbsent:key. + + self keyPress:commonKey x:x y:y view:view. ! keyRelease:view key:key code:keyCode state:state x:x y:y rootX:rX rootY:rY time:time "forward a key-release event for some view" + |commonKey| + lastEventTime := time. altDown := state bitTest:altModifierMask. metaDown := state bitTest:metaModifierMask. @@ -4603,13 +4610,17 @@ ctrlDown := state bitTest:(self ctrlModifierMask). key isNil ifTrue:[ - "/ happens sometimes on some systems - "/ (alt-graph on sun has no keysym) - ^ self + "/ happens sometimes on some systems + "/ (alt-graph on sun has no keysym) + ^ self ]. eventRootX := rX. eventRootY := rY. - self keyRelease:key x:x y:y view:view. + + "very low-level mapping of X11 event symbols to common ST/X event symbols" + commonKey := rawKeySymTranslation at:key ifAbsent:key. + + self keyRelease:commonKey x:x y:y view:view. ! mappingNotify:view request:what event:eB @@ -8749,23 +8760,6 @@ "return the Xlib mask bit for the super modifier key" ^ self modifier4Mask -! - -translateKey:untranslatedKey forView:aView - "Return the key translated via the translation table. - Here, we preTranslate the key into a common ST/X symbolic name, - which gets further processed in the superclasses translation method." - - |key| - - key := untranslatedKey. - (rawKeySymTranslation includesKey:key) ifTrue:[ - key := rawKeySymTranslation at:key. - ]. - key isCharacter ifFalse:[ - key := key asSymbol - ]. - ^ super translateKey:key forView:aView ! ! !XWorkstation methodsFor:'misc'! @@ -11933,7 +11927,7 @@ !XWorkstation class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.495 2007-11-23 22:07:14 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.496 2008-03-15 17:17:21 stefan Exp $' ! ! XWorkstation initialize!