About

KaiserTweak is a little tool that tweaks some of your HTC Kaiser (P4450, TyTN II, Vario III) registry settings. Making it took several hours of my life, so you better enjoy it. Note that some tweaks may work on devices other than the Kaiser, but I've looked at the factory settings from my own Kaiser to get default values and such, so take care with other devices.

If you like to donate, here's a PayPal button for you:

Download

You can download a ZIP below, containing the KaiserTweak EXE and an XML file containing the actual tweaks. Unzip it somewhere, and copy both the files to the same folder on your phone. Then run the EXE, and voila :)

KaiserTweak.zip +- 400kb

Note: Most of the tweaks require a soft-reset to become current. I'd advise setting your values (changes are applied to the registry on value selection) and then always doing a soft-reset.

Nika's XML Updates

While I am working on a new version of this site and new features for KaiserTweak itself, Nikagl (from XDA-Developers) is maintaining the KaiserTweak XML file.You may find a newer version of this file in the KaiserTweak XML topic. Note that you should not reply to that topic! Do that in the KaiserTweak discussion topic!

Screenshot

By popular request, here's a screenshot

KaiserTweak

Tweaks Listing

Call
- Fast Sleep
- Sleep
- Show Battery Icon
- HTC or Windows Mobile Dialer
- Volume Change Beeps
- Ringtone

Text Messages
- Sent Notification

Data (GPRS/EDGE/HSDPA/WIFI)
- Disconnect After
- Always On
- Enabled
- HSDPA
- Wifi standby mode
- Wifi Certificate Message

Bluetooth
- BitPool
- SampleRate
- UseJointStereo

TCP/IP
- TCP Connect Resends
- TCP Data Resends
- TCP Window Size

Security
- Not-certified Warning

Keyboard
- Backlight Timeout
- Slide Wake

Camera
- Save Location
- GPS Photo
- Rotate Bug
- 3MP Panorma Shot (ie. 6MP Camera)

GPS
- Assisted GPS

Power Managment
- Memory Card
- AsyncMac1
- PPTP1
- L2TP1

Notifications
- AC Resume from Suspend
- Battery Resume from Suspend

User Interface
- Window Animation
- Menu Animation
- Vertical Scrollbar Width
- Vertical Scrollbar Button Height
- Horizontal Scrollbar Button Width
- Horizontal Scrollbar Height
- Startup Animation

ClearType
- Landscape
- PocketIE

PocketIE
- Max. Connections
- PIE User Agent CustomBase
- D-Pad Scroll Navigation

TouchFLO
- Sensitivity
- Scroller
- Sound

Today Screen
- Title Bar - Battery / Clock
- Title Bar - Clock Settings
- Date Display
- Wireless Today

HTC Application
- Music Tab
- Music Player for HTC Home Plugin
- Unlock HTC Home
- Scroll, Zoom and Rotate in HTC Album
- X Button in HTC Album
- HTC Home e-mail button

Contacts
- SIM Contacts

Call Log
- Log Clean Period

Locations
- PocketIE Downloads
- Saved Audio
- Saved Video
- Saved Images

Cache
- File System Cache
- File System Filter Cache
- GDI/Font Cache

Tools
- Empty Start Menu
- Default QuickGPS Settings

Credits

I just made the tool, credits for the reghacks go to the good people of MoDaCo, xda-developers and GoT.

Bugs, tweak requests, etc

Please post those here. If you are requesting addition of a new tweak, please provide as much info as possible about it, like the relevant registry keys and their settings and what exactly it does.

KaiserTweak XML format

The KaiserTweak XML file is an XML format with kaisertweak as root. The root can contain multiple category nodes, which in turn can contain multiple tweak nodes, in the following way:
<kaisertweak>
  <category>
    <tweak>
      ...
    </tweak>

    <tweak>
      ...
    </tweak>
  </category>

  <category>
    <tweak>
      ...
    </tweak>

    <tweak>
      ...
    </tweak>
  </category>
</kaisertweak>

Notes on the following documentation:
- Required child nodes and attributes are underlined
- All tags, attributes, and attribute values are lowercase. The default attribute value (if any) is underlined

Notes on implementation:

Anywhere keys are used, shorthand format is used: Root\Key\Name. Also, the root may be abbreviated. The following root abbreviations are available:
HKCR: HKEY_CLASSES_ROOT
HKCU: HKEY_CURRENT_USER
HKLM: HKEY_LOCAL_MACHINE

Example:
HKLM\Drivers\BuiltIn\RIL\EnableFastDormantDisplayDuringCall

/kaisertweak/category

