send "keyUp" / "rawKeyUp" ?
Richmond Mathewson
richmondmathewson at gmail.com
Sun Feb 25 13:06:05 EST 2018
That's great, but I'm currently working on a Macintosh.
Richmond.
On 25/2/2018 7:38 pm, Mike Bonner via use-livecode wrote:
> Just realized, if all you need to know (On linux) is the basic keyboard
> information, you can likely do this..
>
> put url "file:/etc/default/keyboard" into <whatevercontainer>
> and then parse it. Mine contains
> KBMODEL="pc105"
> KBLAYOUT="us"
> KBVARIANT=""
> KBOPTIONS=""
> BACKSPACE="guess"
>
> On windows, if the system has powershell (uncertain as to versions?) you
> might be able to get useful information
>
> set the hideconsolewindows to true
> set the shellcommand to "powershell"
> get shell("(Get-Culture).keyboardLayoutID")
>
> This will put a number into "it" in my case, 1033.
> Looking at this page.. https://www.science.co.il/language/Locale-codes.php
> shows that 1033 is en_us.
>
> Alternatively, also with powershell
>
> set the hideconsolewindows to true
> set the shellcommand to "powershell"
> get shell("Get--WinUserLanguageList")
>
> At which point IT contains something like..
> *LanguageTag : en-US*
> *Autonym : English (United States)*
> *EnglishName : English*
> *LocalizedName : English (United States)*
> *ScriptName : Latin script*
> *InputMethodTips : {0409:00000409}*
> *Spellchecking : True*
> *Handwriting : False*
>
> The number for InputMethodTips means qwerty us, and is in the registry key
> (for me)
> The registry key: HKEY_CURRENT_USER\Keyboard Layout\Preload\1
> contains the same 0409 number so perhaps queryRegister could be used to
> grab that.
>
> If the user is using a different preferred layout (overriding normal
> mapping,) it might show in
> HKEY_CURRENT_USER\Keyboard Layout\Substitutes\1
> For example, looking at the number 00010409 denotes 409 english us keyboard
> layout overridden to be a dvorak layout.
>
> After all this, i'm thinking that having the user do a nice keyboard
> faceroll might still be the easiest solution.
>
> On Sun, Feb 25, 2018 at 9:26 AM, Mike Bonner <bonnmike at gmail.com> wrote:
>
>> Hmm. On linux you might be able to use a shell command to get some info,
>> though I don't know enough about theh output to be much help.
>>
>> the command xkbcom :0 - dumps a truckload of info, might be useful for
>> your task.
>> I'm guessing there is a way to do this on macos too but I don't currently
>> have access to a mac.
>> Unsure about how to go about it on windows.
>>
>> For example, on my system one of the first lines contains qwerty as part
>> of the line. The only issue with this, is that custom mapings are
>> possible, though it looks like the aliases are part of the information.
>>
>> I've seen operating systems do the "press the key to the right of the left
>> shift key.." sequence to determine base layout (which again, wouldn't cover
>> every base if the user has changed the keyboard map, so you might need to
>> have them press every key... xkbcom might get around that if you can
>> figure out enough to interpret the results)
>>
>>
>>
>> On Sun, Feb 25, 2018 at 8:22 AM, Richmond Mathewson via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>
>>> Either I did not explain things very well or you got hold of the wrong
>>> end of the stick
>>> (or, most probably a bit of both: probably the latter as a consequence of
>>> the former).
>>>
>>> Imagine, if you will, I need to know what an end-user's standard keyboard
>>> layout is.
>>> Let's call our theoretical end-user Farhad, and Iranian who uses an
>>> Iranian keyboard layout
>>> (something I don't know), and let's call our me Richmond owing to a
>>> slight lack of imagination
>>> on my part; and I use a US English keyboard layout, which I know, but
>>> isn't useful information
>>> under the circumstances.
>>>
>>> Now if I click on the key that yields a rawKey of 113 I get a "q".
>>>
>>> If Farhad clicks on the key that yields a rawKey of 113 he gets a "ق
>>>
>>> And I am unable to type close-quotes there.
>>>
>>> So I should like to find a way to fake someone pressing down on a key on
>>> their home-computer
>>> to see what the keyUp result is.
>>>
>>> Now I realise I cannot SEND a command telling the key on the keyboard to
>>> do
>>> "a pianola" and depress itself (wouldn't that be fun?).
>>>
>>> It would, however, be groovy if one could work out Farhad's keys without
>>> having him to
>>> go "bash, bash" all the way along the rows of his keyboard.
>>>
>>> Richmond.
>>>
>>>
>>>
>>> On 25/2/2018 4:13 pm, Mike Bonner via use-livecode wrote:
>>>
>>>> A quick example placed in the card script.
>>>>
>>>> local sKeysPushed --keys kept in this variable for the example
>>>>
>>>> on rawkeydown pkey
>>>> if sKeysPushed is empty then
>>>> put pkey into sKeysPushed
>>>> else
>>>> put comma & pkey after sKeysPushed
>>>> end if
>>>>
>>>> -- You would want to remove this block of course, but for testing
>>>> -- it lets you push the shift key to see whats been captured
>>>> if the shiftkey is down then
>>>> put sKeysPushed
>>>> end if
>>>>
>>>> pass rawkeydown --pass the key
>>>>
>>>> end rawkeydown
>>>>
>>>> I know it was just pseudocode, but as far as I know you can't "send" a
>>>> message to a key so..
>>>> If you want to be able to click a button to send a rawkeydown (rather
>>>> than
>>>> just typing them) you could use something like:
>>>>
>>>> on mouseup
>>>> send "rawkeydown 110" to this card
>>>> end mouseup
>>>>
>>>> or
>>>> on mouseup
>>>> displatch "rawkeydown" with (any item of "119,240,43") --<list of
>>>> random keys to send
>>>> end mouseup
>>>>
>>>> Now.. If you need to track keypresses while NOT actively using your
>>>> application, it requires a different method. You'd need to use a
>>>> different
>>>> method. You would need to use a send loop and check the keysdown and
>>>> build
>>>> up your keys list that way. Using this method would be problematic
>>>> though,
>>>> for example.. A user holds a key down long enough for several loops to
>>>> happen, so the keysdown would show the key multiple times. Which might
>>>> be
>>>> appropriate if autorepeat is being used, but then you have no idea how
>>>> many
>>>> "repeats" there were because its based on the repeat rate. It would be
>>>> very difficult to have much accuracy using this method. (easiest might
>>>> be
>>>> to check current keysdown against previous keysdown and only log if there
>>>> is a difference, then use your own noggin to realize that litle is
>>>> little)
>>>>
>>>>
>>>> On Sun, Feb 25, 2018 at 3:09 AM, Richmond Mathewson via use-livecode <
>>>> use-livecode at lists.runrev.com> wrote:
>>>>
>>>> Erm . . .
>>>>> I want to set up a stack that will list an end-user's keyDowns by
>>>>> sending
>>>>> their system
>>>>> a set of rawKeyUps . . .
>>>>>
>>>>> PseudoCode:
>>>>>
>>>>> in a button:
>>>>>
>>>>> on mouseUp
>>>>> send "rawKeyDown" to key 113
>>>>> end mouseUp
>>>>>
>>>>> in the cardScript:
>>>>>
>>>>> on rawKeyDown XX
>>>>> get keyUp XX
>>>>> put XX somewhere useful
>>>>> end rawKeyDown
>>>>>
>>>>> Richmond.
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode at lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>
>>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list