# Touchscreen keyboard Layout

**URL:** <https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393>\
**Category:** Ignition\
**Created:** [December 1, 2014, 3:48pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393 "2014-12-01T15:48:56Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Amarth](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarth/32/3313_2.png) [@Amarth](https://forum.inductiveautomation.com/u/Amarth)\
**Post date:** [December 1, 2014, 3:48pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/1 "2014-12-01T15:48:56Z")

</div>

Hello,

Is there a way to change the keyboard layout of the touchscreen ?  
One of my client would like to have it displayed as an AZERTY (french) layout. It tried to use the langage selector and added the french langage but it has no effect on the keyboard layout.

My version is 7.7.1.

Thank you.

---

<div class="post-metadata">

**Author:** ![Amarth](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarth/32/3313_2.png) [@Amarth](https://forum.inductiveautomation.com/u/Amarth)\
**Post date:** [December 9, 2014, 2:36pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/2 "2014-12-09T14:36:51Z")

</div>

Does not sound inspiring 😕

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [December 10, 2014, 9:21pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/3 "2014-12-10T21:21:18Z")

</div>

I’ve got something in mind. It’s way in the back of my mind and I’ll need to dig for it. My wife says the some thing about our garage…

You are using a Windows client?

---

<div class="post-metadata">

**Author:** ![Amarth](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarth/32/3313_2.png) [@Amarth](https://forum.inductiveautomation.com/u/Amarth)\
**Post date:** [December 11, 2014, 6:23am UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/4 "2014-12-11T06:23:46Z")

</div>

Yes, it is a Windows client.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [December 11, 2014, 12:19pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/5 "2014-12-11T12:19:50Z")

</div>

I was able to use the Windows OSK. It opens then a field is mouseClicked, and closes when the Enter key is released.

This is a very rough implementation, so results may vary. 😉 Things like focus may not always work correctly, such as clicking onto another field without hitting enter first. But hopefully it will point you to a workaround solution.

[test\_OSK\_2017-05-09\_0956.proj](https://us1.discourse-cdn.com/inductiveautomation/original/2X/b/bd360d79ad43a4b6cd8b23efb62c83e7ab1848b4.proj) (4.7 KB)

EDIT: Updated link.

---

<div class="post-metadata">

**Author:** ![Amarth](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarth/32/3313_2.png) [@Amarth](https://forum.inductiveautomation.com/u/Amarth)\
**Post date:** [December 11, 2014, 1:18pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/6 "2014-12-11T13:18:51Z")

</div>

Thank you very much. That helps me a lot. I can work on this to improve but the idea is great !

Thank you again.

---

<div class="post-metadata">

**Author:** ![andrea.minu](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andrea.minu/32/3326_2.png) [@andrea.minu](https://forum.inductiveautomation.com/u/andrea.minu)\
**Post date:** [May 9, 2017, 1:40pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/7 "2017-05-09T13:40:52Z")

</div>

Hi

I tried to download the example project test\_OSK\_2014-12-11\_0711.proj3 , but the link does not work anymore  
Can you fix the problem?

Andrea

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [May 9, 2017, 2:01pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/8 "2017-05-09T14:01:16Z")

</div>

Link has been updated. Still pops up on Windows 10, but does not close on Enter key. Like I said, very rough. 🙂

---

<div class="post-metadata">

**Author:** ![LuMi](https://avatars.discourse-cdn.com/v4/letter/l/b38774/32.png) [@LuMi](https://forum.inductiveautomation.com/u/LuMi)\
**Post date:** [November 28, 2017, 9:36am UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/9 "2017-11-28T09:36:54Z")

</div>

Hey,

I have the same problem. Since the last reply has been made in 2014, are there some other solutions for this problem?  
We need a german layout on a Surface 4. The english version of the touch keyboard works great but the users are not happy about searching for letters…furthermore, umlauts do not exist on the eng. layout.  
I’ve tried the postet project, but only a error box pops up when I click the buttons -“can’t start the on screen keyboard”. Unfortunately, I’m not skilled enough to solve the problem…

Thanks in advance 🙂

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 28, 2017, 8:22pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/10 "2017-11-28T20:22:18Z")

</div>

Hi LuMi,

Can you run _osk.exe_ from a command prompt? If not, then you either don’t have it installed, or you need the full path to the executable.

---

<div class="post-metadata">

**Author:** ![LuMi](https://avatars.discourse-cdn.com/v4/letter/l/b38774/32.png) [@LuMi](https://forum.inductiveautomation.com/u/LuMi)\
**Post date:** [November 29, 2017, 10:00am UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/11 "2017-11-29T10:00:23Z")

</div>

Hey JordanCClark,  
thanks for your answer!  
I can open the osk.exe from the command prompt. I’ve changed the script to:

_import os_  
_os.popen(“C:\Windows\System32\osk.exe”)_

the path is the same as used in the command prompt but it didn’t solve the problem. 😑

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 29, 2017, 5:11pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/12 "2017-11-29T17:11:31Z")

</div>

Backslashes in python are used to escape characters (an example is ‘\r’ for carriage return). If you need a backslash character, you need to use _two_ of them.

So, your full path would look more like:

```auto
os.popen("C:\\Windows\\System32\\osk.exe")

```

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [November 29, 2017, 5:21pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/13 "2017-11-29T17:21:21Z")

</div>

> [@JordanCClark](#):
>
> If you need a backslash character, you need to use two of them.

Or just upgrade the OS to something sane.... (-;

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [November 29, 2017, 6:17pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/14 "2017-11-29T18:17:41Z")

</div>

Not to digress, but Python is also pretty generous with OS paths, and this will work just as well:

```auto
import os
os.popen("C:/Windows/System32/osk.exe")

```

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 29, 2017, 8:09pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/15 "2017-11-29T20:09:19Z")

</div>

* * *

## This is the closest emoji I could find in response to Phil: 😝 Heh.

Back to Win10…

Another thing I’ve found, looking back over this, is that OSK requires elevated privileges to run. And to kill. If you are running the client under a non-admin user, that could be why it doesn’t launch. It’s also why, even if it does launch, you can’t kill it afterwards. Popen() doesn’t work that way 😒

Let me mull this over a bit…

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 29, 2017, 9:08pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/16 "2017-11-29T21:08:39Z")

</div>

## Hackier version:

Use shortcuts with elevated priviliges.

Attachment has two shortcuts: oskOn and oskOff (imaginative, right?)  
[oskSwitch.zip](https://us1.discourse-cdn.com/inductiveautomation/original/2X/e/e5b04746211a431c3d1b8fb747f89f301cda63dd.zip) (1.9 KB)

Example:  
place the two files in C:\oskSwitch\

for each text field:

* * *

mouseReleased event:

```python
import os
os.popen('C:/oskSwitch/oskOn.lnk')

```

* * *

keyReleased event:

```python
if event.keyCode==10:
  import os
  os.popen('C:/oskSwitch/oskOff.lnk')

```

* * *

Personally, I hate it.

---

<div class="post-metadata">

**Author:** ![AlexandreFG](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/alexandrefg/32/74162_2.png) [@AlexandreFG](https://forum.inductiveautomation.com/u/AlexandreFG)\
**Post date:** [May 5, 2022, 1:21pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/17 "2022-05-05T13:21:46Z")

</div>

Have one way to put the keyboard on the login screen to Azerty mode? I changed the keyboard on my PC (Windows 10 ) and all keyboards are set to AZERTY correctly, but on the login screen its still QWERTY

---

<div class="post-metadata">

**Author:** ![AlexandreFG](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/alexandrefg/32/74162_2.png) [@AlexandreFG](https://forum.inductiveautomation.com/u/AlexandreFG)\
**Post date:** [July 12, 2022, 7:03pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/18 "2022-07-12T19:03:17Z")

</div>

Do you know any solution that not require elevated privileges?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [July 12, 2022, 7:04pm UTC](https://forum.inductiveautomation.com/t/touchscreen-keyboard-layout/9393/19 "2022-07-12T19:04:36Z")

</div>

Nope.

> [@JordanCClark](#):
>
> Another thing I’ve found, looking back over this, is that OSK requires elevated privileges to run.
