Hi,
You are pointing a dirty little secret of computer manufacturers... :(
In a perfect world, a keyboard should send a unique code (unicode) related to the the caracter you press or release.
In US, manufacturers really don't care about the other countries, that's why in the rest of the world we are "playing" with keyboards mapping, file encoding, etc...
In order to minimize the issues, the Sun USB keyboard implements HID, which is supposed to
return 'a' when you press the key 'a'. But on my french keyboard, it's not the case... the manufacturer only change the labels on the keyboards, not the mapping...
In order to solve the keymap issue, we convert keys from the keyboard to Java keycode (which are common on every systems).
When using a RDP adapter, jOpenRay converts the Java keycodes to RDP keycodes,
which are converted to the final letter by the keymap defined on your remote windows...
To sum up:
Sun Keyboard -> Hid -> Java -> RDP -> Windows keymap -> Screen
Because, I have no US keyboard, you will have to modify the "Hid to Java" mapping
defined in org.jopenray.util.HID
public static int hidToKeyCode(int hid) {
int r = 0;
switch (hid) {
case 4:
r = KeyEvent.VK_Q;
break;
will I think become: case 4:
r = KeyEvent.VK_A;
The best way to test is to start with a SSH session because have no Java -> RDP -> Windows keymap conversion.
As soon as you have a full working US mapping, I will add a keyboard selector on the UI.
Regards,
Guillaume