@@ -72,6 +72,16 @@ class KeyObject final : public ImplementationBase
7272
7373 int keyCode = key.getKeyCode ();
7474
75+ #if JUCE_LINUX
76+ if (keyCode == 65505 || keyCode == 65506 // Shift
77+ || keyCode == 65507 || keyCode == 65508 // Control
78+ || keyCode == 65513 || keyCode == 65514 // Alt
79+ || keyCode == 65511 || keyCode == 65512 ) // Meta/Super
80+ {
81+ return false ;
82+ }
83+ #endif
84+
7585 if (type == Key) {
7686 t_symbol* dummy;
7787 parseKey (keyCode, dummy);
@@ -184,22 +194,17 @@ class KeyObject final : public ImplementationBase
184194
185195 void parseKey (int & keynum, t_symbol*& keysym) const
186196 {
187- if (keynum == shiftKey) {
188- keysym = pd->generateSymbol (" Shift_L" );
189- keynum = 0 ;
190- } else if (keynum == commandKey) {
191- keysym = pd->generateSymbol (" Meta_L" );
192- keynum = 0 ;
193- } else if (keynum == altKey) {
194- keysym = pd->generateSymbol (" Alt_L" );
195- keynum = 0 ;
196- } else if (keynum == ctrlKey) {
197- keysym = pd->generateSymbol (" Control_L" );
198- keynum = 0 ;
199- } else if (keynum == KeyPress::backspaceKey) {
200- keysym = pd->generateSymbol (" BackSpace" );
201- keynum = 8 ;
202- } else if (keynum == KeyPress::tabKey)
197+ if (keynum == shiftKey)
198+ keynum = 0 , keysym = pd->generateSymbol (" Shift_L" );
199+ else if (keynum == commandKey)
200+ keynum = 0 , keysym = pd->generateSymbol (" Meta_L" );
201+ else if (keynum == altKey)
202+ keynum = 0 , keysym = pd->generateSymbol (" Alt_L" );
203+ else if (keynum == ctrlKey)
204+ keynum = 0 , keysym = pd->generateSymbol (" Control_L" );
205+ else if (keynum == KeyPress::backspaceKey)
206+ keynum = 8 , keysym = pd->generateSymbol (" BackSpace" );
207+ else if (keynum == KeyPress::tabKey)
203208 keynum = 9 , keysym = pd->generateSymbol (" Tab" );
204209 else if (keynum == KeyPress::returnKey)
205210 keynum = 10 , keysym = pd->generateSymbol (" Return" );
@@ -209,7 +214,6 @@ class KeyObject final : public ImplementationBase
209214 keynum = 32 , keysym = pd->generateSymbol (" Space" );
210215 else if (keynum == KeyPress::deleteKey)
211216 keynum = 127 , keysym = pd->generateSymbol (" Delete" );
212-
213217 else if (keynum == KeyPress::upKey)
214218 keynum = 0 , keysym = pd->generateSymbol (" Up" );
215219 else if (keynum == KeyPress::downKey)
@@ -250,7 +254,6 @@ class KeyObject final : public ImplementationBase
250254 keynum = 0 , keysym = pd->generateSymbol (" F11" );
251255 else if (keynum == KeyPress::F12Key)
252256 keynum = 0 , keysym = pd->generateSymbol (" F12" );
253-
254257 else if (keynum == KeyPress::numberPad0)
255258 keynum = 48 , keysym = pd->generateSymbol (" 0" );
256259 else if (keynum == KeyPress::numberPad1)
@@ -271,10 +274,8 @@ class KeyObject final : public ImplementationBase
271274 keynum = 56 , keysym = pd->generateSymbol (" 8" );
272275 else if (keynum == KeyPress::numberPad9)
273276 keynum = 57 , keysym = pd->generateSymbol (" 9" );
274-
275- // on macOS, alphanumeric characters are offset
276277#if JUCE_MAC || JUCE_WINDOWS
277- else if (keynum >= 65 && keynum <= 90 ) {
278+ else if (!ModifierKeys::currentModifiers. isShiftDown () && keynum >= 65 && keynum <= 90 ) {
278279 keynum += 32 ;
279280 }
280281#endif
0 commit comments