Shared publicly  - 
 
The Menu key: How something so simple, can go so wrong

The following post is mainly relevant for m7 users, but it does shed some insight into our decision making process when such issues come up

The menu key, as many Android users know, plays an important role in the OS. Its the ‘more’ button, the ‘settings’ button and general all-purpose overflow list. Historically, there have been two categories for Android in this respect, those with a physical hardware menu key, and those that use the software navbar introduced with ICS. 

And then along came the HTC One. This device, as its owners are likely well aware, is unique. It is a hardware key device, but it only has a Home and Back button - no menu. Now, apps that use the Android SDK APIs released with ICS and beyond handle this configuration just fine, rendering the 3-dot overflow that we’ve all familiarized ourselves with. But what about the apps using older apis, or those that haven’t been updated to ICS and higher compliance? This is where things get tricky. These, we’ll call them ‘Legacy’, apps don’t know to invoke the 3-dot overflow menu. 

To handle the legacy apps, the HTC One debuted with “hold Back to get menu” and double-tap home to get Recent apps (Android Police did a write-up http://goo.gl/EtPGB3) and ended up shipping stock with what we’ll call a “menu only navbar”. For those not familiar with this, it is essentially an entire software navigation menu dedicated to one button (Android Central has pictures and a write-up http://goo.gl/FrN9B). We’re going to call a spade a spade and just outright state that while this is great for discoverability (that is you can’t miss it) it is hideous and a waste of space. 

Many HTC One users agreed, and in one of their OTA’s HTC introduced a new concept to address these legacy apps - configure the ability of these ‘Double tap’ actions and remove the ugly bar. 

Enter Logo2Menu, this creative hack makes a portion of the HTC logo into a hardware menu key. The perfect solution right? Not quite. Android makes a lot of assumptions to do what it does, but one of the key items is that hardware keys, by their definition, cannot be removeable. It makes sense and is a perfectly sane assumption. The issues then gets compounded when you try and let users decide whether Logo2Menu should be active, how the apps respond to suddenly appearing (or disappearing hardware keys) and then how everything gels with CM’s already built in capability to allow users to do key rebindings. It became a mess of logic and a mess of a solution for CM. 

So, we have removed Logo2Menu from CM. There is also the option to force the 3-dot overflow in CM code. The state of the force 3-dot overflow is dependent on three things. The first is whether you have software buttons a la Nexus 4. In this case the 3-dot overflow is always on, with no option to disable. The second whether the device has a hardware menu button, in which case the 3-dot overflow option is off by default, but available to enable/disable. If the device has no hardware menu button available, then we default to the third case. The third is whether the device can actually issue a menu keypress, whether by default or through hardware key rebinding. If it can issue a menu keypress the force 3-dot overflow is disabled with no option to enable, otherwise the overflow is enabled with no option to disable.

We’re working on adjusting this behavior but it is a tricky bit of logic when factoring in all the current dependencies. And when completed, the force 3-dot overflow will be back and configurable to be always available. 

Fun stuff right? To compensate while that code is in progress, we have introduced the Double-tap Home and its configuration - the same solution HTC and Google settled on for the Google Edition device (the double tap code even exists in AOSP). With the UX binge we are on, we hate this compromise, but it is the best of a lot of bad options. Its not discoverable or intuitive, but it works for something that shouldn’t have been missing in the first place, and it plays nice with all the other CM features. And there you have it. One family of devices, with a seemingly trivial issue provided all that heartburn. On the bright side, once this is completed, this should translate well to all other devices with this odd configuration, including the One mini. 

tl;dr Buttons are not easy..
272
25
Gregory Dean's profile photoSeth Eitel's profile photoJordan Miller's profile photoKamenRider Sutan's profile photo
77 comments
 
never quite understood why one (npi) would take away the menu button from an android device. It's not like there's no space on most devices to have one, and it leaves a lot of app real estate.
 
The real solution is to have a standard layout for all devices. No matter if they are hardware or software buttons. All devices should have the same layout.

If Samsung and HTC want to add those goofy physical buttons or logo buttons, fine, but they should still follow the standard in their actual purpose. 
 
To HTC's credit, they gave developers ample notice of this innovation... it was loaded into the Droid DNA and similar One precursor mules globally. And then well documented in their SDK guidance. In fact, the double-tap innovation came so quickly because many of us DNA owners were suggesting it to HTC six months ago.
 
+Andrew Nenakhov its not his fault. All the functionality of the menu button is still there. Blame the developers who can't be bothered to update their apps.
 
+Sander Van de Moortel I actually get more screen real estate with LMT on my N4. Maybe click the link I posted before jumping to conclusions...
 
+Andrew Nenakhov Why should there be a menu button when you can use the action overflow button?  With the action overflow button in the app, you can immediately see that there are more actions to explore. Also, physical keys take up space you can use for the screen.
 
Android needs two more hardware buttons - bring back call and hangup as physical buttons, as they were on every cellphone before the iPhone. 
 
Interesting post. In my book however, whoever designed the HTC One should get a bitchslap for placing the HTC logo where it currently rests and for removing the extra button that would've made it all much easier. Or better yet, remove all buttons and use virtual keys all the way. I don't think either of these changes would've made the HTC any less popular. Heck I bet it would've made the device even more popular.
Kai Uwe b
+
1
1
2
1
 
I hate Samsung for still featuring a Menu button and now pushing physical keys even to tablets which never had them. I disabled the buttons and use the onscreen keys I came to love from GNex/Nexus4 even on my S4.
 
I got the HTC One despite the messed up hardware keys.  I like it..but, this is my only complaint.  Not surprised that they make it a pain in the butt.
 
Hold-back-for-menu never works the first time.  It is certainly frustrating because it is such a nice phone, but damn, I am jonesing for some menu button.  I am getting a little better at holding home for Google now, but I wish I could swipe up like in vanilla.  I can't wait for a Milestone release of CM for m7spr.  I'm gonna jump on that like crazy.
 
Im in stock Android with my one and had logo2menu installed. Its not a great Option, the button is oder the Logo not behind and about 2mm away from "space" key. I removed that Funktion Form kernel and went back to 3dot menu, the only APP (on my phone) with that ugly menu- softkey at the bottom is amazon. 
 
The reason they took it away is because it is a bad user experience, you never know if there is something under the menu button... Some apps have menus and some just haven't implemented anything... The overflow button lets the user know that there is more actions and if there isn't any, then it won't show a button :) 
 
I hate that people blame HTC for not placing a physical menu button on their phones. Its not necessary. Complain to the devs for not updating their apps. Back, Home, Multitasking (or double tap home)
 
I personally don't care either way, I am happy with the action overflow button and have gotten very used to it, more than likely because I was used to the N4. And for Google Now, I have a swipe up feature configured on Nova, so it kinda works like it should. 
 
Thank you CM. While you provided a solid explanation of the Menu, the three actions I have issues with CM on the One are Recents, Menu, and Google Now. Can you shed some light on how these three actions can be addressed on the One?
 
How about a pie-like solution? Swipe from a configured side to bring the menu? I know it's not for everyone, but could be a good option though.
 
Wow... what a charlie foxtrot. Suddenly I don't feel so bad about my OneXL having a recent apps button but no menu button.
 
Well, Samsung still have their button layout directly opposite to most, if not all, other OEMs. I got adjusted to the system on the HTC One fairly quickly, and the GPe solutions are present in the 4.2.2 update for the Sense 5 version of the phone. Hold down Home for menu, even on legacy apps like Facebook, double tap for recents and then swipe up for Google Now (which is miles faster than holding down the home button and then pressing the search button on TouchWiz). It's messy having one button serve three functions but it works and that's all that matters.
 
Tried double tap on the One S.  Seems to cause the normal home function problems, as maybe 1/3 of the times I'd hit home, nothing happened, as if it was waiting for the second tap. The other 2/3 of the time the function was delayed, also as if it was waiting for the second tap.   Turned it off and home works fast as before...double tap just seems like a pretty bad compromise as a user's "tapping" speed can be so variable and I prefer long press for this reason.
 
I like double-tap home, I kept pulling up google now with logo2menu
 
+Rufus Baker we could just have one button and tap it 6000 times and 7 finger gestures like ios... 
Randy K
+
1
2
1
 
Just disable the hardware buttons and enable the navbar. The way it should have been in the beginning.
 
Dear Google, please stop dumbing down android to the child's toy level of iOS. Let Menu continue to be the best way to access a rich and comprehensive settings menu.

If I wanted less options, I would have chosen apple products.
 
So is double-tap home for menu compromise going away after 3-dot menu is implemented? Can't stand the 3-dot menu, and while double-tap menu might not be intuitive at first user's quickly learn which legacy apps use it. 
 
The button setup on the HTC One seems to be the worst thing about that phone.
Chris H
 
There is also an called pie control that I use for some of the old apps that don't have the three dot overflow written in and I love it!
 
When people compare the s4 and the HTC one I always bring up the hardware keys to which they rebuttal with "but it feels so good in the hand!" smh 
 
I haven't found a lot of situations where I ever need the menu button, what I find more annoying is that the home button isn't in the middle...
 
Does not explain the removal of s2w and s2s when volume key wake does not work once device enters deepsleep.
 
+Ryan Andes who you callin' goofy? Hardware buttons were around long before ICS got going and I don't want to waste screen space on a menu bar I'm not going to use. Yes, I wouldn't mind a "purer" experience with a menu bar AND taller screen to deal with it, but hardware buttons are also just fine thanks. Thanks +CyanogenMod team for always looking out for the best for all users and trying to "make do" when in a tight spot.
 
Hardware keys are a total mistake. Never coming back to them.
 
I will never again buy any +HTC product unless they have proper button setup. 
 
Logo2Menu is really useful! Personally I use the offical Cm10.2 nightlies then just flash a custom kernel with the logo2Menu it works fine for me
john h
 
New cm 10.2 T-Mobile download not working
 
+john h They are having issues on some nightlies on my Orange GSM its working perfect as always
 
After 10.2 updates I no longer receive SMS . anyone else?
john h
 
Working here Eastbay ca
 
Why not just disable the hardware keys and use the stock on screen navbar?
john h
 
Anything on the glitches fixes
 
I am very happy with the double-tap gesture addition. The one thing that was missing. Now I have both long-press and double tap from the home button. It works for me. =0
john h
 
Next the browser glitchs please fix
 
No entiendo porque cada ves que actualizo vía ota tengo problemas con las gapp ya que se desistalo y devo hacerlo vía recovery cosa que no me pasaba con las versiones anteriores espero me respondan porque de ser así me cambiare a otra rom no me gusta mucho eso de estar flasheando a cada momento y otra cosa es el TITANIUMBACKUP que al tratar de recuperar el backup que ya tenía guardado me da error ni tampoco me deja a ser u otra respaldo 
Translate
 
or understand why every time I update via ota I have problems with gapp as it desistalo and devotion do it via recovery thing I went with previous versions hope I respond because if so I'll change to another rom do not really like that about be flashing at every moment and another thing is the TitaniumBackup that in trying to retrieve the saved backup had already fails me nor let me be or other support
 
The truth is that e echo all data factori even wipe cache and was the biggest mistake I could not retrieve the copy by TitaniumBackup tube to install the applications one by one then update again with the next ota and the same problem I desistalo various applications including flash the gapp devo market again.
 
Honestly, I wish they hadn't tried to eliminate the menu key. I thought that was one of the best things about the design of Android <=2.3. It kept your whole screen available for what it was you were looking at, and you pressed a specific button to tell the phone "I want you to do something."
Now there's action bars in varying places taking up screen space and the three-dots button could be anywhere, or even hidden.
 
+Alex null Seriously? This was honestly one of my biggest gripes (as a developer) with Gingerbread and older versions. The menu button results in bad UX because you can't actually know if there's a menu or not without hitting the button. It's confusing and slow.

The action bar/overflow menu, on the other hand, keeps those options readily available with nice icons, as well as a visible overflow button if there are too many to display at once. It's the perfect solution to this problem.

Plus, you have to remember, it's not 2011 anymore - phones are generally much bigger now. We don't need to worry about screen space as much in the age of 5" phone screens.
 
Yes, seriously. One of my biggest gripes (as an end-user) is when there's rarely used junk taking up my very valuable screen space, doing nothing.
It was never a question of if there was a Menu, and pressing a button is not a big deal, especially when it's uniform and consistent across the entire platform, which it was. If you needed to do something, you hit Menu, then picked what you wanted to do.
Worse, the icons on the action bars are more often then not, application-specific, so in order to find out what the hell they do you have to long-press and hope the developer put in some text. The other option is to press it and see if it does something bad. Take notes, because this is bad UX, right here.

My phone isn't 5" and I don't want a phone that big. It's huge and awkward to use. We have them at work for our truck drivers (Galaxy Note II, its huge!)
 
When I say 5", I mean phones like the Galaxy S4 and the HTC One (slightly smaller). Those aren't too big for you, are they?

Also, remember the action bar is also what allowed Google to finally implement an 'up' button. Instead of just pressing back and hoping you'd end up where you want to, the up button always does the same thing - put you one activity up in the app hierarchy.
 
Yes, both of those phones are uncomfortably large. I have a Motorola Photon Q right now which is just a bit too big. The argument that screens are larger makes it somehow "ok" to waste screen real estate on things that the user rarely, if ever, interacts with is flawed. Just because user X goes out and buys a 5" screen phone doesn't mean you can clutter that screen with garbage. They bought that screen because they want to see more of their web page or movie, or data set, or whatever it is they're trying to work on.

There's no reason they couldn't have accomplished the same thing by overloading the "back" button, as they did in this OP's case to show a visual representation of the activity stack on the screen and allow the user to pick where they want to go.

Now, we still have the "Menu" button (3 vertical dots), but it's on the screen and in who-the-heck knows where of inconsistent locations between apps. When it was a hardware key, it was always in the same place (at least for your device) and served the same function in every app.
 
The button layout on the HTC One is the most idiotic thing about the phone. Google should somehow work with manufacturers to standardize the button (actually move them to the 3-key software button layout) but i realize they would resist in order to lock people into their own devices.
 
In my opinion, the previous One had the perfect key layout. HTC should have removed the logo between the two keys and put the home button there. I prefer the 3-dot overflow so I replaced the menu key of my S4 to Recent apps and I think it's just perfect. Except Facebook Messenger and Samba I don't remember an app that keeps the old API. 
 
came here looking for an answer. Now I'm just annoyed. Will slide to unlock be made available?
Translate
 
guys, why not try back is still back, HTC Logo as Home, and with what used to be home press for recent apps and hold for menu? That follows the Google Android button order. You can still do force overflow for 4.0+ designed apps.
 
+Ryan Andes oh u talking about an iPhone? The power and absurdity of Android is this fun mess which we all like. Android is this mess so that others and us can make some sense of it. If not, people will just stick to the iPhone OS which makes helluva lot more sense. BUt thats why we hate Apple, we want mess, chaos and hard to use so we can be really smart using Android. :)
 
