Jump to content
Sign in to follow this  
BitLauncher

Send raw uses wrong key layout

Recommended Posts

The script opens a "Save as" dialog and the cursor is at the beginning of the file name textbox:

At executing the command

Send("C:\Temp\mp3lrc\", 1) ; 1 means raw string

; I would expect, that it writes: C:\Temp\mp3lrc\
; but it writes:                  C>Tempmp3lrc

I found out, that the key where > ist printed on it writes > in the US english layout, but : in the german swiss layout.

There is no key for \ with swiss german layout on that 88 key US-keyboard.

Send("zy1+23*45%6&7/8(9)0='?^", 1)

; delivers:   zy1!23#45%6^7&8*9(0)[{]
; instead of: zy1+23*45%6&7/8(9)0='?^

The result is 99% US English keyboard layout.

But why is z and y not exchanged?

Details about system:

AutoIt v3.3.6.1, Win 7 Home german.

x64 Subnotebook with german keyboard layout Germany with local settings for german Switzerland.

With an external 88 keys USB keyboard with US layout (tenlesskey from Filco).

3 different keyboard layouts installed:

+ german swiss (default)

+ spanish modern

+ US english

I made a cross check with Notepad and found out - it is depending upon the receiving processes active keyboard layout!

;Run("notepad.exe")
WinWaitActive("Unbenannt - Editor")
Send("This are all keys from 1 to 0 with alternating shift: 1+2""3*4ç5%6&7/8(9)0= yz", 1); 1 means raw string!

; Results - the first 2 characters refer which keyboard layout was active for
; the Notepad process.
;Es: This are all keys from 1 to 0 with alternating shift: 1!2"3·4$5%6&7/8(9)0= yz
;En: This are all keys from 1 to 0 with alternating shift> 1!2@3#4$5%6^7&8*9(0) yz
;De: This are all keys from 1 to 0 with alternating shift: 1+2"3*4ç5%6&7/8(9)0= yz

The question is, why is the keyboard layout 99% so important for the receiving process?

I simply want to send a string of ASCII characters - how can I do it? No matter which keyboard layout is active?

Keyboard layout does not apply 100% - see y and z, they are always right, but US layout is different to spanish and swiss german!

Share this post


Link to post
Share on other sites

Send("This are all keys from 1 to 0 with alternating shift: 1+2""3*4ç5%6&7/8(9)0= yz", 1); 1 means raw string!

Change the quotations surrounding your Send() string to single quotes. That won't fix your issue with the german/us keyboard layout conflict, but it will give you proper output.

Send('This are all keys from 1 to 0 with alternating shift: 1+2""3*4ç5%6&7/8(9)0= yz', 1); 1 means raw string!

Lofting the cyberwinds on teknoleather wings, I am...The Blue Drache

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...