Keep buttons from waking screen - HD2 Android Q&A, Help & Troubleshooting and Genera

I had posted a thread asking for this and no one was able to help me , no biggie cause that gave me the initiative to do it myself and i somewhat succeeded . heres my findings ....
To keep the bottom buttons from waking the screen , simply edit two files ..
qwerty.kl and leo-keypad.kl found in the /System/usr/keylayout directory . MAKE A BACKUP BEFORE EDITING***
all you have to do is find the corresponding buttons and delete the WAKE or WAKE_DROPPED from the right column , to make it easier , ive posted the files below . The files i have edited only allow the end/power key to wake the device . just extract from the zip and paste it over the files in above directory . you must be using a root file browser , or use ADB .
Now my initial intensions were to disable all buttons since front facing buttons get pressed a lot when in pocket . And to have volume down button wake the screen . i added WAKE_DROPPED to the volume down button but it doesnt work . upon further googling i found this for another android kernel
Code:
/* gpio buttons from linux*/
static struct gpio_keys_button gpio_buttons[] = {
{
.gpio = S3C64XX_GPN(0),
.code = 116,
.desc = "ENDCALL",
.active_low = 1,
.wakeup = 0,
},
{
.gpio = S3C64XX_GPN(1),
.code = 139,
.desc = "MENU",
.active_low = 1,
.wakeup = 0,
},
{
.gpio = S3C64XX_GPN(2),
.code = 99,
.desc = "ROTATE",
.active_low = 1,
.wakeup = 0,
},
{
.gpio = S3C64XX_GPN(3),
.code = 102,
.desc = "HOME",
.active_low = 1,
.wakeup = 0,
},
{
.gpio = S3C64XX_GPN(4),
.code = 42,
.desc = "BACK",
.active_low = 1,
.wakeup = 0,
},
{
.gpio = S3C64XX_GPN(5),
.code = 158,
.desc = "BACK",
.active_low = 1,
.wakeup = 0,
}
};
My guessing is that the volume down button has a value of zero for .wakeup field . im trying to figure out how to edit this driver to allow volume down to wake up the device . the only draw back is you loose abbility to turn volume down while music is playing with the screen off . not a big loss if you ask me . if anyone knows how to edit the keyboard driver for our phones please feel free to help me

Why don't you just keep the volume keys the same, and turn off all but one of the bottom hard keys for wake up?
Like keep the home key for wake up on, and then there is only 1/5 of the chance to wake the phone in your pocket.
---------- Post added at 10:44 PM ---------- Previous post was at 10:43 PM ----------
But still good work!

kylew1212 said:
Why don't you just keep the volume keys the same, and turn off all but one of the bottom hard keys for wake up?
Like keep the home key for wake up on, and then there is only 1/5 of the chance to wake the phone in your pocket.
---------- Post added at 10:44 PM ---------- Previous post was at 10:43 PM ----------
But still good work!
Click to expand...
Click to collapse
lol thast what i did , i left the "end/power" key wake the device for now . this is why i wanna extract and edit kernel drivers xP

elesbb said:
lol thast what i did , i left the "end/power" key wake the device for now . this is why i wanna extract and edit kernel drivers xP
Click to expand...
Click to collapse
Oh! okay haha, maybe we can get that going tomorrow!

