HTC S740 Keyboard - S740, S743 General

I need to make a slight alteration to the S740 qwerty keyboard mapping.
I thought all I needed to do was tweak a layout file such as eT9.Rose.0409.kmap.txt in \windows but a 0409 file is not present although there are others with a different 4 digit code for other languages, such as 0408 and wwe. I have tweaked these two without success so I presume they are not the right ones.
HKLM/Software/Tegic/eT9/IME/KeyboardLayouFiles points to 0408 and wwe kmap files.
Can anyone help?

I only changed eT9.Rose.wwe.kmap.txt and it worked just fine after reboot.

Nigel Park said:
HKLM/Software/Tegic/eT9/IME/KeyboardLayouFiles points to 0408 and wwe kmap files.
Click to expand...
Click to collapse
Active layout is in HKLM/Software/Tegic/eT9/IME/KeyboardLayouDlls - it is only key 07FF there. Open it - the string names active layout you should remap. Or - if you already did with some other file, simply put its name there...

Thank you. It worked ..... but only for normal character keys.
I also tried to remap the arrow left key (which unhelpfully defaults to comm manager when I want to move cursor left) without success. There seems to be some extra code for action keys such as arrows and delete eg. // LEFT - 0x25 = VK_LEFT. Do I need to make some changes here?

Funny, never noticed that Fn+Left Arrow calls CommManager... (it took me some time to find out, what's you're talking about...)
Anyway, try this format:
{0x25 0x25 0x25 0x25 0x00 0xff}
The bolded position is responsible for Fn+Left Arrow behaviour. I did no try, it would be nice to know, if helped.
What's strange, other 0x00 values using 0xff index eg. Right Arrow, doesn't anything... Some ghost in the machine?
Generally, it's simple:
{1 2 3 4 5 6} means
1 - HW indentifier of the key
2 - which character/0x function to write/perform, if pressed
3 - what to do, if pressed and hold
4 - what to do, if Fn is active and the key is pressed
5 - what to do, if in numeric mode (double Fn lock)
6 - key index (apparently splits alphabet off special characters/functional keys)
What you see on any row after // are just comments/explanations having no influence on functionality of the file. There you'll find descriptions of all fuctions values as in the piece you quoted - eg. Backspace is 0x08, 0x2E is Delete etc.

Thanks lelopet for trying to help.
I have tried 0x25 in positions 4 and 5 and both (with reboot each time) with no success.
I now full understand how all this works but these action keys must work differently.
Any more ideas?

No...
Basically these files are working similar to some switchboard between the keyboard driver (usually .dll) and character and command sets of the operation system. If something is hardcoded somewhere beneath (as in driver) I'm afraid it is no way how to change it. If the driver calls any system service BEFORE it reaches the mapping...

Related

Remove Battery icon on the taskbar with clock.

