octalmage/robotjs

Shift case not working in Linux

jekku opened this issue · 13 comments

jekku commented

I was planning to do a "Coding ghost" showcase which automagically recreates code in sublime given a directory of a code base.

It seems like

robot.typeString("~!@#$%^&*()_+");

Outputs :

`12345678()-=

You can checkout

https://github.com/jekku/creeper/tree/issue_link/no_shifts_unix

I was about to post a new issue, then saw this one.

I'm having the same exact problem on Windows 8.1.
Anyone savvy enough to understand what's going on?

jekku commented

up up up

I can't even get robotjs to install in linux ;/ Some problem with nan 1.3.0 ( or 1.3.1 ). Will have to look into it more.

yes trying to print ! will output 1 in linux..

jekku commented

@octalmage Anyone still maintaining robot.js?

@jekku Yes, he is.

I'm having a similar issue on Windows 10, although I'm trying to send a file path with characters ":()" and getting ";90" instead.

@geekoftheweek I just got robotjs to install on Ubuntu 12.04. Will check the issue there and then move to Windows 10. ETA 2 days.

Sorry guys, big project at work. Will test this when I have time.

Can anyone confirm if the reverse ever happens ? When you use robotjs.typeString("123") and get !@#. Just curious.

The problem is that all keys are sent as keyboard input signals. So just like when you type !@# you need to hold down shift. That is not being handled as of yet. This is the case for characters !@#$%^&* (i.e. From 1-8). This fix wont be pretty or easy. I am currently working on this. And this problem is not limited to Ubuntu. I have confirmed this in windows 7 also. I am guessing this is universal.

Yeah that's messy, thanks for looking into this @Deltatiger! For now using keyTap is a good workaround. For example:

robot.keyTap("1", "shift");

Also @Deltatiger, I tested robot.typeString("123"); in Ubuntu and it works as expected.

jekku commented

Alright then. Just inform us in the version bump when it gets fixed will do the shift for now :)