React on pressing bluetooth headset button under WM6? - General Questions and Answers

Hello,
I want to write an application under Windows Mobile 6 that reacts on pressing the button of a bluetooth headset connected to my mobile phone. As far as I understood, the headset sends an AT command when its button is pushed, that is received by Audio Gateway Service on the phone. To be able to react on received AT command, I need to write a customized DLL ("AT command extension module") that implements BthAGATSetCallback() and BthAGATHandler() functions, and register my DLL in Windows registry under
HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\AudioGateway\BTAGExtModule
So, inside the DLL, my BthAGATHandler() function is called every time an AT command is coming in. That's why in this function, I can e.g. send a Windows message to main window of my application, to make it react on received AT command.
Correct so far?
However, obviosly, my customized DLL is not used. I entered DLL's file name including path "Program Files\at_cmd_ext_module\at_cmd_ext_module.dll" to registry, but there's no effect, even with restarting my mobile phone. I added file output to a trace file to DLL, just to see if DLL functions are called, but the file is not created, indicating there's no process using my DLL.
What can I do?
BTW: my mobile phone is a HTC Touch Diamond.
Thanks for any help.

I have only one thing to say
PM what you just wrote to a user called "vijay555"

Pressing the BT headset button runs the program listed under 'HKLM\Software\OEM\VoiceCommand\path'.
If you check my posts in http://forum.xda-developers.com/showthread.php?t=435742, I used a couple of vijay555 apps to operate the camera with my BT headset. You might be able to get something useful from the thread.

jez83uk said:
Pressing the BT headset button runs the program listed under 'HKLM\Software\OEM\VoiceCommand\path'.
Click to expand...
Click to collapse
hm, yes, that works. However, this requires that I press the button for a longer time period, about 3 seconds, what is rather uncomfortable. I'm looking for a method that allows me to push the button just short. Well, I think I'll check some of the vijay555's stuff.

That's interesting, on the 4 or 5 roms I've tried this on, the short press has run the path, and a long press of about 3 seconds dials the last phone number in history. I guess it might be down to the individual phone models.

Related

? remap green button to speakerphone

I want to map the green "phone" ("send") button to work as speakerphone with long keypress when phone is used, but I can't find any info.
OTOH I notice most ROMs use long press for this button and map usually wireless managers, which would be fine if it would work that way only when phone is not in use (and 'restore' the speakerphone function for long press when phone is in use) but I have not seen such solution yet. Has anyone done/try this?
-888- said:
I want to map the green "phone" ("send") button to work as speakerphone with long keypress when phone is used, but I can't find any info.
OTOH I notice most ROMs use long press for this button and map usually wireless managers, which would be fine if it would work that way only when phone is not in use (and 'restore' the speakerphone function for long press when phone is in use) but I have not seen such solution yet. Has anyone done/try this?
Click to expand...
Click to collapse
Hi,
Deleting Long_Send.lnk might restore original function of long press send key sir,.
Hope it help,.
Regards
Unfortunately, I don't think you can have two different functions based on context. AdvancedConfig has an option to map pretty much anything to the long send.
Garmin said:
Hi,
Deleting Long_Send.lnk might restore original function of long press send key sir,.
Hope it help,.
Regards
Click to expand...
Click to collapse
Thank you, Sir
blue_94_trooper said:
Unfortunately, I don't think you can have two different functions based on context. AdvancedConfig has an option to map pretty much anything to the long send.
Click to expand...
Click to collapse
Well, I was thinking about something more complex than I can do myself, hence my post here.
Idea is to make a small applet which will switch the function of the button based on the processes running (or other ways to determine it) and assigning different shortcut to this button. I.e. when the phone is connected it will assign speakerphone to the "send - long press", when phone is not in use it would redirect "send - long press" to the wireless manager, if you know what I mean (sorry my english); so virtually mapping the "green" button to this app could achieve that, no?
intersted also in your send key LKP!!
-888- said:
Thank you, Sir
Well, I was thinking about something more complex than I can do myself, hence my post here.
Idea is to make a small applet which will switch the function of the button based on the processes running (or other ways to determine it) and assigning different shortcut to this button. I.e. when the phone is connected it will assign speakerphone to the "send - long press", when phone is not in use it would redirect "send - long press" to the wireless manager, if you know what I mean (sorry my english); so virtually mapping the "green" button to this app could achieve that, no?
Click to expand...
Click to collapse
Bump....
I also want exactly the same setup! Great minds think alike!
Your mention about the wireless manager sounds a handy idea also, and I am at present having to use a long keypress on the left hand hardware 'record' button. This is fine, but I also have it mapped to normal press = audio record. But want to use it for something else at some point.The more buttons free the better. To be able to have the sent button act on a long key press to work the speakerphone seems to me like something that should actually be in place by default. I mean, what better way to start the speakerphone!!
I do hope someone is able to shed some light on this, or you manage to pull it off yourself you can count me in to try the fix etc.
PS:: Would a MORT SCRIPT help in this situation I wonder? I am not familiar with MS but sure someone may know a way round it.
Regards
Nick-UK
Thanks for your kind support
I wrote about this year or more ago on another forum, but few responses I got were discouraging at best.
I think if we could do such "app", we could use it for all the buttons and change their "assignments" based on the currently running apps...
With scripts we can do things like rename "Long_Send.lnk" into "Long_Send.disabled" (for example) instantly, and rename it back to "Long_Send.lnk" when i.e. pressed again. But the problem is that I don't know how to "detect" and use it in the scripts what is currently running and discriminate between foreground and background processes that are currently running?
Because what if you have two (or more!) programs that are using the same button assignments but for different purposes and both are running in the same time? say you are on the phone talking - thus long_send is assigned to speakerphone, and you also run (for example) windows media player where you assigned same green button to fullscreen display? The scripts cannot tell which one is running in the foreground by themselves, and (in this example) holding green button could bring the WMP to fullscreen instead of turning on speakerphone. Beforewe use mortscript to "activate" apropiate script, we need to know which process was started last (so - per my example - we would know that the phone was last started and not the WMP, and mortscript would run "speakerphone script for green button" instead of "fullscreen wmp script for green button"... and there is another problem: the phone is always ON on our PocketPCs since boot, and it is running all the time in the background, so it will have to differentiate between phone being active and phone in the "waiting" state...). Apologies if I sound incomprejensible, I tried to make it clearer but I don't know is it less gibberish
to cut it short: I don't think it can be done with simple scripts. But of course I may be wrong.
In theory it should work this way:
1 Long_Send.lnk -> starts our "app"
2 "App" checks what program is currently running on the screen (in the forground, or last started etc)
3 "App" executes apropiate action assigned for this program (i.e. speakerphone for active phone call, or wireless manager for today screen, etc etc)
4 "App" releases/removes/disables the action from previous step and changes it back to the state it was before when the foreground program is closed (i.e. changes back long_send from assignment to speakerphone back to default once the phone call ended)
sounds simple, doesn't it?