Try this...
HKLM/software/microsoft/shell
add new dword ShowTitleBarClock dword=1
softreset....and enjoy..
only works with AKU2.2 only which atom have.
FYI atom got AKU2.2.1
It doesn't work. This Dword is removing during soft reset. I can't save it. I use Resco Registry AddIn
kropotov said:
It doesn't work. This Dword is removing during soft reset. I can't save it. I use Resco Registry AddIn
Click to expand...
Click to collapse
remember to exit resco (menu->exit) registry, not just tapping the x on the top.. wait for 20 second and reset.
GREATE!!! Many Thanks!!!!!!!!!!!!!!!!!!!!!!!!!! Working!!! Cool!!!
How to show both Date & Clock in the taskbar?
Tried this?
http://wiki.xda-developers.com/index.php?pagename=WM5_Tweaks_Other
Change the display of the clock in the taskbar
The clock in the taskbar can be changed to show not only the time, but also the date, or just the date, or nothing at all.
To show nothing:
Code:
HKLM\Software\Microsoft\Shell\TBOpt = 0 (DWORD decimal)
To show just the clock:
Code:
HKLM\Software\Microsoft\Shell\TBOpt = 1 (DWORD decimal)
To show just the date:
Code:
HKLM\Software\Microsoft\Shell\TBOpt = 2 (DWORD decimal)
To show both the date and the clock:
Code:
HKLM\Software\Microsoft\Shell\TBOpt = 3 (DWORD decimal)
Note 1: If you switch to the Analog clock display, the date will remain visible -through- the Analog clock
Note 2: Setting the clock to show 'nothing' will still keep the reserved space, showing the taskbar background, and obscure any icons that will shift to the right.
Note 3: Your date may get obscured by the space reserved for the OK/Close button in the top-right. You can fix this my adding spaces at the end of your 'Short Date Format'. See also the tweak on 'Change the Short Date Format'
Click to expand...
Click to collapse
( requires a soft reset, I believe )
Thanks ZeBoxx. It works!!!
i donno :? but it seems tht the registry keys i create and edits i make are gone wen i softreset.. tried with resco registry editor and phm regedit.. y does my atom's registry dont save the changes i make?
Make sure you either
- wait a little while after changing the registry
or
- use the shutdown feature; press and hold the on/off button, it'll pop up a question asking if you really want to shut down (on Wizard anyway - I suspect it's a WM5 feature, so it should be on Atom as well).
Doesn't work on the Atom. It will suspend when you release the button no matter if you've held it down for one or 20 seconds.
yeah, mastiff.. the shutdown feature doesnt work on the atom.. however, waiting a little while has helped me.. all the registry tweaks are workin alrite for me.. i stay for abt a min or two and then restart my atom.. how long shud i wait actually? if its just a couple of secs, then am wastin a lot of my time.. :lol:
I usually just wait 20 seconds - should be enough.. ymmv
ok what are the steps in PHM Reg edit, i have done this so many times and yes it is saved but nothing changes that damn battery bar to a clock..
do i highlight shell and add new Dword or do i add a new key then dword what?.... tried both them to no avail...
Sooz - are you sure you have an AKU2.2 ROM installed?
If you don't, then there's no way to replace the battery icon with the default clock on the Today screen. For application screens, you can go to the clock configuration, More tab, and check the checkbox "show clock in all programs" or somesuch.
so close and yet so far away... ok the registry entry does display the time and date on any atom, however the registry entry to get rid of the battery indicator doesnt work, therefore im left with both the battery indicator and the time and date in the same place... alas will remove for now till someone works out how to ditch that battery indicator.
Cheers
Hi,
May somebody add the instruction including screen shots?
Step by step how to remove the battery icon from the taskbar?
I tried so many times to add as suggest by “mazam”, but nothing happen.
I am using EdReg to change the registry
Maybe I do something wrong, in the place:
HKLM/software/microsoft/shell
step 1.
I click insert
-here I see 4 options (String, Binary, MultiString, DWord)
-I choose Dword
step 2. (And here is my question)
Here I have 2 places to fulfills
Key: what to write here
Value: what to write here
what a difference a few hrs makes.... ok today its playing ball, registry entries all workin including Clock instead of Battery!!... ahh life is good again!
to check AKU version go to system/about it should read 2.2.0 or higher in build if so the the reg entry above will work, if not try the entries on wiki and or wait for Microsoft to fix, they say they are going to!
Cheers
Footnote for Registry Entries......
for me what works to save the entries is to wait for 30 secs or more, then soft reset while still in Registry Editor PHM, if i exit the program then soft reset it doesnt hold the changes no matter how long i wait.
corona said:
Hi,
May somebody add the instruction including screen shots?
Step by step how to remove the battery icon from the taskbar?
I tried so many times to add as suggest by “mazam”, but nothing happen.
I am using EdReg to change the registry
Maybe I do something wrong, in the place:
HKLM/software/microsoft/shell
step 1.
I click insert
-here I see 4 options (String, Binary, MultiString, DWord)
-I choose Dword
step 2. (And here is my question)
Here I have 2 places to fulfills
Key: what to write here
Value: what to write here
Click to expand...
Click to collapse
key = ShowTitleBarClock
value=1
mazam said:
key = ShowTitleBarClock
value=1
Click to expand...
Click to collapse
Works, Thx a lot

Hardware keyboard translation for HP 600, Touch Dual, Asus p750

