[BUG]: Mac KeyUp/Down Events Missing Char

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[BUG]: Mac KeyUp/Down Events Missing Char

Sean P. DeNigris
Administrator
In Pharo, there is https://pharo.fogbugz.com/default.asp?2042 which you need an account to access. Here's the reported case...
This is the output from Mac VM when pressing "asdf":

keyDown: 0
keyStroke: 97
keyUp: 0
keyDown: 1
keyStroke: 115
keyUp: 1
keyDown: 2
keyStroke: 100
keyUp: 2
keyDown: 3
keyStroke: 102
keyUp: 3

On Linux VM all three values are the same. The wrong values are directly
on the output of virtual machine.
I've gotten bitten by this several times. The most recent was... er... now, hence the report!
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: [BUG]: Mac KeyUp/Down Events Missing Char

johnmci
 

On Mon, Mar 2, 2015 at 12:25 PM, Sean P. DeNigris <[hidden email]> wrote:

In Pharo, there is https://pharo.fogbugz.com/default.asp?2042 which you need
an account to access. Here's the reported case...

> This is the output from Mac VM when pressing "asdf":
>
> keyDown: 0
> keyStroke: 97
> keyUp: 0
> keyDown: 1
> keyStroke: 115
> keyUp: 1
> keyDown: 2
> keyStroke: 100
> keyUp: 2
> keyDown: 3
> keyStroke: 102
> keyUp: 3
>
> On Linux VM all three values are the same. The wrong values are directly
> on the output of virtual machine.

I've gotten bitten by this several times. The most recent was... er... now,
hence the report!



-----
Cheers,
Sean
--
View this message in context: http://forum.world.st/BUG-Mac-KeyUp-Down-Events-Missing-Char-tp4808968.html
Sent from the Squeak VM mailing list archive at Nabble.com.



--
===========================================================================
John M. McIntosh <[hidden email]https://www.linkedin.com/in/smalltalk
===========================================================================
Reply | Threaded
Open this post in threaded view
|

Re: [BUG]: Mac KeyUp/Down Events Missing Char

Sean P. DeNigris
Administrator
Thanks for the pointer... although all I understand now is it seems very complicated! ;)
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: [BUG]: Mac KeyUp/Down Events Missing Char

philippeback
 


Le 2 mars 2015 21:38, "Sean P. DeNigris" <[hidden email]> a écrit :
>
>
> johnmci wrote
> > https://isqueak.org/ioGetNextEvent
>
> Thanks for the pointer... although all I understand now is it seems very
> complicated! ;)

For the bluetooth keyboard experiment I did with the iPad I had to hook on undocumented events...

Yes it is complicated.

Phil
>
>
>
> -----
> Cheers,
> Sean
> --
> View this message in context: http://forum.world.st/BUG-Mac-KeyUp-Down-Events-Missing-Char-tp4808968p4808973.html
> Sent from the Squeak VM mailing list archive at Nabble.com.
>

Reply | Threaded
Open this post in threaded view
|

Re: [BUG]: Mac KeyUp/Down Events Missing Char

Bert Freudenberg
In reply to this post by Sean P. DeNigris
 
On 02.03.2015, at 12:25, Sean P. DeNigris <[hidden email]> wrote:

>
>
> In Pharo, there is https://pharo.fogbugz.com/default.asp?2042 which you need
> an account to access. Here's the reported case...
>
>> This is the output from Mac VM when pressing "asdf":
>>
>> keyDown: 0
>> keyStroke: 97
>> keyUp: 0
>> keyDown: 1
>> keyStroke: 115
>> keyUp: 1
>> keyDown: 2
>> keyStroke: 100
>> keyUp: 2
>> keyDown: 3
>> keyStroke: 102
>> keyUp: 3
>>
>> On Linux VM all three values are the same. The wrong values are directly
>> on the output of virtual machine.
>
> I've gotten bitten by this several times. The most recent was... er... now,
> hence the report!
The Mac VM does not translate up/down codes but gives you the raw Mac Virtual Keycodes as defined in
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h

/*
 *  Summary:
 *    Virtual keycodes
 *  
 *  Discussion:
 *    These constants are the virtual keycodes defined originally in
 *    Inside Mac Volume V, pg. V-191. They identify physical keys on a
 *    keyboard. Those constants with "ANSI" in the name are labeled
 *    according to the key position on an ANSI-standard US keyboard.
 *    For example, kVK_ANSI_A indicates the virtual keycode for the key
 *    with the letter 'A' in the US keyboard layout. Other keyboard
 *    layouts may have the 'A' key label on a different physical key;
 *    in this case, pressing 'A' will generate a different virtual
 *    keycode.
 */
