Alpha Mac 3.7.3b2 with keyUp change and more unicode support
aka 3.7.3b3
John M McIntosh
johnmci at smalltalkconsulting.com
Thu Apr 15 06:32:15 UTC 2004
Bert it's a bit more complicated, first: {Note I'm looking for comment
here if we should change how keyboard events work}
Originally the code that was written for Squeak 2.8 tossed back the
apple keyboard physical key number for EventKeyUp or EventKeyDown,
versus the ascii representation which comes up from the vm for
EventKeyChar this 'feature' is a fallout of a note from Andreas aug
8th 2000 to me which stated:
> So on the Mac you would have to generate two
> events upon a MacOS keyDown event, a 'key down' event containing the
> virtual
> key code and a 'character' event containing the character code (both
> with
> modifiers). On Unix and Windows the two events would be generated as
> well,
> just from two OS events rather than a single one.
Lately this was changed in the macintosh os-x carbon VM and the current
os-9.x classic VM to return the Unicode character versus the apple
keyboard physical key number on keydown and keyup. For keychar we
return the macroman value, unless text services entry is feeding us a
string of unicode character. In that case we return the unicode since
we do not know what the macroman characters are.
As you noticed then on KeyUp you get the unicode text services
translated value which *SHOULD* match the keydown information.
So when you press option-a I send you the unicode value for the
accented character on key down, the macroman value for keychar, and
finally the unicode value for the accented character on keyUp when you
let go of the 'a' key.
Technically I could send a key down/up which would contain the
MacCharCodes based on keyboard type, then keychar which would
be the unicode after text services process the keystrokes. However that
is different than what is currently being done and I'm not sure
of the impact (other can comment).
Now the issue with returning the control keys is that historically
those have come up as states on mouse events. This requires
you to look at evensensor and see if the shift key is down or up via
polling. We'd have to track the state and build keystroke events, a
bit of a hassle... Or rewrite eventsensor to broadcast state changes in
control key values. That would be preferable.
PS the os-9.x macroman to unicode translation is below so you can see
how that would affect keychar processing if we switch from
passing up macroman to unicode?
{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,
47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,
69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,
110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,
127,196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,
234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,
176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,
8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,17
2,
8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8
221,
8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218
,8222,
8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,3
05,710,
732,175,728,729,730,184,733,731,711};
On Apr 14, 2004, at 5:51 AM, Bert Freudenberg wrote:
>
> Am 14.04.2004 um 07:19 schrieb John M McIntosh:
>
>> Bert Freudenberg <bert at impara.de> pointed out that he had an issue
>> with key ups when dealing with multiple keys. Yes
>> he's right I made a novice mistake with a global, now I'm tracking
>> repeats and key ups by individual keycodes which is required when you
>> can have four keys or so in motion.
>
> Much better now!
>
> However, not all keys generate key/up down events - for example,
> shift, ctrl, or dead keys. Also, the key value is not constant -
> pressing A does not always generate a key value of 65, but sometimes
> 97, 225, 226, depending on which modifiers and dead keys were pressed,
>
> Up/down events should just generate raw key codes, and should not be
> processed by the more sophisticated translation services.
>
> - Bert -
>
>
>
>
--
========================================================================
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
More information about the Squeak-dev
mailing list
|