Attributes: none
Children: title, tweak
Required: Yes

Defines a category. Categories without any relevant tweaks are not displayed.

/kaisertweak/category/title

Attributes: none
Children: text
Required: Yes

Defines a category's title.

/kaisertweak/category/tweak

Attributes: version
Children: title, each, device, value, key, description
Required: Yes

Defines a tweak.

/kaisertweak/category/tweak[version]

Values: all, wm5, wm6
Required: No

Defines for which Windows Mobile version the tweak shows up.

/kaisertweak/category/tweak/title

Attributes: none
Children: text
Required: Yes

Defines a tweak's title.

/kaisertweak/category/tweak/each

Attributes: display
Children: text
Required: No

'Repeats' a tweak for multiple registry keys. The displayed tweak title becomes ./tweak/title + ": " + ./tweak/each[display] . The text content of this node is the key pattern, where the patterning is done with the * (star) character, just as with filenames, for example:
HKLM\Comm\ConnMgr\Providers\*7C4B7A38-*\Connections\*\AlwaysOn
Ofcourse, when you do this, how do you know the actual key used? You don't, and this is the only time you are allowed to use the key node without text content. If you do this, the actual key for this tweak is used. Also note that you cannot have a key end with a star - there must be a part after it.

/kaisertweak/category/tweak/each[display]

Values: negative integer
Required: Yes

This attribute defines the text to use for the title of tweak. This is done by selecting a part of the used key, and appending it to the tweak title. -1 defines the rightmost part of the key, -2 the one left of that, etc.

For example, image the following each node:
<each display="-2">HKLM\Comm\ConnMgr\Providers\*7C4B7A38-*\Connections\*\AlwaysOn</each>
and the following registry entry:
HKLM\Comm\ConnMgr\Providers\{7C4B7A38-XXX-XXX-XXX}\Connections\T-Mobile Internet\AlwaysOn
and a tweak/title of "Always On", would result in this key getting the title "Always On: T-Mobile Internet". Obviously it only makes sense to use a value for display that corresponds to a part of the key that has * in its pattern.

/kaisertweak/category/tweak/device

Attributes: match
Children: text
Required: No

Allows matching by device name (found in Control Panel --> System --> Device Information --> Identity --> Model). This is "Kaiser" for all TyTN II based devices. If this node is ommitted, all devices are matched. You may add as many device nodes as you need.

/kaisertweak/category/tweak/device[match]

Values: is, isnot
Required: No

Defines the matching mode. Note that you can have multiple device nodes, but you cannot mix the match mode between them, and this wouldn't make sense. If you use is, only those devices will get the tweak; if you use isnot, all other devices will get the tweak.

/kaisertweak/category/tweak/value

Attributes: default, disabled, advised, current, custom, value
Children: text
Required: Yes

Multiple value notes define the list of options a user can select. The text content of the node is the displayed value.

/kaisertweak/category/tweak/value[default]

Values: default
Required: One value node should have this attribute set

Denotes that this is normally the default setting if no tweaking has been done. If for some reason the value cannot be gotten from the registry, this value will be the one selected, if no value is found with disabled set.

/kaisertweak/categroy/tweak/value[disabled]

Values: disabled
Required: One value node should have this attribute set

This attribute is almost the same as the default attribute, and they are usually applied to the same value node. The differences are that this attribute does not have an indicator in the user interface, has preference over default for selecting a value when the key could not be read from registry (or other key matching logic did not work out). You should read the meaning of this attribute as "the TWEAK is disabled", not "the OPTION is disabled". For example, if you have a key "HKLM\SomeThing\IsDisabled", the disabled attribute would be applied to the value which has "Enabled" as description, not the value that "Disabled" as description. It's confusing sometimes ;)

/kaisertweak/category/tweak/value[advised]

Values: advised
Required: One value node should have this attribute set

Denotes that this is the advised value for this tweak.

/kaisertweak/category/tweak/value[current]

Values: current
Required: If key[type] is folder, one value node should have this attribute set

This attribute should only be used with a key[type] of folder. The value attribute and text content of this value node will be filled with the current folder value in the registry

/kaisertweak/category/tweak/value[custom]

Values: custom
Required: No

This attribute should only be used with a key[type] of folder. When a user select this attribute, he will be presented with a folder selection screen.

/kaisertweak/category/tweak/value[value]

Values: any
Required: Yes

The value to be read/written to/from the registry. With a key[type] of folder, you may use %MyDocuments% and %StorageCard% to refer to the My Documents and Storage Card folders, as they vary between different devices and languages. Note that these variables do have a heading "\" but not a trailing one. This way you can concat them together. For example:
%StorageCard%%MyDocuments%\My Files
may become
\Storage Card\My Documents\My Files

