@@ -41,9 +41,11 @@ public boolean processLocalKeyEvent(int keyCode, KeyEvent evt, int additionalMet
41
41
switch (evt .getScanCode ()) {
42
42
case SCAN_ESC : key = 0xff1b ; break ;
43
43
case SCAN_LEFTCTRL :
44
- case SCAN_RIGHTCTRL :
45
44
hardwareMetaState &= ~CTRL_MASK ;
46
45
break ;
46
+ case SCAN_RIGHTCTRL :
47
+ hardwareMetaState &= ~RCTRL_MASK ;
48
+ break ;
47
49
case SCAN_F1 : keysym = 0xffbe ; break ;
48
50
case SCAN_F2 : keysym = 0xffbf ; break ;
49
51
case SCAN_F3 : keysym = 0xffc0 ; break ;
@@ -66,7 +68,7 @@ public boolean processLocalKeyEvent(int keyCode, KeyEvent evt, int additionalMet
66
68
hardwareMetaState &= ~ALT_MASK ;
67
69
break ;
68
70
case KeyEvent .KEYCODE_ALT_RIGHT :
69
- hardwareMetaState &= ~ALT_MASK ;
71
+ hardwareMetaState &= ~RALT_MASK ;
70
72
break ;
71
73
}
72
74
}
@@ -121,11 +123,12 @@ public boolean processLocalKeyEvent(int keyCode, KeyEvent evt, int additionalMet
121
123
// through to the VNC server so that they get handled there, but strip
122
124
// them from the character before retrieving the Unicode char from it.
123
125
// Don't clear Shift, we still want uppercase characters.
124
- int metaMask = ( 0x00007000 | 0x00070000 ); // KeyEvent.META_CTRL_MASK | KeyEvent.META_META_MASK
125
- // We still want alt-key combinations to give us symbols, so we only strip out KeyEvent.META_ALT_MASK
126
- // if we've decided to send out ALT as a separate key modifier over.
127
- if ((metaState & ALT_MASK ) != 0 ) {
128
- metaMask |= 0x00000032 ;
126
+ int metaMask = (0x00007000 | 0x00070000 ); // KeyEvent.META_CTRL_MASK | KeyEvent.META_META_MASK
127
+ // When events come from a default hardware keyboard, we still want alt-key combinations to
128
+ // give us symbols, so we only strip out KeyEvent.META_ALT_MASK only if we've decided to send
129
+ // over ALT as a separate key modifier in convertEventMetaState().
130
+ if ((metaState & ALT_MASK ) != 0 || (metaState & RALT_MASK ) != 0 ) {
131
+ metaMask |= 0x00000032 ; /* KeyEvent.META_ALT_MASK */
129
132
}
130
133
KeyEvent copy = new KeyEvent (evt .getDownTime (), evt .getEventTime (), evt .getAction (),
131
134
evt .getKeyCode (), evt .getRepeatCount (), evt .getMetaState () & ~metaMask ,
@@ -140,9 +143,11 @@ public boolean processLocalKeyEvent(int keyCode, KeyEvent evt, int additionalMet
140
143
switch (evt .getScanCode ()) {
141
144
case SCAN_ESC : keysym = 0xff1b ; break ;
142
145
case SCAN_LEFTCTRL :
143
- case SCAN_RIGHTCTRL :
144
146
hardwareMetaState |= CTRL_MASK ;
145
147
break ;
148
+ case SCAN_RIGHTCTRL :
149
+ hardwareMetaState |= RCTRL_MASK ;
150
+ break ;
146
151
case SCAN_F1 : keysym = 0xffbe ; break ;
147
152
case SCAN_F2 : keysym = 0xffbf ; break ;
148
153
case SCAN_F3 : keysym = 0xffc0 ; break ;
@@ -165,7 +170,7 @@ public boolean processLocalKeyEvent(int keyCode, KeyEvent evt, int additionalMet
165
170
hardwareMetaState |= ALT_MASK ;
166
171
break ;
167
172
case KeyEvent .KEYCODE_ALT_RIGHT :
168
- hardwareMetaState |= ALT_MASK ;
173
+ hardwareMetaState |= RALT_MASK ;
169
174
break ;
170
175
}
171
176
}
0 commit comments