Page 1 of 2

Keybinding issues (when remapping keys in OS)

Posted: Thu Feb 28, 2019 12:41 pm
by posila
tl;dr
"I updated from 0.16 and keybindings are all messed up."
- What keyboard layout do you use? Go to Control options in the game and reset to default.

"The game doesn't seem to detect some keys.", "The control settings change after restart."
- Sounds like bugs.

"I remapped keys in OS and the game does not respect that."
- It's a bug if the issue is when typing text. Re-mapping modifier keys for in-game shortucts needs to be solved by us. Other cases mostly are not bug, you need to rebind keys in control settings to whatever you like.

---------------------------

There are lot of report regarding to different keybinding issues. So I'd like to address them here in general to reduce number of duplicate threads.

The differences between 0.16 and 0.17 come from migration from Allegro to SDL2, which introduced some bugs; at the same time we switched from handling keys by their keycode (which represents "meaning" of keys) to their scancode (which identifies positions of keys on keyboard). See: FFF #259

For the most part, we are designing default control bindings around positions of key and not their meaning. If player movement is supposed to be controlled by WASD, we mean very specific keys not necessarily keys that produce letters W, A, S or D. For example on French AZERTY keyboard movement is on ZQSD, but these are physically the same keys as WASD on QWERT* keyboards.

Because before 0.17, people with keyboard layouts that diverged a log from QWERTY had to change their default control settings, these setting don't make sense anymore in 0.17, which can create issues when updating from 0.16. We have added auto-reset of 0.16 bindings when AZERTY layout is detected during startup, if there are some other widely used layouts that would benefit from auto-reset (Dvorak? Colemak?), please let me know.

So, because of using scancodes, remapping keys in your OS doesn't have any effect on the game. This is intended.

There couple of exceptions to this:
- When typing text, the game should respect your keyboard layout. So if you swap Backspace and CapsLock, it should work as it would in a text editor when your writing to chat or other text boxes.
- Shortcuts for Undo, Cut, Copy and Paste should respect your keyboard layout (to some extent) Ctrl+Z, Ctrl+X, Ctrl+C, Ctrl+V, because these shortcuts are universaly used. There is already exception to this exception, because due to conflict with other controls, we default Undo to Ctrl+W on AZERTY layout as of 0.17.2.

One could argue, that Esc is also universal shortcut ... maybe, we need to think more about this.

My point is - in-game controls are (and should be) based on positions of keys on keyboard, if they don't feel right to you, change them in control settings.

Problem is - the game won't let you use any key as a modifier key, so we need to solve that somehow. Most likely fix will be detecting modifier keys based on keycode instead of scancode.

Issues to solve:
  • Handle remapped modifier keys.
  • Respect OS keyboard layout when typing text.
  • macOS doesn't seem to register Cmd key for some players.
  • Determine if Esc should be also treated specially.

Re: Keybinding issues

Posted: Thu Feb 28, 2019 6:08 pm
by Risce
I propose that modifier keys should be handled by key code, not scan code.

The Ctrl, Escape, Shift, Alt, Meta, (etc) keys are not in meaningfully different places on the keyboard in different layouts. They are more commonly similar in MEANING than in LOCATION. Those of us who have moved their location (by OS remappings, for example) want the INTENTION of the key to move.

It seems that this isn't having the desired effect in Factorio (because of scan code) and that there aren't sufficient control options in Factorio to actually create these mappings in the Factorio settings. (See viewtopic.php?f=7&t=65402)

Re: Keybinding issues

Posted: Thu Feb 28, 2019 6:54 pm
by haifishtime
There is also the thing that duplicate keybindings only work with one of the functions. I espacially tested it with and picking up Items as well as getting into vehicles. It worked in 0.16 but doesn't work in 0.17.0 and 0.17.3 anymore.
Since there isn't a warning about duplicate keybinds this seems lika a bug und it probably belongs to the same topic.

Re: Keybinding issues

Posted: Thu Feb 28, 2019 6:57 pm
by tehfreek
haifishtime wrote: Thu Feb 28, 2019 6:54 pm There is also the thing that duplicate keybindings only work with one of the functions. I espacially tested it with and picking up Items as well as getting into vehicles. It worked in 0.16 but doesn't work in 0.17.0 and 0.17.3 anymore.
Since there isn't a warning about duplicate keybinds this seems lika a bug und it probably belongs to the same topic.
The thing is that E and Q have multiple bindings and yet no reports have come up regarding them failing to work as expected.

Re: Keybinding issues

Posted: Thu Feb 28, 2019 7:04 pm
by nerhee
glad that this is already on the radar :D

Re: Keybinding issues

Posted: Thu Feb 28, 2019 7:22 pm
by legendre6891
Really glad this is being looked at. Please consider allowing (under X11, using xkb) Caps Lock to function as Ctrl. This greatly reduces RSI for me, and is important to my painless enjoyment of the game :-)

