Shpoike / Quakespasm

Extra bloaty junk to modernise stuff a bit.
http://triptohell.info/moodles/qss/
GNU General Public License v2.0
184 stars 41 forks source link

Custom Control + Q and Control + W Quit shortcuts are problematic for users #103

Closed brettdoyle closed 2 years ago

brettdoyle commented 2 years ago

Great job on this project by the way. I just installed Quake for the first time in around 22 years. I was trying to play but my game kept "crashing" as soon as I would change weapons. After looking into it a bit more I noticed Control is my key to select the grenade launcher and W is my key for moving forward. I spent a few hours trying to figure out what was going on, downloading visual studio, compiling the code, putting in breakpoints, trying different compilers, etc.... I found out that keys.c has multiple shortcuts to quit starting on like 1557.

Alt+F4 is already the default windows shortcut for closing an application, and it already works without any custom modifications.

Since almost every player is using WASD and the adjacent keys are the most frequently used key in the game it is easy for someone to also hit control at the same time. Seems like that is going to be very problematic for a lot of users that can't figure out what is going on or have the means to investigate, change the source code, and compile.

It would probably make sense to get rid of them(quitting is easy from the menu or quit in the console... no one ever had an issue). If someone wants this they can just bind a key to quit... I.E. Bind f12 "quit". Another option would be to change the shortcut to something less inevitable to be used unintentionally (like control F12)... or make it configurable... I.E. an option in the Menu -> Options -> Controls.

Code mentioned:

if defined(PLATFORM_OSX) || defined(PLATFORM_MAC)

if (down && (key == 'q') && keydown[K_COMMAND])
{
    Host_Quit_f();
    return;
}

endif

if (down && (key == 'q') && keydown[K_CTRL])
{
    Host_Quit_f();
    return;
}

if (down && (key == 'w') && keydown[K_CTRL])
{
    Host_Quit_f();
    return;
}
brettdoyle commented 2 years ago

Wrong place