http://wiki.webos-internals.org/api.php?action=feedcontributions&user=XP1&feedformat=atomWebOS Internals - User contributions [en]2024-03-29T08:39:19ZUser contributionsMediaWiki 1.35.1http://wiki.webos-internals.org/index.php?title=Application:Preware&diff=18403Application:Preware2011-09-09T16:11:24Z<p>XP1: </p>
<hr />
<div>[[Category:Application]]<br />
This page is currently available in four languages:<br />
: [[Image:Australia.png]] [[Image:USA.png]] [[Application:Preware]]<br />
: [[Image:France.png]] [[Application:Preware-FR]]<br />
: [[Image:Germany.png]] [[Application:Preware-DE]]<br />
: [[Image:China.png]] [[Application:Preware-ZH]]<br />
<br />
{{application<br />
| name=Preware<br />
| type=webOS<br />
| version=Version: 1.6.3 (8 June 2011)<br />
| tag=Utilities<br />
| screenshot=Preware_ss1.png<br />
| description=<br />
}}<br />
<br />
<BR><br />
== Summary ==<br />
<!--{{icon|Icon_Preware.png|float:right;}}--><br />
[[image:Icon_Preware.png|frameless|left]]<br />
Preware is a package management application for the Palm Pre and the Palm Pixi. Preware allows the user to install any package from any of the open standard package repositories on preware.org (or any other location that hosts an open standard package repository). Preware relies on a custom written service developed from community research which allows the mojo app to talk to the built-in ipkg tool.<br />
<br />
'''Preware requires webOS 1.4.0 or later to function. Do not try to install it on earlier webOS versions, it will not work.'''<br />
<br />
This application was the result of extensive community-based design in [[IPKG Service]] and [[Preware Design]].<br />
<br />
For application management, Preware can access more applications, and has more features, than any other on-device package installer.<br />
<br />
And since it is open source, and has a completely open development process supported by a team of world-class WebOS Internals developers, it will continue to get better much faster than any other package management application.<br />
<br />
Preware is the open application installer that has been written specifically to support a homebrew ecosystem where any developer can upload any application to any submission site, and that application can then be installed by any user. Developers no longer need to upload their applications to multiple submission sites, and users are no longer excluded from accessing applications from any open standard package repository.<br />
<br />
<BR><br />
=== Key features ===<br />
Install / Remove / Update:<br />
* Homebrew Applications including advanced applications with special requirements. <br />
* WebOS Themes<br />
* Patches<br />
* webOS Kernels<br />
* Support for installation of signed packages<br />
<br />
<BR><br />
=== Status ===<br />
Preware has been upgraded to release status, and is no longer considered beta. <br />
<br />
Some milestones worth mentioning in Preware's history include:<br />
<br />
* Since 27 August 2009, it is the only over-the-air installer for the palm capable of installing advanced palm applications such as the [[On_Screen_Keyboard|On Screen Keyboard]] or the terminal application.<br />
* Since 27 August 2009, it is the only application supporting installation from all existing palm homebrew feeds. <br />
* Since 17 September 2009, it also supports installation of themes. <br />
* Since 8 October 2009, it also supports installation of webOS patches.<br />
* Since 12 Jan 2010, it also supports all Palm App Catalog feeds.<br />
* Since 3 May 2010, it also supports installation of webOS custom kernels.<br />
* Since 20 July 2010, it also supports installation of packages from URLs and local files.<br />
* Since 24 July 2010, is also supports blacklisting packages and authors.<br />
* Since 8 June 2011, access to webOS app catalog feeds is no longer available to third party developers or applications.<br />
<br />
<BR><br />
=== License ===<br />
Please be aware that org.webosinternals.preware is licensed under the [http://www.gnu.org/licenses/gpl-2.0.html GPLv2].<br />
<br />
Code from Preware cannot be used by a closed source application. If you want to use them in a non-GPLv2 but otherwise open source application, please contact the [mailto:support@webos-internals.org authors].<br />
<br />
<BR><br />
== Installing Preware ==<br />
<br />
There are four supported methods for installing Preware: Official HP/Palm SDK, WebOS Quick Install, Stand Alone Installers, and Command Line. <br />
<br />
You do not need to access the Linux command line or "root your Pre" to install or use Preware.<br />
<br />
You ''cannot'' use fileCoaster, or PreLoad, or PreUpdate to install or update Preware. Those tools are unable to operate correctly on advanced homebrew packages.<br />
<br />
If you are a developer who uses the Palm emulator, you should know that Preware works just as well on the Emulator as it does on a real device, and is installed in exactly the same way.<br />
<br />
<BR><br />
=== Installing Preware using the official HP/Palm SDK ===<br />
<br />
To install Preware on any webOS device, the following procedure is recommended if you're having problems with WebOS Quick Install:<br />
<br />
# Install the latest official Palm webOS SDK from http://developer.palm.com<br />
# '''Disconnect your device''' (I repeat, do not have your device connected, no cables in the device, device not even anywhere near the computer), and run the latest webOS Doctor to install or upgrade your Novacom drivers<br />
# Close the doctor<br />
# Your phone should remain disconnected<br />
# Download the latest Preware package onto your computer from http://get.preware.org/<br />
## To install Preware on a phone, download the 'arm' .ipk file<br />
## To install Preware on an emulator, download the 'i686' .ipk file<br />
# Typing webos20090606, select the developer mode icon that will appears, and verify that your phone is in developer mode<br />
# Connect your device to your computers USB port, and select 'Just Charge'<br />
# Use palm-install to install the package you downloaded<br />
## Typically you can simply get a command line, navigate to the directory with the Preware package you downloaded, then type palm-install and.the.package.arm.name.ipk<br />
<br />
<BR><br />
<br />
=== Installing Preware with WebOS Quick Install ===<br />
You can use version 4.1.1 or later of [http://forums.precentral.net/canuck-coding/274461-webos-quick-install-v4-1-1-a.html WebOS Quick Install] to install Preware on any device easily and quickly, without the need to download a big 200MB SDK and webOSDoctor.<br />
<br />
'''Latest Version of WebOS Quick Install available here: [http://forums.precentral.net/canuck-coding/274461-webos-quick-install-v4-2-3-a.html WebOS Quick Install v4.2.3]'''<br />
<br />
# Install the required Software<br />
## [http://www.java.com/en/download/installed.jsp?detect=jre&try=1 Click here] to verify that you have the latest java installed on your computer and update if needed<br />
## [http://dl.dropbox.com/u/2774158/WebOSQuickInstall-4.2.3.jar Click Here] to download WebOS Quick Install v4.2.3<br />
# Put your device in [[Getting started|Developer Mode]]<br />
# Connect your device to your computer with the USB cable, and select "Just Charge" (do not select USB Drive)<br />
# Run WebOS Quick Install. If the novacom driver is not installed, WebOS Quick Install will download and install that for you.<br />
## '''Do not believe any guide that says you need to download the SDK or webOSDoctor for WOSQI to run.''' The most you'll download is the novacom driver, which is only 11MB on Windows, and will be done via WOSQI.<br />
# Click the third button on the right (the globe icon)<br />
# Select the Applications tab at the top<br />
# Search for Preware<br />
# Click Install.<br />
<br />
<BR><br />
<br />
=== Installing Preware with the standalone installer ===<br />
Preware installers can be downloaded here: [http://get.preware.org Preware Standalone Installers]. These instructions are currently only for Mac and PC users.<br />
<br />
# Install the required software.<br />
## [http://www.java.com/en/download/installed.jsp?detect=jre&try=1 Click here] to verify that you have the latest version of Java installed on your computer and update it if needed.<br />
## [http://www.webos-internals.org/wiki/Webos_Doctor_Versions Click here] to download the current webOS Doctor for your carrier and phone in a subdirectory you will remember (maybe "Palm"?). If you already have it, skip this step.<br />
##* '''Do not run the webOS Doctor.'''<br />
# Put your device into [[Getting started|Developer Mode]].<br />
#* '''Windows users:''' When connecting your device to the computer for the first time, you will be prompted to install new hardware. Click Next to start the device installation. You may get a message regarding Novacom drivers not being installed. If so, you can disregard it. Once your device is installed, proceed with the Preware installation.<br />
# Download the [http://get.preware.org/ Preware Standalone Installer] (you should choose the latest file name PrewareInstaller-X.Y.Z.jar) and place it in the same directory as the webOS Doctor .jar file.<br />
# Run the Preware Installer.<br />
# Click on the Tools menu and choose Install Drivers. This will install the Palm Novacom drivers for webOS devices.<br />
# Once the drivers have finished installing, click on Install Preware. After Preware is installed, your device will be unresponsive for a few seconds while Luna restarts.<br />
<br />
<BR><br />
=== Installing Preware from the command line ===<br />
If you have access to the command line of your webOS Device or emulator using Terminal, Novaterm, the "Linux Commandline" in WebOS Quick Install, or other techniques, you can install Preware by typing three lines. If you are in any way unsure of operating at the Linux command line, please use either of the methods described above. <br />
<br />
<source lang="bash"><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/preware-bootstrap.sh<br />
sh /tmp/preware-bootstrap.sh<br />
</source><br />
<br />
<BR><br />
<br />
=== Updating Preware ===<br />
To update Preware, just run Preware and select "Package Updates" from the main scene. If an update to Preware is available, it will appear in the list. Then select the "Update" button. Preware will close automatically after the update is complete.<br />
<br />
Note that you cannot use fileCoaster, or PreLoad, or PreUpdate to install or update Preware. Those tools are unable to operate correctly on advanced homebrew packages.<br />
<br />
<BR><br />
<br />
=== Removing Preware ===<br />
''Why would you ever want to remove Preware?''<br />
<br />
To remove Preware, hold the Orange button on your keypad and choose Preware from the Launcher. Choose Delete.<br />
<br />
<BR><br />
<br />
== Usage ==<br />
=== Preferences ===<br />
{| Width="70%" VAlign="top"<br />
| valign="top"|[[image:Preferences.png|160px|frameless|left|text-top]]<br />
| valign="top"|You can select preferences in the top left corner of the Pre to bring up the preferences screen. On the Preferences screen you can specify the look of the application, the frequency that feeds are updated, and what Preware will show you by default.<br />
<BR><br />
{| style="color:black; background-color:#F9F9F9;border:1px outset;" cellpadding="3" cellspacing="0"<br />
| TIP:<br />
|-<br />
| To make it easier to find things, set "Show Available Types" to yes. This will show separate categories (Applications/Themes/Patches/etc.) rather than show everything in one long list.<br />
|}<br />
|}<br />
<BR><br />
<br />
=== Feed management ===<br />
{| Width="70%" VAlign="top"<br />
| valign="top"|[[image:Preware_feeds.png|160px|frameless|left|text-top]]<br />
| valign="top"|In the preferences section on the top bar on the right side is a button that takes you to the feeds screen. On the feeds screen you can select which feeds are loaded and which ones are not. Simply select the on or off button for that feed. (If you are not interested in themes you can disable the two feeds for themes to speed up the updating of feeds) Preware comes with the following feeds by default (some are disabled by default, but are easily enabled if desired). <br />
<br />
{| style="color:black; background-color:#FFFFE0;" cellpadding="3" cellspacing="0" Border="1"<br />
| align="center" colspan="4" | '''Default Feeds'''<br />
|-<br />
| align="center" | [http://ipkg.preware.org/feeds/precentral/ PreCentral]<br />
|-<br />
| align="center" | [http://ipkg.preware.org/feeds/webos-internals/ WebOS Internals]<br />
| align="center" | [http://ipkg.preware.org/feeds/optware/ Optware]<br />
| align="center" | [http://ipkg.preware.org/feeds/webos-patches/ WebOS Patches]<br />
| align="center" | [http://ipkg.preware.org/feeds/webos-kernels/ WebOS Kernels]<br />
|-<br />
|}<br />
|}<br />
<br />
<br />
{| style="color:black; background-color:#F9F9F9;border:1px outset;" VAlign="middle" cellpadding="3" cellspacing="0" Width="70%"<br />
| align="center" | See [[Testing Feeds]] for detailed instructions on adding custom feeds.<br />
|}<br />
<BR><br />
<br />
=== Package updates ===<br />
{| Width="70%" VAlign="top"<br />
| valign="top"|[[image:UpdateFeeds.png|160px|frameless|left|text-top]]<br />
| valign="top"|To update feeds, simply select "Update Feeds" from the Application Menu. Preware will download the package list information from your enabled feeds. After processing the data, you will be back at the main list of available items.<br />
|}<br />
<BR><br />
<br />
=== Installing packages ===<br />
{| Width="70%" VAlign="top"<br />
| valign="top"|[[image:SelectApp.png|160px|frameless|left|text-top]]<br />
| valign="top"|There are a few ways to select and install a "package" (application/patch/theme/etc.). Using "List of Everything" would be the simplest.<br />
# Find the package you want to install either by scrolling and tapping on it, or just start typing<br />
# Tap the "Install" button that the bottom of the package's page to install.<br />
|}<br />
<BR><br />
<br />
=== Removing packages ===<br />
{| Width="70%" VAlign="top"<br />
| valign="top"|[[image:RemoveAppTap.png|160px|frameless|left|text-top]]<br />
| valign="top"|Removing a package is just as easy.<br />
# On the main screen, tap "Installed Packages", then the category of the package you want to remove<br />
# Tap the Package you want to remove<br />
# Tap the "Remove" button that the bottom of the package's page.<br />
|}<br />
<BR><br />
<br />
=== Blacklist (category filters) ===<br />
{| Width="70%" VAlign="top"<br />
[[File:preware_2011-09-03_165038.png]]''' '''[[File:preware_2011-09-03_165049.png]]<br />
| valign="top" | The Preware "Blacklist" is a tool used to hide packages (applications, patches, etc) that you do not want to see, such as mass-produced book apps or real estate apps. This tool can also be used to hide unavailable packages, such as patches that are not compatible with your current webOS version. Got to Preferences in Preware and scroll to the Blacklist section. You can add whatever filters you like to customize your Preware experience. To hide all apps from a particular Maintainer, choose a "Maintainer" filter with the package maintainer in the search field. To hide unavailable packages, choose a "Category" filter, with "Unavailable" in the search field.<br />
|}<br />
<BR><br />
<br />
<!--<br />
{| style="color:black; background-color:#F9F9F9;border:1px outset;" cellpadding="3" cellspacing="0"<br />
<br />
=== Applications ===<br />
=== Themes ===<br />
=== Patches ===<br />
=== Installed Packages ===<br />
=== List of Everything ===<br />
=== Saved Package List ===<br />
--><br />
<br />
== Operating notes ==<br />
=== Limitations ===<br />
No known limitations.<br />
<br />
<BR><br />
=== Known bugs ===<br />
* When selecting a patch with dependencies, if you view those dependencies then install them, when Preware returns you to the original patch's screen it will still have the 'install' button showing even though it is installed successfully. Swiping back and returning will show the correct status.<br />
<br />
* The Update All button can get confused if there are patches with complex dependencies. This will be fixed in a future version.<br />
<br />
* If updates to App Catalog applications are pending, they will be silently skipped when using the Update All button.<br />
<br />
* The Updates feature from the regular Palm Launcher, may claim that application updates are needed, and then when the user clicks Show Updates shows the App Catalog's installed applications, there are none shown that need updating. This isn't as expected. This is because an app that was previously only in Preware has now migrated to the Palm Catalog. Don't worry, your apps are up to date (with the possible exception of the one with the conflict.) This is not a bug in Preware per se' but an app version conflict because the app is in both the Palm Catalog and also in Homebrew. Notice that you don't need to remove Preware to install the app from the official catalog, but simply disable the feed in Preware then "update feeds" to refresh the list then it should install fine from the official app catalog.<br />
<br />
<BR><br />
== Changelog ==<br />
<BR><br />
For those interested, the full Changelog can be [http://git.webos-internals.org/?p=applications/preware.git;a=tags found here]. Listed below is the Changelog since the 1.0 milestone.<br />
<BR><BR><br />
<br />
; 1.6.3:<br />
* WebOS Internals has been formally notified by Richard Kerris (HP Vice President of Worldwide Developer Relations) that open access to the webOS app catalog feed (including the beta and web feeds) is no longer available to third party developers or applications. Please direct any questions about this decision (which is final and permanent) to HP, not to WebOS Internals.<br />
* Removed all HP webOS app catalog feeds from new installations of Preware.<br />
<br />
; 1.6.2:<br />
* Added the clock themes feed (disabled by default).<br />
<br />
; 1.6.0:<br />
* webOS 2.x Just Type integration.<br />
* Fixed package list ordering bug.<br />
* Layout fixes for Pixi/Veer.<br />
<br />
; 1.5.9:<br />
* Fixed parse errors resulting from packages with very large descriptions.<br />
* Fixed problems with updates to app catalog apps.<br />
<br />
; 1.5.8:<br />
* Moved blacklisting to feed load to speed up listing.<br />
* Suggests a reload after changing the blacklist.<br />
* Fixed homebrew feed/catalog feed same appid bug.<br />
<br />
; 1.5.7:<br />
* Added check to make sure package has a title before trying to search it.<br />
<br />
; 1.5.6:<br />
* Removed support for Visibility feed value - use a category filter to exclude Unavailable packages if desired.<br />
<br />
; 1.5.5:<br />
* Added support for Visibility feed value.<br />
* Fix display of screenshots from devices with a different resolution.<br />
* Test fix for custom feed on network with no internet connection.<br />
* Style updates for pre3 screen size.<br />
<br />
; 1.5.4:<br />
* Updated French translations (courtesy of Clément).<br />
<br />
; 1.5.3:<br />
* Reinstated banner notification of manual saved package list update.<br />
<br />
; 1.5.2:<br />
* Check if package dates are actually dates.<br />
* Removed banner notification of saved package list being saved.<br />
<br />
; 1.5.1:<br />
* Added support for optware testing feeds.<br />
<br />
; 1.5.0:<br />
* You must upgrade to this version for full webOS 2.0 compatibility.<br />
<br />
; 1.4.9:<br />
* Better compatibility with unknown future webOS versions.<br />
<br />
; 1.4.8:<br />
<br />
* Now calls the correct software manager updates screen on webOS 2.0.<br />
<br />
; 1.4.7:<br />
* Fixed update, install and remove status messages on webOS 2.0.<br />
<br />
; 1.4.6:<br />
* New "App Catalog" theme preferences thanks to Garrett92C.<br />
* Added support for "MaxWebOSVersion" in the feeds.<br />
<br />
; 1.4.5:<br />
* Added support for identifying when running on a Pre 2 device.<br />
<br />
; 1.4.4: <br />
* Updated the version check to support future webOS versions.<br />
<br />
; 1.4.2:<br />
* Added Category as a blacklist option.<br />
<br />
; 1.4.1:<br />
* Added a Changelog button to the Help scene.<br />
<br />
; 1.4.0:<br />
* Added help to preferences scene.<br />
* Fixed swipe-to-delete bug in blacklist.<br />
* Updated Italian translations (courtesy of Darkmagister).<br />
* Added "Get Info" button to package install scene.<br />
* Added "Send" button to ipkg log scene.<br />
* Fixed bug when loading large package descriptions.<br />
<br />
; 1.3.8:<br />
* Updated French translations (courtesy of Yannick LE NY).<br />
<br />
; 1.3.6:<br />
* Preware now supports installation of application package files (.ipk files) directly from URLs, email attachments, and local files.<br />
* Also supported are Send to Preware links on homebrew application gallery and news websites (this requires the Neato! application to also be installed).<br />
* If Preware continually asks you about file associations on every single launch, even after you have answered Yes to the questions it asks, then you may have a damaged file association table and will need to run the Emergency MimeTable Reset tool and then reboot to repair it.<br />
<br />
; 1.3.5:<br />
* Updated German translations.<br />
<br />
; 1.3.3:<br />
* Always ask the user before modifying the file association list.<br />
* Updated French translations. <br />
<br />
; 1.3.1:<br />
* Check whether Preware is the default application for handling packages, and advise the user if it is not.<br />
<br />
; 1.3.0:<br />
* Added Preware to the Default Applications list to allow for installing packages from email messages and the browser.<br />
<br />
; 1.2.9:<br />
* Fixed the Saved Package List swipe to delete bug.<br />
<br />
; 1.2.8:<br />
* Open the My Applications app catalog screen when multiple app catalog applications need updating.<br />
<br />
; 1.2.7<br />
* Fixed the Install Package problem when running on the emulator.<br />
<br />
; 1.2.6<br />
* Remove most of the curl download progress messages from the ipkg log (this fixes a buffer overrun crash).<br />
<br />
; 1.2.5<br />
* Added Ask At Launch option to update preference.<br />
* Added Blacklist support.<br />
* German Translation updates.<br />
* Fixed update banner problem.<br />
* Fixed package with too many dependent packages problem.<br />
<br />
; 1.2.4<br />
* Added support for MinWebOSVersion, DeviceCompatibility and PreActionMessage package attributes.<br />
<br />
; 1.2.3<br />
* Enable the Install Package feature to also work for incorrectly formatted filenames.<br />
<br />
; 1.2.1<br />
* Robustified the Install Package feature - will now run post-install scripts for all correctly formatted filenames (packageid_version_arch.ipk).<br />
<br />
; 1.2.0<br />
* Added Install Package functionality, allowing installation of packages from URLs and local files.<br />
* Moved Saved Package List from the main screen to the app menu.<br />
<br />
; 1.1.7<br />
* Added support for Kernel Modules.<br />
<br />
; 1.1.5<br />
* Use a gentler reboot procedure to allow open files to be flushed to disk.<br />
<br />
; 1.1.4<br />
* Fixed hang on package download failures.<br />
<br />
; 1.1.2 <br />
* Added support for the ENABLE_TESTING_FEEDS Meta-Doctor feature.<br />
* Removed the tag line about eventually reaching 1.0.<br />
* Minor French translation updates, courtesy of Yannick LE NY.<br />
<br />
; 1.1.1<br />
* Added languages field in package descriptions. <br />
* Added preference to only show packages with English descriptions.<br />
<br />
; 1.1.0<br />
* Now defaults (selectable by a preference option) to using an alternative installation method to avoid the webOS 1.4 rescan bug which closes and stops notifications from your phone, email and messaging applications. <br />
* Updated German and French translations.<br />
* Fixed deletion of disabled feeds. <br />
* Added service version number to the ipkgservice API. Robustified the service upgrade process.<br />
<br />
; 1.0.0<br />
* The Package Manager Service has been rewritten in C and incorporated into this single Preware package.<br />
* Installing Preware 1.0.0 will remove the Package Manager Service as the last step of the upgrade process.<br />
<br />
<BR><br />
== Repository ==<br />
Preware and the Package Manager Service are housed in the applications/preware git repository at http://git.webos-internals.org/<br />
<br />
For more information getting your application published in the WebOS Internals Source Code Repositories, please see the [[WebOS Internals Source Code Repositories]] page. For commit permission to the open source project, contact rwhitby on #webos-internals or email [mailto:support@webos-internals.org support@webos-internals.org]</div>XP1http://wiki.webos-internals.org/index.php?title=Hulu_Fix&diff=18329Hulu Fix2011-09-06T05:57:17Z<p>XP1: </p>
<hr />
<div>== History ==<br />
On August 24, 2011, Hulu decided to block video access to Touchpad users everywhere with no application in sight. This fix allows access to Hulu again, but may impact other Flash objects on the internet. What is affected is unknown at this point.<br />
<br />
On August 26, 2011, this is now '''an installable patch''' within the WebOS-Internals patch feed using Preware.<br />
<br />
== Install with webOS Quick Install ==<br />
Open webOS Quick Install.<br />
<br />
Go to tools and then Linux Commandline.<br />
<br />
Copy, paste, and enter each line separately:<br />
<pre><nowiki><br />
cd /<br />
cp /usr/lib/BrowserServerPlugins/libflashplayer.so /usr/lib/BrowserServerPlugins/libflashplayer.so.bak<br />
sed -i 's/WEB 10/WIN 10/' /usr/lib/BrowserServerPlugins/libflashplayer.so<br />
reboot<br />
</nowiki></pre><br />
<br />
== Install with Terminus/Putty/Novacom ==<br />
Copy, paste, and enter each line separately:<br />
<pre><nowiki><br />
cd /<br />
cp /usr/lib/BrowserServerPlugins/libflashplayer.so /usr/lib/BrowserServerPlugins/libflashplayer.so.bak<br />
sed -i 's/WEB 10/WIN 10/' /usr/lib/BrowserServerPlugins/libflashplayer.so<br />
reboot<br />
</nowiki></pre><br />
<br />
== Undo your changes ==<br />
Copy and paste the following into webOS Quick Install's Linux Commandline or your Terminus/Putty/Novacom terminal:<br />
<pre><nowiki><br />
cd /<br />
cp /usr/lib/BrowserServerPlugins/libflashplayer.so.bak /usr/lib/BrowserServerPlugins/libflashplayer.so<br />
reboot<br />
</nowiki></pre></div>XP1http://wiki.webos-internals.org/index.php?title=Touchpad_Teardown&diff=18327Touchpad Teardown2011-09-06T05:48:20Z<p>XP1: </p>
<hr />
<div><html><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="296" id="utv889877" name="utv_n_881019"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=17096227&amp;locale=en_US&amp;hasticket=false&amp;v3=1" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/viewer.swf" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=17096227&amp;locale=en_US&amp;hasticket=false&amp;v3=1" width="480" height="296" allowfullscreen="true" allowscriptaccess="always" id="utv889877" name="utv_n_881019" src="http://www.ustream.tv/flash/viewer.swf" type="application/x-shockwave-flash" /></object><br />
</html><br />
<br />
== References ==<br />
* [http://www.ustream.tv/recorded/17096227 http://www.ustream.tv/recorded/17096227]</div>XP1http://wiki.webos-internals.org/index.php?title=Tutorials_webOS_Activating_Touchpad_Demo_Unit&diff=18325Tutorials webOS Activating Touchpad Demo Unit2011-09-06T05:43:02Z<p>XP1: wikification</p>
<hr />
<div>When the TouchPad went on clearance, many stores were sold out immediately after opening. In many cases, the demo unit was sold as is. The demo unit is a fully functional unit, but it has a modified version of WebOS on it. In order to restore it to a standard model, you must go through this process:<br />
<br />
== Permanent solution ==<br />
The best thing to do is change your demo unit <code>PN</code> and <code>ProductSKU</code> tokens to match with a 32 GiB TouchPad's (I believe that most demo units are 32 GiB. If yours is 16 GiB, make the tokens match another 16 GiB TouchPad's).<br />
<br />
On a demo unit, the tokens are:<br />
<pre><br />
<Val name="PN" value="180-10928-00"/><br />
<Val name="ProductSKU" value="FB359UA#ABA"/><br />
</pre><br />
<br />
On a normal unit, they are:<br />
<pre><br />
<Val name="PN" value="180-10871-00"/><br />
<Val name="ProductSKU" value="FB464UA#ABA"/><br />
</pre><br />
<br />
For now, you can make a WebOS doctor using meta doctor to change the <code>topaz.xml</code> file. There are instructions here on how to do this: [http://www.webos-internals.org/wiki/Sprint_Pre_Plus#Step_2:_Setup_meta-doctor]. Alternatively, the file will be called <code>topaz.xml</code>, not <code>castle.xml</code>.<br />
<br />
This will allow you to create a WebOS doctor that will forcibly overwrite your tokens for you.<br />
<br />
== Temporary workaround ==<br />
This section is not an actual fix. It is a temporary workaround that will soon be obsolete.<br />
<br />
=== Restoring HP WebOS ===<br />
First, restore the default firmware with WebOS doctor: [http://palm.cdnetworks.net/rom/touchpad/p302r0d08012011/wifip302rod/webosdoctorp302hstnhwifi.jar http://palm.cdnetworks.net/rom/touchpad/p302r0d08012011/wifip302rod/webosdoctorp302hstnhwifi.jar].<br />
<br />
You must put the TouchPad into recovery mode by powering it off and pressing the power button and the volume up button at the same time. You will see a large USB logo to confirm that this is successful.<br />
<br />
Run the Doctor, and connect the TouchPad via USB.<br />
<br />
The update process takes several minutes. This will put the full version of webOS on your TouchPad, but you will find that you cannot get past the first run page.<br />
<br />
=== Bypassing activation ===<br />
Download this zip file and extract the contents to the desktop: [http://onebluepoint.net/chekz-devicetool.zip http://onebluepoint.net/chekz-devicetool.zip].<br />
<br />
Open a command line (Start > Run > cmd) or terminal window, and run these commands in order:<br />
# <code>cd \Desktop</code> <br />
# <code>java -jar devicetools.jar</code><br />
<br />
Allow the program to run for several minutes. Your tablet will reboot a few times in the process. The program will tell you when the device is ready. Once it boots, you'll be able to use WebOS freely, although you still will not have an account.<br />
<br />
=== Load Impostah ===<br />
Now that you're up and running, all you need is a WebOS account. Download Preware from this page: [http://en.m.webos-internals.org/wiki?search=preware http://en.m.webos-internals.org/wiki?search=preware].<br />
<br />
Once this program is loaded, simply type "Impostah" into the bar, and click install.<br />
<br />
You will see the app under the downloads tab on your TouchPad when it is ready. Run it.<br />
<br />
=== Creating your WebOS account ===<br />
Once Impostah is open, we need to delete the dummy account that the activation bypass program created in order to add our own.<br />
# Click Palm Profile, and reset it. Confirm that you want to do this. This will reboot your tablet.<br />
# Once rebooted, you will be at the same activation screen that we had to bypass earlier.<br />
# Go to create your account again. This time, instead of saying you cannot create it, the loading tab should spin forever. After a few minutes, you will want to force your tablet to restart by holding the home button and the power button. Check your email to make sure that you got a welcome message from HP. Once you do, you can either login again or bypass the activation.<br />
<br />
=== Updating HP App Catalog ===<br />
One more step before you're up and running!<br />
<br />
It seems that the version of HP App Catalog included is out of date and only shows a blank page. However, you can use the menu to get into software manager and update it.<br />
<br />
Congratulations, you just beat the madness by buying the demo unit that no one wanted. ;) Special thanks to Jack87, djhomeboy, and rwhitby for helping make this happen!</div>XP1http://wiki.webos-internals.org/index.php?title=Dbdump&diff=18267Dbdump2011-09-04T11:28:57Z<p>XP1: </p>
<hr />
<div>This is just a simple script that will find all .db3 or .db files and dump them to the <code>/media/internal/dbdump</code> directory as HTML, so you can easily poke around to see if there is anything interesting.<br />
<br />
<pre><nowiki><br />
<br />
#!/bin/ash<br />
SQLITE3=/usr/bin/sqlite3<br />
FOLDER=/media/internal/dbdump<br />
INDEX=$FOLDER/index.html<br />
DB=1<br />
<br />
getTables() {<br />
$SQLITE3 $1 .tables<br />
}<br />
<br />
dumpTable() {<br />
db=$1<br />
tableName=$2<br />
fileName=$3<br />
$SQLITE3 $db <<EOF >> $fileName<br />
.mode html<br />
.header ON<br />
.nullvalue --NULL--<br />
select * from $tableName;<br />
.exit<br />
EOF<br />
}<br />
<br />
if [ -d $FOLDER ]<br />
then<br />
rm -rf $FOLDER.bak<br />
mv $FOLDER $FOLDER.bak<br />
fi<br />
<br />
mkdir $FOLDER<br />
<br />
files=`find / -name '*.db' -o -name '*.db3'`<br />
<br />
cat <<EOF > $INDEX<br />
<HTML><HEAD><TITLE>dbdump</TITLE></HEAD><BODY><br />
EOF<br />
<br />
for db in $files<br />
do<br />
echo "DB:$db"<br />
echo "<HR/>$db<UL>" >> $INDEX<br />
dbFolder=$FOLDER/db$DB<br />
dbIndex=$dbFolder/index.html<br />
mkdir $dbFolder<br />
echo "<HTML><HEAD><TITLE>dbdump - $db</TITLE></HEAD><BODY>Tables<UL>" > $dbIndex<br />
tables=`getTables $db`<br />
for table in $tables<br />
do<br />
echo " - $table"<br />
echo "<LI/><A href='db$DB/$table.html'>$table</A>" >> $INDEX<br />
echo "<LI/><A href='$table.html'>$table</A>" >> $dbIndex<br />
tablePage=$dbFolder/$table.html<br />
echo "<HTML><HEAD><TITLE>dbdump - $db/$table</TITLE></HEAD><BODY><TABLE border=1>" > $tablePage<br />
dumpTable $db $table $tablePage<br />
echo "</TABLE></BODY></HTML>" >> $tablePage<br />
done<br />
echo "</UL>" >> $INDEX<br />
echo "</UL>" >> $dbIndex<br />
echo "Generated: `date`" >> $dbIndex<br />
echo "</BODY></HTML>" >> $dbIndex<br />
DB=$(($DB+1))<br />
done<br />
<br />
echo "Generated: `date`" >> $INDEX<br />
echo "</BODY></HTML>" >> $INDEX<br />
<br />
<br />
</nowiki></pre></div>XP1http://wiki.webos-internals.org/index.php?title=Nintendo&diff=18265Nintendo2011-09-04T11:27:10Z<p>XP1: </p>
<hr />
<div>[[Image:Nintendo.png|right]]<br />
<br />
NOTE: As of 2009/09/17, Directfb 1.2, SDL 1.2, and FCEUX 2.1.1 have ipks that can be installed using Preware! [[User:PuffTheMagic|PuffTheMagic]] 16:09, 17 September 2009 (UTC)<br />
<br />
Nintendo emulation is now possible without having to run "Classic" for WebOS. Simply compile [http://fceux.com/web/download.html FCEUltra] from within a Debian chroot.<br />
<br />
= Demos =<br />
* [http://www.youtube.com/watch?v=lYxAEEHsmeE Video of game being played]<br />
* [http://www.youtube.com/watch?v=agBx8PHzW-k Video of games being played. Launched from Webos]<br />
* [http://i40.tinypic.com/157fc45.png Unmodified version of image @ right]<br />
<br />
== Installation ==<br />
<br />
1. Type the following in a [[Debian]] chroot, as root:<br />
<pre><nowiki><br />
apt-get update<br />
apt-get install bzip2 gcc g++ scons libsdl1.2-dev libsdl1.2debian-esd liblua5.1-dev zlib1g-dev zenity<br />
</nowiki></pre><br />
<br />
2. Download the source.<br />
<pre><nowiki><br />
wget "http://softlayer.dl.sourceforge.net/project/fceultra/Source Code/2.1.2 src/fceux-2.1.2.src.tar.bz2"<br />
</nowiki></pre><br />
<br />
3. Extract the bz2 using bunzip2, then extract the tar by typing the following:<br />
<br />
<pre><nowiki><br />
bunzip2 fceux-2.1.2.src.tar.bz2<br />
tar xvf fceux-2.1.2.src.tar<br />
</nowiki></pre><br />
<br />
4. Switch to the source path:<br />
<br />
<pre><nowiki><br />
cd /fceu<br />
</nowiki></pre><br />
<br />
5. Compile the program from source by typing the following:<br />
<br />
<pre><nowiki><br />
scons install<br />
</nowiki></pre><br />
<br />
When done compiling, the program is copied to /usr/local/bin. When you first load the application, a configuration directory is created in your $HOME path. Modify this file as needed.<br />
Using the instructions [[directfb | here]], install and configure directfb. Some program specific notes about the directfbrc config file:<br />
<br />
<pre><nowiki><br />
mode=320x480<br />
scaled=320x480 #Insert this line to run games at full screen at the sacrifice of framerate.<br />
primary-layer=00<br />
pixelformat=ARGB<br />
no-vt<br />
no-cursor<br />
bg-color=00000000<br />
hardware<br />
</nowiki></pre><br />
<br />
6. Run the following command:<br />
<br />
<pre><nowiki><br />
export SDL_VIDEODRIVER='directfb'<br />
</nowiki></pre><br />
<br />
7. Run the following command to configure the key mappings:<br />
<br />
<pre><nowiki><br />
fceux --inputcfg gamepad /usr/games/<insert favorite nes.rom><br />
</nowiki></pre><br />
<br />
8. Outside the Debian chroot, type the following command to shutdown the LunaSysMgr:<br />
<br />
<pre><nowiki><br />
/sbin/initctl stop LunaSysMgr #NOTE: THIS WILL KILL THE WEBOS GUI.<br />
</nowiki></pre><br />
<br />
9. Play your favorite games by typing the following command:<br />
<br />
<pre><nowiki><br />
fceux --sound 0 --bpp 8 --frameskip 2 /usr/games/<insert favorite nes.rom><br />
</nowiki></pre><br />
<br />
10. When finished playing, you can re-enable the LunaSysMgr by typing the following outside the Debian chroot:<br />
<br />
<pre><nowiki><br />
/sbin/initctl start LunaSysMgr<br />
</nowiki></pre><br />
<br />
== Launching from within WebOS ==<br />
<br />
The emulator can be launched from the Mojo WebOS [[Application:Terminal|Terminal]] app, which can be downloaded from [[Preware|Preware]]. The emulator even works with Luna on, meaning you can launch it from the WebOS Terminal, and receive calls even when playing a game. To exit games when playing like this, press the orange button to return to normal WebOS function. <br />
<br />
However, with Luna on, the WebOS GUI functions will turn off the screen and go into sleep mode after a period of time, which causes the emulator to crash. This period of time is defined in the WebOS "Screen & Lock" application under "Turn Off After". The workarounds are to tap the screen periodically before the screen turns off, use the "disable screen timer" functionality in the Webos app "Mytether"a, or use the "More Standby Times" patch that can also be applied using [[Preware|Preware]] (original patch notes [[Patch_webOS_Changing_the_"Turn_off_after_X"_time| available here]].<br />
<br />
== Notes on playability ==<br />
<br />
Works with most games. Some things that might help with speed:<br />
<br />
* Overclock your Pre. Use at your own risk. See [[Patch_webOS_CPU_Frequency_or_Voltage_Scaling]].<br />
* Experiment with different <code>--frameskip</code> values.<br />
* Comment out or remove the <code>scaled=</code> line in directfbrc.</div>XP1http://wiki.webos-internals.org/index.php?title=HP_TP_Key_mapping&diff=18263HP TP Key mapping2011-09-04T11:21:05Z<p>XP1: </p>
<hr />
<div>== HP TouchPad key mappings for device buttons ==<br />
<br />
=== This page is under construction and is served as a reference page for now ===<br />
<br />
<br />
----<br />
<br />
----<br />
<br />
----<br />
<br />
<br />
event0 covers multiple GPIO keys<br />
<br />
event0 has 4 keys - KEY_VOLUMEDOWN, KEY_VOLUMEUP, KEY_REPLY and ?<br />
<br />
event0 they names are self-explanatory except KEY_REPLY is the home key... the key labeled ? is literally labeled as ? and it's purpose is unknown<br />
<br />
event1 is pmic8058_pwrkey with KEY_END and KEY_POWER<br />
<br />
event2 is headset<br />
<br />
<br />
'''tapping''' power sends KEY_END over event1, '''holding''' it (for 1/2 second) sends KEY_POWER<br />
<br />
--event0 is on the CPU itself.<br />
<br />
--event2 could be from the Audio Processor<br />
<br />
----<br />
<br />
----<br />
<br />
<br />
evtest /dev/input/event0<br />
<br />
Input driver version is 1.0.0<br />
<br />
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100<br />
<br />
Input device name: "gpio-keys"<br />
<br />
Supported events:<br />
<br />
Event type 0 (Sync)<br />
<br />
Event type 1 (Key)<br />
<br />
<pre><br />
Event code 114 (VolumeDown)<br />
Event code 115 (VolumeUp)<br />
Event code 232 (Reply)<br />
Event code 249 (?)<br />
</pre><br />
<br />
event type 5 (?)<br />
<br />
----<br />
<br />
evtest /dev/input/event1<br />
<br />
Input driver version is 1.0.0<br />
<br />
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0<br />
<br />
Input device name: "pmic8058_pwrkey"<br />
<br />
Supported events:<br />
<br />
Event type 0 (Sync)<br />
<br />
Event type 1 (Key)<br />
<br />
<pre><br />
Event code 107 (End)<br />
Event code 116 (Power)<br />
</pre><br />
<br />
<br />
----<br />
<br />
evtest /dev/input/event2<br />
<br />
Input driver version is 1.0.0<br />
<br />
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0<br />
<br />
Input device name: "headset"<br />
<br />
Supported events:<br />
<br />
Event type 0 (Sync)<br />
Event type 1 (Key)<br />
<br />
<pre><br />
Event code 164 (PlayPause)<br />
</pre><br />
<br />
Event type 5 (?)<br />
Event code 2 (?)<br />
Event code 4 (?)<br />
<br />
<br />
----<br />
<br />
----<br />
<br />
== sysfs locations ==<br />
<br />
<br />
udevadm info --query=all --name=/dev/input/event0<br />
<br />
<pre><br />
P: /devices/platform/gpio-keys/input/input0/event0<br />
<br />
E: UDEV_LOG=3<br />
<br />
E: DEVPATH=/devices/platform/gpio-keys/input/input0/event0<br />
<br />
E: MAJOR=13<br />
<br />
E: MINOR=64<br />
<br />
E: DEVNAME=input/event0<br />
<br />
E: SUBSYSTEM=input<br />
</pre><br />
<br />
----<br />
<br />
<br />
udevadm info --query=all --name=/dev/input/event1<br />
<br />
<pre><br />
P: /devices/i2c-6/6-0055/pm8058-pwrkey/input/input1/event1<br />
<br />
E: UDEV_LOG=3<br />
<br />
E: DEVPATH=/devices/i2c-6/6-0055/pm8058-pwrkey/input/input1/event1<br />
<br />
E: MAJOR=13<br />
<br />
E: MINOR=65<br />
<br />
E: DEVNAME=input/event1<br />
<br />
E: SUBSYSTEM=input<br />
</pre><br />
<br />
----<br />
<br />
<br />
udevadm info --query=all --name=/dev/input/event2<br />
<br />
<pre><br />
P: /devices/platform/soc-audio.0/sound/card0/input2/event2<br />
<br />
E: UDEV_LOG=3<br />
<br />
E: DEVPATH=/devices/platform/soc-audio.0/sound/card0/input2/event2<br />
<br />
E: MAJOR=13<br />
<br />
E: MINOR=66<br />
<br />
E: DEVNAME=input/event2<br />
<br />
E: SUBSYSTEM=input<br />
</pre></div>XP1http://wiki.webos-internals.org/index.php?title=Tutorials_webOS_Activating_Touchpad_Demo_Unit&diff=18261Tutorials webOS Activating Touchpad Demo Unit2011-09-04T11:16:44Z<p>XP1: </p>
<hr />
<div>When the TouchPad went on clearance, many stores were sold out immediately after opening. In many cases, the demo unit was sold as is. The demo unit is a fully functional unit, but it has a modified version of WebOS on it. In order to restore it to a standard model, you must go through this process:<br />
<br />
== Permanent solution ==<br />
The best thing to do is change your demo unit <code>PN</code> and <code>ProductSKU</code> tokens to match with a 32 GiB TouchPad's (I believe that most demo units are 32 GiB. If yours is 16 GiB, make the tokens match another 16 GiB TouchPad's).<br />
<br />
On a demo unit, the tokens are:<br />
<pre><br />
<Val name="PN" value="180-10928-00"/><br />
<Val name="ProductSKU" value="FB359UA#ABA"/><br />
</pre><br />
<br />
On a normal unit, they are:<br />
<pre><br />
<Val name="PN" value="180-10871-00"/><br />
<Val name="ProductSKU" value="FB464UA#ABA"/><br />
</pre><br />
<br />
For now, you can make a WebOS doctor using meta doctor to change the <code>topaz.xml</code> file. There are instructions here on how to do this: [http://www.webos-internals.org/wiki/Sprint_Pre_Plus#Step_2:_Setup_meta-doctor]. Alternatively, the file will be called <code>topaz.xml</code>, not <code>castle.xml</code>.<br />
<br />
This will allow you to create a WebOS doctor that will forcibly overwrite your tokens for you.<br />
<br />
== Restoring HP WebOS ==<br />
First, restore the default firmware with WebOS doctor: [http://palm.cdnetworks.net/rom/touchpad/p302r0d08012011/wifip302rod/webosdoctorp302hstnhwifi.jar http://palm.cdnetworks.net/rom/touchpad/p302r0d08012011/wifip302rod/webosdoctorp302hstnhwifi.jar].<br />
<br />
You must put the TouchPad into recovery mode by powering it off and pressing the power button and the volume up button at the same time. You will see a large USB logo to confirm that this is successful.<br />
<br />
Run the Doctor, and connect the TouchPad via USB.<br />
<br />
The update process takes several minutes. This will put the full version of webOS on your TouchPad, but you will find that you cannot get past the first run page.<br />
<br />
== Bypassing activation ==<br />
Download this zip file and extract the contents to the desktop: [http://onebluepoint.net/chekz-devicetool.zip http://onebluepoint.net/chekz-devicetool.zip].<br />
<br />
Open a command line (Start > Run > cmd) or terminal window, and run these commands in order:<br />
# <code>cd \Desktop</code> <br />
# <code>java -jar devicetools.jar</code><br />
<br />
Allow the program to run for several minutes. Your tablet will reboot a few times in the process. The program will tell you when the device is ready. Once it boots, you'll be able to use WebOS freely, although you still will not have an account.<br />
<br />
== Load Impostah ==<br />
Now that you're up and running, all you need is a WebOS account. Download Preware from this page: [http://en.m.webos-internals.org/wiki?search=preware http://en.m.webos-internals.org/wiki?search=preware].<br />
<br />
Once this program is loaded, simply type "Impostah" into the bar, and click install.<br />
<br />
You will see the app under the downloads tab on your TouchPad when it is ready. Run it.<br />
<br />
== Creating your WebOS account ==<br />
Once Impostah is open, we need to delete the dummy account that the activation bypass program created in order to add our own.<br />
# Click Palm Profile, and reset it. Confirm that you want to do this. This will reboot your tablet.<br />
# Once rebooted, you will be at the same activation screen that we had to bypass earlier.<br />
# Go to create your account again. This time, instead of saying you cannot create it, the loading tab should spin forever. After a few minutes, you will want to force your tablet to restart by holding the home button and the power button. Check your email to make sure that you got a welcome message from HP. Once you do, you can either login again or bypass the activation.<br />
<br />
== Updating HP App Catalog ==<br />
One more step before you're up and running!<br />
<br />
It seems that the version of HP App Catalog included is out of date and only shows a blank page. However, you can use the menu to get into software manager and update it.<br />
<br />
Congratulations, you just beat the madness by buying the demo unit that no one wanted. ;) Special thanks to Jack87, djhomeboy, and rwhitby for helping make this happen!</div>XP1http://wiki.webos-internals.org/index.php?title=Angstrom_on_Touchpad&diff=18259Angstrom on Touchpad2011-09-04T10:57:51Z<p>XP1: </p>
<hr />
<div>Booting Angstrom on the TouchPad is actually fairly easy. Here are the steps to get it going.<br />
<br />
== What to boot ==<br />
<br />
For this, we will have a beagleboard of Angstrom located in an LVM on the touchpad named ext2fs. This is un-tested with an ext3 filesystem, but it will likely work. The Angstrom rootfs needs to be right in the base of the LVM, not in a sub-folder.<br />
<br />
We are going to be creating a multi-file uImage. It will be one file with both a uImage kernel as well as an initrd.<br />
<br />
== Gather required bits ==<br />
<br />
First novaterm into the TouchPad and run the following commands<br />
<br />
cd /var/home/root<br />
tar czvf boot.tgz -C /boot/ .<br />
<br />
Then exit out of novaterm and back on your PC run the following<br />
<br />
mkdir -p uImage/initrd<br />
cd uImage<br />
novacom get file:///var/home/root/boot.tgz > boot.tgz<br />
<br />
This will have everything you need to create the multi-file uImage using whatever kernel is currently installed on your TouchPad. I would recommend using either UberKernel or F15, something that gives console output on bootup.<br />
<br />
== initrd ==<br />
=== Build the initrd ===<br />
<br />
First we need to make an empty file that will be used for our initrd. We will be starting off with an 8 MiB initrd.<br />
<br />
dd if=/dev/zero of=ramdisk bs=1M count=8<br />
mke2fs -Fvm0 ramdisk<br />
mount -o loop ramdisk initrd<br />
<br />
Now, we have an empty initrd ramdisk file and it is mounted as a loopback so that we can put things into it.<br />
<br />
=== Fill the initrd ===<br />
<br />
This one is pretty simple. We are going to fill the initrd with the contents of the boot.tgz EXCEPT for the kernel.<br />
<br />
mkdir boottemp<br />
tar xzvf boot.tgz -C boottemp<br />
rm boottemp/uImage<br />
mv boottemp/uImage-2.6.35-palm-tenderloin <br />
mv boottemp/* initrd<br />
<br />
=== Change the pivot_root ===<br />
<br />
You need to edit the file <code>/sbin/init</code> within the initrd to alter what rootfs is loaded at bootup.<br />
<br />
vi initrd/sbin/init<br />
<br />
Find these lines:<br />
<br />
lvm.static lvchange -ay --ignorelockingfailure /dev/mapper/store-root<br />
<br />
# May need to say "don't update mtab" option below<br />
mount -o ro /dev/mapper/store-root /realroot<br />
<br />
... and change them to:<br />
<br />
lvm.static lvchange -ay --ignorelockingfailure /dev/mapper/store-ext2fs<br />
<br />
# May need to say "don't update mtab" option below<br />
mount -o ro /dev/mapper/store-ext2fs /realroot<br />
<br />
Now, you are done with creating the initrd. You can umount initrd now if you like, or leave it mounted if you are going to be making changes and testing them.<br />
<br />
== Build the multi-file uImage ==<br />
<br />
You will need the package uboot-mkimage (at least on Ubuntu) installed to do this.<br />
<br />
== Cheater script ==<br />
<br />
I have worked up a script that runs the needed commands for you.<br />
<br />
#!/bin/bash<br />
rm uMulti uRamdisk<br />
mkimage -A arm -O linux -T ramdisk -C none -d ramdisk uRamdisk<br />
mkimage -a 0 -e 0 -A arm -O linux -T multi -C none -d uImage-2.6.35-palm-tenderloin:uRamdisk uMulti<br />
<br />
Just name the file something like <code>spin-kernel.sh</code> and give it execute permission. It should be inside of the uImage folder we made earlier, then give it a run.<br />
<br />
== Update Angstrom ==<br />
<br />
You will need to chroot into the angstrom rootfs on the TouchPad over a novaterm session and install lvm with the command:<br />
<br />
opkg install lvm2<br />
<br />
Also, one thing that I have found is that the checkroot script was not running early enough so it was halting the boot due to the rootfs still being read-only. To fix this go to /etc/rcS.d within your angstrom rootfs. Find the symlink that points to <code>../init.d/checkroot</code> and rename it to <code>S01checkroot</code>.<br />
<br />
== Boot Angstrom ==<br />
<br />
To do this, just put the TouchPad into recovery mode and memboot the multi-file uImage we made earlier. Because we are membooting it, if something goes wrong and if the TouchPad doesn't boot properly, you can force a reboot by holding Home+Power for 10 seconds, and it will safely reboot into webOS.</div>XP1http://wiki.webos-internals.org/index.php?title=Android_under_webOS_on_Touchpad&diff=18257Android under webOS on Touchpad2011-09-04T10:49:53Z<p>XP1: </p>
<hr />
<div>== Project goal ==<br />
<br />
To implement Android (probably CyanogenMod 7) on the TouchPad as a card using a <code>chroot</code> execution environment. Perhaps eventually putting each Android app as a card.<br />
: This will allow the use of Android apps (hopefully, including market) while not having to leave webOS or reflash the TouchPad.<br />
: However, it will probably not have 3D support, so people whining for "romz" will probably not be fully satisfied. ;)<br />
<br />
== Required pieces ==<br />
<br />
* The kernel may need to have Android bits compiled in. This could be added to the standard UberKernel without impacting regular operation.<br />
* The Android graphics and devices need to be rerouted to use SDL and other PDK-supported APIs.</div>XP1http://wiki.webos-internals.org/index.php?title=Changing_keyboard_layout_on_Touchpad&diff=18255Changing keyboard layout on Touchpad2011-09-04T10:41:53Z<p>XP1: </p>
<hr />
<div>Virtual keyboard layouts on the TouchPad are hardcoded into the LunaSysMgr binary. Therefore, editing the keyboard layouts requires a ''binary patch'' to the LunaSysMgr executable. HP/Palm has not released the source for LunaSysMgr.<br />
<br />
This article describes how to perform that patch, but as of late August 2011, no such patches are yet available.<br />
<br />
== Built-in layouts ==<br />
<br />
Generally, there are three keyboard layouts: QWERTY, QWERTZ and AZERTY.<br />
On the selected keys of these layouts, extended characters can be accessed with a long tap on some keys. The long tap causes a lookup of the extended character set defined for that key, and those optional characters are displayed to be selected from. For example, the "a" key may have extended characters of &aacute; or &agrave; or &acirc; or &atilde;. <br />
<br />
== I. Keyboard layouts ==<br />
<br />
Each keyboard layout consists of a main layout and 3 interchangeable bottom rows on the keyboard for different applications.<br />
<br />
The main keyboard layout describes 5 rows of 12 keys each.<br />
<br />
The 3 bottom rows are 12 keys each.<br />
<br />
In total, there are 8 rows of 12 keys each.<br />
<br />
Each key is described by 4 double words (4 bytes).<br />
<br />
# Button type (big endian)<br />
#: 2 last bytes are used<br />
#: Mostly they are set of flags but there is too few info to decode all of them.<br />
## The least one is button type<br />
### BF - no button. i.e. there is button and if you press it it will type but it is invisible (try typing to the right of 0 or to the left of 1 to check what is being typed in normal keyboard)<br />
### 3F - normal button<br />
### 40 - long button (like spacebar)<br />
## The second is length class:<br />
### 40 - short one (mostly spacers)<br />
### 80 - normal width<br />
### C0 - long one (Shift etc.)<br />
### A0 - very long one (space bar)<br />
#: Normal button will look like 0x0000803F<br />
# UTF-16LE code of main symbol followed bt 2 byte code of source (0x0000 if normal symbol, 0x0001 if special like shift enter etc, 0x2001 if text from static variable)<br />
# UTF-16LE code of secondary symbol followed bt 2 byte code of source (0x0000 if normal symbol, 0x0001 if special like shift enter etc, 0x2001 if text from static variable)<br />
# Extended characters set address (little endian)<br />
<br />
About symbols (2,3)<br />
If the greatest byte (the most right one in LE) is 01, then it is not symbol but the text from some static variable defined in the file (like smiles, .com, etc.) or special button like shift, enter, etc.<br />
If main symbol is considered regional by system (it is hardcoded somewhere in LunaSysMgr), then the behaviour is as follows:<br />
* When shift is pressed, the big letter is produced.<br />
* Without shift, small letter is produced.<br />
* With caps on, big letter is produced.<br />
* When switched to secondary keys ([]-/ button), secondary symbol is<br />
*: produced always.<br />
* Button is white<br />
If main symbol is not considered regional (unfortunately, Russian letters are not considered regional),<br />
* When shift is pressed, secondary symbol is produced.<br />
* Without shift small (if applicable), main symbol is produced.<br />
* With caps on big (if applicable), main symbol is produced.<br />
* When switched to secondary keys ([]-/ button) behaviour of<br />
*: previous statements is not changed. And look of keys too.<br />
* Button is light grey.<br />
<br />
To make non-regional keys act like regional ones, the only workaround is to duplicate them as main and secondary symbols.<br />
<br />
It is easy to say that any zero key is just skipped during keyboard generation process, so in reality, there can be less then 12 buttons in a row.<br />
<br />
Extended characters set address is internal pointer not and offset, so it is quite a work to find which one corresponds to which character set.<br />
<br />
== II. Extended characters sets ==<br />
<br />
There are 65 extended character sets.<br />
<br />
Namely:<br />
<br />
* 17 for letters (E R T Y U I O P A S D G L Z C N M). They are general for all 3 keyboard layouts.<br />
* 3*10 for numbers (1 2 3 4 5 6 7 8 9 0). For each layout there are different sets for each number<br />
* 5+5+6 for punctuations and .com. There are 4 for QWERTY and QWERTZ and 5 for AZERTY. And for each layout, there is special set for .com.<br />
* Also there is a set for http:// and for choosing keyboard size. They are general for all 3 layouts.<br />
<br />
<br />
Each set is a sequence of double words with utf-codes of letters (or links to static text) ending with zero dword.<br />
<br />
For example, for the A-letter set, it is:<br />
41000000 c0000000 c1000000 c2000000 c3000000 c4000000 c5000000 e6000000 aa000000 00000000<br />
<br />
<br />
== III. Patching script ==<br />
<br />
Just finished patching script that is run on a TouchPad, generates needed layout from JSON file and then patches LunaSysMgr on the fly.<br />
<br />
It is really easy to use. The only thing you should do is to enable developer mode and have novaterm to be able to access console (Of course, you can use ssh if you've installed openssh or dropbear from preware feeds).<br />
<br />
=== Disclaimer ===<br />
<br />
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,<br />
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF<br />
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND<br />
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE<br />
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION<br />
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION<br />
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. <br />
<br />
Use it at your own risk.<br />
<br />
It is a shell script which besides internal instructions uses the following commands:<br />
<br />
* echo (For feedback and pipelined passing of variables)<br />
* sha1sum (for determining version)<br />
* mv, cp, rm (mostly operations with tempfiles as I found that file operations are faster then string variables)<br />
* hexdump (reading hexcodes)<br />
* dd (patching main file)<br />
* sed (parsing JSON)<br />
* diff, ls, awk (Checking differences while self test and checking size during patching process)<br />
* date (for selftest and timing only)<br />
* sleep (for pausing after mount and luna stop as some people complained on errors sometimes)<br />
* initctl (to start stop luna during replacing)<br />
* mount (to remount / as rw and ro)<br />
<br />
As all these commands are part of core *nix functions, they are present in TouchPad, and so no need to install any other software.<br />
<br />
=== Script description ===<br />
<br />
Script consists of several files<br />
<br />
* patch.sh - main file that governs the process<br />
* funcs.sh - repositary of functions that are used during patching process<br />
* map.sh - Variables for mapping human readable variables to machine codes where they are necessary (like width and class of buttons)<br />
* vars - Variables that are subject to change. Naming<br />
** VERSIONS - Set of versions that are used during version check<br />
** FILEPATH - Path to LunaSysMgr. Usually /usr/bin/LunaSysMgr but can be changed to run not on TouchPad but linux machine or other.<br />
** SHA1SUMPARAMS - Parameters for sha1sum command, as I found out that they differ on TouchPad and my debian-based OS (-cs for TouchPad and --check --status for debian)<br />
* <version>.offsets.sh files - They contains offset and sha1sum information about versions of LunaSysMgr. DO NOT EDIT THESE FILES UNLESS YOU ARE ABSOLUTELY SURE OF WHAT YOU ARE DOING.<br />
* (optionally). rus.json - Containes example of layout file. It describes my original Cyrillic Russian layout replacement for AZERTY. DO NOT USE THIS FILE AS STARTING POINT. Only as example.<br />
<br />
=== Definitions ===<br />
<br />
* Main file - File that is stated as FILEPATH in "vars" file<br />
* Backup file - File with path "FILEPATH.orig"<br />
* Original file - Main or backup file, which have detected version. If both versions are detected Main file will be used.<br />
IF MAIN AND BACKUP FILES HAVE DIFFERENT BUT DETECTABLE VERSIONS (For ex. after OTA) THEN BACKUP FILE WILL BE REPLACED DURING PATCHING PROCESS WITH NEW ONE.<br />
<br />
=== Script Usage ===<br />
<br />
There are few actions that you can do with this script.<br />
<br />
* sh patch.sh --help<br />
*: Display information on developer and short info of usage.<br />
* sh patch.sh version<br />
*: Just checks the version of main and backup and shows message wheather pathcing or generation processes are available<br />
* sh patch.sh generate<br />
*: If detectable version is found, generates (or forcibly regenerates) <version>.data and <version>.template.json files using original file.<br />
*: The first one is used afterwords for patching and mostly saved to save time in future. But it safely can be deleted after each execution. Script will regenerate it whenever needed.<br />
*: The second contains full JSON info about layouts in original file<br />
* sh patch.sh check<br />
*: Performs a self test of script. Operations done are as follows:<br />
** Checks versions of main and backup files<br />
** Generates <version>.data file if not present. If present then just read info from it<br />
** Generates <version>.template.json if not present.<br />
** Reads and parses <version>.template.json. <br />
** Copies original file to temp location and patches it<br />
** Compares patched and original file and echoes the result<br />
** Deletes patched file<br />
*: If self test is failed it is strongly recommended NOT to use this script and contact developer.<br />
*: WARNING: Parsing JSON process can take 5-8 minutes for full template. Be patient.<br />
* sh patch.sh check <layout file><br />
*: Almost the same as self test but uses given template and does not delete patched file but echoes it's name (<version>.patched)<br />
*: WARNING: Parsing JSON process can take 5-8 minutes for full template. Be patient.<br />
* sh patch.sh patch <layout file><br />
*: Main patching procedure. After making patched file it backs up main file (if needed) and replaces main file with patched one.<br />
*: WARNING: Parsing JSON process can take 5-8 minutes for full template. Be patient.<br />
*: WARNING: Replacement of main file is followed with Luna restart, do not leave any unsaved data open and don't be afraid.<br />
* sh patch.sh revert<br />
*: Restores backed up file if it has detectable version.<br />
<br />
WARNING: During process the following files could be created in script folder<br />
* tmp, tmp0<br />
*: Temp files that are used by script during template generation and parsing processes. Should be auto deleted after execution. But if interrupted feel free to delete them yourselves (If they interfere with your means)<br />
* <version>.data<br />
*: File that contains important variables of layouts: offsets, button counts, virtual addresses and so on. They are needed during almost any processing of the script. If deleted file will be regenerated. It is strongly advised not to delete the file, because it speeds up the process.<br />
* <version>.template.json<br />
*: JSON file containing layout info for user<br />
<br />
=== JSON layout file structure and editing hints ===<br />
<br />
Layout file have standard [http://en.wikipedia.org/wiki/JSON JSON] structure<br />
<br />
Here is short example of it:<br />
<br />
<syntaxhighlight lang="javascript"><br />
{<br />
"layouts": {<br />
"QWERTY": {<br />
"0": {<br />
"0": {<br />
"WIDTH": "none",<br />
"CLASS": "invisible",<br />
"MAIN": {"TYPE": "C", "CHAR": "Q"},<br />
"SEC": {"TYPE": "C", "CHAR": "["},<br />
"EXT": ""<br />
},<br />
"1": {<br />
"WIDTH": "normal",<br />
"CLASS": "normal",<br />
"MAIN": {"TYPE": "C", "CHAR": "1"},<br />
"SEC": {"TYPE": "C", "CHAR": "!"},<br />
"EXT": "SET0"<br />
}<br />
}<br />
}<br />
},<br />
"sets": {<br />
"SET0": {<br />
"0": {"TYPE": "C", "CHAR": "1"},<br />
"1": {"TYPE": "C", "CHAR": "!"},<br />
"2": {"TYPE": "C", "CHAR": "¹"},<br />
"3": {"TYPE": "C", "CHAR": "¼"},<br />
"4": {"TYPE": "C", "CHAR": "½"},<br />
"5": {"TYPE": "C", "CHAR": "¡"}<br />
}<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
The file consists of 2 main objects: layouts and sets.<br />
<br />
# layouts<br />
#: Layouts describes 3 main layouts<br />
## QWERTY<br />
## QWERTZ<br />
## AZERTY<br />
#: Each layout consists of maximum 8 rows (0 - 7): 0 - numbers row, 1-3 - letter rows, 4 - Bottom row, 5 - bottom row by default, 6 - bottom row for url, 7 - bottom row for email<br />
#: Each row consists of maximum 12 buttons (0 - 11)<br />
#: Each button is described by sevral parameters<br />
## WIDTH<br />
##: Evidently width of the button. It can be of 5 values<br />
### "none" - No special width set. Autosized by system<br />
### "short" - Short button. Shorter then normal sized approximately by half<br />
### "normal" - Standard-sized button<br />
### "long" - Long button like shift and enter in original layouts.<br />
### "spacebar" - Very long button. Used only for spacebar and language/special char changer. Also used in conjuction with CLASS="spacebar"<br />
## CLASS<br />
##: Class or type of the button. It can be<br />
### "none" - no class. "If there is no class, then there is no button" ( Almost citation :-) )<br />
### "normal" - standard button class<br />
### "invisible" - Self-explaining. There is button but we cannot see it. Mostly used for indents. The can have characters assigned and even will type them(look to the left and right of number row in QWERTY, try to type them)<br />
### "spacebar" - Used for spacebar. (Suppose that width is not just stored in 1 byte and spreads to half of class byte too)<br />
## EXT<br />
##: This is the name of set of extended characters, which are accessed by long press. If there is no extended characters on a button empty string ("") is used<br />
## MAIN and SEC<br />
##: Main and secondary character respectively. They have two parameters each<br />
### TYPE<br />
###: Type of character<br />
#### "C" - normal Сharacter<br />
#### "S" - Special character (like shift, enter, backspace etc.)<br />
#### "V" - character from static Variable. (Smiles, .com, http:// etc.)<br />
### CHAR<br />
###: The character itself.<br />
###: If type is "C" then it is just normal UTF-8 character<br />
###: If type is "S" or "V" it's value is some hex numeric constant.<br />
# sets<br />
#: Sets are sets of extended characters that are accessed by long tap on a button.<br />
#: There are 65 sets (0-64) and each set is named SET#.<br />
#: Each set consists of several characters (0,1,...)<br />
#: Each character is described by TYPE and CHAR which are absolutely the same as in layout description.<br />
<br />
As you can see in stated example, there are 2 first buttons (0,1), in number row (0), in QWERTY layout.<br />
The first one is invisible button with characters ''Q'' and ''/'', and the second is the normal button with ''1'' and ''!'', and SET0 binded to it.<br />
<br />
Also, we can see that SET0 consists of 6 buttons (0-5) which are: 1, !, ¹, ¼, ½, ¡<br />
<br />
WARNING: Symbols ''\'' and ''"'' should be escaped in JSON format, so to use them type "\\" and "\"" respectively<br />
<br />
NOTICE: If object or parameter of an object have not been changed from original template, you can delete it from template to speed further parsing process, but do it ONLY IF YOU REALLY KNOW how JSON is structured and know that you won't ruin it's structure.<br />
<br />
<br />
In keyboard layout, you can easily change button type flags, primary and secondaty symbol.<br />
<br />
Extended characters set can be changed too.<br />
<br />
Characters in extended characters sets can be changed.<br />
<br />
You can choose which set should be assigned to which button by changing EXT in layout.<br />
<br />
WARNING: Do not change names of sets, or they won't be read.<br />
<br />
WARNING: It is not possible to increase number of rows, buttons or characters in set, as we cannot increase size of data in binary file, so any extra character, rows, buttons, even layouts and sets will be ignored during patching.<br />
<br />
NOTICE: Though you surely can decrease these numbers (well, not rows, I suppose) by filling unneeded buttons and extended symbols with zeros. i.e.<br />
<br />
For removing button, it's WIDTH and CLASS should be "none", MAIN and SEC TYPE should be "C", CHAR should be empty string (""), and EXT should be empty too.<br />
<br />
For removing extended character from set, just set TYPE to "C" and CHAR to empty string.<br />
<br />
To remove SET, well actually not remove but do not use, remove reference to it from EXT parameter in layout.<br />
<br />
=== Patching process ===<br />
<br />
Patching process looks pretty easy.<br />
<br />
First of all, download the archive with script, and extract it. [http://dl.dropbox.com/u/34455792/keypatch.zip keypatch.zip]<br />
<br />
You will get folder "keypatch".<br />
<br />
Copy this folder on your device.<br />
<br />
Now, connect to your device via novaterm or ssh, and enter the directory.<br />
<br />
Run template generation script<br />
<br />
#sh patch.sh generate<br />
Checking main file...<br />
Main version not detected<br />
Checking backup file...<br />
Backup file 3.0.2 device version found<br />
Backup file will be used<br />
Reading data from file /usr/bin/LunaSysMgr.orig<br />
Storing data into 302.data<br />
Generating template<br />
Writing template to file 302.template.json<br />
Ok.<br />
<br />
Now, copy this template to the computer and open it with editor that affords editing UTF-8 files with no BOM ([http://en.wikipedia.org/wiki/Byte_order_mark Byte Order Mark]) and Unix style endings. For example Notepad++ (on Windows) or vim (on *nix)<br />
Editing instructions in previous subsection [[#JSON layout file structure and editing hints]]<br />
<br />
After editing, copy newly created file in the same folder and run patch or check options<br />
(you can use "check" instead of "patch" if you want to check patched file first or replace original file manually yourself)<br />
<br />
sh patch.sh patch <new layout file><br />
Main version not detected<br />
Checking backup file...<br />
Backup file 3.0.2 device version found<br />
Backup file will be used<br />
Found file data 302.data<br />
Reading template <new layout file> and redefining variables<br />
Copying source file to temp location<br />
Applying patch to tempfile<br />
Patched file 302.patched generated<br />
Installation started<br />
Remounting / as rw<br />
Original file aleready backed up in /usr/bin/LunaSysMgr.orig<br />
Stopping Luna<br />
Coping file 302.patched to /usr/bin/LunaSysMgr<br />
Starting Luna<br />
Remounting / back as ro<br />
Removing temp file 302.patched<br />
Ok.<br />
<br />
or<br />
<br />
sh patch.sh check <new layout file><br />
Checking main file...<br />
Main version not detected<br />
Checking backup file...<br />
Backup file 3.0.2 device version found<br />
Backup file will be used<br />
Found file data 302.data<br />
Mon Aug 29 15:08:50 MSD 2011<br />
Reading template <new layout file> and redefining variables<br />
Mon Aug 29 15:09:07 MSD 2011<br />
Copying source file to temp location<br />
Applying patch to tempfile<br />
Patched file 302.patched generated<br />
Mon Aug 29 15:09:15 MSD 2011<br />
Ok.<br />
<br />
<br />
== IV. Changing layout manually ==<br />
<br />
In keyboard layout, you can easily change button type flags, primary and secondary symbol.<br />
<br />
Extended characters set address can be changed too, but you should deduce it by initial values of layouts. It is not very hard but requires time.<br />
<br />
<br />
Characters in extended characters sets can be changed too. Although you cannot change the number of characters in a particular set, you can choose the one with needed number of symbols and reassign it to needed button by changing address in the layout.<br />
<br />
<br />
After you are satisfied with the result, you need to replace LunaSysMgr in the device with newly edited file. For this purpose, you need to have shell access to it. You can use either ssh server from preware packages or novaterm to do it. You cannot use on-device terminal as you would need to stop luna in process.<br />
<br />
First, you need to copy file on the device using USB drive mode (or you can scp it). Let the new file be /media/internal/LunaSysMgr.<br />
<br />
After that, do the following commands:<br />
<br />
remount / for write access<br />
<br />
#mount -o r,w remount /<br />
<br />
backup original file<br />
<br />
#cp -dpR /usr/bin/LunaSysMgr /usr/bin/LunaSysMgr.orig<br />
<br />
stop the luna<br />
<br />
#initctl stop LunaSysMgr<br />
<br />
copy new file<br />
<br />
#cp /media/internal/LunaSysMgr /usr/bin/LunaSysMgr<br />
<br />
start luna back<br />
<br />
#initctl start LunaSysMgr<br />
<br />
remount / back as read only<br />
<br />
#mount -o r,o remount /<br />
<br />
And enjoy your new keyboard.<br />
<br />
<br />
== V. Offsets ==<br />
<br />
<br />
{| class="wikitable"<br />
|- style="vertical-align:top;"<br />
! 3.0.0 emul!!3.0.0 device!!3.0.2 device!!keyboard/letter<br />
|-<br />
| 0x003EE840||0x003BEE80||0x003CACB0||QWERTY Main layout<br />
|-<br />
| 0x003EEC00||0x003BF240||0x003CB070||QWERTY Default bottom row<br />
|-<br />
| 0x003EECC0||0x003BF300||0x003CB130||QWERTY URL bottom row<br />
|-<br />
| 0x003EED80||0x003BF3C0||0x003CB1F0||QWERTY Email bottom row<br />
|-<br />
| <br />
|-<br />
| 0x003EEE40||0x003BF480||0x003CB2B0||QWERTZ Main layout<br />
|-<br />
| 0x003EF200||0x003BF840||0x003CB670||QWERTZ Default bottom row<br />
|-<br />
| 0x003EF2C0||0x003BF900||0x003CB730||QWERTZ URL bottom row<br />
|-<br />
| 0x003EF380||0x003BF9C0||0x003CB7F0||QWERTZ Email bottom row<br />
|-<br />
| <br />
|-<br />
| 0x003EF440||0x003BFA80||0x003CB8B0||AZERTY Main layout<br />
|-<br />
| 0x003EF800||0x003BFE40||0x003CBC70||AZERTY Default bottom row<br />
|-<br />
| 0x003EF8C0||0x003BFF00||0x003CBD30||AZERTY URL bottom row<br />
|-<br />
| 0x003EF980||0x003BFFC0||0x003CBDF0||AZERTY Email bottom row<br />
|}<br />
<br />
Extended character offsets are too numerous to list them all.<br />
I will just name offsets for the first one and the order of sets. As each set is ended with 0x00000000, it will be quite easy to distinguish them.<br />
<br />
The order is the following:<br />
<br />
{| class="wikitable"<br />
|- style="vertical-align:top;"<br />
! 3.0.0 emul!!3.0.0 device!!3.0.2 device!!letter to which character set is bind<br />
|-<br />
| 0x003C33DC||0x00388BB4||0x00393608||QWERTY 1<br />
|-<br />
||||||| QWERTY 2<br />
|-<br />
||||||| QWERTY 3<br />
|-<br />
||||||| QWERTY 4<br />
|-<br />
||||||| QWERTY 5<br />
|-<br />
||||||| QWERTY 6<br />
|-<br />
||||||| QWERTY 7<br />
|-<br />
||||||| QWERTY 8<br />
|-<br />
||||||| QWERTY 9<br />
|-<br />
||||||| QWERTY 0<br />
|-<br />
| <br />
|-<br />
||||||| E<br />
|-<br />
||||||| R<br />
|-<br />
||||||| T<br />
|-<br />
||||||| Y<br />
|-<br />
||||||| U<br />
|-<br />
||||||| I<br />
|-<br />
||||||| O<br />
|-<br />
||||||| P<br />
|-<br />
||||||| A<br />
|-<br />
||||||| S<br />
|-<br />
||||||| D<br />
|-<br />
||||||| G<br />
|-<br />
||||||| L<br />
|-<br />
||||||| Z<br />
|-<br />
||||||| C<br />
|-<br />
||||||| N<br />
|-<br />
||||||| M<br />
|-<br />
| <br />
|-<br />
||||||| QWERTY ,/<br />
|-<br />
||||||| QWERTY .?<br />
|-<br />
||||||| QWERTY '"<br />
|-<br />
||||||| QWERTY -_<br />
|-<br />
| <br />
|-<br />
||||||| Hide keyboard(size of it)<br />
|-<br />
| <br />
|-<br />
||||||| URL key /<br />
|-<br />
| <br />
|-<br />
||||||| QWERTY .com<br />
|-<br />
| <br />
|-<br />
||||||| QWERTZ 1<br />
|-<br />
||||||| QWERTZ 2<br />
|-<br />
||||||| QWERTZ 3<br />
|-<br />
||||||| QWERTZ 4<br />
|-<br />
||||||| QWERTZ 5<br />
|-<br />
||||||| QWERTZ 6<br />
|-<br />
||||||| QWERTZ 7<br />
|-<br />
||||||| QWERTZ 8<br />
|-<br />
||||||| QWERTZ 9<br />
|-<br />
||||||| QWERTZ 0<br />
|-<br />
| <br />
|-<br />
||||||| QWERTZ ,;<br />
|-<br />
||||||| QWERTZ .:<br />
|-<br />
||||||| QWERTZ #?<br />
|-<br />
||||||| QWERTZ -'<br />
|-<br />
||||||| QWERTZ .com<br />
|-<br />
| <br />
|-<br />
||||||| AZERTY 1<br />
|-<br />
||||||| AZERTY 2<br />
|-<br />
||||||| AZERTY 3<br />
|-<br />
||||||| AZERTY 4<br />
|-<br />
||||||| AZERTY 5<br />
|-<br />
||||||| AZERTY 6<br />
|-<br />
||||||| AZERTY 7<br />
|-<br />
||||||| AZERTY 8<br />
|-<br />
||||||| AZERTY 9<br />
|-<br />
||||||| AZERTY 0<br />
|-<br />
| <br />
|-<br />
||||||| AZERTY ,?<br />
|-<br />
||||||| AZERTY .;<br />
|-<br />
||||||| AZERTY :/<br />
|-<br />
||||||| AZERTY @_<br />
|-<br />
||||||| AZERTY !*<br />
|-<br />
||||||| AZERTY .com<br />
|}</div>XP1