Skip to content

Commit b6c2b14

Browse files
committed
Fix keycode differences with Pd
1 parent 8244366 commit b6c2b14

1 file changed

Lines changed: 22 additions & 21 deletions

File tree

Source/Objects/ObjectImplementations.h

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)