TL;DR
The goal of story decompostion isn't reducto ad absurdum. The goal is to chunk up work into increments that can be done within a defined time-box.
By limiting the cone of uncertainty on the larger project and focusing on short-term deliverables, the business increases predictability at the potential cost of additional work as designs and implementations are refined (or even redefined) over time. Agile frameworks optimize for tight feedback loops and predictable cadence, rather than to avoid the possibilities of rework or redesign.
Think Functions, Not Widgets
It's unclear from your post whether you're really building a phone as your deliverable, or if you're just using it as an example. If the latter, it might help to rethink how you view your intermediate deliverables.
In your example, you assume that a phone is all about the user interface, e.g. the buttons. But what if you think about functions instead? For example:
- You might build a phone without a case, with just a breadboard and an exposed speaker/mic.
- You build a functioning keypad.
- You refactor until you can wire the keypad into the phone.
- You build a functioning ringer.
- You refactor until the the ringer can be incorporated into the prototype.
- You design a case.
- You refactor the prototype to fit into the case.
Right-Sizing the Granularity of Increments
Think in terms of potentially-shippable increments. The point isn't to reduce the user stories to the point of absurdity; the goal is to build increments of your product in chunks that make sense for your project, and to let the self-organizing team figure out the tasks needed to do so.
Using your example, having one user story per key on the keypad would be ridiculous. If the team thinks "build a keypad prototype" is sufficiently granular to deliver within a single iteration, do that!
On the other hand, perhaps you work at a company that builds modern office-class SIP phones. In that case, a less granular story like "build a protoype phone to fit this artist's rendering of a new case" might be something that can be done within a single iteration using readily-available parts and know-how. In that event, there's no benefit to decomposing the story any further; just stand back and let your experienced, cross-functional team get it done!