Project

General

Profile

Actions

Emulator Issues #10622

open

Mac: Right shift maps to left shift

Added by CertifiedPyro about 7 years ago. Updated 6 days ago.

Status:
Accepted
Priority:
Low
Assignee:
-
% Done:

0%

Operating system:
OS X
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

Game Name?
Should apply to all GC games, but only tested with Burnout 2.

What's the problem? Describe what went wrong.
When configuring the Gamecube controller on recent development versions of the emu, attempting to map right shift will map the button to left shift instead. Attempting to use the right shift key while the Gamecube button is mapped to Right Shift will cause that button to not respond.

What steps will reproduce the problem?
Go to Controllers, then configure the Standard Controller in Port 1. The device shown should be Quartz/0/Keyboard & Mouse. Select a button to remap, then press the Right Shift key. The emu will show that Left Shift is mapped there instead.
You can also manually set the button to Right Shift by right-clicking the button to remap. Then, if you go into a game and attempt to use that button, the button presses will not be registered.

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Yes, it's present in 5.0-5789

Is the issue present in the latest stable version?
No, 5.0

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
5.0-5341 (clean up OSX input selection)

What are your PC specifications? (CPU, GPU, Operating System, more)
Mac OS 10.12.6 (Sierra)

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

Even in versions before 5.0-5341, the Quartz keyboard did not correctly register right shift, but the other keyboards (Keyboard/0/Apple Internal Keyboard) worked correctly. However, that version removed these old keyboards.

Actions #1

Updated by ligfx about 7 years ago

This also happens with the right alt/option key (and presumably the right ctrl key, though my keyboard doesn't have one to test).

Actions #2

Updated by Billiard26 almost 6 years ago

  • Priority changed from Normal to Low

It looks like kVK_RightShift and friends are not being utilized by your systems (or perhaps any). Both shifts are falling under kVK_Shift.
We could just rename "Left Shift" to "Shift" and call it a day.

Actions #3

Updated by AstralQueen over 2 years ago

This should be changed to a high or at least normal priority

Actions #4

Updated by Billiard26 about 2 years ago

  • Status changed from New to Fixed
  • Fixed in set to 5.0-12697
  • Operating system OS X added
  • Operating system deleted (N/A)

Left/Right Shift (and friends) generate mappings as just "Shift" since 5.0-12697 which works around the issue.
PR for reference. https://github.com/dolphin-emu/dolphin/pull/8428

Actions #5

Updated by AstralQueen about 2 years ago

Billiard26 wrote in #note-4:

Left/Right Shift (and friends) generate mappings as just "Shift" since 5.0-12697 which works around the issue.
PR for reference. https://github.com/dolphin-emu/dolphin/pull/8428

Both keys mapping to "Shift" is the issue. When this is the case there is no way to use them as separate keys (e.g. for each trigger) as there was in earlier versions, which limits the use of the keyboard. Unless I misunderstood your comment?

Actions #6

Updated by Billiard26 about 2 years ago

  • Status changed from Fixed to Questionable
  • Fixed in deleted (5.0-12697)

If macOS is throwing both shift keys under the same key-code there probably isn't much we can do to fix that.
I don't think re-adding the removed IOKit input backend would be reasonable, but if someone wants to do it, have at it.

Actions #7

Updated by AstralQueen 7 days ago

Feeling nostalgic for my old key mapping so giving this a ping... Any chance of raising the priority? It seems like a small difference but having to map RL triggers on GameCube to "A" and ";" has been hard these long years

Actions #8

Updated by OatmealDome 6 days ago ยท Edited

  • Status changed from Questionable to Accepted

I believe this is a bug in macOS. I threw together the following minimal test case:

#include <Carbon/Carbon.h>
#include <stdio.h>

int main(int argc, char** argv)
{
    while (true)
    {
        bool left = CGEventSourceKeyState(kCGEventSourceStateHIDSystemState, kVK_Shift);
        bool right = CGEventSourceKeyState(kCGEventSourceStateHIDSystemState, kVK_RightShift);
        printf("left = %s, right = %s\n", left ? "pressed" : "not pressed", right ? "pressed" : "not pressed");
    }
    return 0;
}

CGEventSourceKeyState never detects right shift, but left shift works fine.

Unfortunately, I currently don't have the time to investigate further.

Actions

Also available in: Atom PDF