+Jeffrey Tan you take a post from 6 months ago and accuse me of being an iPhone fan? That's not what I meant. There's a common design language and guideline that is meant to permeate throughout an entire operating system and the applications that reside and run on said system. That standard is finally being adopted, the only two OEM that haven't adopted it are LG and Samsung, even then, LG at least uses software buttons.

The argument was that HTC had chosen to use two capacitive keys and a software menu button... Samsung and LG both use menu buttons still, every other manufacturer had adopted what we were discussing. A standard design language abd style. Now widely accepted as software keys representing the back button, home button, and the recent applications button. The comment little old me made has become a reality.

Your comment makes zero sense, is well past the end date of said discussion, and is irrelevant since the majority of OEM follow Google's current standard of design. 
 
WTF? I know this is an old thread, but I just got an S5 so am exposed to this absurdity for the first time.  The Menu key is the raison d'etre for the Android AFAIC, the whole point is Uniformity and Discoverability.  One of the main reasons I don't use Apple devices is that I don't want to feel like I'm playing an adventure game with every new app I get -- tapping this and swiping that, looking for functionality. Pros use cameras with lot's of hardware (or dedicated soft) buttons so they can accomplish what they need to without messing around all over a touch-screen.  Ugg.  ("Recent" should be press-and-hold on the back button - "menu" should be left alone.)
 
WTF Michael, if you want continuity you are looking at IOS! Its only on android devices that the Menu key becomes whatever whenever app developers want it to be with their whims and fancies! What are you going on about? Thats what makes Android great! its open source, anyone can change the buttons to whatever they want! Geddit!?? 

you want uniformity? always know what the key is for? Stick to IOS. You are not ready for Samsung S5.
 
Actually, most applications just follow whatever guidelines Google provides, and developers update their apps to match those guidelines. When Google makes mistakes, like getting rid of the easily read iconic menus or switching to an illegible supercondensed font, applications follow.
Add a comment...