optionKeyDown message broken

Paul Dupuis paul at researchware.com
Thu Apr 21 11:55:31 EDT 2022


I am finding problems with the optionKeyDown handler on both Windows 
(where it's the ALT key) and macOS (OPTION key). This is in Livecode 
9.6.7 STABLE under macOS Mojave and Windows 10

In a new stack, place the following in the card script:

on optionKeyDown pKeyName
   if platform() = "MacOS" then
     put numToChar(charToNum(pKeyName)-128) into tKey1 -- original 
sample from Dictionary
     put numToCodePoint(codepointToNum(pKeyName)-128) into tKey2 -- 
trying using non-deprecated functions
     answer pKeyName,tKey1,tKey2
   else -- windows
     answer pKeyName
   end if
end optionKeyDown

On macOS, the LC 9.6.7 Dictionary shows the need to strip the "high" bit 
off the character to get the letter of the key pressed, for example, 
OPTION-F produces ƒ
The above script on macOS produces for OPTION-F the following ƒ, D, Ë
Where as what you want for either tKey1 or tKey2 to be "F" the key 
pressed with OPTION-F

I think this is a case where the Dictionary entry for optionKeyDown (for 
macOS) needs to be updated with a formula that works since LC was 
updated to Unicode with version 7 "High" ASCII macOS characters are now 
UNicode and not the same character codes.

But Wait. Windows is even worse

This code on Windows does not produce a letter of any sort. It produces  
As soon as you press the ALT key, before you can even press ALT-F, this 
script displays 65513 in the answer dialog. This, I believe is the RAW 
key code for the ALT key!

In other words, the optionKeyDown message is not sending the key pressed 
as a letter/character as the dictionary says and the parameter passed to 
the optionKeyDown message is the code for the ALT key itself (which 
makes no sense).

Could enough folks on this list conform both the macOS and Windows 
errors, so I can log a bug with LiveCode? I am not looking for 
work-around (I can do that if I have to), just for confirmation that 
these are bugs.

The macOS can be resolved by a better method for mapping macOS 
"high-ASCII" characters, now mapped to Unicode in LC, back to the ASCII 
key characters pressed.

The Windows may not have a work-around as, according to the dictionary, 
keyDown/keyUp messages are not passed in Control or Alt keys are down, 
the commandKeyDown, optionKetDown messages are sent instead, so you can 
using a keyDown handler and check for the altKey() = "down" condition. 
Perhaps rawKeyDown...



More information about the use-livecode mailing list