MS Voice command with usb earset

I've MS Voice Command and use the included usb earset with my Touch Pro.
How can I use the button on the usb earset with Voice command ?
Now when I push the little button twice the Touch begins to dial the last number.
I want to activate Voice command so that I can control my media without taken my Touch Pro from my pocket.
Nobody ?
What's the normal use of the button on the USB earset anyway ?
Not being funny but you'd be much, much better off with a bluetooth stereo A2DP headset, which has controls for managing your music as well as activating voice commands, and a built-in microphone.
The supplied USB headphones are just ****e anyway.
I highly recommend these:
http://www.foneshop.com/accessories/description/2486
I'm currently trying out Fonix VoiceCentral, seems quite capable as well for voice commands. But I also needed to be able to start it by voice in the first place, so here's what I did:
Usually on any headset or carkit, wired or via Bluetooth, or even on the phone itself, holding down the talk/call/answer button will activate the Voice Dialing.
For the Touch Pro this means that the built-in Voice Dailling application will start, but you want the MS Voice application to be started. As I didn't know how to change the program started by the Long Press Call Key functionality I decided to simply record a voice tag for the VoiceCentral application (you would make one for MS Voice instead). Once VoiceCentral is loaded, it will accept my voice commands from there on in.
So in steps:
press and hold the talk key / button until you hear a beep(ing tone)
a: if a voice tag hadn't already been recorded for MS Voice, you can now record one. To do so:
tap the Settings soft-menu key on the bottom right,
select the Application tab,
select the MS Voice application from the list,
tap the record button and say the text for the voice tag
the voice tag will be played back to you for confirmation (if not press the play button to hear it)
press ok to close the Voice Dailling application and start again from step 1
b: if a voice tag had already been recorded for MS Voice, say it and check if MS Voice is started (the voice tag will be played back to you before carrying out the request)
I hope this helps.
Coromoto said:
I'm currently trying out Fonix VoiceCentral, seems quite capable as well for voice commands. But I also needed to be able to start it by voice in the first place, so here's what I did:
Usually on any headset or carkit, wired or via Bluetooth, or even on the phone itself, holding down the talk/call/answer button will activate the Voice Dialing.
For the Touch Pro this means that the built-in Voice Dailling application will start, but you want the MS Voice application to be started. As I didn't know how to change the program started by the Long Press Call Key functionality I decided to simply record a voice tag for the VoiceCentral application (you would make one for MS Voice instead). Once VoiceCentral is loaded, it will accept my voice commands from there on in.
So in steps:
press and hold the talk key / button until you hear a beep(ing tone)
a: if a voice tag hadn't already been recorded for MS Voice, you can now record one. To do so:
tap the Settings soft-menu key on the bottom right,
select the Application tab,
select the MS Voice application from the list,
tap the record button and say the text for the voice tag
the voice tag will be played back to you for confirmation (if not press the play button to hear it)
press ok to close the Voice Dailling application and start again from step 1
b: if a voice tag had already been recorded for MS Voice, say it and check if MS Voice is started (the voice tag will be played back to you before carrying out the request)
I hope this helps.
Click to expand...
Click to collapse
Seems like a good solution but it's bloated.
Then I have to have two voice command software packages installed on my Touch Pro.
I don't want that.
I just want to press and hold the key on the wired earset so that MS Voice Command is activated.
Not being funny but you'd be much, much better off with a bluetooth stereo A2DP headset, which has controls for managing your music as well as activating voice commands, and a built-in microphone.
The supplied USB headphones are just ****e anyway.
Click to expand...
Click to collapse
I just want to use the included USB earset because you need it as an antenna for the FM radio.
Vanstra said:
Seems like a good solution but it's bloated.
Then I have to have two voice command software packages installed on my Touch Pro.
I don't want that.
I just want to press and hold the key on the wired earset so that MS Voice Command is activated.
Click to expand...
Click to collapse
In that case you have to find a solution to remap the long press call key to another application.
I actually find my solution takes a little bit longer, but works perfectly. And best of all it's something I can easily implement without any registry editing or installing other apps.
Sometimes the solutions are smiling you in the face but you just can't see them...
Go to Settings -> Personal tab -> Buttons -> Program Buttons tab. There you will find the entry responsible for starting the Voice Speed Dial application. Change it to MS Voice Command and try to use the long hold press of the USB headset Talk button.
Hope this helps!
Coromoto said:
Change it to MS Voice Command and try to use the long hold press of the USB headset Talk button.
Click to expand...
Click to collapse
That's the problem.
There's just one button available namely the 'Call' button.
So no USB headset Talk button can be selected.
Vanstra said:
That's the problem.
There's just one button available namely the 'Call' button.
So no USB headset Talk button can be selected.
Click to expand...
Click to collapse
Try changing the following value in HKLM\Software\OEM\VoiceCommand:
Name: Path
Data: \WINDOWS\sddialer.exe (this is the default by the way, should you want to restore it)
to the path and executable for MS Voice Command. Do NOT surround the path with " " if the path has a space in it (eg. \Program Files\MS\VoiceCommand) as that will not work.
Now it should work with your USB headset talk button as well, since you've modified the application associated with VoiceCommand itself, and not just the Call button assignment.
Let us know how this works for you.
Coromoto said:
Try changing the following value in HKLM\Software\OEM\VoiceCommand:
Name: Path
Data: \WINDOWS\sddialer.exe (this is the default by the way, should you want to restore it)
Click to expand...
Click to collapse
The key 'Path' is not in my registry on my Touch Pro.
Should I add it myself ?
But still this has nothing todo with assigning the headset button to 'voicecmd.exe'
Or am I wrong ?
Vanstra said:
Coromoto said:
Try changing the following value in HKLM\Software\OEM\VoiceCommand:
Name: Path
Data: \WINDOWS\sddialer.exe (this is the default by the way, should you want to restore it)
Click to expand...
Click to collapse
The key 'Path' is not in my registry on my Touch Pro.
Should I add it myself ?
But still this has nothing todo with assigning the headset button to 'voicecmd.exe'
Or am I wrong ?
Click to expand...
Click to collapse
'Path' is not a key but a value under the path ending in VoiceCommand. Do you have the key HKLM\Software\OEM\VoiceCommand? If so, what are the values in it?
This has everything to do with the headset button, as it is how the OS defines what to do when the VoiceCommand command is issued, be it by the Call button on the phone itself, the talk button on a Bluetooth headset (which I have successfully tested this with), or the talk button on your USB headset.
Coromoto said:
'Path' is not a key but a value under the path ending in VoiceCommand. Do you have the key HKLM\Software\OEM\VoiceCommand? If so, what are the values in it?
Click to expand...
Click to collapse
I have the HKLM\Software\OEM\VoiceCommand key which only contains the following values:
- LaunchAPEnable
- VoiceCmdDuration
- VoiceCmdEnable
Try adding the Path value as a String, with the value as noted above.
You're right.
Now it works.
Dank je
so now you have voice command in the usb headset? if so this should go on the tweaks list and or the wiki
y2whisper said:
so now you have voice command in the usb headset? if so this should go on the tweaks list and or the wiki
Click to expand...
Click to collapse
Yes,
Adding this registry value enabled Voice Command with the usb headset.
y2whisper said:
so now you have voice command in the usb headset? if so this should go on the tweaks list and or the wiki
Click to expand...
Click to collapse
Done! I hope others will find it usefull.
How do I get MS Voice command?
Mr.Sir said:
How do I get MS Voice command?
Click to expand...
Click to collapse
Just buy it...
The registry setting works on my Touch Pro.... if i hold the button on the headset for a few moments - very cool!