/kaisertweak/category/tweak/key

Attributes: type, mode, match, getvalue, action, setvalue, when, whenvalue
Children: text
Required: Yes
Defines rules for reading and writing registry keys. The text content of this node is the actual registry key, this may only be ommitted when also using the each node. Use a number of key nodes with different attributes in a single tweak allows you to do create fairly sophisticated behaviour (though sometimes what you want to do can be length :))

/kaisertweak/category/tweak/key[type]

Values: dword, string, multistring, folder
Required: No

The type of registry key. Note that folder is a special case of string.

/kaisertweak/category/tweak/key[mode]

Values: both, get, set
Required: No

Defines if this key rule applies to reading (get) the registry, writing (set) the registry, or both.

/kaisertweak/category/tweak/key[match]

Values: value, exists
Required: No

This attribute is only used when reading from the registry. When set to value, the actual value is read from the registry, which at least one key node should do (and usually does, as it's the default attribute value).

exists has a special meaning. When reading the registry, all key nodes that have a match attribute of exists are first looked for. If not all of them are found, the interface selects the value that has the disabled attribute set, or if there isn't one, the one with the default attribute set.

/kaisertweak/category/tweak/key[getvalue]

Values: any
Required: No

This attribute is only used when reading from the registry and key[match] is value. If the getvalue attribute is set, the registry key must have that value or the value with disabled or default is set.

/kaisertweak/category/tweak/key[action]

Values: set, empty, delete
Required: No

This attribute is only used when writing to the registry. It defines if we want to write the user-selected value to the registry, empty the value or delete the key. delete is usually only used when multiple key nodes are present and have different when attributes set. empty was added in v0.41, because KaiserTweak ignores an empty value (this is by design!).

/kaisertweak/category/tweak/key[setvalue]

Values: any
Required: No

This attribute is only used when writing to the registry and key[action] is set to set. This attribute overrides the user-selected value.

/kaisertweak/category/tweak/key[when]

Values: always, enabled, disabled, value
Required: No

This attribute is used only when writing to the registry. This attribute defines when this key rule is valid. If this attribute is set to always (the default) the key rule is always used. When the attribute is set to enabled the key rule is used when any other value node is selected than the one which has the disabled attribute (value[disabled!=disabled]). disabled is the opposite, and is only applied when the value node with the disabled attribute set is selected (value[disabled==disabled]). If the attribute is set to value, the rule is only applied if the user selected a value that matches with whenvalue attribute (value[value==key[whenvalue]]).

/kaisertweak/category/tweak/key[whenvalue]

Values: any
Required: No

See key[when].

/kaisertweak/category/tweak/description

Attributes: none
Children: text
Required: Yes

The description shown for the tweak.

KaiserTweak XML format cheat sheet

I myself always look at this cheat sheet when writing the XML tweaks. It doesn't explain what does what, but I find it handy to remember the format. I guess if you read all the above, this will make sense to you:
<kaisertweak>
  <category>
    <title>Category</title>
    <tweak version="[ALL|wm5|wm6]">
      <title>Tweak</title>

      [<each display="-index">
        HKLM\Henk\StartsWith*\*EndsWith\*Contains*\ToBeDisplayedIfDisplayIs-2\Key
      </each>]

      [<device match="[IS|isnot]">Kaiser</device>]

      <value
        [default="default"]
        [disabled="disabled"]
        [advised="advised"]
        [current="current"]
        [custom="custom"]
        value="Registry Value">
          Displayed Value
      </value>

      [<key
        mode="[get|set|BOTH]"
        type="[DWORD|string|multistring|folder]"
        match="[exists|VALUE]"
        [getvalue="somevalue"]
        action="[SET|empty|delete]"
        [setvalue="somevalue"]
        when="[ALWAYS|enabled|disabled|value]"
        [whenvalue="somevalue"]>
          [[HKLM|HKCU|HKCR]\Path\To\Key]
      </key>]

      <description>Description</description>
    </tweak>
  <category>
</kaisertweak>
As you can see, I use [ ] around nodes and text values to denote they are not required, and [onevalue|othervalue|DEFAULTVALUE] as attribute definition. Note that this doesn't really correspond to actual required nodes, as the requirements change by using other nodes. Also, any attribute with a default value is by definition not required. However, you will still find that the above makes sense in an intuitive way (at least for me :))

Bye bye

- Jorrit Jongma (aka Chainfire aka BoomSmurf aka a lot of other things depending on the forum ;))