diff --git a/Allure.cabal b/Allure.cabal
--- a/Allure.cabal
+++ b/Allure.cabal
@@ -6,7 +6,7 @@
 -- PVP summary:+-+------- breaking API changes
 --             | | +----- minor or non-breaking API additions
 --             | | | +--- code changes with no API change
-version:       0.9.4.1
+version:       0.9.5.0
 synopsis:      Near-future Sci-Fi roguelike and tactical squad combat game
 description:   Allure of the Stars is a near-future Sci-Fi roguelike
                and tactical squad combat game. Binaries and the game manual
@@ -48,12 +48,14 @@
                GameDefinition/fonts/Fix15Mono-Bold.woff,
                GameDefinition/fonts/LICENSE.Fix15Mono-Bold,
                GameDefinition/InGameHelp.txt,
+               GameDefinition/PLAYING.md,
                README.md,
                CHANGELOG.md,
                LICENSE,
                COPYLEFT,
                CREDITS
-extra-source-files: GameDefinition/MainMenu.ascii,
+extra-source-files: GameDefinition/config.ui.default,
+                    GameDefinition/MainMenu.ascii,
                     GameDefinition/MoveKeys.txt,
                     GameDefinition/PLAYING.md,
                     Makefile
@@ -132,7 +134,7 @@
                       Implementation.MonadServerImplementation
   other-modules:      Paths_Allure
   autogen-modules:    Paths_Allure
-  build-depends:      ,LambdaHack >= 0.9.4.1 && < 0.9.5.0
+  build-depends:      ,LambdaHack >= 0.9.5.0 && < 0.9.6.0
                       ,async
                       ,base >= 4.10 && < 99
                       ,enummapset
diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+## [v0.9.5.0](https://github.com/LambdaHack/LambdaHack/compare/v0.9.4.0...v0.9.5.0)
+
+- Fix NumLock disabled in the browser
+- In screen reader frontend, highlight active menu line with the cursor
+- Fix commited debug value of rwriteSaveClips
+- Clone the main main menu commands as map mode commands
+- Add C-RMB and C-S-LMB as alternatives of MMB
+- Announce prominently MMB binding for describing map positions
+- Break the misleading alignment of movement key help paragraphs and pictures
+- Clean up the default config file, keeping compatibility
+- Make scenario names longer and slighlty more informative
+- Make Vi movement keys the default in addition to keypad and mouse
+- Fix a bug where death prompt when autoplaying was capturing a keypress
+- Let ESC from main menu return to insert coin mode, if applicable
+- Make various small UI tweaks, especially to main menu and its submenu
+- Let main menu lines have 35, not 30, characters
+- Make the main menu ASCII art less intrusive (and easier for screen readers)
+- Don't invalidate the score file due to game minor (only) version bump
+
 ## [v0.9.4.0](https://github.com/AllureOfTheStars/Allure/compare/v0.9.3.0...v0.9.4.0)
 
 - Tweak razor organs
diff --git a/CREDITS b/CREDITS
--- a/CREDITS
+++ b/CREDITS
@@ -6,6 +6,7 @@
 Krzysztof Pławski
 Daniel Keefe
 Pablo Reszczynski
+Simon Michael
 
 
 Fonts 16x16xw.woff, 16x16xw.bdf, 16x16x.fnt, 8x8x.fnt and 8x8xb.fnt
