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 <bonnm...@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@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@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@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@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@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@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@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to