Tools:
TugZip - TUGZip - The Free Archiving Utility (but any .tar archiver will do)
SETool2 Box/A2Uploader
Text Editor - Notpad/WordPad/EmEditor etc
Custom Softkeys on Stanby Screen (applies to "all" ###_###_HOOK.itm files)

In this example we shall be adding a link Opera Mini on the Left softkey of the standby screen, a link to the File Manager on the right softkey, and for the sake of it we'll add another link to Opera Mini on the Center softkey of the standby screen along with an image.
It is being reported that the W910 is having problems with linking Internal applications (File Manager) to HOOK's, personally I think its poor modding as the syntax may differ slightly, unfortunately I only have a K850 so cannot look into why W910 is having these troubles, sorry.
LEFT_SOFTKEY_HOOK (java shortcut)
CENTER_SOFTKEY_HOOK (java with image)
RIGHT_SOFTKEY_HOOK (Internal shortcut)
The xml can be broken down into 4 tags.
<item_text>
</item_text>
<item_help>
</item_help>
<item_icon>
</item_icon>
<item_action>
</item_action>
Item text - Label
Item Help - doesn't apply to softkey hooks, but you can also use this guide to add shortcuts in other areas (like the default SE HOOK's scattered around the File Manager, Media Player etc and would be set in the same way as the text tag).
Item Icon - Icon
Item Action - Action (Java/Internal Link (FileManager)/Url)
CODE
<?xml version="1.0" encoding="utf-8"?>
<MenuItem version="1.0">
<item_text>
<TEXT lang="en" str="Opera" />
<TEXT default_lang="en" str="Opera" />
</item_text>
<item_help>
<TEXT lang="en" str="" />
<TEXT default_lang="en" str="" />
</item_help>
<item_icon>
<RIGHT str="icon.png" />
</item_icon>
<item_action>
<ACTION type="JAVA" suite_name="Opera Mini" suite_vendor="Opera Software ASA" entry_point="Browser" />
</item_action>
</MenuItem>
<MenuItem version="1.0">
<item_text>
<TEXT lang="en" str="Opera" />
<TEXT default_lang="en" str="Opera" />
</item_text>
<item_help>
<TEXT lang="en" str="" />
<TEXT default_lang="en" str="" />
</item_help>
<item_icon>
<RIGHT str="icon.png" />
</item_icon>
<item_action>
<ACTION type="JAVA" suite_name="Opera Mini" suite_vendor="Opera Software ASA" entry_point="Browser" />
</item_action>
</MenuItem>
/*
Naming your hook.
-------------------------------
<item_text>
</item_text>
-------------------------------
*/
<item_text>
<TEXT lang="en" str="Opera" />
<TEXT default_lang="en" str="Opera" />
</item_text>
<TEXT lang="en" str="Opera" // didn't investigate fully but common sense tells me you can set a different text for different languages (en/ru etc...)
<TEXT default_lang="en" str="Opera" // default language string.
/*
Adding infomation (help text)
-------------------------------
<item_help>
</item_help>
-------------------------------
*/
<item_help>
<TEXT default_lang="en" str="Testing info string" />
</item_help>
Set in the same way as as the item_text tag.
/*
Giving your HOOK an icon.
-------------------------------
<item_icon>
</item_icon>
-------------------------------
*/
<item_icon>
<RIGHT str="icon.png" />
</item_icon>
RIGHT // this is align tag, always upper case lettering, RIGHT/LEFT/CENTER, you only need to edit if you have also set a text label (which I havent in the CENTER_SOFTKEY_HOOK example).
str="icon.png" // icon name (must include file extension .png).
I recommend icon.png to be no more then 20pxls in hight when adding an icon to softkeys, 40x38pxl in the media center and 24x24pxl in other areas (based on 240x320 screen size)
/*
Linking a Internal application.
-------------------------------
<item_action>
</item_action>
-------------------------------
*/
<item_action>
<ACTION type="Internal" str="FileManager" />
</item_action>
ACTION type="Internal" // Internal
str="FileManager" // this is the name of the application you wish to link to, these can be found in the element names in your menu.ml file, some branded Firmware use different element names like Orange branded Firmware for example (also MediaPlayer/MediaPlayer_Video may differ across K/C/W series models)
/*
Assigning URL to your hook.
-------------------------------
<item_action>
</item_action>
-------------------------------
*/
<item_action>
<ACTION type="URL" str="http://www.???.com" mode="Normal" />
</item_action>
ACTION type="URL" // URL should always be upper case lettering!!!
str="http://www.???.com" // link, can also be set to on internal web page saved on your phone (if your big on wap/http etc... you may create your own custom web page with custom shortcut links to all your favourite sites)
mode="Normal" // ??? didn't investigate.
An example of linking to an internal web page.
<ACTION type="URL" str="file:///card/other/page.htm" mode="Normal" />
/*
Linking a java application to a softkey.
-------------------------------
<item_action>
</item_action>
-------------------------------
*/
<item_action>
<ACTION type="JAVA" suite_name="Opera Mini" suite_vendor="Opera Software ASA" entry_point="Browser" />
</item_action>
All the information we need can be found in 1 or two places, 1. the jad file of for the java application you wish to link, 2. the MANIFEST file within the .jar archive of for the java application (located in the META-INF folder).
ACTION type= "JAVA" // this we should leave unless you wish to change the type of hook (see below).
suite_name= "Opera Mini" // this infor is the application name, found in the "MIDlet-Name:" tag of the MANIFEST file.
suite_vendor="Opera Software ASA" // this infor can be found under the "MIDlet-Vendor:" tag of the file.
entry_point="Browser" // then entry point is the one that people normally have trouble with, in 99% of cases this is the last piece of information taken from the "MIDlet-1:" tag (highlighted in red Browser), although it can be defined in the actual java code be the application author, in which case you would need to contact the author which is extremely rare.
Opera Mini MANIFEST file (right click, open with notepad)
MIDlet-Name: Opera Mini
MIDlet-1: Opera Mini, /i.png, Browser
MIDlet-Data-Size: 25600
MicroEdition-Configuration: CLDC-1.0
MIDlet-Icon: /i.png
MIDlet-Info-URL: http://mini.opera.com/
MIDlet-Permissions-Opt: javax.microedition.io.Connector.sms, javax.wir
eless.messaging.sms.send, javax.microedition.io.Connector.socket, jav
ax.microedition.io.Connector.file.write, javax.microedition.io.Connec
tor.file.read
MIDlet-Vendor: Opera Software ASA
MIDlet-Permissions: javax.microedition.io.Connector.http
MIDlet-Version: 4.2
MicroEdition-Profile: MIDP-2.0
MIDlet-Description: Opera Mini
/*
-------------------------------
Packing into .itm file
-------------------------------
*/
Now that we have "correctly" edited the xml we must save and pack it ready to be uploaded to our phone, if your using a .txt file to write the xml we must "save as" and select "all files" and name it "LEFT_SOFTKEY_HOOK.xml" (its important to save as .xml file, and should be named as the HOOK you wish to customize), now we must pack the file into a standard .tar archive named "LEFT_SOFTKEY_HOOK.itm" file extension, this is done with TugZip, shown below.
If you were to set an icon, you would also pack .png file along with xml,

/*
-------------------------------
Activating the hook
-------------------------------
*/
To activate the hook we simply upload the .itm file along with a "blank" customize_upgrade.xml file to "tpa/preset/custom" and switch the phone on, uploading the blank customize_upgrade.xml activates the hooks, without uploading this you will loose the use of your softkey untill you either activate it/delete the .itm file/master reset.


