Hi Bastian,
this seems like a serious bug! I'm at your service when you determine whether the change should be made or not; I'm happy to integrate it for you. Can you please verify that it doesn't break a current Squeak trunk image? If it does break older projects I guess we'll have to introduce a VM flag to control whether the fix should operate or not.
On Wed, Apr 22, 2015 at 11:39 AM, Kruck, Bastian < Bastian.Kruck@student.hpi.uni-potsdam.de> wrote:
Hello Folks,
when looking for how Cog passes keystrokes to the image, we found that the modifier bitmap of the keyUp events is left shifted by 3 bits on OS X. This seems to be a bug in Mac OS specific event handling. sqMacUIEvents.c usually unshifts the mouse buttons away before passing it to the image, but it doesn’t do that for keyup events. Something that I oversee here? This could be a fix:
Index: platforms/Mac OS/vm/sqMacUIEvents.c
--- platforms/Mac OS/vm/sqMacUIEvents.c (revision 3312) +++ platforms/Mac OS/vm/sqMacUIEvents.c (working copy) @@ -1717,7 +1717,7 @@ //fprintf(stdout,"\nrawkey up %i",ioMSecs()); key = findInKeyMap(keyCode); if (key != -1) {
enterKeystroke (
EventTypeKeyboard,keyCode, EventKeyUp, 0, ModifierStateCarbon(event,0));
enterKeystroke (
EventTypeKeyboard,keyCode, EventKeyUp, 0, ModifierStateCarbon(event,0) >> 3); } removeFromKeyMap(keyCode); result = eventNotHandledErr;
Unfortunately, I couldn’t verify the fix as I am running Yosemite which seems to not be supported yet for building from source.
I appended the changeset which we used to find that issue. Steps to reproduce:
- install our changeset into a Squeak4.5 image on OS X
- run `TempSettings printEvents: true.`
- open a Transcript
- Press cmd+a
- The fifth item of that Array should be 8 on the third time (but is 8<<3
instead) #(2 15512120 0 1 8 0 0 1) #(2 15512120 97 0 8 97 0 1) #(2 15512198 0 2 64 0 0 1)
Tobias commented that this bug could be duplicated to some other places (which we didn’t verify yet). I am not sure, how many projects already rely on this behavior and how to go on with that.
BR, Bastian Kruck