Mapping button to access phone profiles

I'm currently running m2d on my polaris. I was wondering if there was a method for me to map one of the buttons on the phone so that it will open the phone profile windows (ie. normal, vibrate, silent). Its somewhat of a hassle to have to change the profile since it requires several button presses to do so.
Also, another idea would be to have a program that ran in the background and each time you pushed a mapped button on the phone, it would cycle through the different profiles. This way, you might not have to look at the phone when you want to change the profile (food for thought). Not sure if anybody or company has come up with this yet.
"long press end key"... an HTC software, changes between unmuted and vibrate. i use it all the time.
you can also find the shorts to switch between profiles in the forum and map it to hardware buttons (and even use cycles) using HButton

[Q] Non-Touch compactible rom?

Hi guys,
My digitizer has died, and till the new one comes I was thinking of how I could use my T7272, I can write the SMS fine, but I can't send them out, cause the button is on the screen itself... is there a rom I could use freely w/o using the touchscreen?
P.S.
Is the digitizer hard to replace?
You could check out AE Button; it has some options like button presses that will activate soft buttons. I suspect you could send sms's using it. You could also try using mortscripts with AE button that will do stuff you need. There are some pretty simple scripts that will simulate screen taps, and you could assign them to a button push. I'd rather have a working touchscreen, though.
Here are some of the commands:
# 91: startmenu (on some devices it might be home button)
# 92: back key (not the backspace key but back key for closing applications which is available on some devices such as diamnd or blackstone)
# 93: menu key
#112: left softkey
#113: right softkey
#114: accept call (green button)
#115: hang up (red button)
#117: volume up
#118: volume down
#126: data disconnect
#127: toggle speaker
#133: devicelock
#223: power off
I use one to lock the device. Basically, you just put this:
Code:
sendspecial(133)
in a .txt file, and change the extension to .mscr. I call it Lock.mscr, and I have it assigned to a few different actions (like when a call comes in, a script locks the phone). So, sendspecial(112) and sendspecial(113) might help you out. There's also one for hitting 'Ok' in popups, which would probably work for you. I can't find it, though (google 'sendspecial' and you'll find it, it's all on msdn).
Anyway, if you install mortscript (maybe you already have it) as well as AE Button, you could assign button pushes to carry out those actions. Just stick the scripts somewhere easy, like the start menu, and it will be easy to set up.
If you want to get more complicated, there are also mortscript commands that simulate button pushes on the screen. You could set one up that would do just about anything. Also, SK Schema does similar stuff. You can write fairly simple sequences of button pushes that will do just about anything. This is one that I use that runs SK Tools Pim backup (I have it scheduled to run every night in the middle of the night).
#r(\windows\sktstart.exe) #p(STH:20)
#tap(146;602) #sleep(15000)
#tap(110;533) #sleep(500)
#tap(339;455) #sleep(500)
#tap(126;604) #sleep(500)
#tap(114;84) #sleep(500)
#tap(146;99) #sleep(5000)
#tap(310;254) #sleep(90000)
#tap(433;602) #sleep(10000)
#pwr() #sleep(10000)
Click to expand...
Click to collapse
Basically, the backup tool gets launched in line 1, then there are a bunch of screen taps (w/ delays, to make sure everything is ready) in the menus to get the right options selected, followed by turning the device off.
I`m not sure... But i saw somewhere app that emulate a mouse (cursor) and you will be able to control this mouse with your D-pad... But I can be wrong...
I can't install that mortscript w/o the touchscreen though..damn it..: )..
Get MyMobiler, and use it to run your device off of a pc. You should be able to get that working.

[TUT] Tasker - Hardware Button Control | Screen Off Media Player [BETA]

WARNING! THIS PROFILE IS IN BETA. DO NOT INSTALL UNTIL YOU HAVE READ BELOW!
Beta
When creating this profile I experienced bootloops and splash-screen freezes. If you are not comfortable with how to restore your device from these states, then please wait until it has been thoroughly tested before applying the profiles and tasks.
Testers
If there are any of you left after reading the above I was unable to totally identify what caused the crashes. I hope that through my own testing I have removed the probable causes, but I cannot promise. Read on if you’re still game and post below to let me know you’re in!
New to Tasker? Download your free trial from here
Theory
Have full media control using your device’s hardware buttons when the screen is off. Normal functionality restored when the screen is on.
Current Shortfalls/Work-in-progress
Fast reboot required to allow for system changes (15 second reboot).
- To my knowledge, system changes require this to take effect. Please tell me if you know different? As a consequence, the profiles take about 25 seconds from start to finish to activate and deactivate.
Hardware keys control media at all times, not just when the screen is off.
- A revert profile currently takes care of this, so it’s still more than usable.
Unable to configure hardware keys to only perform actions on long-hold
- I’m working on this, but I think it may be down to Gingerbread/kernel restrictions?
Unable to get trackpad click to perform an action
- Again, Gingerbread/kernel/ROM restrictions?
Ability to skip music folder commands unknown
- I’m working on this
Pop up menu tasks are ugly
- I’ll sort out a suitable background image and work out how to change the icons.
Preparation
This may look like another mammoth, ball-ache of a tutorial, but it’s pretty simple really – make yourself a coffee and by the time you’ve finished it, you’ll be done.
You must have full root read/write access.
1) Ensure you are running the latest version of busybox free from the Market. Even if your current ROM comes with it preinstalled, the Market version allows for this and will update it according. This is essential, as a probable cause of the bootloops I experienced. Reboot after updating it.
2) Install the Locale Execute Plugin free from the Market
3) Download Button Saviour Root free from the Market. We will be messing with the hardware keys, so if you lose control of them, this application will save you by displaying them on the screen. Have a play with this application and make sure you are fully versed with using it just in case.
4) Nandroid backup after you’ve done the above so you don’t have to reinstall everything again should things go wrong {We will be mounting the system for full write access}.
Installing and Customisation
Basically, we will be creating a file with the media controls in and asking Tasker to overwrite the existing file when we want to use it – simple.
Using a file explorer, create a folder within the sdcard/Tasker folder called ‘mediacon’. Within this folder, create another called ‘orig’. Navigate to
Code:
system/usr/keylayout/
Take a copy of the file bravo-keypad.kl (bravo will be replaced with your device name (unless you have a bravo!)). Paste it in the ‘mediacon’ folder you created. Paste another copy in the ‘orig’ folder. Open the file in the mediacon folder with a text editor on your phone (or alternatively copy/push it to your pc and view it there).
From the .zip file below, view the bravo-keypad.kl file on your pc using an application such as Notepad ++ (download free from here) or a simple text editor (although the layout may be a little confusing).
You’ll need to compare the two and see what the differences are. The most important additions to the bravo-keypad.kl to enable the media actions on the hardware keys are:
Code:
key 139 MENU WAKE_DROPPED
key 158 BACK
key 217 SEARCH
To:
Code:
key 139 MEDIA_PLAY_PAUSE WAKE
key 158 MEDIA_PREVIOUS WAKE
key 217 MEDIA_NEXT WAKE
The hardware key numbers and the remaining content of the file will no doubt be different from device to device, I assume it will also be different betweens ROMs and user settings too. You will need to preserve the remainder of the file.
Please can I ask you to post the contents of this file in ‘code’ tags if you can’t see that someone has done this for your device already. Could you also detail your ROM and Kernel. It will help others to quickly edit the file with the correct settings without scratching their heads too much – community spirit and all of that.
As you can see all we are doing is changing the three hardware buttons (menu, back and search) to perform media controls instead. You’ll need to edit the file in the ‘mediacon’ folder (either on your device or drag/push to your pc and then back again) to reflect this. Make sure you do not change the file in the ‘orig’ folder! Remember, your device may have different key numbers for the hardware buttons, this won’t matter, just edit the ones listed as menu, back and search and not the ones that have a # before them.
So, now you have your edited file done and your original file stored safely. We’re nearly there!
Install the profiles and tasks and make sure they are unchecked until you have edited them for your needs. The Tasker Media Control V1.zip folder contains the following two profiles:
MediaBoot
MediaControl
It contains the following 8 tasks:
ResetMedVar
MediaMenu
MediaContBoot
MediaContOff
MediaContOn
FastReboot
FastBootConfirm
ContState
The triggers for the tasks are:
Device Boot
Headset Plugged
If you currently have any other profiles that load music apps or perform other tasks when the headset is connected, please disable these.
Firstly, open the task MediaContOn. Click on action 4 (execute action) and select edit. You’ll see two mentions of the bravo-keypal.kl. Replace ‘bravo’ with your device name, or alternatively with whatever the original file was named in system/usr/keylayout/ (I assume it is your device name?). You’ll need to press the back button once you’re done.
Secondly, do exactly the same in the task MediaContOff.
Finally, open the task MediaContBoot and alter action number 2 to the music application you use (if you don’t use the stock android player).
That’s it! You’re done!
Terminal Command Information
There will be a number of terminal commands running, to copy and overwrite files which will mount the /system as read/write. This of course always has its risks, so ensure you have that nandroid backup just in case….
In the task FastReboot, there is the terminal command
Code:
Killall system_server
This command is not without its risks too, but it is the only way to avoid a full reboot in order to apply the system changes.
Running the task for the first time.
In the profiles and tasks, two variables are created:
%EARP – This is set to 2 when the headset is connected and 1 when it is disconnected. By removing the headset (%EARP =1), you will trigger the exit task which will begin to revert the media button changes.
%MEDIACONT – It was necessary to create this variable to avoid Tasker reacting to the headset plugged trigger after the reboot and wanting to start copying the files all over again. If %MEDIACONT = 2, Tasker will therefore know you are already controlling the hardware buttons and it will prevent the headset profile running again. The variable is changed to a value of 1, once the button controls are returned to normal. Simple hey…
When testing, sometimes these variables were showing the wrong value, due to the options to ‘cancel’ at various stages of the tasks. Before you connect your headset and run the profiles for the very first time only, you will need to open the task ResetMedVar and click on ‘test’. This will set both values to 1. At any point, if your variables go out of sync, you can repeat this exercise so the headset connected/disconnected will trigger the profile/exit task accordingly.
So, open ResetMedVar and click test to set the variables to 1. Tick the MediaBoot and MediaControl profiles to activate them and apply to exit Tasker. Insert your headset!
You’ll be prompted with the first pop-up asking if you want to active the media controls. Click to activate (it will disappear in ten seconds and cancel otherwise). Shortly after, a confirmation pop-up will confirm the files have been copied correctly. Shortly after that, another pop up will confirm you wish to proceed with the fast reboot. Click to activate and you’re device will reload the system. It should take around 15-20 seconds.
When the device boots back up, the Button Saviour application will be loaded, to ensure you have button control if things go wrong. Pressing the little arrow on the right hand side of the screen will enable a back button that you can press to back out of the screen. You media player should then load. Choose a happy tune (from a folder/album/artist that has more than one song) (not forgetting you can’t use the back button other than on the screen!) and turn the screen off.
Hopefully, search will skip forward a track, back will skip back a track and menu will play/pause the playback. WHOOP!
When you’ve finished testing, switch the screen back on, unlock it if necessary and then remove the headset. Tasker will then perform the above steps again, replace the files back to the original ones before confirming the fast reboot.
15-20 seconds later, hopefully all of your hardware buttons will then perform as normal!
Job done.
Extras
I couldn’t get the trackpad/optical joystick to perform an action on my device. There is an entry at the very end of MediaContOn and MediaContOff after the STOP. These entries copy and reversely delete a curcial-oj.kl file to /system/usr/keylayout/ that is supposed to enable the trackpad to work. Drag these to position 5 if you’d like to test them on your device to see if they work. Let me know!
Credits
localh0st for the curcial-oj.kl file here
Decad3nce for his key remapping guide here
The mass of other threads I read through on XDA to gain the knowledge to do this and the devs of the free apps mentioned above - I'm sure they'd appreciate a donate.
Oh and of course the dev of Tasker! What an application.... (I'm not on commission I promise!)
FAQ
Q) I have many other Tasker questions, can I post them here??
A) To avoid clutter, probably best to use this official Google group
Q) Where can I learn more about Tasker?
A) The manual and Profiles and step-throughs on the Tasker wiki and you’ll be up to speed in no time.
Change Log
Confirming pop up tasks may be removed in V2.
Bugs
Let me know...
Future Changes/Requests
Find another way to apply system changes without the need of fast reboot.
Hardware keys to only control media when the screen is off.
Configure hardware keys to only perform actions on long-hold to avoid 'pocket-presses'.
Get trackpad/optical joystick click to perform an action
Enable the ability to skip music folders and/or directories.
Pop up menu tasks need sprucing up.
Installation Instructions
In menu options/profile data 'Import One Task':
ResetMedVar
MediaMenu
MediaContBoot
MediaContOff
MediaContOn
FastReboot
FastBootConfirm
ContState
In menu options/profile data 'Import One Profile':
MediaBoot
MediaControl
The thanks meter lets me know I'm appreciated!
Heh, looks like Brandall is taking Tasker to new heights.
Nice work mate, but I just have to add something though...
Using this can help, BUT, it can also "cripple" those Tasker scripts you've posted about battery saving.
Using Tasker for zipping files and extracting them loads my CPU to the max, also, anything that uses notifications and file reads/writes does that too, eventually, using more battery...
Using this I can see a situation where some user might just lock/unlock their screen very often and rapidly, this might cause a major stress on the CPU, ultimately, nulling and voiding your battery saving scripts and potentially causing harm to CPU/battery/device.
And in any case, turning the screen on to switch tracks is really not that much of a hassle, for me anyway.
This is how I see it, just my 2cents.
But keep up the good work buddy, you seem to have been able to utilize Tasker to a MUCH greater extent than what I was able to, will definitely follow your posts.
Gramlengo said:
Heh, looks like Brandall is taking Tasker to new heights.
Nice work mate, but I just have to add something though...
Using this can help, BUT, it can also "cripple" those Tasker scripts you've posted about battery saving.
Using Tasker for zipping files and extracting them loads my CPU to the max, also, anything that uses notifications and file reads/writes does that too, eventually, using more battery...
Using this I can see a situation where some user might just lock/unlock their screen very often and rapidly, this might cause a major stress on the CPU, ultimately, nulling and voiding your battery saving scripts and potentially causing harm to CPU/battery/device.
And in any case, turning the screen on to switch tracks is really not that much of a hassle, for me anyway.
This is how I see it, just my 2cents.
But keep up the good work buddy, you seem to have been able to utilize Tasker to a MUCH greater extent than what I was able to, will definitely follow your posts.
Click to expand...
Click to collapse
Hi Gramlengo, I guess I can count you out as a Beta Tester!?
The logcat/zipping entries should be deleted from the other profiles if you aren't analysing them anymore to see what your phone is up to. As you said, you will use much less resource that way (they will be removed in next release)!
I do a lot of running, so being able to skip track through my pocket (without waking the phone) is essential = my motivation for working this out. For me, being in screen off state therefore won't clash with the other profiles... although saving battery power wasn't a consideration in this profile - there is plenty to spare these days The notifications are for testing and user interaction - I don't use them in my profile, it just overwrites the file and reboots...
I'm running out of ideas for the next profile, I'm open to suggestions! Good to hear you're following my posts, I'll look forward to your feedback - now sign up for this beta, you know you want to....!
Heh, I'd love to be beta testing your ideas!
Gramlengo said:
Heh, I'd love to be beta testing your ideas!
Click to expand...
Click to collapse
Looks like you might be alone there!!
Alright, finally got a time to test this one:
First, I plugged in my headset and got the two pop-up questions which I clicked activate on. Then, nothing happened. After about 10-15 seconds I got a superuser request for the locale execution plugin which i clicked allow and remember my choice on. Still nothing happened. After another 10-15 seconds I got another superuser request from busybox and quickly after a superuser request from locale execution plugin, both which I clicked allow and remember my choice on.
Then the phone finally fast-rebooted. When it was back up and fully loaded, the music application started. I started a tune, switched off my phone screen, and clicked the back button, nothing happened. I clicked the search button, nothing happened. I turned the screen back on, and hey, the back button still functioned as a back button, and the search button still worked as a search button.
What did I do wrong?
My device is a desire HD running leedroid Hd (latest version and kernel).
Does this have something to do with the Desire HD having capacitive buttons?
Will try again, but this time by remapping the physical volume buttons and the physical power button.
I have also attatched the original keymapping file, and my modified one.
Edit: That didn't work. Opened root explorer to see if the values were right, and they were. I also noticed another keymapping file called "spade-keypad-v0.kl" (without the "). Will try to edit the values in this file to see if that will work.
Edit2: Editing the back,menu and search button in spade-keypad-v0.kl didn't work. Will try to remap the volume and power keys.
Edit3: Ok, two more combinations to test: Editing the capacitive buttons in both files, and afterwards editing the physical keys.
Edit4: No luck, I have attatched the other spade-keypad-v0.kl for you to look at. Hope you can fix this!
torsrex said:
I have also attatched the original keymapping file, and my modified one.
Edit: That didn't work. Opened root explorer to see if the values were right, and they were. I also noticed another keymapping file called "spade-keypad-v0.kl" (without the "). Will try to edit the values in this file to see if that will work.
Edit2: Editing the back,menu and search button in spade-keypad-v0.kl didn't work. Will try to remap the volume and power keys.
Edit3: Ok, two more combinations to test: Editing the capacitive buttons in both files, and afterwards editing the physical keys.
Edit4: No luck, I have attatched the other spade-keypad-v0.kl for you to look at. Hope you can fix this!
Click to expand...
Click to collapse
Appreciate your testing torsrex. Nothing's ever simple is it... Did you fast reboot every time you applied changes to the files?
In the file spade-keypad-v0.kl, did you set them like this:
Code:
key 102 HOME WAKE_DROPPED
key 139 MEDIA_PLAY_PAUSE WAKE
key 158 MEDIA_PREVIOUS WAKE
key 217 MEDIA_NEXT WAKE
Check they had applied with a file explorer first and then fast rebooted?
Let me know!
I checked that the files were changed every time with root explorer. I also tried a normal reboot if the fast reboot didn't work (Did this all the times I had changed a file), and I tried copying the files manually with root explorer.
I tried to change the values of the spade-keypad-v0.kl to what you typed, but that didn't work either. Maybe I should also mention that after I changed the back-key, menu-key and the search-key to media controlls, the home button also won't work.
Does this have something to do with having capacitive buttons and not physical buttons (I think the button turns them self off when I put on the screen lock)?
torsrex said:
I checked that the files were changed every time with root explorer. I also tried a normal reboot if the fast reboot didn't work (Did this all the times I had changed a file), and I tried copying the files manually with root explorer.
I tried to change the values of the spade-keypad-v0.kl to what you typed, but that didn't work either. Maybe I should also mention that after I changed the back-key, menu-key and the search-key to media controlls, the home button also won't work.
Does this have something to do with having capacitive buttons and not physical buttons (I think the button turns them self off when I put on the screen lock)?
Click to expand...
Click to collapse
Ok, sounds like you've been pretty thorough. I knew the set-up would be different device to device, but didn't think it would be difficult to establish how.
I guess all we can do is use an app to discover the changes that need to be applied on your device. Check out ButtonRemapper and after it applies the updates, take copies of the files it has adjusted (assuming the app works for you!). Let me know!
Tried the buttonRemapper application from the market, and It worked! The buttons (menu, back and search) got remapped, but I noticed that the screen needed to be turned on before I could press them (no need to enter any pin code or dragging down the slider, just pressing the unlock button). I have atattched all of the kl-files.
torsrex said:
Tried the buttonRemapper application from the market, and It worked! The buttons (menu, back and search) got remapped, but I noticed that the screen needed to be turned on before I could press them (no need to enter any pin code or dragging down the slider, just pressing the unlock button). I have atattched all of the kl-files.
Click to expand...
Click to collapse
Ok, I'm confused now... I can't see any difference between what you did to what the app has done...? Can you?
When the changes are applied in the app, it must take a copy of the original files it's about to change and store them somewhere. Is there a ButtonMapper folder on the SD card? Perhaps have a look in there when the controls are changed for media? See if there is just one file, or if there's an additional one we haven't considered..?
Then we'll solve the screen off use!
Hm, can't find the backup folder, it isn't on the sd card and it's not in the keylayout folder.
torsrex said:
Hm, can't find the backup folder, it isn't on the sd card and it's not in the keylayout folder.
Click to expand...
Click to collapse
Damn it! I'm going to have a search around and see what I can come up with... I'll be back...
Is your device fine after the fast reboots? That's why I put this as a beta as I didn't know how stable it would be compared to a full reboot...
Using the buttonremapper application, I didn't face any issues. Using the tasker-profiles (editing the files manually) caused the home button, back button, menu button and search button to not function any more and I had to restore a nandroid backup. Maybe you should get the correct setup files for each phone before you take it out of beta
By the way, I sent a message to the developer asking him where the buttonremapper application saves it's backup-files, hopefully I will get a quick answer!
torsrex said:
Using the buttonremapper application, I didn't face any issues. Using the tasker-profiles (editing the files manually) caused the home button, back button, menu button and search button to not function any more and I had to restore a nandroid backup. Maybe you should get the correct setup files for each phone before you take it out of beta
By the way, I sent a message to the developer asking him where the buttonremapper application saves it's backup-files, hopefully I will get a quick answer!
Click to expand...
Click to collapse
Good work! And thanks for testing... I need a lot more volunteers like you for each different device, but I don't see them flocking!
Just got a reply from the developer: "in its data directory in the subdirectory files: /data/data/com.beansoft.buttonremapper/files."
So here you go.
torsrex said:
Just got a reply from the developer: "in its data directory in the subdirectory files: /data/data/com.beansoft.buttonremapper/files."
So here you go.
Click to expand...
Click to collapse
Good work again Sir! I'll take a look at the files and see what else is needed for devices with capacitive buttons (which I'm hoping is the only difference...).
Someone just released a trackpad wake for all AOSP ROMs (without messing with the kernel?) over in the Desire forum, so I'm currently looking at that too...
Always something to do... speaking of which, I need you over here next
So I was bored tonight and thought I'd try and revive this project.
What I've got is still a work in progress, but it basically involves using Buttonremapper to reassign volume_up and volume_down to fast_forward and rewind, then use Tasker's 'state: media button pressed' to forbid any other apps from responding to those two buttons and have them act out Tasker tasks only.
One button is set to play/pause media (if screen is off) and raise volume (if screen is on) and the other set to skip forward media (if screen is off) and lower volume (if screen is on). The end result is almost full media control from hardware buttons without having to look at the phone or take it out of your pocket: use the volume up and down buttons to skip and pause tracks, or press power to turn the screen on and change their function to volume up or down temporarily before reverting back to skip and pause as the screen times out. You don't need to be looking at the screen while this is happening.
The problems at the moment are:
1) While two buttons have effectively been made into four, there are five necessary functions - volume up, volume down, play/pause, next track, previous track. I figured previous track was the least important but it would be nice to have it as well.
2) Normally the volume buttons in Android are context-sensitive, changing media or system or whatever volume depending on where you are. With this they're always assigned to media volume, so you'd need an app like Audiomanager or something to change the volume of other things.
3) Other problems that I haven't realised yet.
One other thing, Tasker's 'state: media button pressed' lets you set both long presses and short presses, but they don't seem to play nice together. I think both the long press and short press tasks activate and conflict when the button is held down, but I haven't had a look at this yet.

Categories

Resources