Re: Keybinding issues

Posted: Fri Mar 01, 2019 4:17 am
by tsani
I think using scancodes is an excellent idea, but the ability to remap the escape key in the controls menu should also be present. In my OS I have the escape and caps lock keys swapped. The upshot is that in factorio pressing the physical escape key has the effect of logically pressing the caps lock key (future text is in uppercase) as well as the escape key (the game pauses and the menu comes up).

Re: Keybinding issues

Posted: Fri Mar 01, 2019 5:12 am
by kitchsUsername
tehfreek wrote: Thu Feb 28, 2019 6:57 pm
haifishtime wrote: Thu Feb 28, 2019 6:54 pm There is also the thing that duplicate keybindings only work with one of the functions. I espacially tested it with and picking up Items as well as getting into vehicles. It worked in 0.16 but doesn't work in 0.17.0 and 0.17.3 anymore.
Since there isn't a warning about duplicate keybinds this seems lika a bug und it probably belongs to the same topic.
The thing is that E and Q have multiple bindings and yet no reports have come up regarding them failing to work as expected.
I'm wondering if it is solely related to the pickup item function then? I'm suffering the same thing (Pickup bound to Keypad +, which is also the key to enlarge the area for say.. landfill (Yeah, I'm a lefty) ). It worked in all versions I've played before, and does not in 0.17. And I've seen at least two bug reports related specifically to the pickup item key.

Re: Keybinding issues

Posted: Fri Mar 01, 2019 7:59 pm
by haifishtime
kitchsUsername wrote: Fri Mar 01, 2019 5:12 am
tehfreek wrote: Thu Feb 28, 2019 6:57 pm
haifishtime wrote: Thu Feb 28, 2019 6:54 pm There is also the thing that duplicate keybindings only work with one of the functions. I espacially tested it with and picking up Items as well as getting into vehicles. It worked in 0.16 but doesn't work in 0.17.0 and 0.17.3 anymore.
Since there isn't a warning about duplicate keybinds this seems lika a bug und it probably belongs to the same topic.
The thing is that E and Q have multiple bindings and yet no reports have come up regarding them failing to work as expected.
I'm wondering if it is solely related to the pickup item function then? I'm suffering the same thing (Pickup bound to Keypad +, which is also the key to enlarge the area for say.. landfill (Yeah, I'm a lefty) ). It worked in all versions I've played before, and does not in 0.17. And I've seen at least two bug reports related specifically to the pickup item key.
Besides the F key with picking up items and getting into vehicles, I have tried entering vehicles with G which is also bound to coupling trains but I'm not sure if I just didn't use it correctly or if it actually didn't work.

Re: Keybinding issues

Posted: Fri Mar 01, 2019 11:24 pm
by sqwishy
I map caps lock to control under X11 and that doesn't work anymore in 0.17 so I'm just posting here to say that I feel sad now.

(0.17 looks really amazing otherwise though.)

Re: Keybinding issues

Posted: Sat Mar 02, 2019 4:32 pm
by Lizzy
posila wrote: Thu Feb 28, 2019 12:41 pm if there are some other widely used layouts that would benefit from auto-reset (Dvorak? Colemak?), please let me know.
Dvorak user here. I went straight into the tutorial and Compilatron told me to use WAR to move. I was throughly confused and then I realized all my keybindings were completely jammed up again. Then I noticed a conveniently placed reset button (nice!), and noticed it reset to Dvorak-friendly keybindings (NICE!), and that the tutorial caught on, which means saying "use ,AOE to move" NIIIICEEEE

My reaction:
Image

I would be nicer to have it automatically reset and I imagine it would be the same for most Dvorak users but it's kind of second-nature to me to go straight into keybindings immediately when the controls don't make sense, so it didn't feel like a considerable speed bump.

Re: Keybinding issues

Posted: Sun Mar 03, 2019 2:57 am
by riddochc
So, because of using scancodes, remapping keys in your OS doesn't have any effect on the game. This is intended.
Please, please reconsider this, even if only on Linux.

All of the listed "issues to solve" at the bottom of the post by @posila would be fixed by letting the user's OS-level key mapping do the work for you. It will be *far* easier to support the game if you assume that the user of any non-qwerty layout is accustomed to going into a game's settings for keybindings and adjusting them to whatever they find most convenient with their personal layout.

I wish this were a minor issue for me, but I can't actually play 0.17 yet because it physically hurts to do a lot of one-handed chords with the control key so far away from everything else. I have my control key switched with my caps lock key for this reason.

I'd really, really like to be able to play 0.17!

Please and thank you.

Re: Keybinding issues

Posted: Wed Mar 06, 2019 8:15 am
by beatryder
I'm not sure if this is related or not, so please move/delete if it is.

I am on MacOS 10.13 and I am unable to use blueprint books because my mouse scrolls are ignored.

I tried to remap them. but it only detected mouse wheel down, and not up (in any direction).

Further, only the right hand side CMD key is being respected (so removing items from the shortcut bar is a bit annoying)

Re: Keybinding issues

Posted: Wed Mar 06, 2019 8:38 am
by Pi-C
riddochc wrote: Sun Mar 03, 2019 2:57 am
So, because of using scancodes, remapping keys in your OS doesn't have any effect on the game. This is intended.
Please, please reconsider this, even if only on Linux.

All of the listed "issues to solve" at the bottom of the post by @posila would be fixed by letting the user's OS-level key mapping do the work for you. It will be *far* easier to support the game if you assume that the user of any non-qwerty layout is accustomed to going into a game's settings for keybindings and adjusting them to whatever they find most convenient with their personal layout.
Well, I'm on Linux, too, and I had a really hard time before that change. With 0.16.51(yes, I'm relatively new to Factorio, so that is the first version I've played), I couldn't get CTRL to work -- and you really need this for everything (copying/pasting blueprint code from browser to game, inventory operations etc.). Remapping helped, sometimes, but there really was no system to it and changes to keymapping would persist only until I logged out of the system, or even until I restarted Factorio. Mind you, the system itself still worked and recognized CTRL regardless of what physical key it was mapped to -- it was just Factorio that went bonkers. After 0.17 was released, I've reset the keymapping for CTRL; now I just start the game and everything works. So I am very happy that the new Factorio uses scancodes instead of keycodes and would be devastated if this would be reverted. :-)

Re: Keybinding issues

Posted: Thu Mar 07, 2019 3:17 am
by beatryder
Can I revert back to the old way of keybindings?

I am unable to use any shortcut that uses my scroll wheel and it's made blueprints and copy/paste unusable.

I understand the need to be cross compatible, but this change maybe should be reverted until it is fixed.

Re: Keybinding issues

Posted: Thu Mar 07, 2019 9:35 pm
by Rseding91
beatryder wrote: Thu Mar 07, 2019 3:17 am Can I revert back to the old way of keybindings?

I am unable to use any shortcut that uses my scroll wheel and it's made blueprints and copy/paste unusable.

I understand the need to be cross compatible, but this change maybe should be reverted until it is fixed.
Nope. There is nothing to fix - as the first post here talks about.

Re: Keybinding issues

Posted: Thu Mar 07, 2019 9:50 pm
by posila
beatryder wrote: Thu Mar 07, 2019 3:17 amI am unable to use any shortcut that uses my scroll wheel and it's made blueprints and copy/paste unusable.
What's your use case of scroll wheel that doesn't work in 0.17 and used to work in 0.16? Changes described in the first post are exclusive to keyboard presses (and maybe HW that emulates keyboard presses in some way)

Re: Keybinding issues

Posted: Sat Mar 09, 2019 5:10 am
by sqwishy
Rseding91 wrote: Thu Mar 07, 2019 9:35 pm Nope. There is nothing to fix - as the first post here talks about.
Are you saying that the way keybindings work in Factorio in 0.17 is considered complete? The first post mentions several issues:
My point is - in-game controls are (and should be) based on positions of keys on keyboard, if they don't feel right to you, change them in control settings.

Problem is - the game won't let you use any key as a modifier key, so we need to solve that somehow. Most likely fix will be detecting modifier keys based on keycode instead of scancode.

Issues to solve:

Handle remapped modifier keys.
Respect OS keyboard layout when typing text.
macOS doesn't seem to register Cmd key for some players.
Determine if Esc should be also treated specially.
At the moment, Factorio doesn't support rebinding the keys so that they behave as they did in 0.16. My reading of what I quoted above is that this will be fixed as a compromise (in lieu of respecting how the user has configured their system and behaving predictably, like every other application). If not, maybe don't statically link with SDL so users can hack the key events with LD_PRELOAD or something?

Have I misunderstood your post that "there is nothing to fix" or the original post?

Re: Keybinding issues

Posted: Sat Mar 09, 2019 12:05 pm
by brab
legendre6891 wrote: Thu Feb 28, 2019 7:22 pm Really glad this is being looked at. Please consider allowing (under X11, using xkb) Caps Lock to function as Ctrl. This greatly reduces RSI for me, and is important to my painless enjoyment of the game :-)
Same here. I cannot use the in-game settings to change this, as caps-lock + left mouse button is only interpreted as left-mouse button.

Re: Keybinding issues

Posted: Sat Mar 09, 2019 2:28 pm
by kivsiak
Same problem here. I have altered ctrl-win-alt block. And i cannot use WIN key cause it not recognized by factorio. And i cannot CTL key cause it remapped to WIN and start system launcher.