I don't understand why the OP is about programmable keyboards though. I hear some games surpass OS-side keymap and read raw low-level data (from the keyboard).It depends. For example Direct input takes raw data, but the programmer could also program his own keyboard listener, which would/can take OS keyboard. A lot of games actually take OS keyboard, which is stupid, because taking raw input would solve so many problems.
A lot of games actually take OS keyboard, which is stupid, because taking raw input would solve so many problems.It's not stupid, it's the correct way to do it. Raw input is a nasty workaround and generally giving up on internationalization, because it means the developers are reimplementing the keymap—poorly, as a rule of thumb, thus discriminate everyone but stock US QWERTY users. Problems arise, whenever
I don't understand why the OP is about programmable keyboards though.
A lot of games actually take OS keyboard, which is stupid, because taking raw input would solve so many problems.It's not stupid, it's the correct way to do it. Raw input is a nasty workaround and generally giving up on internationalization, because it means the developers are reimplementing the keymap—poorly, as a rule of thumb, thus discriminate everyone but stock US QWERTY users. Problems arise, whenever
- key positions/labels are communicated (in-game key names don't correspond to keycap legends, or the user has a physical layout different from the one presented in-game),
- typing (chat/notes/…) is used within the game (either OS has to regain control for such inputs, or the game has to provide some workaround, but it usually doesn't do so).
That's completely wrong.Giving up internationalization? Quite the opposite actually.A lot of games actually take OS keyboard, which is stupid, because taking raw input would solve so many problems.It's not stupid, it's the correct way to do it. Raw input is a nasty workaround and generally giving up on internationalization, because it means the developers are reimplementing the keymap—poorly, as a rule of thumb, thus discriminate everyone but stock US QWERTY users. Problems arise, whenever
- key positions/labels are communicated (in-game key names don't correspond to keycap legends, or the user has a physical layout different from the one presented in-game),
- typing (chat/notes/…) is used within the game (either OS has to regain control for such inputs, or the game has to provide some workaround, but it usually doesn't do so).
All standard keyboards send the same scan codes in the same physical location of the key.Depends what you mean by "standard". Regardless, keyboards with Windows, Mac and Unix layouts have certain keys (codes) swapped around, not to mention programmable keyboards as mentioned by OP.
Doesn't matter what language. If you make a game where you move with WASD and use the raw input, a German can use the same keys in the same location without the need to remap. Similarly I could play the game without remapping, as I use Colemak.That's precisely the utter failure: the game has to communicate its bindings to the user. It can display labels (such as WASD) or positions on a keyboard scheme (highlighted keys on a picture of a keyboard). Neither works universally.
Take Fallout 4 as an example, where all actions are not re-mapable, forcing me to switch my Colemak layout to QWERTY.Thanks for providing an example of developers' (a) incompetency or (b) poor development model (typically for business reasons).
If a game needs more specific input, like typing, they can easily implement two different ways to pick up key presses. That's hardly an argument against my point.See above.
Because in my mind, if I just change to Dvorak or Colemak using the Windows/Linux/OSX settings, I can always switch back to Qwerty by changing those settings to play games.Of course.
But if I set up my keyboard with Dvorak, Colemak, or some customs settings, then I can just go a click some settings inside my operating system settings to go back to Qwerty for games.No?
Care to elaborate? I'm not necessarily addressing the OPs issue. The OP asks an irrelevant question. Basically he asks how to manage gaming with a non-standard keyboard. If you use a non-standard keyboard you are on your own, and always need to remap keys withing the game if you use other than QWERTY (or use secondary layer as suggested). In your case you also need to remap keys if you use non-QWERTY keyboard. In my example it doesn't matter if you use QWERTY, AZERTY, dvorak, colemak... Truly universal, but yet you insist it's un-international? By standard I mean the agreed-upon scan codes that keyboards send to the computer. There's a reason we call them ISO (International Organization for Standardization) keyboards. That's because they are all the same. Yes. You buy a keyboard form all countries that use ISO keyboard, take off the key caps, scramble the keyboards, put back key caps and they all work as expected. The real magic happens in the OS keybord layout. All keyboards send the same scan codes, irrelevant what country, if they didn't it would be a real mess. Your computer pics up that scan code, or raw input, and interprets it using the currently installed OS keyboard layout. Did you know that ANSI right alt and ISO altgr have the same scan code? They only behave differently because of the OS keyboard layout, which is external from the keyboard itself. You can try this for yourself if you use ANSI keybaord: install the UK-ISO keyboard layout and use an AltGr combination using your right alt, whazam, it works! If you use a completely different OS with their own standard of scan codes, of which I'm not aware of, because keyboards are completely external from OS - unless Apple has come up with some proprietary POS - you simply take those into account as well. If it's standardized, it can be programmed.Giving up internationalization? Quite the opposite actually.That's completely wrong.
That's precisely the utter failure: the game has to communicate its bindings to the user. It can display labels (such as WASD) or positions on a keyboard scheme (highlighted keys on a picture of a keyboard). Neither works universally.Did you even read my post? I explained how to get around that. The game asks the OS for the current layout and prints the corresponding characters to the player, in DirectX there even is a function for that. I'd assume other interface systems have as well. It's quite easy actually. The problem is most game devs don't bother with it because it's a rare case or are even aware they could do that. If you use a programmable keyboard it's not inherently bad either. Say you buy the infinity ergodox, and want to try out dvorak. What do you do? If you only use the keyboard in your home, you don't change the keys in the online editor (except for function and layer keys). Then you download keyboard layout creator or similar and make dvorak using that. To recap: you leave your keyboards on-board scan codes close to international standards, but then make your own OS keyboard layout, because the game doesn't have to give two ****s about what your actual layout is. Scan codes are used precicely to get the physical key you pressed, for international purposes, and that's what I'm telling games should use, OS keyboard layouts are used to interpret what character you wanted to type, this is irrelevant for generic actions within games, such as moving, so it should't care about these. Of course, as I have repeatedly said, the game can ask for the OS keyboard layout and print the characters that are (or are not depending on the case) visible on the players physical keyboard. Sounds complicated, but that's the standardized way. If you use the online editor to get dvorak, it may work with other computer more easily, but then you are using non-standard scan codes, which means you are on your own, because there is no way to ask for they keyboards layout. Irrelevant case in other words. Also if you took that keyboard then to a German friends house and plugged it in, some of the keys wouldn't work as expected, because your custom layout is still dependant on OS keyboard layout interpretation.
labels: Consider so-called WASD. That's ZQSD on AZERTY. If the game assumes US QWERTY by default and tells the user to press WASD, and the user doesn't know US QWERTY and orients themselves by the labels on their localized keyboard, they'll be pressing the wrong keys (QWERTY ZQSD).
picture: That's obvious. Even "Mac"/"Windows" keyboards have swapped Alt and Cmd/Win positions, not to mention compact or programmable keyboards and various gaming keypads (e.g., Razer Nostromo/Orbweaver).
Furthermore, what if the user wants to use accents (or even non-latin alphabet) in their in-game nickname, notes, chat…?
Thanks for providing an example of developers' (a) incompetency or (b) poor development model (typically for business reasons).My point Your head. Maybe try to read my comment again. In case it was unclear, my point was that using my method would easily solve the problem. Even if all actions were mappable in Fallout 4, that would still mean that (a) I have to always switch to QWERTY for the game (b) remap all keys within the game on my first time playing. This is what you are suggesting and you call it international? I'm saying, it's the complete opposite.
Read again?If a game needs more specific input, like typing, they can easily implement two different ways to pick up key presses. That's hardly an argument against my point.See above.
The OP asks an irrelevant question. Basically he asks how to manage gaming with a non-standard keyboard. If you use a non-standard keyboard you are on your own, and always need to remap keys withing the game if you use other than QWERTY (or use secondary layer as suggested).Irrelevant to you but it's relevant to me, that's why I was asking.
I really want to know this too cause I use dvorak and Its kinda hard for me to chat to team in game cause I always forgot to switch back to dvorak when in chat
wall of textYou've completely avoided addressing user-interface-design concerns.
I think I haven't? In fact I repeated it multiple times how to avoid your user-interface-design concerns. If someone uses a non-standard keyboard, a programmer cannot help you, even if they used the method described by yourself. If I don't get your point for what ever reason, maybe link me to some place that would explain it in greater detail?wall of textYou've completely avoided addressing user-interface-design concerns.
ad remapping: A game *must* provide remapping functionality, because (1) the bindings are application-specific, and (2) there are users with special needs (even as simple as WASD/ESDF/arrows/tenkey preference or left-handed mousing).I was never against remapping. I'm against discrimination of non QWERTY keyboard layouts.
ad keyboard handlingTo cite yourself: "Thanks for providing an example of developers' (a) incompetency or (b) poor development model (typically for business reasons)."
- Yes, the app/game may make use of both raw input and OS-side keymap. It may help avoid problems with, e.g., dead keys (any of their variants). OTOH it introduces additional complexity, that's usually poorly handled. For instance, I've helped backtrack a French [AZERTY] user their problem with DOTA2, in which case the game detected the OS-side keymap only on the first run, but then left the user in confusion after they changed their setup, while the game still communicated old binded "labels". Similarly, I've had countless issues with in-game text areas, where developers forgot to allow usage of OS-side keymap (thus accents or AltGraph chords). In other words, you're making the assumption, that software is correct, although it nearly always is not.
Unfortunately I only have experience with the Windows side of things. If Linux uses their own standards, then there must be sufficient documentation to take that into account as well, if the game is run on Linux.
- No, the OS-side keymap doesn't only map symbols to scancodes. XKB is a prime example of this. The user may swap around modifier positions on this level, create an extension layer (similar to whatever modern 60% keyboard provide in firmware) or perhaps use accessibility features. Of course, that may or may not cause problems with controls in game, but again, that's a matter of consistency, expected behavior system-wide and enabling various accessibility enhancements.
What's the downside of using an OS-side keymap again? That the game isn't a special snowflake anymore, and has to adhere to the same rules as the rest of the system? The same implications exist in window management and what not.Did you even read any of my posts? I know they are a huge wall of text, but if you did you wouldn't have to ask that. Change you OS keymap to something other than QWERTY, open a game and see what I mean. Imagine if anyone could just open up a game and play without the need of remapping everything to accommodate to your own layout. That's the problem.
If there's anything, that discriminates users of non-QWERTY layouts, in this regard, it's Microsoft's very own policy for tying states, languages and keyboard layouts together (thus DSK is included in MS Windows only because it's an US standard, but Colemak isn't; meanwhile, some ethnic minorities have had trouble getting their localization, incl. input methods, into stock MS Windows).
Change you OS keymap to something other than QWERTY, open a game and see what I mean.That's what nearly everyone outside the US does.
Colemak, if I understood correctly is copyright protected, and cannot be addedColemak is public domain (in the US, where public domain exists).
Apparently watching paint dry is more productive than responding to you.Change you OS keymap to something other than QWERTY, open a game and see what I mean.That's what nearly everyone outside the US does.
Anyway, your problem seems to be that the developers create a default control scheme based on relative physical positions of keys, but it looks different on different keyboard layouts.Um... No? That was your problem earlier. Wow. Using relative physical positions is exactly what I'd want. You were the one complaining about how the keyboard labels do not supposedly match the character told in-game if this method was used. A thing that I said was avoidable. Scan codes for physical keys is same as per standard, keyboard layout is what's different for people, and this difference happens in the software side of things.
Well, that always happens. The famous ZXCV is actually YXCV on QWERTZ and WXCV on AZERTY, thus users of localized systems have to overreach for Z in case of Ctrl-Z. Even worse, if you switch between QWERTY and, say, AZERTY, different environments behave differently (some keep shortcuts in their former positions, others change them according to the current active layout).Again off my point.
Problems like this will exist as long as keyboards are "dumb" and send scancodes instead of actual symbols (control sequences, whatever).
Keyboards are not dumb, they are just built that way because it's the simplest way. What do you expect? That all keyboards must have an on board dedicated processor? : DTerminal keyboards used to be exactly like that several decades back.
Hi knowsnokb, my comment wasn't directed at your question, because I found it was answered by others. By 'irrelevant', I meant irrelevant from my point, which was "how a game can handle different keyboard layouts", a solution that will work for everyone.Oh, my mistake. But thank you. I appreciate the insight in your posts, the posts of others, and the discussion. I'm learning something I didn't know before. :)
As I have stated.......
To try to help since people don't seem to understand what LuX is saying:So in theory if you switch your native language in game, a raw input game should show you the characters of your language in a tutorial. And for non-standard layouts the tutorial will show the corresponding language's raw input characters?Show Image(http://i.imgur.com/8p3JMYw.png)
A keyboard doesn't actually have any letters on it in terms of raw input. Pretend this section of the keyboard sends the codes 1-9. A typical WASD movement scheme would be 2456.
By using raw input, 2456 would be WASD on a US English layout and ZQSD on an AZERTY keyboard.
So you program the game to listen to raw input and it will work for all keyboards because all keyboards use the same standard for what codes certain positions on the keyboard send. You can also provide rebinding so that the raw input for "forward" changes from 2 (W on QWERTY and Z on AZERTY) to anything else you want, like 1 for example.
When you need to display it on screen, you ask the OS what the corresponding translation of the raw input is, which would display the raw input as the correct human output for your keyboard.
I use a version of AdNW and always rebind in-game. It means I can chat without switching layouts and doesn't affect anything else in my system. It's just where it should be, from a logical and system persepctive.Good to know :) Once upon a game. I played, and it was infested with bots. It's good to know that raw input is not affecting native tongues... wait.. wth is AdNW?
http://lmgtfy.com/?q=adnwYea, I have a family. The LMGTFY sticker is in my bookmarks :rolleyes:. Bing, Google, Yahoo, hotbot, they all failed me.
How do people who have programmable keyboards who have programmed their keyboard with an alternative layout, whether Coleman, Dvorak, Workman, custom layout deal with playing games?
Please describe your layout and how it affects your game playing or how you've adjusted for games.