--- 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!