enum {
  kVK_ANSI_A                    = 0x00,
  kVK_ANSI_S                    = 0x01,
  kVK_ANSI_D                    = 0x02,
  kVK_ANSI_F                    = 0x03,
  kVK_ANSI_H                    = 0x04,
  kVK_ANSI_G                    = 0x05,
  kVK_ANSI_Z                    = 0x06,
  kVK_ANSI_X                    = 0x07,
  kVK_ANSI_C                    = 0x08,
  kVK_ANSI_V                    = 0x09,
  kVK_ANSI_B                    = 0x0B,
  kVK_ANSI_Q                    = 0x0C,
  kVK_ANSI_W                    = 0x0D,
  kVK_ANSI_E                    = 0x0E,
  kVK_ANSI_R                    = 0x0F,
  kVK_ANSI_Y                    = 0x10,
  kVK_ANSI_T                    = 0x11,
  kVK_ANSI_1                    = 0x12,
  kVK_ANSI_2                    = 0x13,
  kVK_ANSI_3                    = 0x14,
  kVK_ANSI_4                    = 0x15,
  kVK_ANSI_6                    = 0x16,
  kVK_ANSI_5                    = 0x17,
  kVK_ANSI_Equal                = 0x18,
  kVK_ANSI_9                    = 0x19,
  kVK_ANSI_7                    = 0x1A,
  kVK_ANSI_Minus                = 0x1B,
  kVK_ANSI_8                    = 0x1C,
  kVK_ANSI_0                    = 0x1D,
  kVK_ANSI_RightBracket         = 0x1E,
  kVK_ANSI_O                    = 0x1F,
  kVK_ANSI_U                    = 0x20,
  kVK_ANSI_LeftBracket          = 0x21,
  kVK_ANSI_I                    = 0x22,
  kVK_ANSI_P                    = 0x23,
  kVK_ANSI_L                    = 0x25,
  kVK_ANSI_J                    = 0x26,
  kVK_ANSI_Quote                = 0x27,
  kVK_ANSI_K                    = 0x28,
  kVK_ANSI_Semicolon            = 0x29,
  kVK_ANSI_Backslash            = 0x2A,
  kVK_ANSI_Comma                = 0x2B,
  kVK_ANSI_Slash                = 0x2C,
  kVK_ANSI_N                    = 0x2D,
  kVK_ANSI_M                    = 0x2E,
  kVK_ANSI_Period               = 0x2F,
  kVK_ANSI_Grave                = 0x32,
  kVK_ANSI_KeypadDecimal        = 0x41,
  kVK_ANSI_KeypadMultiply       = 0x43,
  kVK_ANSI_KeypadPlus           = 0x45,
  kVK_ANSI_KeypadClear          = 0x47,
  kVK_ANSI_KeypadDivide         = 0x4B,
  kVK_ANSI_KeypadEnter          = 0x4C,
  kVK_ANSI_KeypadMinus          = 0x4E,
  kVK_ANSI_KeypadEquals         = 0x51,
  kVK_ANSI_Keypad0              = 0x52,
  kVK_ANSI_Keypad1              = 0x53,
  kVK_ANSI_Keypad2              = 0x54,
  kVK_ANSI_Keypad3              = 0x55,
  kVK_ANSI_Keypad4              = 0x56,
  kVK_ANSI_Keypad5              = 0x57,
  kVK_ANSI_Keypad6              = 0x58,
  kVK_ANSI_Keypad7              = 0x59,
  kVK_ANSI_Keypad8              = 0x5B,
  kVK_ANSI_Keypad9              = 0x5C
};

/* keycodes for keys that are independent of keyboard layout*/
enum {
  kVK_Return                    = 0x24,
  kVK_Tab                       = 0x30,
  kVK_Space                     = 0x31,
  kVK_Delete                    = 0x33,
  kVK_Escape                    = 0x35,
  kVK_Command                   = 0x37,
  kVK_Shift                     = 0x38,
  kVK_CapsLock                  = 0x39,
  kVK_Option                    = 0x3A,
  kVK_Control                   = 0x3B,
  kVK_RightShift                = 0x3C,
  kVK_RightOption               = 0x3D,
  kVK_RightControl              = 0x3E,
  kVK_Function                  = 0x3F,
  kVK_F17                       = 0x40,
  kVK_VolumeUp                  = 0x48,
  kVK_VolumeDown                = 0x49,
  kVK_Mute                      = 0x4A,
  kVK_F18                       = 0x4F,
  kVK_F19                       = 0x50,
  kVK_F20                       = 0x5A,
  kVK_F5                        = 0x60,
  kVK_F6                        = 0x61,
  kVK_F7                        = 0x62,
  kVK_F3                        = 0x63,
  kVK_F8                        = 0x64,
  kVK_F9                        = 0x65,
  kVK_F11                       = 0x67,
  kVK_F13                       = 0x69,
  kVK_F16                       = 0x6A,
  kVK_F14                       = 0x6B,
  kVK_F10                       = 0x6D,
  kVK_F12                       = 0x6F,
  kVK_F15                       = 0x71,
  kVK_Help                      = 0x72,
  kVK_Home                      = 0x73,
  kVK_PageUp                    = 0x74,
  kVK_ForwardDelete             = 0x75,
  kVK_F4                        = 0x76,
  kVK_End                       = 0x77,
  kVK_F2                        = 0x78,
  kVK_PageDown                  = 0x79,
  kVK_F1                        = 0x7A,
  kVK_LeftArrow                 = 0x7B,
  kVK_RightArrow                = 0x7C,
  kVK_DownArrow                 = 0x7D,
  kVK_UpArrow                   = 0x7E
};

/* ISO keyboards only*/
enum {
  kVK_ISO_Section               = 0x0A
};

/* JIS keyboards only*/
enum {
  kVK_JIS_Yen                   = 0x5D,
  kVK_JIS_Underscore            = 0x5E,
  kVK_JIS_KeypadComma           = 0x5F,
  kVK_JIS_Eisu                  = 0x66,
  kVK_JIS_Kana                  = 0x68
};


- Bert -




smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [BUG]: Mac KeyUp/Down Events Missing Char

Sean P. DeNigris
Administrator
In reply to this post by philippeback
philippeback wrote
For the bluetooth keyboard experiment I did…
Ah, I was doing a little chord keyboard emulator, but the key ups/downs seems pretty important for that case, although maybe I could just count them to know when all keys are released?
Cheers,
Sean