diff --git a/GameDefinition/Content/ModeKind.hs b/GameDefinition/Content/ModeKind.hs
--- a/GameDefinition/Content/ModeKind.hs
+++ b/GameDefinition/Content/ModeKind.hs
@@ -40,8 +40,8 @@
 
 raid = ModeKind  -- mini-crawl
   { msymbol = 'r'
-  , mname   = "raid (1)"
-  , mfreq   = [("raid", 1), ("campaign scenario", 1)]
+  , mname   = "solo raid (1)"
+  , mfreq   = [("solo", 1), ("raid", 1), ("campaign scenario", 1)]
   , mroster = rosterRaid
   , mcaves  = cavesRaid
   , mendMsg = [ (Killed, "That was unfortunate. The bill for the rescue team and for the subsequent nano medbot treatment will reach the stars. Perhaps more stealth was needed? Perhaps the items lying around the area could aid survival instead of ending up ignored or passively hoarded? Or perhaps a wise course of action would be to choose a Neptune Area Administration challenge with a lower difficulty?")
@@ -52,8 +52,8 @@
 
 brawl = ModeKind  -- sparse melee in daylight, with shade for melee ambush
   { msymbol = 'k'
-  , mname   = "brawl (2)"
-  , mfreq   = [("brawl", 1), ("campaign scenario", 1)]
+  , mname   = "melee brawl (2)"
+  , mfreq   = [("melee", 1), ("brawl", 1), ("campaign scenario", 1)]
   , mroster = rosterBrawl
   , mcaves  = cavesBrawl
   , mendMsg = [ (Killed, "That treacherous villain didn't honour his word and brought his friends to the fight. It would still not turn so bad if we remembered to use terrain to protect us from missiles or even completely hide our presence and if we honourably kept together to the end, at the same time preventing the overwhelming enemy forces from brutishly ganging up on our modest-sized, though valiant, squad. Having to repurchase genetic therapy was the most painful outcome, one that would send you broke and in shame to Earth, if repeated, to start collecting your Basic Income.")
@@ -71,8 +71,8 @@
 -- and that's their only role, so a small party makes sense.
 shootout = ModeKind  -- sparse ranged in daylight
   { msymbol = 's'
-  , mname   = "shootout (3)"
-  , mfreq   = [("shootout", 1), ("campaign scenario", 1)]
+  , mname   = "foggy shootout (3)"
+  , mfreq   = [("foggy", 1), ("shootout", 1), ("campaign scenario", 1)]
   , mroster = rosterShootout
   , mcaves  = cavesShootout
   , mendMsg = [ (Killed, "This is a disgrace. How is a thuggish robbery in broad daylight even possible in a moon city that styles itself as the capital of Outer System technological innovation and commercial opportunity? Where are the municipal surveillance drones, normally so eager to eavesdrop and needlessly complicate an honest tax-free business, when one's health and wealth for once depend on their nosy presence? Speaking of drones, we could use one in this skirmish, or even just a human lookout placed in a covered but unobstructed spot. Then the rest of the squad could snipe from concealment or from a safe distance.\nBarring that, we would end up in a better shape even if we all hid and fired blindly. We'd listen to impact sounds and wait with ten-fold vigilance for incoming enemy missiles, in order to register their trajectories and derive hints of enemy location. Apparently, ranged combat requires a change of pace and better planning than our previous illustrious successes accustomed us to.")
@@ -82,8 +82,8 @@
 
 hunt = ModeKind  -- melee vs ranged with reaction fire in daylight
   { msymbol = 'h'
-  , mname   = "hunt (4)"
-  , mfreq   = [("hunt", 1), ("campaign scenario", 1)]
+  , mname   = "perilous hunt (4)"
+  , mfreq   = [("perilous", 1), ("hunt", 1), ("campaign scenario", 1)]
   , mroster = rosterHunt
   , mcaves  = cavesHunt
   , mendMsg = [ (Killed, "Next time let's try to remember we are not on a sightseeing expedition. Also, leaving concealment is risky, leaving cover is foolhardy and wandering off is deadly. Also, what was that taking pictures by the mangrove tree all about? Were you trying to immortalize your handsome faces in case our shared pool of money was not enough to revive your sorry carcasses after the defeat? Good call, because after paying the techno-medical bills we are broke and the military grade communication and reaction fire implants of the gang foot soldiers that chase us don't raise our prospects either. And we were so close to complete victory and unfathomable wealth, if only we strove to lower the difficulty of this mission instead of raising it.")
@@ -95,8 +95,8 @@
 
 escape = ModeKind  -- asymmetric ranged and stealth race at night
   { msymbol = 'e'
-  , mname   = "escape (5)"
-  , mfreq   = [("escape", 1), ("campaign scenario", 1)]
+  , mname   = "night escape (5)"
+  , mfreq   = [("night", 1), ("escape", 1), ("campaign scenario", 1)]
   , mroster = rosterEscape
   , mcaves  = cavesEscape
   , mendMsg = [ (Killed, "Somebody must have tipped the gang guards off. However, us walking along a lit trail, yelling, could have been a contributing factor. Also, it's worth noting that the torches prepared for this assault are best used as thrown makeshift flares. On the other hand, equipping a lit torch makes one visible in the dark, regrettably but not quite unexpectedly. Lastly, the goal of this foray was to find the exit back to the city, marked by a yellow '>' sign, and to gather some treasure along the way, but not to bedevil every local evildoer, as much as they do deserve it.")
@@ -107,8 +107,8 @@
 
 zoo = ModeKind  -- asymmetric crowd melee at night
   { msymbol = 'b'
-  , mname   = "zoo (6)"
-  , mfreq   = [("zoo", 1), ("campaign scenario", 1)]
+  , mname   = "burning zoo (6)"
+  , mfreq   = [("burning", 1), ("zoo", 1), ("campaign scenario", 1)]
   , mroster = rosterZoo
   , mcaves  = cavesZoo
   , mendMsg = [ (Killed, "Against such an onslaught, only clever positioning, use of terrain and patient vigilance gives any chance of survival.")
@@ -126,8 +126,8 @@
 -- shoots (and often also scouts) and others just gather ammo.
 ambush = ModeKind  -- dense ranged with reaction fire vs melee at night
   { msymbol = 'm'
-  , mname   = "ambush (7)"
-  , mfreq   = [("ambush", 1), ("campaign scenario", 1)]
+  , mname   = "ranged ambush (7)"
+  , mfreq   = [("ranged", 1), ("ambush", 1), ("campaign scenario", 1)]
   , mroster = rosterAmbush
   , mcaves  = cavesAmbush
   , mendMsg = [ (Killed, "You turned out to be the prey, this time, not the hunter. In fact, you are not even in the hunters' league. And it's hard to operate a space dock while being chased round a spaceport. When fighting against such odds, passively waiting for enemy to spring a trap is to no avail, because a professional team can sneak in darkness and ambush the ambushers. Granted, good positioning is crucial, so that each squad member can overwatch the battlefield and fire opportunistically, using the recently recovered mil-grade communication equipment. However, there is no hope without active scouting, throwing lit objects and probing suspect areas with missiles while paying attention to sounds. And that may still not be enough.")
@@ -137,8 +137,8 @@
 
 crawl = ModeKind
   { msymbol = 'c'
-  , mname   = "crawl (long)"
-  , mfreq   = [("crawl", 1), ("campaign scenario", 1)]
+  , mname   = "upward crawl (long)"
+  , mfreq   = [("upward", 1), ("crawl", 1), ("campaign scenario", 1)]
   , mroster = rosterCrawl
   , mcaves  = cavesCrawl
   , mendMsg = [ (Killed, "It was not supposed to end this way. Perhaps more stealth was in order? Perhaps the gathered items should be used for survival instead of hoarded? Or perhaps the challenge, chosen freely but without awareness of the grisly difficulty, was insurmountable and lost from the very start? Nobody is going to find out, even if humans ever set their feet here again and prevail, another time, another way.")
@@ -270,7 +270,7 @@
 
 screensaverRaid = raid
   { mname   = "auto-raid (1)"
-  , mfreq   = [("starting", 1), ("no confirms", 1)]
+  , mfreq   = [("insert coin", 1), ("no confirms", 1)]
   , mroster = screensave (AutoLeader False False) rosterRaid
   }
 
@@ -282,19 +282,19 @@
 
 screensaverShootout = shootout
   { mname   = "auto-shootout (3)"
-  , mfreq   = [("starting", 1), ("no confirms", 1)]
+  , mfreq   = [("insert coin", 1), ("no confirms", 1)]
   , mroster = screensave (AutoLeader False False) rosterShootout
   }
 
 screensaverHunt = hunt
   { mname   = "auto-hunt (4)"
-  , mfreq   = [("starting", 1), ("no confirms", 1)]
+  , mfreq   = [("insert coin", 1), ("no confirms", 1)]
   , mroster = screensave (AutoLeader False False) rosterHunt
   }
 
 screensaverEscape = escape
   { mname   = "auto-escape (5)"
-  , mfreq   = [("starting", 1), ("no confirms", 1)]
+  , mfreq   = [("insert coin", 1), ("no confirms", 1)]
   , mroster = screensave (AutoLeader False False) rosterEscape
   }
 
@@ -318,7 +318,7 @@
 
 screensaverSafari = safari
   { mname   = "auto-safari"
-  , mfreq   = [("starting", 1), ("no confirms", 1)]
+  , mfreq   = [("insert coin", 1), ("no confirms", 1)]
   , mroster = -- changing leader by client needed, because of TFollow
               screensave (AutoLeader False True) rosterSafari
   }
diff --git a/GameDefinition/Content/RuleKind.hs b/GameDefinition/Content/RuleKind.hs
--- a/GameDefinition/Content/RuleKind.hs
+++ b/GameDefinition/Content/RuleKind.hs
@@ -38,7 +38,7 @@
       qAddDependentFile path
       x <- qRunIO (readFile path)
       lift x)
-  , rwriteSaveClips = 1000000
+  , rwriteSaveClips = 1000
   , rleadLevelClips = 50
   , rscoresFile = "Allure.scores"
   , rnearby = 20
diff --git a/GameDefinition/InGameHelp.txt b/GameDefinition/InGameHelp.txt
--- a/GameDefinition/InGameHelp.txt
+++ b/GameDefinition/InGameHelp.txt
@@ -6,24 +6,25 @@
 Minimal cheat sheet for casual play.
 
  7 8 9        Walk throughout a level with the mouse or the numeric keypad
-  \|/         (top diagram) or with its compact laptop replacement (middle)
- 4-5-6        or the Vi editor keys (bottom) selectable in config.ui.ini.
-  /|\         Run until disturbed with Shift or Control. Go-to a position
- 1 2 3        with LMB (left mouse button). Run collectively with S-LMB
+  \|/         (top diagram) or the Vi editor keys (bottom) or with a compact
+ 4-5-6        laptop setup (middle) that needs to be enabled in config.ui.ini.
+  /|\
+ 1 2 3        Run until disturbed with Shift or Control. Go-to a position
+              with LMB (left mouse button). Run collectively with S-LMB
               (press the button while holding Shift).
-
- 7 8 9        In aiming mode, the same keys (and mouse) move the x-hair
-  \|/         (aiming crosshair). Press `KP_5` (`5` on keypad) to wait,
- u-i-o        bracing for impact, which reduces any damage taken
-  /|\         and prevents displacement by foes. Press `C-KP_5` or `C-KP_5`
- j k l        (the same key with Shift or Control) to lurk 0.1 of a turn,
+ 7 8 9
+  \|/         In aiming mode, the same keys (and mouse) move the x-hair
+ u-i-o        (aiming crosshair). Press `KP_5` (`5` on keypad) to wait,
+  /|\         bracing for impact, which reduces any damage taken
+ j k l        and prevents displacement by foes. Press `C-KP_5` or `C-KP_5`
+              (the same key with Shift or Control) to lurk 0.1 of a turn,
               without bracing.
-
- y k u        You displace enemies by running into them with Shift/Control
-  \|/         or S-LMB. Search, open, descend and attack by bumping into
- h-.-l        walls, doors, stairs and enemies. The best item to attack with
-  /|\         is automatically chosen from among melee weapons in your
- b j n        personal equipment and your body parts.
+ y k u
+  \|/         You displace enemies by running into them with Shift/Control
+ h-.-l        or S-LMB. Search, open, descend and attack by bumping into
+  /|\         walls, doors, stairs and enemies. The best item to attack with
+ b j n        is automatically chosen from among melee weapons in your
+              personal equipment and your body parts.
 
  The following commands, joined with the basic set above,
  let you accomplish anything in the game, though
@@ -127,7 +128,8 @@
  The list includes not only left and right buttons, but also
  the optional middle mouse button (MMB) and the mouse wheel,
  which is also used over menus, to page-scroll them.
- (For mice without RMB, one can use Control key with LMB.)
+ (For mice without RMB, one can use Control key with LMB and for mice
+ without MMB, one can use C-RMB or C-S-LMB.)
  Next we show mouse button effects per screen area,
  in exploration mode and (if different) in aiming mode.
 
@@ -135,8 +137,8 @@
  LMB          go to pointer for 25 steps/fling at enemy
  S-LMB        run to pointer collectively for 25 steps/fling at enemy
  RMB or C-LMB start aiming at enemy under pointer
- C-RMB        open or close or alter at pointer
- MMB          snap x-hair to floor under pointer
+ S-RMB        open or close or alter at pointer
+ MMB or C-RMB snap x-hair to floor under pointer
  WHEEL-UP     swerve the aiming line
  WHEEL-DN     unswerve the aiming line
 
@@ -164,9 +166,15 @@
 
  keys         command
  SPACE        clear messages and show history
- F12          open dashboard
+ %            yell/yawn
+ C-s          start new game
+ C-x          save and exit to desktop
+ C-t          toggle autoplay (insert coin)
+ C-q          quit game and start autoplay
+ C-c          exit to desktop without saving
  ?            display help
  F1           display help immediately
+ F12          open dashboard
  v            voice again the recorded commands
  V            voice recorded commands 100 times
  C-v          voice recorded commands 1000 times
@@ -174,4 +182,3 @@
  '            start recording commands
  C-S          save game backup
  C-P          print screen
- %            yell/yawn
diff --git a/GameDefinition/MainMenu.ascii b/GameDefinition/MainMenu.ascii
--- a/GameDefinition/MainMenu.ascii
+++ b/GameDefinition/MainMenu.ascii
@@ -1,45 +1,45 @@
-+·///o//o+:.+o/+o/:/y·oo//++· ·://.oo+oso--/o·/so++oo/-:.o///o :+:/o-+so//sooyys
-----.:-..-:-.- :-o+:·:.:o/· ::----··::--:-- --:-·.·.-----:.-: ----:.//+so/+oohyy
-sooso+--:+++oo ::oo: ::+s+. :+/yys+.y+oo/y: sy/o-/:/ssy+sy+:/ s:oos.//+ys++syhhy
-..--..·.-:-.···-·.-. .· ..··.-·.../..-.-··  -··· ···.········ -···..-.-:///++oo+
-/+:.                                 --+·         ·              ··..-.-:/++++//
-.-..                                 ...·         ··              ··.-..-://////
-·+.·                                            ······· ·         ··..-..--:::::
- /·      Allure of the Stars              ········.···········     ··..-....----
-·:+.                                   ···········..·············  ··.-.........
-  /·   <allureofthestars.com>        ·············..··················.··......·
-  /·                                 ········....--:---.....····················
-  o:  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ·····..--::://+////:::--..··.-····         
- .·.  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ .·..--:////////::://////:-.-/+-·····       
-··+   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ·.-:////:---.-:....---:///::::.······      
-  .:  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ .-://:--......-........--://:-..······     
-  +   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ://:-.........:..........-:///:..······    
-· ..  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ //:-....-.----:------......-://:-.·····    
- · /  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ .-......---:::/:::::----....-://:..······· 
-+-.:  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ -....----:////++////::---....-://-....···  
-      {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ .....--::/+++oooooo+//::--....-:+/:..····  
-....  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ....--://+oosyhhyysoo+/::--..--://:.······ 
-···   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ...---:/+osyhdmdddhyso+/:::--..-:+:-.····· 
-···   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ..--://+oshdmmNNNNmdhso+/:---...-//-.····· 
--··.  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ..--:/+osydmNNNNNNNmdyo+/::-....-//:.····· 
-y· .                                 ..--:/+osydNNNNNNNNmdyo+/::-....-//:.····· 
-:---...  .:-::.::/----../.···..-/+/-----:://+sydmmNNNNNNmdyo+//:--...-//:.····· 
- :ss. /:        ·o  /y·  ····++.://-...--::/osyhdmmNNNNmdhso+/:--....-//-.····· 
--+oo. :-·.....--:+-:+s--· ···++.-//-...-::/+ooyhhhdmmddhyso+//::-....:+/-.····· 
-+· /++++++:  .- ·:  ++· +o-/://.-:+:----://+osyyyyyhhyysso++/:----..-//:.······ 
-s--+ssyyss+--/+-:o--yy· yd:+/oo·.-/+::::::/+oossssssoooo++//::-....-:+/-.······ 
-·.:.·.:···-:.·········  ..::..:-.-:++/:::///+++oooo+++////::---....-//:-.·····  
-.sho:/o/·:sy+......       y/··+o·.-/++//////++++++//:::::----...---//:-.······  
-.:-::::..----...---.. .   ::·.::·.-:+o++/+++//////::------......-://:-.······   
-··/yyy:·······-+yyyyh s·   o/++···.-//+o++++//::::---.........--://:-.······    
--++/:::-.--.--://:::: :    /:/:···..-//+oo++//:::--.........--://:-..······     
- dds./s: :: -/·ss           +/·····.--://+oo+///:--.....---:////:-.·······      
--dho.:o:.//-:/:++.......---·+/  ····..-:://++o++//:::::://///:--..·······       
-+-+.  -- ..   ·++  +    /.· ··   ····...--:::////////////::--..·········        
-s-o.  //.//...-ss··s.   o..        ·····........---------...··········          
-··::·.:.···········/·-- · ·          ···············.···············            
-··sy-+h/···········y yy·  ······       ···························              
-··.-.--.·....·.--..: ..   ···.·.·         ·····················                 
-·  oyy:   :+  .yyyyy           :/              ···········                      
-.-.:::-.-.-:...////  ·         .-                                               
-/-.+-..../o/.....-.     Version X.X.X (frontend: xxx, engine: LambdaHack X.X.X) 
+                                                                                
+                                                                                
+                                                                                
+                                                                                
+                                                  ·                             
+                                                  ··                            
+        Allure of the Stars                      ······· ·                      
+                                           ········.···········                 
+      <allureofthestars.com>            ···········..·············              
+                                      ·············..···················        
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ········....--:---.....···········         
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ·····..--::://+////:::--..··.-····         
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ··..--:////////::://////:-.-/+-·····       
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ·.-:////:---.-:....---:///::::.······      
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  .-://:--......-........--://:-..······     
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ://:-.........:..........-:///:..······    
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  //:-....-.----:------......-://:-.·····    
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  .-......---:::/:::::----....-://:..······· 
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  -....----:////++////::---....-://-....···  
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  .....--::/+++oooooo+//::--....-:+/:..····  
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ....--://+oosyhhyysoo+/::--..--://:.······ 
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ...---:/+osyhdmdddhyso+/:::--..-:+:-.····· 
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ..--://+oshdmmNNNNmdhso+/:---...-//-.····· 
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ..--:/+osydmNNNNNNNmdyo+/::-....-//:.····· 
+{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  ..--:/+osydNNNNNNNNmdyo+/::-....-//:.····· 
+                        ·······-/+/-----:://+sydmmNNNNNNmdyo+//:--...-//:.····· 
+                        ·······.://-...--::/osyhdmmNNNNmdhso+/:--....-//-.····· 
+                         ······.-//-...-::/+ooyhhhdmmddhyso+//::-....:+/-.····· 
+                        ·······.-:+:----://+osyyyyyhhyysso++/:----..-//:.······ 
+                         ·······.-/+::::::/+oossssssoooo++//::-....-:+/-.······ 
+                          ·····-.-:++/:::///+++oooo+++////::---....-//:-.·····  
+                            ·····.-/++//////++++++//:::::----...---//:-.······  
+                              ···.-:+o++/+++//////::------......-://:-.······   
+                               ···.-//+o++++//::::---.........--://:-.······    
+                               ····+-//+oo++//:::--.........--://:-..······     
+                               ···-.--+//+oo+///:--.....---:////:-.·······      
+                              · ·/··/+-/-//++o++//:::::://///:--..·······       
+                            ··/···+·..+.--:::////////////::--..·········        
+                           ·+·····.··/··....···...---:---...··········          
+                              ·.··/·+·.·············.···············            
+                         ··     ····  ···························               
+                      ···.·      /··      ·····················                 
+                   ··.···      ·.·             ···········                      
+                                                                                
+                        Version X.X.X (frontend: xxx, engine: LambdaHack X.X.X) 
diff --git a/GameDefinition/MoveKeys.txt b/GameDefinition/MoveKeys.txt
--- a/GameDefinition/MoveKeys.txt
+++ b/GameDefinition/MoveKeys.txt
@@ -1,19 +1,20 @@
 7 8 9        Walk throughout a level with the mouse or the numeric keypad
- \|/         (top diagram) or with its compact laptop replacement (middle)
-4-5-6        or the Vi editor keys (bottom) selectable in config.ui.ini.
- /|\         Run until disturbed with Shift or Control. Go-to a position
-1 2 3        with LMB (left mouse button). Run collectively with S-LMB
+ \|/         (top diagram) or the Vi editor keys (bottom) or with a compact
+4-5-6        laptop setup (middle) that needs to be enabled in config.ui.ini.
+ /|\
+1 2 3        Run until disturbed with Shift or Control. Go-to a position
+             with LMB (left mouse button). Run collectively with S-LMB
              (press the button while holding Shift).
-
-7 8 9        In aiming mode, the same keys (and mouse) move the x-hair
- \|/         (aiming crosshair). Press `KP_5` (`5` on keypad) to wait,
-u-i-o        bracing for impact, which reduces any damage taken
- /|\         and prevents displacement by foes. Press `C-KP_5` or `C-KP_5`
-j k l        (the same key with Shift or Control) to lurk 0.1 of a turn,
+7 8 9
+ \|/         In aiming mode, the same keys (and mouse) move the x-hair
+u-i-o        (aiming crosshair). Press `KP_5` (`5` on keypad) to wait,
+ /|\         bracing for impact, which reduces any damage taken
+j k l        and prevents displacement by foes. Press `C-KP_5` or `C-KP_5`
+             (the same key with Shift or Control) to lurk 0.1 of a turn,
              without bracing.
-
-y k u        You displace enemies by running into them with Shift/Control
- \|/         or S-LMB. Search, open, descend and attack by bumping into
-h-.-l        walls, doors, stairs and enemies. The best item to attack with
- /|\         is automatically chosen from among melee weapons in your
-b j n        personal equipment and your body parts.
+y k u
+ \|/         You displace enemies by running into them with Shift/Control
+h-.-l        or S-LMB. Search, open, descend and attack by bumping into
+ /|\         walls, doors, stairs and enemies. The best item to attack with
+b j n        is automatically chosen from among melee weapons in your
+             personal equipment and your body parts.
diff --git a/GameDefinition/PLAYING.md b/GameDefinition/PLAYING.md
--- a/GameDefinition/PLAYING.md
+++ b/GameDefinition/PLAYING.md
@@ -71,7 +71,8 @@
 In case of doubt, one of the aiming commands (keypad `/`, with default
 keybinding) cycles through all visible and remembered items on the level
 and another (keypad `*`, with default keybinding) through all foes.
-The basic terrain kinds are as follows.
+Also, pointing at a map position with `MMB` (middle mouse button) displays
+a short description of its contents. The basic terrain kinds are as follows.
 
     terrain type                           on-screen symbol
     wall                                   #
@@ -185,9 +186,9 @@
 A text snapshot of the complete in-game help is in
 [InGameHelp.txt](InGameHelp.txt).
 
-Walk throughout a level with mouse or numeric keypad (left diagram below),
-or with its compact laptop replacement (middle) or the Vi editor keys (right)
-selectable in config.ui.ini. Run until disturbed with Shift or Control.
+Walk throughout a level with mouse or numeric keypad (left diagram below)
+or the Vi editor keys (right) or with a compact laptop setup (middle) that
+requires enabling in config.ui.ini. Run until disturbed with Shift or Control.
 Go-to with LMB (left mouse button). Run collectively via S-LMB (holding Shift).
 
                7 8 9          7 8 9          y k u
@@ -231,14 +232,15 @@
 The list includes not only left and right buttons, but also
 the optional middle mouse button (MMB) and the mouse wheel,
 which is also used over menus, to page-scroll them.
-(For mice without RMB, one can use Control key with LMB.)
+(For mice without RMB, one can use Control key with LMB and for mice
+without MMB, one can use C-RMB or C-S-LMB.)
 
     keys         command
     LMB          go to pointer for 25 steps/fling at enemy
     S-LMB        run to pointer collectively for 25 steps/fling at enemy
     RMB or C-LMB start aiming at enemy under pointer
-    C-RMB        open or close or alter at pointer
-    MMB          snap x-hair to floor under pointer
+    S-RMB        open or close or alter at pointer
+    MMB or C-RMB snap x-hair to floor under pointer
     WHEEL-UP     swerve the aiming line
     WHEEL-DN     unswerve the aiming line
 
@@ -257,7 +259,7 @@
 to more than one enemy, setting his target makes him melee a particular foe.
 
 You can enter the aiming mode with the `*` keypad key that selects
-enemies or the `/` keypad key that cycles among items on the floor
+enemies or the `/` key that cycles among items on the floor
 and marks a tile underneath an item. You can move x-hair
 with direction keys and assign a personal target to the leader
 with a `RET` key (Return, Enter). The details of the shared x-hair mark
diff --git a/GameDefinition/config.ui.default b/GameDefinition/config.ui.default
--- a/GameDefinition/config.ui.default
+++ b/GameDefinition/config.ui.default
@@ -32,26 +32,27 @@
 HeroName_6 = ("Christopher Flatt", "he")
 
 [ui]
-movementViKeys_hjklyubn = False
+; These two are mutually exclusive:
+movementViKeys_hjklyubn = True
 movementLaptopKeys_uk8o79jl = False
-; Monospace fonts that have fixed size regardless of boldness (on some OSes at least)
-gtkFontFamily = "DejaVu Sans Mono,Consolas,Courier New,Liberation Mono,Courier,FreeMono,Monospace"
+; The font to use for scaling SDL2 display (best by multiples or 0.5):
 ;sdlFontFile = "16x16xw.woff"
 scalableFontSize = 16
 sdlScalableSizeAdd = 0
 sdlFontFile = "16x16xw.bdf"
 sdlBitmapSizeAdd = 0
-;sdlFonSizeAdd is now ignored
 ;sdlFontFile = "8x8xb.fnt"
-;sdlBitmapSizeAdd = 2
 ;sdlFontFile = "8x8x.fnt"
 ;sdlBitmapSizeAdd = 2
 ; New historyMax takes effect after removal of savefiles.
 historyMax = 5000
 maxFps = 24
 noAnim = False
-; runStopMsgs is now ignored
 hpWarningPercent = 20
 ; Uncomment to make all messages white.
 ; messageColors = []
 overrideCmdline = ""
+; Legacy: monospace fonts that have fixed size regardless of boldness (on some OSes at least)
+gtkFontFamily = "DejaVu Sans Mono,Consolas,Courier New,Liberation Mono,Courier,FreeMono,Monospace"
+; sdlFonSizeAdd is now ignored
+; runStopMsgs is now ignored
diff --git a/GameDefinition/game-src/Client/UI/Content/Input.hs b/GameDefinition/game-src/Client/UI/Content/Input.hs
--- a/GameDefinition/game-src/Client/UI/Content/Input.hs
+++ b/GameDefinition/game-src/Client/UI/Content/Input.hs
@@ -39,12 +39,12 @@
   -- Main menu
   [ ("e", ([CmdMainMenu], "enter challenges menu>", ChallengesMenu))
   , ("s", ([CmdMainMenu], "start new game", GameRestart))
-  , ("x", ([CmdMainMenu], "exit to desktop", GameExit))
+  , ("x", ([CmdMainMenu], "save and exit to desktop", GameExit))
   , ("v", ([CmdMainMenu], "visit settings menu>", SettingsMenu))
-  , ("a", ([CmdMainMenu], "automate faction", Automate))
+  , ("t", ([CmdMainMenu], "toggle autoplay (insert coin)", AutomateToggle))
   , ("?", ([CmdMainMenu], "see command help", Help))
-  , ("F12", ([CmdMainMenu], "go to dashboard", Dashboard))
-  , ("Escape", ([CmdMainMenu], "back to playing", Cancel))
+  , ("F12", ([CmdMainMenu], "switch to dashboard", Dashboard))
+  , ("Escape", ([CmdMainMenu], "back to playing", AutomateBack))
 
   -- Minimal command set, in the desired presentation order.
   -- A lot of these are not necessary, but may be familiar to new players.
@@ -54,9 +54,10 @@
   , ("g", addCmdCategory CmdMinimal $ grabItems "grab item(s)")
   , ("Escape", ( [CmdMinimal, CmdAim]
                , "open main menu/finish aiming"
-               , ByAimMode AimModeCmd { exploration = ExecuteIfClear MainMenu
+               , ByAimMode AimModeCmd { exploration =
+                                          ExecuteIfClear MainMenuAutoOff
                                       , aiming = Cancel } ))
-  , ("C-Escape", ([CmdNoHelp], "", MainMenu))
+  , ("C-Escape", ([CmdNoHelp], "", MainMenuAutoOn))
       -- required by frontends; not shown
   , ("Return", ( [CmdMinimal, CmdAim]
                , "open dashboard/accept target"
@@ -191,17 +192,21 @@
                    , "clear chosen item and x-hair"
                    , ComposeUnlessError ClearTargetIfItemClear ItemClear))
 
-  -- Assorted
-  , ("F12", ([CmdMeta], "open dashboard", Dashboard))
+  -- Assorted (first few cloned from main menu)
+  , ("C-s", ([CmdMeta], "start new game", GameRestart))
+  , ("C-x", ([CmdMeta], "save and exit to desktop", GameExit))
+  , ("C-t", ([CmdMeta], "toggle autoplay (insert coin)", Automate))
+  , ("C-q", ([CmdMeta], "quit game and start autoplay", GameQuit))
+  , ("C-c", ([CmdMeta], "exit to desktop without saving", GameDrop))
   , ("?", ([CmdMeta], "display help", Hint))
   , ("F1", ([CmdMeta, CmdDashboard], "display help immediately", Help))
+  , ("F12", ([CmdMeta], "open dashboard", Dashboard))
   , ("v", ([CmdMeta], "voice again the recorded commands", Repeat 1))
   , ("V", repeatTriple 100)
   , ("C-v", repeatTriple 1000)
   , ("C-V", repeatTriple 25)
   , ("'", ([CmdMeta], "start recording commands", Record))
   , ("C-S", ([CmdMeta], "save game backup", GameSave))
-  , ("C-c", ([CmdMeta], "exit without saving", GameDrop))
   , ("C-P", ([CmdMeta], "print screen", PrintScreen))
 
   -- Dashboard, in addition to commands marked above
@@ -216,9 +221,12 @@
                "run to pointer collectively for 25 steps/fling at enemy" )
   , ("RightButtonRelease", mouseRMB)
   , ("C-LeftButtonRelease", replaceDesc "" mouseRMB)  -- Mac convention
-  , ( "C-RightButtonRelease"
+  , ( "S-RightButtonRelease"
     , ([CmdMouse], "open or close or alter at pointer", AlterWithPointer []) )
   , ("MiddleButtonRelease", mouseMMB)
+  , ("C-RightButtonRelease", replaceDesc "" mouseMMB)
+  , ( "C-S-LeftButtonRelease",
+      addCmdCategory CmdNoHelp $ replaceDesc "" mouseMMB )
   , ("WheelNorth", ([CmdMouse], "swerve the aiming line", Macro ["+"]))
   , ("WheelSouth", ([CmdMouse], "unswerve the aiming line", Macro ["-"]))
 
@@ -253,7 +261,7 @@
               , aimFlingCmd ))
   , ("safe7", ( [CmdInternal, CmdDashboard]
               , "open main menu"
-              , MainMenu ))
+              , MainMenuAutoOff ))
   , ("safe8", ( [CmdInternal]
               , "cancel aiming"
               , Cancel ))
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -36,10 +36,10 @@
 	google-chrome --no-sandbox --js-flags="--logfile=%t.log --prof" ../allureofthestars.github.io/play/index.html
 
 minific:
-	npx google-closure-compiler dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.4.0/x/Allure/build/Allure/Allure.jsexe/all.js --compilation_level=ADVANCED_OPTIMIZATIONS --isolation_mode=IIFE --assume_function_wrapper --externs=dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.4.0/x/Allure/build/Allure/Allure.jsexe/all.js.externs --jscomp_off="*" > ../allureofthestars.github.io/play/allure.all.js
+	npx google-closure-compiler dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.5.0/x/Allure/build/Allure/Allure.jsexe/all.js --compilation_level=ADVANCED_OPTIMIZATIONS --isolation_mode=IIFE --assume_function_wrapper --externs=dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.5.0/x/Allure/build/Allure/Allure.jsexe/all.js.externs --jscomp_off="*" > ../allureofthestars.github.io/play/allure.all.js
 
 minificForNode:
-	npx google-closure-compiler dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.4.0/x/Allure/build/Allure/Allure.jsexe/all.js --compilation_level=ADVANCED_OPTIMIZATIONS --isolation_mode=IIFE --assume_function_wrapper --externs=dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/LambdaHack-0.9.4.0/x/LambdaHack/build/LambdaHack/LambdaHack.jsexe/all.js.externs --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/assert.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/child_process.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/crypto.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/dns.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/events.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/globals.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/https.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/os.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/punycode.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/readline.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/stream.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/tls.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/url.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/vm.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/buffer.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/cluster.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/dgram.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/domain.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/fs.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/http.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/net.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/path.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/querystring.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/repl.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/string_decoder.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/tty.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/util.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/zlib.js --jscomp_off="*" > ../allureofthestars.github.io/play/allure.all.js
+	npx google-closure-compiler dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/Allure-0.9.5.0/x/Allure/build/Allure/Allure.jsexe/all.js --compilation_level=ADVANCED_OPTIMIZATIONS --isolation_mode=IIFE --assume_function_wrapper --externs=dist-newstyle/build/x86_64-linux/ghcjs-8.6.0.1/LambdaHack-0.9.5.0/x/LambdaHack/build/LambdaHack/LambdaHack.jsexe/all.js.externs --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/assert.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/child_process.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/crypto.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/dns.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/events.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/globals.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/https.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/os.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/punycode.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/readline.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/stream.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/tls.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/url.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/vm.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/buffer.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/cluster.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/dgram.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/domain.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/fs.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/http.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/net.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/path.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/querystring.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/repl.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/string_decoder.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/tty.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/util.js --externs=/home/mikolaj/r/closure-compiler/contrib/nodejs/zlib.js --jscomp_off="*" > ../allureofthestars.github.io/play/allure.all.js
 
 # Low delay to display animations swiftly and not bore the public too much.
 # Delay can't be lower than 2, because browsers sometimes treat delay 1
@@ -258,8 +258,8 @@
 	cp GameDefinition/fonts/LICENSE.16x16x AllureOfTheStars/GameDefinition/fonts
 	cp GameDefinition/fonts/Fix15Mono-Bold.woff AllureOfTheStars/GameDefinition/fonts
 	cp GameDefinition/fonts/LICENSE.Fix15Mono-Bold AllureOfTheStars/GameDefinition/fonts
-	cp GameDefinition/PLAYING.md AllureOfTheStars/GameDefinition
 	cp GameDefinition/InGameHelp.txt AllureOfTheStars/GameDefinition
+	cp GameDefinition/PLAYING.md AllureOfTheStars/GameDefinition
 	cp README.md AllureOfTheStars
 	cp CHANGELOG.md AllureOfTheStars
 	cp LICENSE AllureOfTheStars
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -45,16 +45,14 @@
 (and, for Windows, dev versions continuously from AppVeyor[18]).
 To use a pre-compiled binary archive, unpack it and run the executable
 in the unpacked directory or use program shortcuts from the installer,
-if available.
+if available. On Linux, make sure you have the SDL2 libraries installed
+on your system (e.g., libsdl2-2.0-0 and libsdl2-ttf-2.0-0 on Ubuntu).
+For Windows (XP no longer supported), the SDL2 and all other needed libraries
+are already contained in the game's binary archive.
 
-On Linux, make sure you have the SDL2 libraries installed on your system
-(e.g., libsdl2-2.0-0 and libsdl2-ttf-2.0-0 on Ubuntu).
-On Mac OS X, you need SDL2 installed, e.g.,
-from [libsdlorg](https://www.libsdl.org/download-2.0.php).
-For Windows, the SDL2 and all other needed libraries are already
-contained in the game's binary archive.
-Note that Windows binaries no longer work on Windows XP, since Cygwin
-and MSYS2 dropped support for XP.
+Max OS X binaries for the few most popular OS versions are accessible
+from Homebrew via `brew install allureofthestars`,
+which also takes care of all dependencies.
 
 
 Screen and keyboard configuration
@@ -81,9 +79,9 @@
 With `scalableFontSize = 16` it should look almost the same
 as the pixel-perfect `16x16xw.bdf`.
 
-If you don't have a numeric keypad, you can use mouse for movement
-or you can enable the compact laptop keys (uk8o79jl) or the Vi keys
-(aka roguelike keys) in the config file. If numeric keypad doesn't work,
+If you don't have a numeric keypad, you can use the Vi editor keys
+(aka roguelike keys) or mouse for movement or you can enable the compact
+laptop keys (uk8o79jl) in the config file. If numeric keypad doesn't work,
 toggling the Num Lock key sometimes helps. If running with the Shift key
 and keypad keys doesn't work, try Control key instead.
 The game is fully playable with mouse only, as well as with keyboard only,