Hi ,
I have written a small application:
http://rapidshare.com/files/125258935/HebKeys_tog198.CAB.html
This application is designed for window mobile 6 devices that has a numeric keyboard,
one of the problems with this type of devices is that there isn't language support for them, for example if you want to write sms in hebrew or russion using this keyboard it is impossible.
After installing this application a XML file (layout.xml) will be coppied to your device containning all the translation of the keyboard. (this xml is configure to HP 600 !!! it will not work on other devices)
The xml file contains group of hardware keys (for example):
<keys>
<HWcode>48</HWcode>
<state1>0</state1>
<state2>ך</state2>
<state3>ן</state3>
<state4>ף</state4>
</keys>
in this example hardware key 48 will contain the following signs: 0-zero, "ך" - hebrew sign, "ן" - another hebrew sign, "ף" and another hebrew sign.
clicking on hardware key 48 (0 in the hardware keyboard of the hp 600) will itirate between does "states".
This application will run in the background, for toggeling it's translation use your Voice button (key 198) or configure it to different button:
<tog>
<HWcode>198</HWcode>
</tog>
you can of course configure yourself the signes and hardware keys to mach your device.
I written another application in order to help you find what is the hardware code for every key in your device:
http://rapidshare.com/files/125091730/KeyMap_13.zip.html
this two applications will not run together, so make sure you are closing one before running the other (SR is also agood idea).
Pls backup all your data before installing the applications.
link to the original thread (hebrew):
http://www.pocketpcfreak.com/cgi-bin/yabb/YaBB.cgi?board=Himalaya;action=display;num=1214408412
have fun
Rani
HW keyboard working on 3rd party apps in Dual
Great news to those using Touch Dual with 20keys and are fustrated with the HW keyboard typing only numbers on 3rd party apps (like Opera, Google Search etc.) - this HebKeys app by Golum can provide a reasonable solution.
Limitations:
- No XT9.
- No Shift or Capital letters.
- No symbol window access (SYM is not active).
- Long delay is required in words that have two consequent letters mapped to the same key (e.g. REad, because R and E are on the same key). Alternatively, if an unmapped key is pressed (SYM), you can re-press the key again and get the next letter.
BTW, Golum promised to provide an update with an option to update the value of this delay through an xml file.
How to install:
1. download the HebKeys app by Golum, from http://rapidshare.com/files/125260462/HebKeys_button198.CAB.html
2. download the following key mapping layout that I have created: http://www.4shared.com/file/52928436...55/layout.html
3. after installing the app, replace the layout.xml file in the app folder (under Program Files) with the layout.xml file that you downloaded in 2.
Now what you need is to run the installed app and the re-mapping is done (need to re-run it after soft-reset).
If you run the app after it was activated, you can stop it using the "Exit" button. BTW, it is possible that the link above by Golum is for a slightly different version than the one in the link I provided, in which the default when running the app is the "unmapped keyboard" and there's no option to exit (no Exit button). Golum? I personally prefer the one with the Exit option.
If you wish to play with the mapping layout, you can edit the XML yourself. It is quite readable. Notice you cannot put less than 4 options (representing 4 repeating presses) to each key.
The last key mapped is for toggling the mapping on and off (the app is still in the background). Default is the ALT key.
The mapping of the HW keys of the 20key Dual is as follows (in the order it appears on the keyboard):
81 49 50 51 79
65 52 53 54 76
90 55 56 57 8
236 119 48 120 13
If you have a different device, you can try the key mapping app in the link from my previous post, to get the mapping.
Regarding Hebrew:
The layout file that I have provided solves the keyboard problem, but replaces the Hebrew support in the original layout included with the HebKeys app. However, I found that if you have Eyron Hebrew support installed, when the HebKeys is activated and you switch to Hebrew in the Eyron soft keyboard you can use the keyboard to write Hebrew!
If you think you managed to improve it, added the Shift or Sym functionality etc. - please share with all.
Enjoy.
Update:
Please note that I have updated the layout.xml a little, so if you already downloaded it - please re-download and re-copy to the proper folder.
If you really insist to know why I udpdated:
I found out the key I used for space is actually &NBSP, which seems like a space but is not exactly a space.
For some reason putting merely a space character in the XML does not work (not recognized, probably removed by the XML interpreter), so I added a NULL character afterwards, to turn it into a significant space.
Great App, seems to be the most awaited fix for the XDA Stealth keypad. Thanks GOLUM.
- Long delay is required in words that have two consequent letters mapped to the same key (e.g. REad, because R and E are on the same key). Alternatively, if an unmapped key is pressed (SYM), you can re-press the key again and get the next letter.
BTW, Golum promised to provide an update with an option to update the value of this delay through an xml file.
Click to expand...
Click to collapse
Is it possible to use the joystick or navigation pad (right) to be able to move the cursor right away to type the next character? I used to do this on my Nokia days before.
and by the way, is there anyway to do a toogle with this one for enabling and disabling? i mean there would be a toggle that would enable this and use your configured XML as the layout then a toggle OFF to use the default or original keyboard layout. That would be awesome!
The cursor key may not be the greatest idea, as it also functions to move the curser around. It depends on the application - in some it will give you exactly what you want, in others it will move away from the location of the next word.
An alternative option is to use an unmapped key or one that is mapped to nothing, as I explained (I use SYM).
Reg toggle - as explained in the posts the last key in the layout.xml is the toggle key definition. Default is ALT.
Please note that I have updated the layout.xml a little.
If you really insist to know why I udpdated:
I found out the key I used for space is actually &NBSP, which seems like a space but is not exactly a space.
For some reason putting merely a space character in the XML does not work (not recognized, probably removed by the XML interpreter), so I added a NULL character afterwards, to turn it into a significant space.
can u provide this too on xda stealth?
Space
I cannot make a space?
HOw should I write it in text editor?
Pls Help!
space
"space" works with "0"-button, without <HWcode>48</HWcode>... in layout.xml
suggestion
tried this on my stealth, with the Layout.xml file changed to a regular eng to replace the multitap on my stealth, so far it's working fine with the exception of only 4 characters assignment on each hardware keys.. Can the maker or someone set the assignment to 5 char per key so we can accomodate the letters and number for 7 and 9..
WOW AWESOME!!
it is working properly on my stealth..
now i can write a message faster than before..
Thanks a Lot GOLUM
hopefully it can 5 char/key on the next release..
can someone plz upload the layout file for the touch dual again?
tnx