The question still remains.. how to edit the driver.:-(
Sent from my HTC HD2 using XDA App

showlyshah said:
The question still remains.. how to edit the driver.:-(
Sent from my HTC HD2 using XDA App
Click to expand...
Click to collapse
I think I'll easily figure that out once I get to that point , one step at a time xP
Sent from my GT-I9100 using Tapatalk

Rising from dead topic can someone tell me how to make only end call button to wake up phone ?

Thermaltake868 said:
Rising from dead topic can someone tell me how to make only end call button to wake up phone ?
Click to expand...
Click to collapse
Funny I have been messing with that myself!
Open the folder mentioned in OP and depending on the rom installed the file you are looking for will be called something like "htcleo-keypad.kl" (this is what it is called for rom in my sig).
Then do as the op says, delete WAKE_DROPPED entries EXCEPT for the end call row.
Edit: @elesbb, did manage to get volume down button to function as power button. Now only key to wake device!
Disabled power button completely ,VOLUME_DOWN is now CALL button, all the rest the same.

Related

phoneOpen, phoneGetVolume (TAPI)

Hello,
I try to retrieve (then set) the volume, ring type ... of my XDA using TAPI
I call phoneInitializeEx, phoneOpen, phoneGetVolume but I always get the same value for the volume (even if I chnage it of course)
Does anybody knows why ?
Does anybody have and can post a sample code source showing how to unse these functiuns (phoneInitializeEx, phoneOpen, phoneGetVolume, phoneGetStatus ...)
Regards.
To set the phone volume (in mono) try:
Code:
set(DWORD dwVolume)
{
if (dwVolume > 0xFFFF) dwVolume = 0xFFFF;
dwVolume += dwVolume * 0x10000;
DWORD ret;
switch ((ret = waveOutSetVolume(0, dwVolume))) {
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
case (etc....)
}
To get the volume, try:
Code:
DWORD get()
{
DWORD dwVolume;
DWORD ret;
switch ((ret = waveOutGetVolume(0, &dwVolume))) {
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
case (etc...)
}
// Return average of left and right:
if (dwVolume > 0xFFFF) {
dwVolume = ((dwVolume & 0xFFFF) + (dwVolume / 0xFFFF)) / 2;
}
return dwVolume;
}
This is code for XDA I. I have not tried this on XDA II which as we know, has two volume channels.....
Ben.
I upgraded my XDA1 with WM2003 and I have 2 channels for the volume too.
I will try your code but I think this will change only the system volume (I will need to do that too so thanks) but not the phone volume.
First I want to pilot the phone settings (ring, volume...) from an application.
And it seems that only TAPI can do it... but it is not working for the moment
Glad the code will be useful.
If you find the correct method for XDA II, please let me know, I'll need it my self soon.
Ben
Your code works well to set/get the sytem volume
I just modifed it a little as the output is mono
Code:
//**********************************************************************
//Set The System Volume
//Steps (0,13107,26214,39321,52428,65535)
DWORD setVolume(DWORD dwVolume)
{
if (dwVolume > 0xFFFF)
dwVolume = 0xFFFF;
if (dwVolume < 0x0000)
dwVolume = 0x0000;
DWORD ret;
switch ((ret = waveOutSetVolume(0, dwVolume)))
{
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
default :
break;
}
return 0;
}
//**********************************************************************
//Get The System Volume
DWORD getVolume()
{
DWORD dwVolume;
DWORD ret;
switch ((ret = waveOutGetVolume(0, &dwVolume)))
{
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
default :
break;
}
dwVolume = (dwVolume & 0xFFFF);
return dwVolume;
}
But the phoneGetVolume still gives incoherent results
Someone see something wrong in the code below ?
I set the phone volume to 0 on the device but PhoneGetvolume send me 40092 ???
Code:
LONG result;
HPHONE hPhone;
DWORD dwVolume;
DWORD dwRingMode;
DWORD dwNumDevs= 01;
DWORD dwAPIVersion=0x00020002;
PHONESTATUS PhoneStatus;
HPHONEAPP hPhoneApp = 0;
PHONEINITIALIZEEXPARAMS PhoneInitializeExParams;
PhoneInitializeExParams.dwTotalSize = 2 * sizeof(PHONEINITIALIZEEXPARAMS);
PhoneInitializeExParams.dwOptions = PHONEINITIALIZEEXOPTION_USEEVENT;
// PhoneInitializeExParams.dwOptions = PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW;
result = phoneInitializeEx(&hPhoneApp,NULL,NULL,NULL,&dwNumDevs,&dwAPIVersion,&PhoneInitializeExParams);
result = phoneOpen(hPhoneApp, 0, &hPhone, dwAPIVersion, 0, 0,PHONEPRIVILEGE_OWNER);
result = phoneGetVolume(hPhone,PHONEHOOKSWITCHDEV_SPEAKER,&dwVolume); //range 0x00000000 to 0x0000FFFF (65535)
In fact when I set the phone volume using
PocketSetVolume the vlaue is well saved because I get it when I use after PocketGetVolume.
But the phone volume is not really changed ?
Nobody has a sample that uses these functions ?
Or not obligatory these functions but others functions that change the phone volume ?
zendrui said:
In fact when I set the phone volume using
PocketSetVolume the vlaue is well saved because I get it when I use after PocketGetVolume.
But the phone volume is not really changed ?
Nobody has a sample that uses these functions ?
Or not obligatory these functions but others functions that change the phone volume ?
Click to expand...
Click to collapse
I have found that by changing the following registry keys, I can change the volume of the Phone
[HKEY_CURRENT_USER\ControlPanel\Volume]
"Ringer"=dword:00000000
Use hex 00000000, 33333333, 66666666, 99999999, cccccccc, ffffffff
[HKEY_CURRENT_USER\ControlPanel\SoundCategories\Ring]
"InitVol"=dword:00000000
Use hex 0, 1, 2, 3, 4, 5
This work beautifully for my Qtek running WM2003, but I have tried the same approach for the system-volume by changing
[HKEY_CURRENT_USER\ControlPanel\Volume]
"Volume"=dword:00000000
Use hex 00000000, 33333333, 66666666, 99999999, cccccccc, ffffffff
But this does not work! I have checked the registry and the value goes in correctely (The in-system volum control stores the same values in the same key).
How can I use the above code-snippets from the .Net Compact Framework? (I'm guessing a P/Invoke but what DLL is the call hidden in)
Cato
I am trying to make it works, but fail...please let me know if you know how to use the registry to update it...my email is
[email protected]
Thanks
I used the P/Invoke sample from Microsoft to get a working sample that read and updated the registry, and simply tried all possible combo's of a 4byte-array to see what would produce the correct result
Cato
I found a article mention it !!!
http://www.cegadgets.com/winceregfaq.htm#2.8 Where are volume and sound settings stored?
Not sure it works or not !!!
Please let me know if you know how to use the AudioUpdateFromRegistry, defined in coredll
Thanks :wink:
One more acticle !!!
http://www.pocketpcdn.com/forum/viewtopic.php?t=111
But I dunno how to make it works.
Any runnable example?
Hello,
after many tries I didn't find how to use TAPI functions ... this seems not towork ..
But you can change all the phone settings (volume, ring mode, ring tone, notifications ...) in the registry ... as I did for PocketZenPhone
See under that key HKEY_CURRENT_USER\ControlPanel
For the system volume I use the functions I posted upper
Hey, any example to do it?
Thanks zendrui
If you use EVC
Simply open the registry key
HKEY Key;
RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\Volume"),0,0,&Key);
Then use RegQueryValueEx to retrieve the value/setting you want
Hi zendrui,
I am able to update the registry, but I am not able to call AudioUpdateFromRegistry to notify the system to update the status from registry.
Could you able to exeute this API?
Thanks,
Paul
Sorry for the last post didn't have the keys in my mind
So to change the phone volume here are the keys needed
Code:
//dwPhoneVolumeLevel between 0 and 0xFFFFFFFF
res = RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\Volume"),0,0,&Key);
if (res == ERROR_SUCCESS)
{
res = RegSetValueEx(Key,_T("Ringer"),0,REG_DWORD,(LPBYTE)&dwPhoneVolumeLevel,sizeof(DWORD));
if (res != ERROR_SUCCESS)
{
RegCloseKey(Key);
return -1;
}
}
RegCloseKey(Key);
//dwInitVol between 1 and 5
res = RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\SoundCategories\\Ring"),0,0,&Key);
if (res == ERROR_SUCCESS)
{
res = RegSetValueEx(Key,_T("InitVol"),0,REG_DWORD,(LPBYTE)&dwInitVol,sizeof(DWORD));
if (res != ERROR_SUCCESS)
{
RegCloseKey(Key);
return -1;
}
}
RegCloseKey(Key);
It changes the phone volume and the display
PS : I post this code hoping is to help people to develop freewares (or low low cost software :wink
COOL !!! Thanks zendrui !!!!
Now I can set the Ringer volume !!!
How about set the system sound volume?
Fot the system volume see upper of this thread I posted the code I use. It works perfect
O yes...It works under eVC++
Let me try to implement it in VS.NET
Thanks
bong99 said:
O yes...It works under eVC++
Let me try to implement it in VS.NET
Thanks
Click to expand...
Click to collapse
Please tell me if you make it, as I have tried various P/Invoke calls that all result in a No Supported Exception.
Cato
PS: Sorry that I could not get you a working code before but I was under with the flu last week

volume setting

I am trying to set the volume to my needs then put it back after. I have use the code from ppc developer network and when that did not set the correct volume I also did the registry as well. Don't worry about "reg", its my registry class and it works fine.
DWORD oldReg=0;
oldReg=reg->readDWORDfromReg(name,path);
reg->saveDWORDtoRegistry(name,path,0xffffffff);
WAVEFORMATEX wf;
wf.wFormatTag = WAVE_FORMAT_PCM;
wf.nChannels = 1;
wf.nSamplesPerSec = 8000 * 1000;
wf.wBitsPerSample = 8;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;
wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;
wf.cbSize = 0;
HWAVEOUT hwo;
DWORD dwVolume=0xffffffff;
DWORD oldVolume=0;
int waveDevice=-1;
UINT numberOfDevices=waveOutGetNumDevs();
for(UINT id=0;id<numberOfDevices;id++)
{
if (waveOutOpen(&hwo,id,&wf,0,0,CALLBACK_NULL)==MMSYSERR_NOERROR)
{
waveDevice=id;
waveOutGetVolume(hwo,&oldVolume);
waveOutSetVolume(hwo,dwVolume);
waveOutClose(hwo);
break;
}
}
.........playing sound here all ok....
//put the volume back
if(waveDevice!=-1)
{
if (waveOutOpen(&hwo, waveDevice, &wf, 0, 0, CALLBACK_NULL) == MMSYSERR_NOERROR)
{
waveOutSetVolume(hwo, oldVolume);
waveOutClose(hwo);
}
}
reg->saveDWORDtoRegistry(name,path,oldReg);
I can set the volume to any value below the origional volume but any attempt to set a volume higher just dose nothing. There are no errors (checking left out here), just the same level. I did not seriously expect the registry part to work as I guess there is some event to trigger that change, but others seem to get results from waveOutSetVolume.
Well, I never tried changing volume by code, but I know TCPMP player does it well and it's open source so might be worth taking a look at.
Thanks levenum, I will give it a look.
Before I got a chance to look at that code I got a result. I have been using PlaySound to play a resource with no volume change working. When I use waveOutWrite to play a buffer containing the same data I can get the volume change I am after. There is still something wrong with my code because the sound gets garbled but I think I will figure that part out. I also want to next test playsound with a file instead of a resource.
<edit>
using playsound with the same file plays clear sound but the volume change is not working. Its a pity because to get the waveoutwrite to work properly i had to fill in the WAVEFORMATEX with the CORRECT values. This means that if I am allowing the user to specify files to play I will have to find out the samples per second and bits per sample info before I can use the file.

A Call To Lock/Hardware Button Experts

Hello,
Im currently working on a custom control in managed code(vb.net) and have decided to implement it in a lock application as its initial demo. I have written code which catpures the base hardware keys available to windows mobile(1-6) this captures all of the hardware buttons on my wizard except for the Phone Buttons, Volume/Vibrate Button, and power button. im not particularly worried about trapping the power button because i like the tap to standby feature but im up the creek on the phone/volume buttons.
I found the hardware buttons 1-6 in the registry under (HKLM\Software\Microsoft\Shell\Keys) but i cant seem to find the other keys anywhere including where this person says they are
http://www.mobipocket.com/forum/viewtopic.php?p=2367&sid=c3b2c704a729c2d6e5a47d0ee38ecb54
basically from my understanding of what he's saying the keys for these options(at least the phone ones) should have been listed under "HKEY_CURRENT_USER\Software\Microsoft\Today\Keys\"
I had one key there 112 pointng to my calendar(so that i thought confirmed him) I added a key called 114 with a path to calendar as well. but the button still directs to phone/ so im not sure what's up.
Here's some logic from the hardware button capturing... Any insight into the location of these items would be greatly appreciated
Code:
Dim hk As HardwareKeys = HardwareKeys.ApplicationKey1
Dim i As Integer = 0
While i < 6
Try
Dim hwb As HardwareButton = New HardwareButton
hwb.AssociatedControl = Me
hwb.HardwareKey = hk + i
Catch ex As Exception
Me.Label1.Text &= ex.Message
End Try
i += 1
End While
Dim regkey As RegistryKey =
Registry.LocalMachine.OpenSubKey("Software\Microsoft\Shell\Keys", True)
Me.Label1.Text = regkey.SubKeyCount
For Each skey As String In regkey.GetSubKeyNames
Me.Label1.Text &= skey.ToString & ","
Next
regkey.Close()
Thanks in advance for any insight anyone can provide
DrewG
Well ive found some russian page talking about the
Dated Post on russian site with Broken English Translation said:
HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\KeyMaps]
"195"= - =-hitting "record" on the three pozic. phone (one that najmeshy story)
"196"= hitting "power" and "house"
"197"= Opening screen
"198" = "red tube"
dword:00000000 - nothing
dword:00000001- mobile phone
dword:00000002 - quick menu
dword:00000003 - lock (for the press release #)
dword:00000004 - 00000004 fast-locking
Click to expand...
Click to collapse
Do you guys think this is a good start? At that location i have dword 197 val of 5. Im adding entries now for the othr buttons to see if i can catch
Here's What I have so far for Cingular 8125 HTC Wizard as the hardware buttons/software key maps which i get from a call onkeypress. I believe im going to have to go an unmanaged route for the phone buttons/Volume.
Code:
'not code just looks better this way
SoftKey Left = Key Code 112
SoftKey Right = Key Code 113
Email Button(top left corner) = Key Code 193 (Cf Hardware Button 1)
Web Button(top right corner) = Key Code 194 (Cf Hardware Button 2)
Camera Button(bottom right side) = Key Code 195 (Cf Hardware Button 3)
Voice Button(top right side) = Key Code 196(Cf Hardware Button 4)
Record(hold voice) = Key Code 197(not firing well) (Cf Hardware Button 5)
Comm Button = Key Code 198 (Cf Hardware Button 6)
All of those I can catch and react to but i cant seem to find any info for the phone and volume buttons/ Is there a specific api call I can make thats related to button press or catching? Possibly a way of forcing an association to an app only while its running?
Thanks in advance for any help. Ill post the full app here if i can get over this hump

[REQ]Remapping Camera shot key to volume button?

Hi there,
First of all I tried searching on google and also in this forum itself but I cant find anything related and so i decided to create a new thread on this.
If there anyway via tweaking the registry that i can make use of the volume key on the blackstone to take pictures instead of using the touchscreen? I believe this is possible
I find taking picture using a touchscreen is really difficult.
I read from http://wiki.xda-developers.com/index.php?pagename=HTC_Blackstone_Overview that this is possible by remapping the volume rocker.
Does any know how?
Will anyone be able to help?
I'm requesting this also. HTC should have made an option for us to choose for this from the beginning.
Request also here!
Sorry, I added this "remap volume rocker Solution" because I thought it was possible, but I actually didn't try it. So let's keep this thread to find a way to do it.
Remapping keys is through AE Button Plus or MobileMagic.
Right now we only have the choice of "touch" or "touch and hold" the virtual on-screen button to "auto-focus + shot".
We need to find out if there is any keyboard shortcut associated to that function.
I tried to use the "enter key" fonction remaped to Volume Up with AE Button Plus, but it didn't work.
Does the HTC Touch Pro have HTC's Camera application? maybe they know a keyboard shortcut? Let's ask.
I guess it will be possible.... just that we need the experts here to show us how to...
[APP] CameraButton
To solve this problem. I thought of a very simple solution:
Instead of us clicking the on-screen camera button, we need an application "CameraButton", which will click on the screen for us, then we just need to map a hardware button to that application.
Simple isn't it?
So here is the C# code for the CameraButton application:
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace CameraButton
{
class Program
{
[System.Runtime.InteropServices.DllImport("coredll.DLL", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[System.Runtime.InteropServices.DllImport("coredll.DLL", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[System.Runtime.InteropServices.DllImport("coredll.dll")]
static extern bool SetCursorPos(int X, int Y);
[System.Runtime.InteropServices.DllImport("coredll.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
[Flags]
public enum MouseEventFlags
{
LEFTDOWN = 0x00000002,
LEFTUP = 0x00000004,
MIDDLEDOWN = 0x00000020,
MIDDLEUP = 0x00000040,
MOVE = 0x00000001,
ABSOLUTE = 0x00008000,
RIGHTDOWN = 0x00000008,
RIGHTUP = 0x00000010
}
static void Main(string[] args)
{
IntPtr cameraHandle;
cameraHandle = FindWindow(null, "Camera");//search camera app
if (cameraHandle == IntPtr.Zero)// cannot find it then launch it
{
Process cam = Process.Start(new ProcessStartInfo("Camera.exe", ""));
//cameraHandle = cam.MainWindowHandle;
}
else // can find it then set position then click
{
//SetForegroundWindow(cameraHandle);// we assume we already have the focus on the camera app
SetCursorPos(240, 750 );//set position to the on-screen camera button
mouse_event((uint)MouseEventFlags.LEFTDOWN, 0, 0, 0, 0);
mouse_event((uint)MouseEventFlags.LEFTUP, 0, 0, 0, 0);
}
}
}
}
Why do I give the code rather than the binary?
Because unfortunately this code doesn't work (yet).
Let me explain a bit more:
This application doesn't need to keep running in the background, it just can do 2 things. Start the camera app if it's not already started, or just click at a specifically chosen position.
If I set the position to (0,0), my program will click at the upper-left corner of the screen, and hit the start button, therefore the start menu appears.
However if I try to click on the camera application, it doesn't have any effect!
Actually if I click somewhere else than the on-screen camera button, it should still react to the click: the little cross should move to the clicked place as part of the Touch Focus feature of HTC's camera app.
But here again, nothing happen.
Since it's my first app on WiMo, I might have done a mistake somewhere, but I can't see where.
Any XDA-developer can spot what's wrong with my code?
please see http://forum.xda-developers.com/showthread.php?t=471321
The Problem is the HTC Application, it blocks any keydown event
I did it Application released soon!
http://www.scilor.com/leocameraanykey.html

how to wakeUp on power button only?

Hi there!
someone knows a way to restrict waking up of the device to the powerbutton only?
it is strange on this device, on win mobile 6.1 and 5 all keys were locked except the power button, but on the touch 2 pressing any front key will wake it up.. and it happens quite often by accident.
thnx!
Check if following registry setting is in your phone or add it if you do not want to wake up by any hardware keys: HKEY_LOCAL_MACHINE\HARDWARE\OEM\KEYBD "KeyLock" = 1 (default is 0) then Reset...
In my Rom this registry is not there btw.
Frank Caarls said:
Check if following registry setting is in your phone or add it if you do not want to wake up by any hardware keys: HKEY_LOCAL_MACHINE\HARDWARE\OEM\KEYBD "KeyLock" = 1 (default is 0) then Reset...
In my Rom this registry is not there btw.
Click to expand...
Click to collapse
"KeyLock" = 1 is a DWORD or String Value??
thanks
DWORD......

Categories

Resources