sq.h changes, grabbed reserved field in sqKeyboardEvent

John M McIntosh johnmci at smalltalkconsulting.com
Wed Mar 29 21:59:49 UTC 2006


In our work with Sophie we became aware of a shortcoming in how  
keyboard events are created and what data they contain
and what data is needed to transform keyboard command on various  
obscure European keyboards into meaningful interactions
within Tweak and other important applications like Sophie.

In the past on the macintosh and we believe on Windows the data  
coming up as a result of
a keystroke was

key down
charCode:  	a magic number mapping to a key on the keyboard,  
different between mac/windows
pressCode:	0

key char
charCode	the macroman value of the key pressed
pressCode	the utf-32 value of the key pressed

key up
charCode:  	a magic number mapping to a key on the keyboard,  
different between mac/windows
pressCode:	0

Now the results will be.

key down
charCode:  	a magic number mapping to a key on the keyboard,  
different between mac/windows
pressCode	the utf-32 value of the key pressed
additionalData	the macroman value of the key pressed

key char
charCode	the macroman value of the key pressed
pressCode	the utf-32 value of the key pressed
additionalData	a magic number mapping to a key on the keyboard,  
different between mac/windows


key up
charCode:  	a magic number mapping to a key on the keyboard,  
different between mac/windows
pressCode	the utf-32 value of the key pressed
additionalData	the macroman value of the key pressed


This preserves the existing behaviour, but adds the ability to better  
support non-usa keyboards and character sets.
I will make this change btw weekend baring a more elegant solution.

/* keyboard input event */
typedef struct sqKeyboardEvent
{
   int type;			/* EventTypeKeyboard */
   unsigned int timeStamp;	/* time stamp */
   int charCode;			/* character code in Mac Roman encoding */
   int pressCode;		/* press code; any of EventKeyXXX */
   int modifiers;		/* combination of xxxKeyBit */
   int utf32Code;		/* UTF-32 unicode value */
   int additionCharacterData;		/* Additional data about charcter for  
platform specific tweak dispatching */
   int windowIndex;		/* host window structure */
} sqKeyboardEvent;


--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Vm-dev mailing list