Hi guys, as the title says it's a work in progress, so please don't flame.
I was tired of waiting for the Trackpad2Unlock mod for GB-Sense roms to come, so i decided to give it a shot.
When i was on RCMix HD, i flashed a v1.84 update.zip to enable the trackpad2unlock feature.
So i unziped that file, and noticed that it only replaces the original HTCLockscreen.apk by another one.
I then decompiled both of them to see what were the differences.
Quick md5 hashes showed that only one file was modified: HtcLockScreen.smali
I then compared the original and modified files:
Original:
Code:
.line 800
.local v0, msg:Landroid/os/Message;
const/16 v1, 0x14
if-eq p1, v1, :cond_3e
const/16 v1, 0x13
if-eq p1, v1, :cond_3e
const/16 v1, 0x15
if-eq p1, v1, :cond_3e
const/16 v1, 0x16
if-eq p1, v1, :cond_3e
.line 804
iget-object v1, p0, Lcom/htc/lockscreen/HtcLockScreen;->mReminderView:Lcom/htc/lockscreen/HtcLSViewInterface;
if-eqz v1, :cond_3e
.line 805
iget-object v1, p0, Lcom/htc/lockscreen/HtcLockScreen;->mReminderView:Lcom/htc/lockscreen/HtcLSViewInterface;
invoke-interface {v1, p1, p2}, Lcom/htc/lockscreen/HtcLSViewInterface;->onKeyDown(ILandroid/view/KeyEvent;)V
:cond_3e
move v1, v4
.line 809
goto :goto_20
.end method
Modified:
Code:
.line 801
.local v0, msg:Landroid/os/Message;
const v1, 0x17
if-ne p1, v1, :cond_2d
invoke-virtual {p0}, Lcom/htc/lockscreen/HtcLockScreen;->goToUnlockScreen()V
:cond_2d
const/16 v1, 0x14
if-eq p1, v1, :cond_46
const/16 v1, 0x13
if-eq p1, v1, :cond_46
const/16 v1, 0x15
if-eq p1, v1, :cond_46
const/16 v1, 0x16
if-eq p1, v1, :cond_46
.line 805
iget-object v1, p0, Lcom/htc/lockscreen/HtcLockScreen;->mReminderView:Lcom/htc/lockscreen/HtcLSViewInterface;
if-eqz v1, :cond_46
.line 806
iget-object v1, p0, Lcom/htc/lockscreen/HtcLockScreen;->mReminderView:Lcom/htc/lockscreen/HtcLSViewInterface;
invoke-interface {v1, p1, p2}, Lcom/htc/lockscreen/HtcLSViewInterface;->onKeyDown(ILandroid/view/KeyEvent;)V
:cond_46
move v1, v4
.line 810
goto :goto_20
.end method
Basically it just inserts another check for var 0x17 (trackpad?) and then unlock the lockscreen if true.
So i did manage to update the Gingerbread Sense HTCLockscreen with this little hack.
No more need to slide down to disable the lockscreen, pressing down the Trackpad does it.
However... it doesn't wake the phone through the trackpad.
We still need to press Power :-/
To make a long story short, i managed to get tp2unlock, but not tp2Wake&Unlock...
I did try several other methods, like this one but with no go:
http://forum.xda-developers.com/showthread.php?t=683902
So if someone wanna give a hand... Feel free, the whole community is waiting for this mod.
Thanks for reading and your help
PS:
Provided in the link are the uncompiled files for
v1.84 original (the original RCmixHD a2sd htclockscreen.apk files)
v1.84 modified (the modified version to enable trackpad 2 wake and unlock)
gb sense tp2u (the modified Gingerbread Sense version to enable trackpad 2 unlock).
Edit:
I forgot to provide the HTCLockscreen.apk, just push it (with QtADB!) to system/app/.
nice work at least this is a start and maybe some who nows a little bit more will help
I don't think it depends on framework settings. As I developed AOSP for other device it was always a matter of editing keylayout file with adding/removing WAKE flag. Maybe just adding that flag to PROPER keycode will solve this? I tried but without success.
What else - I'd like to point you to frameworks/policies/base - there are files that describes some power management.
Delete... Wrong tread..
KameoRE said:
To make a long story short, i managed to get tp2unlock, but not tp2Wake&Unlock...
I did try several other methods, like this one but with no go:
http://forum.xda-developers.com/showthread.php?t=683902
So if someone wanna give a hand... Feel free, the whole community is waiting for this mod.
Click to expand...
Click to collapse
Why don't you try with this one
Good work...
but i think that are 2 things needed...the changed lockscreen and this trackpad to wake up...maybe try the same way with the file from this thread:
http://forum.xda-developers.com/showthread.php?t=696907
with kind regards...Alex
bg_man said:
Why don't you try with this one
Click to expand...
Click to collapse
I did does it work reliably for you? over a week now with this mod and ~50% fail rate
I'm using CoolAcesv2 rom and looking at the inputs with the adb shell and the getevent command, seems like for the trackpad is still needed the curcial-oj.kl file as described here http://forum.xda-developers.com/showthread.php?p=7236745#post7236745.
This is what i got:
Code:
add device 1: /dev/input/event9
name: "compass"
add device 2: /dev/input/event8
name: "curcial-oj"
add device 3: /dev/input/event7
name: "dummy_keypad"
add device 4: /dev/input/event6
name: "lightsensor-level"
add device 5: /dev/input/event5
name: "bravo-keypad"
add device 6: /dev/input/event4
name: "proximity"
add device 7: /dev/input/event3
name: "synaptics-rmi-touchscreen"
add device 8: /dev/input/event2
name: "projector-Keypad"
add device 9: /dev/input/event1
name: "projector_input"
add device 10: /dev/input/event0
name: "h2w headset"
/dev/input/event8: 0001 0110 00000001
Btw i already pushed the curcial-oj.kl in the phone but it doesn't do anything so i beleive it need the modded apk too.
I hope this helped a bit.
I did try it... Here are my tests so far:
- created, edited and pushed system/usr/keylayout/curcial-oj.kl with the following, and it doesn't work.
Code:
key 272 DPAD_CENTER WAKE_DROPPED
- also edited the system/usr/keylayout/bravo-keypad.kl with the same line, no go.
Gonna dig with other tests, there must be a way to get the code to trigger the power button.
Once i get it, i think that i can replicate the snippet and get this to work.
Wish me luck.
Good luck mate
If you look around there are a couple of threads where people have tried editing curcial-oj.kl and bravo-keypad.kl which seems to have no effect on trackpad. WAKE_DROPPED when added to menu or home in bravo-keypad.kl does give an unreliable wakeup but half the time it doesn't work. General consensus seemed to be GB uses a different location
Thanks Ziggy.
In fact when i edit my bravo-keypad.kl, it works all the time with Power or Home or Menu, but not a single time (and believe me, i tried like 25 times in a row) with the Trackpad.
key 102 HOME WAKE_DROPPED
key 139 MENU WAKE_DROPPED
key 158 BACK
key 217 SEARCH
key 272 DPAD_CENTER WAKE_DROPPED
key 107 ENDCALL WAKE_DROPPED
key 116 POWER WAKE_DROPPED
Click to expand...
Click to collapse
I'll investigate a little bit more.
Well thats a step in the right direction
Could you please upload your bravo-keypad.kl with reliable menu home wake, myself and several others all have it working, but unreliably. Have you tried it for over 24H, for me if the phone has been recently used it seems to work but after a prolonged period in standby it generally seems to fail
KameoRE said:
Thanks Ziggy.
In fact when i edit my bravo-keypad.kl, it works all the time with Power or Home or Menu, but not a single time (and believe me, i tried like 25 times in a row) with the Trackpad.
I'll investigate a little bit more.
Click to expand...
Click to collapse
Can you share that file which works all the time for Menu button? That's all I need and it will solve my problem.. Can you do that? Thanks in advance..
Ok, bad news, you guys are right.
If the phone is off for a while (more than 2-3 minutes), the keys don't wake the phone.
As if they were not power supplied.
Looks like a powersave function, sorry guys.
We still stuck to the same position.
Anyway i tried decompiling other android files to check which one triggers the PowerOn function, but haven't found it yet.
Anyone got a clue (i tried Rosie/SystemUI/Core/AndroidPolicy...)?
I think it's obviously hidden very well (Damn HTC and their lack of sensible ergonomic design)
I did notice NeoPhyTe.x360's latest GB rom had "Wake UP desde Menu, unlock Trackpad" listed in the Features: sadly about 20mins after i queried this it was changed to "Wake UP from Menu" whether that's the same unreliable mod we have i don't know can't be arsed to flash just for that
But hey even more people will be looking for it now
Yep, hopefully we might found it.
Just noticed Neo's back, so gonna give his Ginger-ReflexS/SenseHD rom a try.
I think you are right about power save disabling menu wake when i put the phone on charge after 20 mins menu wake is still working
So presumably default setting is only Power button has power all the time maybe that's a solution allowing power to menu /trackpad always
ziggy1001 said:
I did does it work reliably for you? over a week now with this mod and ~50% fail rate
Click to expand...
Click to collapse
I've played with it but for half an hour.
I've found the GB still not stable enough and decide to wait for official HTC release.
So you are seems to be right.
Little update.
I managed to debug which functions are called when the relevant button is pressed (power and all the others enabled in bravo-keypad.ki but 272):
For example, while pressing Power (keycode 26 or $1a), i get this:
WindowManager - interceptKeyBeforeQueue keycode=26 screenIsOn=false keyguardActive=true
KeyguardViewMediator - wakeWhenReadyLocked(26)
InputDispatcher - notifyKey - deviceId=0x0, source=0x101, policyFlags=0x32000002, action=0x0, flags=0x9, keyCode=0x1a, scanCode=0x74, metaState=0x0, eventTime=5904047125987
Click to expand...
Click to collapse
Then it triggers other functions (turn lights on...) and then enable the lockscreen.
However, when i press the Trackpad, all i get is this:
InputDispatcher - notifyMotion - eventTime=1313024185481, deviceId=0x20000, source=0x10004, policyFlags=0x2000000, action=0x0, flags=0x0, metaState=0x0, edgeFlags=0x0, xPrecision=6.000000, yPrecision=6.000000, downTime=1313024185481
InputDispatcher - Pointer 0: id=0, x=0.000000, y=0.000000, pressure=1.000000, size=0.000000, touchMajor=0.000000, touchMinor=0.000000, toolMajor=0.000000, toolMinor=0.000000, orientation=0.000000
InputDispatcher - notifyMotion - eventTime=1313162113375, deviceId=0x20000, source=0x10004, policyFlags=0x2000000, action=0x1, flags=0x0, metaState=0x0, edgeFlags=0x0, xPrecision=6.000000, yPrecision=6.000000, downTime=1313024185481
InputDispatcher - Pointer 0: id=0, x=0.000000, y=0.000000, pressure=0.000000, size=0.000000, touchMajor=0.000000, touchMinor=0.000000, toolMajor=0.000000, toolMinor=0.000000, orientation=0.000000
Click to expand...
Click to collapse
Which looks like a motion/sensor tracking routine...
It got me puzzled, i really don't know where to go from here... :-/
Full debug log for Power button down here:
Code:
WindowManager - interceptKeyBeforeQueue keycode=26 screenIsOn=false keyguardActive=true
KeyguardViewMediator - wakeWhenReadyLocked(26)
dalvikvm - --- called into dvmAbstractMethodStub
InputManager-JNI - An exception was thrown by callback 'interceptKeyBeforeQueueing'.
InputManager-JNI - java.lang.AbstractMethodError: abstract method not implemented
InputManager-JNI - at com.android.server.PowerManagerService.getProximitySensorActive(PowerManagerService.java)
InputManager-JNI - at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeQueueing(PhoneWindowManager.java:2749)
InputManager-JNI - at com.android.server.WindowManagerService$InputMonitor.interceptKeyBeforeQueueing(WindowManagerService.java:5255)
InputManager-JNI - at com.android.server.InputManager$Callbacks.interceptKeyBeforeQueueing(InputManager.java:404)
InputManager-JNI - at dalvik.system.NativeStart.run(Native Method)
InputDispatcher - notifyKey - deviceId=0x0, source=0x101, policyFlags=0x32000002, action=0x0, flags=0x9, keyCode=0x1a, scanCode=0x74, metaState=0x0, eventTime=5904047125987
LightsService - [LedInfo] setLight_native light=2 colorARGB=-11447983 flashMode=0 onMS=0 offMS=0 brightnessMode=0
lights - set_light_buttons_func: on=5329233 brightness=81
power - *** set_screen_state 1
SensorService - noteStartSensor: uid = 0x3e8, handle = 0x4
LightsService - [LedInfo] setLight_native light=0 colorARGB=-11447983 flashMode=0 onMS=0 offMS=0 brightnessMode=1
WindowManager - interceptKeyBeforeQueue keycode=26 screenIsOn=true keyguardActive=true
InputDispatcher - notifyKey - deviceId=0x0, source=0x101, policyFlags=0x2000002, action=0x1, flags=0x8, keyCode=0x1a, scanCode=0x74, metaState=0x0, eventTime=5904147369869
SurfaceFlinger - Screen about to return, flinger = 0x319288
LightsService - [LedInfo] setLight_native light=2 colorARGB=-8355712 flashMode=0 onMS=0 offMS=0 brightnessMode=0
lights - set_light_buttons_func: on=8421504 brightness=128
LightsService - [LedInfo] setLight_native light=1 colorARGB=-16777216 flashMode=0 onMS=0 offMS=0 brightnessMode=0
WindowManager - needSensorRunningLp, mCurrentAppOrientation =1
HtcLockScreen2.0 - HtcLockScreen: onResume
something new here? because this problem does not yet use Gingerbread Sense 2.1 ROM's for long time
Hello everybody!
I just bought a new nvidia shield tablet k1, hoping to be able to use my Xiaomi Bluetooth gamepad with it.
At first everything seems OK, until I discovered that I'm not able to use the right trigger with all games on geforce now.
Is there a way to fix it?
I checked with the app "game controller tester" and all the buttons are perfectly recognised, that's an nvidia incompatibility.
Any help is appreciated!
EDIT: i'm sorry, I just realized i should post this question in Q&A
Bye
Same problem here, the pad also isn't recognised in a couple of other games either (Castle of Illusion and Dead Effect 2)
any updates on this issue?
any update on this?
I have same issue on Nvidia Shield TV. Right stick is not working and R1, which is main button in all race games.
Hello,
I had some issues with xiaomi gamepad too but I have another phone and my problem was a bit different but you still can try my solution, who knows, maybe it will help you. Implosion: Never Lose Hope didn't detect right stick so I was unable to shoot. I managed to solve this by custom .kl file which I got on 4pda (unfortunately I can't post links due to the restrictions of the forum).
What you need to do is:
1. Root your device
2. Create a file named Vendor_2717_Product_3144.kl and put the following in it:
Code:
# Xiaomi Gamepad
key 304 BUTTON_A
key 305 BUTTON_B
key 307 BUTTON_X
key 308 BUTTON_Y
key 310 BUTTON_L1
key 311 BUTTON_R1
key 312 BUTTON_L2
key 313 BUTTON_R2
key 315 BUTTON_START
key 314 BACK
key 172 HOME
key 317 BUTTON_THUMBL
key 318 BUTTON_THUMBR
axis 0x00 X
axis 0x01 Y
axis 0x02 Z
axis 0x05 RZ
axis 0x06 RTRIGGER
axis 0x0a LTRIGGER
axis 0x10 HAT_X
axis 0x11 HAT_Y
3. Put this file to a /usr/keylayout folder.
4. Change permissions for a file.
That's it, in my case there was no need in reboot, I just reconnected the gamepad to a phone and everything was fine.