Cataclysm DDA, Vim & WASD - Implications For Generalist Translations Of Qwerty Layouts To The Steam Deck
link to video demonstration on Peertube instance
Steam Deck controller config available by renaming Cataclysm DDA in your steam library (added as a non-steam game) to Cataclysm: Dark Days Ahead and then searching under community layouts for “Cataclysm DDA full keyboard mapping”.
edit: I recommend increasing the transparency of the popup steam menus by a large amount in practice, I kept them fairly opaque to make the video demonstration easier to follow
Here is my setup!
Vim Ring - my preference -> left joystick (no reason these can’t be shuffled around tho)
The Vim hjkl keys (along with the diagonals y u n b because this is CDDA and we need those diagonals) provide us with a clear idea we can ground the Steam Deck mapping in, and unlike a Vimmer with a qwerty keyboard, we can unfold the keys into the navigational ring (up down left right) Vimmer’s imagine in their head to understand Vim qwerty controls.
Not only does this provide an easy way to remember our first choice in dividing the qwerty keyboard into Steam Deck mappings, it also means that the control scheme has plug and play compatibility with a dizzying array of software and games that all are part of Vim’s ~40 year tradition and evolution of keyboard controls. Once you memorize the Vim Ring on your Steam Deck you will be able to use it for the rest of your life on joysticks and touchpads, and you can rest assured that other people will be developing vim hjkl based controls for software and games for the rest of your life.
WASD Ring - my preference -> left trackpad
WASD is probably one of the most well known “conceptual projections” onto the qwerty keyboard right?
It might seem a bittt confusing at first that z and x are the diagonals, but if you remember that this navigational ring is based on WASD, than s has to be down, and thus it becomes intuitive that z and x would be the downward diagonals. The letters q and e are almost without fail where left-lean, right-lean controls are for tactical shooters (for leaning out of cover to shoot) but even to someone unfamiliar with these control schemes, q and e are pretty intuitive.
Center Column
Notice here, that between the Vim and WASD rings is 2x3 column of unbound letters on the keyboard, those being c v, f g, and r t. The natural place for these letters which are frequently used by games and software is the four Steam Deck back buttons L5, R5, L4, R4 and the bumpers R1 and L1. True, vim prioritizes the horizontal home row, but given the accessibility of the other homerow keys in the VIM and WASD rings I don’t think this is a serious flaw especially because it is easy to visualize how this column maps to your Steam Deck.
Number Ring - my preference -> right trackpad
Now for our last navigational ring. This ring was inspired by reading about players admitting to making the extremely chaotic-neutral choice of using the number row rather than the numberpad for navigation lol. We could just recreate the numberpad in a menu, but we already have two rings, and if anything nudging the numberpad into a ring shape makes activation from a touchpad or a joystick much more intuitive, it also expresses directly the meaning of the numberpad in terms of navigation while allowing quick access to each number for rapid input. Importantly, the number row keys not the numberpad keys are used here so that in conjunction with shift this ring can be used to activate the alt number row commands !@#$%^&*().
Caboose Board - my preference -> right joystick
The Caboose Board is where the rest of the letters and punctuation keys go. I call this a “board” not a “ring” because more keys can be fit onto steam’s menu system by making two rows then making a ring, which provides a natural place for extensibility for additional critical keys needed only for a specific game or program that won’t mess up carefully arranged rings.
Controller Face Buttons, and Left & Right Triggers.
At this point all the letters from the qwerty keyboard are mapped onto the onboard Steam Deck controls. We just need to tidy up and map a few remaining keys outside of the main 3 rows of the keyboard and make some quality of life mappings for important controls in Cataclysm DDA.
Up until this step, other than starting from the assumption that mouse control is unneeded for this mapping, I haven’t made any keyboard mappings that are only memorable or salient in the context of Cataclysm DDA. Only after this point am I actually assigning keys to the facebuttons of the Steam Deck based on the specific requirements of Cataclysm DDA. Think about how much easier this makes it to create and memorize the muscle memory of mappings for the next complicated game you want to tackle creating Steam Deck bindings for, if it is a roguelike or other game/software that can be played without a mouse than at least 85% of these mappings don’t need to be changed. If mouse control is needed, it is easy to imagine slotting the number ring into a toggleable alternate menu that shares the same control binding. Or the caboose.
These final mappings are intended to be intuitive to someone who has used a gamepad a lot (especially xbox controller). Escape is mapped to the menu face button, tab to the view face button, backspace maps to the x facebutton, spacebar to the b facebutton, enter to the right trigger and shift to the left trigger allowing the shift key to easily be held like it is intended to be on a qwerty keyboard.
Some final quality of life tweaks for CDDA, a single press of the y facebutton activates the / key to bring up the advanced inventory management screen (absolutely amazingly powerful utility in CDDA) and a double press of the y facebutton activates they ? key to bring up list of commands with plain english search. A single press of the a facebutton is mapped to " which brings up the movement toggle (run, walk, crouch, prone). A double press brings up the mutations menu with [ (a somewhat tenous mapping to remember I concede, this is a draft tho). For now I have the thumbstick buttons mapped to + and -.
A Final Note On Menus
It is important to adjust the in menu sensitivity especially for navigational rings like the Vim Ring, WASD Ring and Number Ring. Typically for a ring assigned to a joystick one might want to set menu button activation to continous (with these repeat turbo settings) and tweak sensitivity so it is easy to reach the menu buttons on the far edges of the menu without it being uncomfortable or resulting in accidental activations of other keys.
This is ABSOLUTELY what I’ve wanted from the steam deck from the first minutes I got my first deck. Being able to work in the desktop mode without having to use the onscreen keyboard has been a fundamental limiting factor for me.
So I do have to push back against this statement:
The only intuitive way to map the qwerty keyboard to the steam deck is through the context of a specific game’s controls and what they usually map to on a keyboard.
Case in point, I want to use the steam deck as a productivity device. I need a ‘generalized’ mapping of keys.
I’m interested in knowing what you think of the oldschool T9 keyboard mapping. I’ve been thinking for a long time that something similar to this would work for the deck.
This is ABSOLUTELY what I’ve wanted from the steam deck from the first minutes I got my first deck. Being able to work in the desktop mode without having to use the onscreen keyboard has been a fundamental limiting factor for me.
Same!
Case in point, I want to use the steam deck as a productivity device. I need a ‘generalized’ mapping of keys.
The point I was trying to make in a somewhat obtuse and convoluted fashion is that this is a generalist mapping of keys, especially if you don’t need a mouse. You can drop this same control scheme into qutebrowser… a normal text editor, emacs in evil mode, vim and any number of programs that either have factory inbuilt vim controls or have had vim style controls added by the community.
Obviously entering text is faster with a physical keyboard or even a touchscreen keyboard, but for general, low intensity text input this mapping is extremely easy to remember and you can pick it up quick especially if you have experience with vim and wasd controls.
You have to make some choices if you want to have mouse input on a joystick or trackpad. For example, I made a previous post about a relatively simple Qutebrowser Vim keybindings for the deck and there are some differences. The primary one is that because diagonals are unimportant for web browsing, the homerow can be entirely mapped to physical buttons on the Steam Deck which means the Qutebrowser’s hint system (which I mapped to the y face button) is incredibly fast to use on the deck (it only uses homerow keys for targets).
https://sopuli.xyz/post/11754262
Idk, I understand entirely if people look at these control schemes and go “wtf?” but these two control profile drafts are in my humble opinion the best solution I have seen so far in terms of finding a generalist mapping of the qwerty keyboard to the Steam Deck. I hope to see someone make an even better one inspired by these!
I guess my argument would be: If you are trying to adapt a keyboard to a gamepad without taking advantage of a touch screen (arguably even then), you are “doing it wrong”. That is why Caves of Qud is, somehow, one of the best Steam Deck experiences out there.
Do you realize how it feels when I put this much work I put into explaining my particular keyboard mapping and creating a graphic and you jump into the post with the first response “kinda seems like it is missing the point” when it doesn’t really feel like you even read my post?
If that is how you feel, please refrain from commenting on my post, I don’t especially care about this kind of perspective on something I obviously invested a lot of energy into. Just ignore it, or downvote it and move on!
Mate. If all you want is an echo chamber then don’t post on a message board. That is a blog post with the comments turned off.
And I did read your blog post. I didn’t watch your podcast so, deep apologies if that offended you somehow. And I still think you are doing what a lot of developers did during the 00s when “console ports” and “optional gamepads” were the big thing in PC dev space. You are trying to adapt an existing control scheme with radically different inputs rather than acknowledging what controls you actually need.
That is WHY Caves of Qud is such an amazing steam deck experience. That is WHY stuff like Stardew Valley on the Steam Controller are still looked at so fondly. And that is why so many other games never “feel right”. Because devs are trying to map a gamepad to a keyboard (hello Dark Souls) or an analog stick to a mouse cursor (fuck you Bungie and Ubi) or a keyboard to a gamepad.
Hell, we still see it with a lot of the CRPG, Strategy Games, and RTSes that devs try to make work for a gamepad. Very few get it “right” because it is a really hard challenge. And why Dragon’s Age increasingly became basically a Divinity 2/Oblivion style game rather than a “real” CRPG like DA:O was.
Mate. If all you want is an echo chamber then don’t post on a message board. That is a blog post with the comments turned off.
There is a happy middle ground between the two where you can just block people that are interacting in a way that siphons energy away from an interesting and stimulating conversation :)
hits block button
I whole kindheartedly disagree. I don’t know that “this” is it, but a touch screen is a POOR supplement for a keyboard.
Maybe you are a bit younger, maybe you don’t didn’t have them, but T9 was one of the best typing experiences out there; I still consider it an improvement to onscreen keyboards on modern smartphones.
I think that this effort is precisely what I’ve been looking for as a daily steam deck driver; I want this specifically for the KDE environment. In combination with the trackpads, I think a key-bound button/ switch based keyboard is all I need for the steam deck to be a 100% drop in replacement for a laptop.
I want that cyber punk lifestyle of being able to program on my deck and do a whole lot more with it. For that to work, I can’t be switching over to some goofy touch screen key board.
T9 I think is an example of how to map a large input space (keyboard) to a small device (gamepad). But it mostly thrived in a way to convey meaning to a numeric string (1-800-COLLECT, for example). But the people who actually used it for SMS/beepers were few and far between and we were so reliant on auto-complete/predictive language during the flipphone era. This is why it was the era of “oh, so and so texted me. Let me call them back”
largely for the same reason that even a lot of “keeb” enthusiasts increasingly acknowledge that going below a 60/65% for a programmer or a 40% for a writer is… of very questionable utility. Some people have the brain pathways to learn completely different keyboard layouts and can keep 4 or 5 layers worth of keys in their heads and write straight up fortran with a 13 key keyboard, Just like how some people can learn a new spoken/written language in a few weeks. Most people can’t and they basically just “ruin” normal keyboards for themselves.
As for hacking the gibson: Actually the vast majority of media depictions involve basically a keyboard/touch screen strapped to a wrist (that IS what a deck is). So if you really want your daily driver to be something with serious security issues due to how the lock screen is implemented… that is how you get your Count Zero on.
But that really is the issue here. You and I are discussing how you would map an actual keyboard to the steam deck. That isn’t what is being discussed here (careful, you too will get blocked (OH NOES!!!) because you didn’t give proper respect to a blog post). This is mapping an RPG/roguelite from old school curses input to a gamepad/touch screen combo. Which, as I said, is a fundamentally “wrong” idea. In large part because the vikeys/vimkeys solution of a lot of classic roguelikes/lites was a way to provide gamepad like controls with just a keyboard.
As an aside: My brain is blanking on it (it might actually have been the Steam Controller), but I remember an on screen keyboard that actually used analog sticks and felt like a weird hybrid of t9 and the god awful ps3/4 on screen keyboards. Something like you hit a button to bring up the keyboard and then move your analog stick toward a cluster (forget if they were nested or not) and buttons to pick the options. Was very much in that “This is cool as hell but my brain is not gonna learn it” category.
As for the touch screen: I also really dislike it (hence hedging my comment above). But I do wish more games, particularly the complex ones, would take advantage of it. Let me tap the inventory bag to open up my inventory rather than switching to interface mode and sticking over to it or having a dedicated button that could be a different skill. Stardew Valley’s Steam Controller layout (I forget if it was official or community) was awesome in a similar way because you would get context touchpad menus to quickly navigate the interface. But the problem is that it becomes a device specific layout and gets almost no usage.
But the people who actually used it for SMS/ beepers were few and far between.
I mean, maybe this is true, but not my experience whatsoever. Most people (my circles) once they got the hang of it were typing SMS at 20-30 wpm using T9. My only argument is that alternative keyboards can be effective. I look at the deck (got mine right here) and I see plenty of opportunity (degrees of freedom) to support something along the lines of a T9 keyboard. Like if someone can come up with it, something that’s actually intuitive like T9 was, I really think it would gain generalized acceptance.
This is mapping an RPG/roguelite from old school curses input to a gamepad/touch screen combo. Which, as I said, is a fundamentally “wrong” idea.
I still completely agree with this sentiment, but I don’t think I agree with analog sticks or clusters and wheels. I’m on the same page as the “cool but I am sure as hell not going to learn that” category for any solution like this.
Lets say we just either the back l/r paddles and l/r top switches, along with 4 buttons left and 4 buttons right. Like, I’m playing with the positions with my fingers now. Maybe press paddle or switch, press either a left or right one of 4 options and complete it by pressing one of the opposing left or right one 4 options.
So (4^3)/2 (lets make it direction so that the target key is always found in a ‘caret’ formation (starts left, goes right, ends left; or starts right, goes left, ends right). That means for each of the 8 keys (4 left, 4 right), there would be 8 potential positions, which gives us a final 128 potential keybindings. We could probably sacrifice some fractional degrees of freedom here to make it more intuitive (like maybe its only 6 potential positions for a given initial key/ paddle combo).
Like I think its super doable.
Honestly? I think you are getting hung up on approaching this from the T9 perspective.
Take a look at the mechanical keyboard community. Most people are sane and looking at TKL or even 60% layouts where most buttons people actually use on a keyboard are represented by dedicated keys. But there are some real sickos who go for fully minimalist layouts where they have closer to 20 or even 10 keys. And those are the leyouts where you heavily rely on different layers so that “A” might actually be “Button 1 with modifier X and Y” whereas B is “button 1 with modifier X”. Basically people took the logic of dvorak and went to an insane degree. It is terrifying and it is beautiful.
And that has the same issues that mapping to a gamepad would. Some people are going to be able to internalize that in a timely fashion. Others are going to spend months using typing tools online to train themselves. And the rest of us are going to say “nope” and move on.
In terms of how to have a better steam deck keyboard? I think there is a lot of room for someone to go full keeb-pill and take advantage of the physical buttons. I would 100% watch that youtube video, maybe throw a tip in a tip jar, and then have a new appreciation for the touchscreen keyboard the next time I have to enter my Warframe password. But I still think that if your game is heavily reliant on having a keyboard… it isn’t a Steam Deck game. And that is fine. I am not going to play DCS on my Steam Deck. One of these days I probably will futz around with streaming X4 though.
Honestly? I think you are getting hung up on approaching this from the T9 perspective.
Yeah well I think you are hung up on the mechanical keyboard community.
The T9 approach worked excellently, was extremely intuitive, and once learned, it is easily as effective as an on screen keyboard.
There just aren’t enough buttons on a deck to have dedicated key mapping and as well would never be intuitive.
This can be overcome by incorporating the philosophy of the T9 keyboard, taking it down to maybe 8-12 total keys you interact with.
Two hands, two flippers (index fingers), 4 keys either side (two thumbs), and you’ve got all the degrees of freedom you need.