15

I have a oneplus android phone. The touch screen recently started malfunctioning so that the bottom centimetre of the screen does not work, but the rest of the screen works perfectly well. Unfortunately the bottom centimeter contains lots of important functions. Is there a way to resize my display or resolution so that it excludes the bottom centimeter of my screen?

Selah
  • 293
  • 1
  • 3
  • 7
  • Since it's the bottom centimeter you could probably set it to use both capacitive and on screen navagation buttons. That way the navagation bar will fil up the unusable part and you can still use to capacitive buttons to navigate. – user1762507 Jul 28 '15 at 19:36

1 Answers1

17

Notes:

  • My solution is tested on Stock Android 4.4.2 and Stock CyanogenOS 12 (5.0) of OnePlus One, and should work for Android 4.3 and above (based on this answer).
  • I've mentioned wherever root access is required.
  • This answer has been taken from my answer on a bit different question here.

I have used the following comment as the ground to work on:

The bottom 20% of my Nexus 4 doesn't work. I use: wm overscan 0,0,0,210 to have android WM not draw anything in that area so that I can operate all the drawn areas fully again.. – Thrustmaster

Instructions:

  1. Enable USB-debugging in your phone.
  2. Install ADB tools in your PC, connect your device into it, and make sure that device is getting detected in adb devices.
  3. We need to know the resolution and the display density of the device. In the terminal/cmd enter adb shell dumpsys display | grep mBaseDisplayInfo to show display related info. The output could look like:

    mBaseDisplayInfo=DisplayInfo{"Built-in Screen", app 480 x 854, real 480 x 854, largest app 480 x 854, smallest app 480 x 854, 64.29 fps, rotation 0, density 240, 240.0 x 240.0 dpi, layerStack 0, type BUILT_IN, address null, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
    

    The relevant info in my case is:

    • real 1080x1920
    • density 480
    1. The most useful commands to be used are:

      • wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]
      • wm density [reset|DENSITY]

      My default launcher screen without tweaks looked like:

    2. To reduce the screen output at bottom issue the command:

      adb shell wm overscan 0,0,0,100
      

      Note the I used further reduction by upto 0,0,0,300 and the output was like this:

      Tweak the value to your desired needs.

    3. You may need to correct the density since the display could look odd. My device's default display density is 480 dpi, so I tweaked it this way:

      adb shell wm density 440
      

      and the resultant screen was like this. An app under tweaked resolution.

    4. Note that you can use adb shell wm density reset and adb shell wm overscan reset to revert back to default density and resolution respectively.
    5. Now that "dead touch zone" has been taken care of it's time to use virtual/soft keys (only if you need it).

      1. Izzy has it already covered in this answer. Otherwise, you can use Gravitybox LP (for Lollipop users) or Gravitybox KK (for Kitkat users). It is an Xposed module, and require root access and Xposed Framework installed.

        Install, activate and launch Gravitybox → Navigation bar tweaksEnable Navigation bar → do a reboot, and soft-keys aka Navigation bar would be found enabled.

      2. Custom ROM like Cyanogenmod and some stock ROMs has the option to enable soft-keys(buttons) under Settings. You can use that option since it doesn't require any root access.

      3. After some further tweaks the final screen of my Android 5.0 looked like:

        IMG: After some further tweaks the final screen of my Android 5.0 looked like

We're good to go!

Firelord
  • 25,084
  • 20
  • 124
  • 286
  • I wish I'd known about this when I smashed my other phones! After playing around with this I couldn't get my Nexus 6 keyboard to adjust in landscape. I'm missing the right side of my keyboard. It works fine in portrait so it should be a rare case when that's actually a disability. Luckily, I'm just screwing around and don't need this right now but it's cool to know. Way smart work! Thank you. – Kristopher Apr 26 '16 at 14:57
  • @Kristopher Did you also tweak the density and so as restarted the device? Some apps fail to respond to changes made in display size. – Firelord Apr 26 '16 at 15:08
  • 1
    I was thinking that I didn't restart and you're right. Things changed then. Good stuff (: – Kristopher Apr 26 '16 at 16:23
  • 1
    Works great. I was getting an android.permission.SHUTDOWN denied error when trying to change the density, but that was only because my OPO needed a mandatory restart after a change in density. Did a manual restart and everything was fine. – Shri Aug 29 '17 at 07:58
  • 1
    BTW, (In OPO, CyanogenOS) we can also change the density from Settings -> Display & Lights -> LCD Density. It will automatically prompt for a restart. – Shri Aug 29 '17 at 08:06
  • @Firelord is there a way to shift the display in a direction? I tried the 'overscan' command, and it breaks a lot of apps (even after restart). So, I used the 'size' command to set the height 100px less. Unfortunately, it shrunk to the middle, and there are padding on the top as well as the bottom. But, all the apps are working well. Is there a way to shift the display upwards on y-axis 50px, so that all the extra padding is on the bottom (the bottom 100px of my screen does not respond to touch)? The keyword here is "translate". I can't find any comprehensive list of commands anywhere... :( – BlackPanther Nov 14 '18 at 19:28
  • @BlackPanther I'd appreciate if you convert that comment into a fully fledged question, as I cannot address it here, even if I may have an answer. Besides, other users would also be able to help you out as well. :) – Firelord Nov 14 '18 at 20:24
  • @Firelord I wanted to do that too, but then someone might be eager to mark it as a duplicate... :'D I'll make it a separate question anyway. Thanks :) – BlackPanther Nov 15 '18 at 18:57
  • @Firelord I have asked it as a separate question – BlackPanther Nov 15 '18 at 19:18