[APP][01.10.2008] Vibration Feedback

[SIZE=+1][highlight]Vibration Feedback for Windows Mobile 5+ (DISCONTINUED)[/highlight][/SIZE]
Original Thread: http://forum.xda-developers.com/showthread.php?t=412491
Different approach by writing an own touch.dll: http://forum.xda-developers.com/showthread.php?t=450256
This Software lets the phone vibrate when the touchscreen is touched. This feature is knwon from the Samsung Omnia Phone for example. It gives a better response and feeling for a finger tip on the screen.
It consists of two parts. The first one is VOA aka vibrate.exe (which is already mentioned in different threads) by Const and a configuration part VOAConfig by Kisja.
[SIZE="+1"][highlight]Help needed![/highlight][/SIZE]
VOA is not developed anymore and the sources are not availible. To optimize the reaction and some other things (see TODO later) we need to rewrite VOA. Since I have not enough time for it, we need someone who has experience in development. I could help with some ideas, since I know how VOA works. Send mit a PN or simply reply on this thread!
Current version with VOA 01.10.2008 and VOAConfig v1.5: Vibration_Feedback_1.5_01.10.2008_volume fix.cab
[SIZE=+1][highlight]VOA by Const[/highlight][/SIZE]
It's a little application which runs in background and reacts on user activities with vibration.
[highlight]Features:[/highlight]
- Vibrate always on touch events (mouse down, or mouse up)
- Vibrate only if SIP is active
- Vibrate on Key press (hardware keys)
- Adjustable vibration (duration in ms)
- configuration over command line parameters
- fully event based, so only battery consumption while vibrating
- No runtimes needed (pure C++ application)
- Works with WM 5+ (not 2003)
[highlight]Command Line Parameters:[/highlight]
-nled: Which nled to use (1 on Diamond)
-len: vibration duration in milliseconds
-ondown: 0 - on mouse up, 1 - on mouse down
-onsip: 0 - handle every touch event, 1 - vibrate only if SIP (or phone) is active
-keyon: 1 - Vibrate on Key press (is not affected by onsip!)
[highlight]Changes:[/highlight]
Code:
[URL="http://forum.xda-developers.com/attachment.php?attachmentid=117756"]01.10.2008[/URL]
- Fix for volume buttons (HTC Diamond), the keyboard part of
the code is completely disabled if onkey 0 is set
[URL="http://forum.xda-developers.com/attachment.php?attachmentid=117757"]10.09.2008[/URL]
- improved vibration length/strength
- With short values (10-30) is the vibration like in Teeter
- Phone Dialpad support if onsip 1 is set
[URL="http://forum.xda-developers.com/attachment.php?attachmentid=117758"]08.09.2008[/URL]
- support for HTC Diamond
[highlight]Known Issues/TODO:[/highlight]
- lags while fast typing (vibration doesn't stop or no input possible while vibrating, seems to be ROM or Phone dependent)
- Volume keys are blocked on HTC Diamond if onkey is set to 1. Don't use key vibration or enable the default windows volume bubble to have workung response and volume keys (Use Diamond Tweak for example).
- vibrates during an active call, if dialpad vibration is enabled
[highlight]Download:[/highlight]
VOA*.zip contains VOA.EXE and an exaple VOA.LNK file for launching VOA with desired parameters
With volume buttons fix: VOA_01.10.2008_volume_fix.zip
With Dialpad support: VOA_10.09.2008_Dialpad.zip
Without Dialpad support: VOA_10.09.2008.zip
[SIZE=+1][highlight]VOAConfig by Kisja[/highlight][/SIZE]
This application makes the configuration of VOA more simple.
[highlight]Features:[/highlight]
- Choose activity mode (always/SIP only) (-onsip 0/1)
- Enable Vibration on Keys (-onkey 0/1)
- Enable VOA on startup (autostart)
- Choose vibration duration/strength (-len x)
- Start/Stop VOA
- Saves settings in registry
- Source code open (VisualBasic .NET/VS 2008 Solution)
- .NET 2.0/3.5 Runtime needed
[highlight]Manual:[/highlight]
1) Adjust settings as desired
2) Tap on "Save" to save settings to registry and create new startup link
3) Tap on "Start/Stop" twice to restart VOA or reset device
[highlight]Known Issues/TODO:[/highlight]
- Restart VOA automatically after saving configuration
[highlight]Changes:[/highlight]
Code:
16.09.2008 v.1.5
- vibration strength costumization optimized.
Select between "low", "middle", "high" and adjust more prcise with the slider
- "Advanced Options" in "Options" menu:
- select NLED Interface (-nled option in VOA)
- select Event to react on (-ondown option in VOA)
- VOA is started using CreateProcess Call from coredll.dll (see "help needed" please!)
10.09.2008 v.1.4
- Startup folder not hardcoded anymore,
instead a localized path is used (Environment.GetFolderPath)
[highlight]Download:[/highlight]
The CAB file includes both applications in a single install file.
The version number reflects the version of VOAConfig and the Date stands for the release Date of VOA.
V 1.5 with current VOA in a cab: Vibration_Feedback_1.5_01.10.2008_volume fix.cab
Source (VS 2008 VB .NET Solution): VOAConfig_1.5_Source.zip
[SIZE=+1][highlight]What it does not do[/highlight][/SIZE]
and what will possibly never be implemented:
- hook in other applications. VOA uses a systemwide activity timer to recognize events and does not communicate directly with other applications. This causes sometimes a little lag between the touch event and the vibration. Hooking into other applications would speed it up, but most applications do not have public events to react on.
- reduce touch screen area (for which vibration is activated) to windows borders or something else (think of SIP). VOA reacts on touch events on the whole touch screen.
thank you very much.. this is a really great application!
is it possible to make a "dailpad vibration only" option?
thanks for the program!!!! it works great....
unfortunately i found 2 probles that are not important for me but maybe other people finds annoying:
1.- volume up/down key does not work when VOA.exe is active.When you press vol up or vol down the volume level bar appears, but you cant change volume with keys.
2.-voaconfig crashes when i try to "enable startup". i think this is caused because of folder names (i'm using a spanish rom, so my startup folder is "windows/inicio" and not "windows/startup").
thanks again for your work
app really slows down sms typing... is this something i can fix?
unfortunatly the vibration feedback is a serious battery eater...
but is also a cool idea.
jpresencia said:
[...]
2.-voaconfig crashes when i try to "enable startup". i think this is caused because of folder names (i'm using a spanish rom, so my startup folder is "windows/inicio" and not "windows/startup").
Click to expand...
Click to collapse
Oh jes, I forgot! Sure its always different. Does anyone know how to detect this automatically? A Reg Value with the path perhaps?
jpresencia said:
thanks for the program!!!! it works great....
unfortunately i found 2 probles that are not important for me but maybe other people finds annoying:
1.- volume up/down key does not work when VOA.exe is active.When you press vol up or vol down the volume level bar appears, but you cant change volume with keys.
2.-voaconfig crashes when i try to "enable startup". i think this is caused because of folder names (i'm using a spanish rom, so my startup folder is "windows/inicio" and not "windows/startup").
thanks again for your work
Click to expand...
Click to collapse
Got the same problems as you , for number 2, I am using English stock rom which used the path "windows/startup", yet voaconfig crashed when i start it.
cpt.bert said:
app really slows down sms typing...
Click to expand...
Click to collapse
I also noticed this... Hopefully this can be optimized, cause this app would be perfect
Even if duration is set to 1ms the length of the vibratation is far to long to be useful on my Polaris (HTC Touch Cruise). I've previously tried google Android which has the same functionality built-in. And it gives a small buzz on each key-press which was very good.
This application vibrates too long, and also it does not accept more keypresses when vibrating slowing down the whole input method.
add vibration when PhonePad on foreground and onsip=1
cool concept, I actually like it on my friend's Instinct.....but the battery thing and the accelerated wear on the vibration motor deters me (my titan battery is bad enough as it is already).
yesterday i just thought that something like this would be great
->someone´s up there
schnappus boesus said:
yesterday i just thought that something like this would be great
->someone´s up there
Click to expand...
Click to collapse
oh no, its a cool feature/app (especially on phones without a hard keyboard)
if I had something like a Diamond, I would defintely use this app.
Im using a german samsung i900 omnia, but your app doesnt work here. No vibration whatever setting i use.
Good Work, but seems that doesn't recognize diamond keyboard installed on my wm 6.1 artemis. If i set to vibrate only on SIP it never do, otherwise works great (at any click).
thank You
Bye
The main difference with the samsung version is that on the I900 the phone vibrates only when you press a button on your screen (or at least it is supposed to act like this), which really makes a difference between pressing "nothing" and pressing a button.
I would I love to see this feature, even on my I900, because samsung forgot many things (like the opera browser, in which the phone vibrates whatever the part of the application you're touching, or their SIP, where it does not vibrate even though it is THE software where it should).
*const said:
add vibration when PhonePad on foreground and onsip=1
Click to expand...
Click to collapse
thank you very much ... now it is nearly perfect
How about the slow sms typing and the error while trying to save settings?
cpt.bert said:
How about the slow sms typing and the error while trying to save settings?
Click to expand...
Click to collapse
what do you mean by "slow sms typing"? be more specific please
_4saken_ said:
what do you mean by "slow sms typing"? be more specific please
Click to expand...
Click to collapse
For every key I press on the keyboard the vibrator starts for a short period. During this period I cannot enter another key. Or atleast the key is not displayed until the vibration has stopped. So where I could write very fluid and quick before, I now feel it's going much slower and more like a stutter, if you know what I mean.

Key definition set (keyboard layout) patcher for stock xv6850

- Note -
You'll probably need to know your way around a hex editor and be able to read basic C in order to make much use of this post. That's the breaks right now. Someone else might decide to make a friendly GUI to wrap things, but right now, this program isn't particularly user friendly.
If, however, you know your way around C, then you might be interested in this post. Feel free to read on if not, though don't expect a lot of help if you're not fluent in the basic prerequisites here, as this project is very much in its early stages.
Incorrect usage of this program can easily crash your phone. Please be sure to read and understand the entire posting before deciding to actually try the program out.
--
I have written a program, keypadpatch.exe, that will patch the microp keyboard tables in the stock Verizon xv6850 keyboard driver. Unlike normal keyboard remapping programs, you can create your own Fn+key combinations on keys where there were previously none. This was important for me as there are a lot of keys on the RAPH500 keyboard without Fn+key combinations, and the keyboard was missing quick access to important keys like semicolon or underscore.
The keyboard layout patcher program will modify the key definition tables in device.exe's instance of keypad.dll. The modifications are done in RAM, so they don't persist across boots. (You could re-run the patching sequence automatically at every boot to make your changes stick if you wish, once you are comfortable with a modified key definition set.) The main advantage of this is that if you happen to break something in the keyboard driver while developing a new set of key definitions, you'll just need to reboot the phone to get things back to normal as opposed to perhaps having to hard reset the device and replace a hex edited driver dll.
The keyboard layout patcher program hardcodes offsets that are specific to the xv6850 keyboard driver. Please don't try it on any other device or firmware combination other than the initial stock Verizon firmware for the RAPH500. Running keypadpatch.exe on any other device or ROM image will likely crash the phone (likely fixable by rebooting it).
The program itself is fairly rough around the edges and developing a new full key definition set is likely not for the faint of heart. Please don't ask me directly for help with making a key definition set.
The program operates in two modes. The first mode will attempt to dump out the currently active key definition array from the running keyboard driver and save it into a file called "microp" (no extension). The file will be placed in the directory within which keypadpatch.exe resides. You will get a confirmation message box if everything works in this mode of operation.
The second mode of operation will read a key definition set file called "microp" from the directory within which keypadpatch.exe resides, and then replace the key defintion array in the keyboard driver's memory image with the one from the key definition set file. If everything works, you won't see any message boxes or any other confirmation. However, if something failed, then you'll either get an appropriate error message, or if you gave keypadpatch.exe a sufficiently invalid microp file, something will probably have crashed. Use carefully at your own peril!
If there is a "microp" file in the directory where keypadpatch.exe resides, the program runs in the second mode of operation (loading a new key definition set). Otherwise, it runs in the first mode of operation (dumping the current key definition set).
Modifying a key definition set involves popping a "microp" file open in a hex editor and twiddling fields by hand right now. There is no friendly program or GUI to make things easier than that.
For the RAPH500, the key definition set is an array of 0x3A elements, each of which is described by the following structure layout:
Code:
#define MICROP_KEY_FLAG_VIRTUAL_KEY ( 0x80000000 )
typedef struct _MICROP_KEY_DEFINITION
{
//
// Virtual keys for primary button press.
//
// { MappedVK, IMEVK, RepeatVK }
//
ULONG VirtualKey[ 3 ];
//
// Secondary characters for function combinations. Set the
// MICROP_KEY_FLAG_VIRTUAL_KEY bit to indicate that the value is actually
// a virtual key code and not a character code.
//
// { Fn + key, 123-mode key, ... }
//
ULONG FunctionChar[ 11 ];
///
// Unknown.
//
ULONG KeyId[ 2 ];
//
// Callbacks to execute when the key is pressed instead of simply inserting
// a key or character code into the input stream. The addresses should be
// valid code within device.exe.
//
// [ 0 ] - Not for Fn- combos.
// [ 1 ] - ??
// [ 2 ] - Not for Fn-combos.
// [ 3 ] - ??
//
ULONG_PTR Callbacks[ 4 ];
} MICROP_KEY_DEFINITION, * PMICROP_KEY_DEFINITION;
Many of the fields of this structure don't currently have a known meaning attached to them. If you figure out what they do, perhaps through disassembly or debugging, or simply trying them out and seeing what happens, I'd appreciate it if you'd post back in this thread.
The fields that do have a particularly relevant meaning are:
- VirtualKey[0], VirtualKey[1]: These need to be set to the virtual key code (VK_* constant) for the virtual key event to generate then the particular physical key is pressed. Usually, the first two VK values are the same, but in some cases (the enter key, for example), they differ. The file \Windows\eT9.Raphael.wwe.kmap.txt may have some clues as to VK-codes for special keys on the RAPH500 (i.e. the "launch tmail.exe key"). Note that VK-codes for numeric keys (0-9) and alphabetical keys (A-Z) are simply the ASCII values for those characters (alphabetical keys always use uppercase characters). See the above link on VK_* constants for more details.
- FunctionChar[0] is the character value (not virtual key code) to generate when a particular physical key is pressed when the Fn-key is active. Normally, this value is simply the raw character code in question (e.g. 0x20 for space, 0x41 for capital A, 0x21 for !). However, if bit 0x80000000 is set, then this value appears to be treated as a virtual key code and not a character code. Using a VK-sequence might be useful if you wanted to map an Fn-key combo to, for example, soft key 1 or soft key 2. Using a character value might be useful if you want to map an Fn-key combo to, for example, semicolon. The keyboard driver takes care of injecting any necessary shift states to make a given character value appear when you provide a raw character value here. For example, setting FunctionChar[0] to 0x21 for a particular key will cause a VK_SHIFT + VK_1 key down / key up sequence to be sent to generate a ! character.
- The last four fields, "Callbacks", desire a little bit of special mention. These are function pointers into device.exe's address space for callbacks that get invoked when a key is pressed. This is how the dedicated "launch tmail.exe" key, and the Fn-Space combo to launch CommManager.exe work on the RAPH500. Setting a particular value to NULL means that the key will be injected into the normal input system instead of being handled by a function call. As a special exemption, keypadpatch.exe accepts the magical value of 0xFFFFFFFF for a particular callback pointer to mean that the currently active callback pointer in device.exe memory space should be left alone. Any other value replaces the active callback pointer in device.exe. You will generally never want to touch this value except to NULL it out for a key that you'd like to reclaim from one of those hardcoded built in shortcut keys.
As I haven't discerned all the meanings of the fields in the key definition structure, there may be additional capabilities (or limitations) here. I've only so far attempted to perform simple tasks like create an Fn-key mapping on the Z key to generate a ' character, where there was no mapping before. It is possible that some special keys might have additional hardcoded handling elsewhere in the keyboard driver and thus might not necessarily be overridable with this method.
Some of the keys in the stock key definition set don't appear to be used for the RAPH500's physical keyboard. For example, there is a "tab" key lurking, despite there being no physical key which uses that definition slot.
Download link for keypadpatch.exe + some example key definition files, one for the stock RAPH500 layout and one that maps Fn-A to -, Fn-S to ", Fn-z to ' in the start of porting something similar to the TITA100 layout to the RAPH500:
http://www.nynaeve.net/Skywing/xv6850/keypadpatch.zip
Acknowledgements:
cmonex provided some invaluable assistance with getting the ball rolling on this project.
- Reserved for future updates. -
Posted a slightly modified key definition set: http://www.nynaeve.net/Skywing/xv6850/keys2008120301.zip.
This key definition set makes the following changes:
Code:
Key New function Old function
=======================================
Fn+Z Left soft key Unassigned
Fn+X Right soft key Unassigned
Fn+S Underscore (_) Unassigned
Fn+D Tab Unassigned
Fn+C Semicolon (;) Unassigned
Mail OK/done Start tmail
Fn+Mail Ctrl* Start tmail
(* Key combinations marked with a * may not be fully working yet.)
Thanks skywing!
This worked great for me, the _underscore_ was especially needed.
Anything else you want me to test? gps?
I'm off work for 5 days in a row so I can play with the phone without too much fear...
_________________
VZW TP - XV6850
I'm still fiddling around with this, I'll probably work on some simple tools tonight to help translate the keymap files to/from a more human-readable format.
/Andrew
kilozebra said:
I'm still fiddling around with this, I'll probably work on some simple tools tonight to help translate the keymap files to/from a more human-readable format.
/Andrew
Click to expand...
Click to collapse
Note that the position in the key definition array isn't what controls what physical keys map to which key definiton slots. That seems to be controlled by the first value in the array (first VK identifier), according to basic tests. Let me know if you discover something more definitive about that, though.
Would this tool work to remap the keys if applied on a non-Verizon CDMA ROM? I'm especially looking into putting Alltel MR1 ROM release on my Verizon TP and fixing the keyboard after that.
TIA

MSI BGP100 Gamepad

SOLVED: After I did a bit of searching I found that THIS PROGRAM works fine on the Touch2.
Rather than assigning physical buttons to map the controls you can assign them by hex definitions.
While this is alright for emulators the default hex's left the buttons assigned to letters, which when pressed ended up typing "xxxzyvc" popping up.
I almost starting writing out a whole list of Hex values, but the big MS has a table listed anyway
http://msdn.microsoft.com/en-us/library/bb431750.aspx
Now I have ABCD, L+R and Start mapped from the unused 90-97 hexes (the D-pad mapped to the up down left right values)
Hope this helps to any Touch2 Gamers out there?
Original Post:
Does anyone have any info on how to set this up for the Touch2?
FpseCE runs decently but using the touch screen for controls sucks (as you know for the lack of usable hardware buttons)
The included cd drivers just want me to map hardware buttons, and ive tried BlackPanther's drivers but it just crashed and wont open again :S
FpseCE claims to support the gamepad... but what it really means is "if you can map it to a control, it'll work" so this "support" isn't really built in.
Any Ideas?
Click to expand...
Click to collapse

Categories

Resources