$(foreach f,$(2),$(call add-prebuilt-file,$f,$(1)))
endef
+###########################################################
+## Add a prebuilt target $(2) to directory $(1)
+## $(call add-prebuilt-target,dir,srcfile)
+###########################################################
+
+define add-prebuilt-target
+ $(eval $(include-prebuilt-target))
+endef
+
+define include-prebuilt-target
+
+file := $(1)/$(2)
+$$(file): $$(LOCAL_PATH)/$(2) | $$(ACP)
+ $$(copy-file-to-new-target)
+ALL_PREBUILT += $$(file)
+
+endef
+
+###########################################################
+## Add multiple prebuilts $(2) to directory $(1)
+## $(call add-prebuilt-targets,dir,srcfile1...)
+###########################################################
+
+define add-prebuilt-targets
+ $(foreach f,$(2),$(call add-prebuilt-target,$(1),$(f)))
+endef
+###########################################################
+## Common rules to build a java package
+## $(call build-package,[tags],[certificate])
+###########################################################
+
+define build-package
+ $(eval $(build-package-rules))
+endef
+
+###########################################################
+## A third party java package is only built if
+## TARGET_HAS_THIRD_PARTY_APPS = true
+## $(call build-third-party-package,[tags],[certificate])
+###########################################################
+
+define build-third-party-package
+ $(if $(filter true,$(TARGET_HAS_THIRD_PARTY_APPS)),$(build-package))
+endef
+
+define build-package-rules
+
+LOCAL_PATH := $$(call my-dir)
+include $$(CLEAR_VARS)
+LOCAL_MODULE_TAGS := $$(if $(1),$(1),user)
+LOCAL_SRC_FILES := $$(call all-java-files-under,src)
+LOCAL_PACKAGE_NAME := $$(notdir $$(LOCAL_PATH))
+LOCAL_CERTIFICATE := $(2)
+include $$(BUILD_PACKAGE)
+include $$(call all-subdir-makefiles)
+
+endef
###########################################################
## The intermediates directory. Where object files go for
ifeq ($(TARGET_SIMULATOR),true)
TARGET_PRODUCT := sim
else
-TARGET_PRODUCT := generic
+TARGET_PRODUCT := generic_x86
endif
endif
TARGET_OS := $(HOST_OS)
else
ifeq ($(TARGET_ARCH),)
-TARGET_ARCH := arm
+TARGET_ARCH := $(if $(call is_inherited_from,$(INTERNAL_PRODUCT),generic_x86.mk),x86,arm)
endif
TARGET_OS := linux
endif
+ifeq ($(TARGET_ARCH),x86)
+ DISABLE_DEXPREOPT := true
+endif
+
# the target build type defaults to release
ifneq ($(TARGET_BUILD_TYPE),debug)
TARGET_BUILD_TYPE := release
define resolve-short-product-name
$(strip $(call _resolve-short-product-name,$(1)))
endef
+
+#
+# Return 1 if $(1) is inherited from $(2), else return empty
+#
+define is_inherited_from
+$(if $(1),$(if $(findstring $(2),$(1)),1,$(call $(0),$(strip $(PRODUCTS.$(1).INHERITS_FROM)),$(2))))
+endef
--- /dev/null
+LOCAL_PATH := $(call my-dir)
+$(call add-prebuilt-target,$(TARGET_ROOT_OUT),init.rc)
+
+include $(call all-subdir-makefiles)
--- /dev/null
+# In Eclair this file is included before definitions.mk.
+# As a result, my-dir is not defined yet.
+# We define our version here as a temporary fix.
+define _mydir
+$(dir $(lastword $(MAKEFILE_LIST)))
+endef
+
+TARGET_DISK_LAYOUT_CONFIG := $(call _mydir)disk_layout.conf
+
+TARGET_CPU_ABI := x86
+
+TARGET_COMPRESS_MODULE_SYMBOLS := false
+TARGET_PRELINK_MODULE := false
+
+TARGET_USERIMAGES_USE_EXT2 := true
+TARGET_BOOTIMAGE_USE_EXT2 := true
+TARGET_USE_DISKINSTALLER := true
+
+BOARD_BOOTIMAGE_MAX_SIZE := 8388608
+BOARD_SYSLOADER_MAX_SIZE := 7340032
+BOARD_FLASH_BLOCK_SIZE := 512
+
+# the following variables could be overridden
+TARGET_NO_BOOTLOADER ?= true
+TARGET_NO_RECOVERY ?= true
+TARGET_HARDWARE_3D ?= false
+TARGET_PROVIDES_INIT_RC ?= true
+TARGET_HAS_THIRD_PARTY_APPS ?= false
+
+USE_CUSTOM_RUNTIME_HEAP_MAX ?= "128M"
+
+BOARD_USES_GENERIC_AUDIO ?= false
+BOARD_USES_ALSA_AUDIO ?= true
+BUILD_WITH_ALSA_UTILS ?= true
+BOARD_HAVE_BLUETOOTH ?= true
+
+BOARD_KERNEL_CMDLINE ?= root=/dev/ram0 androidboot_hardware=$(TARGET_PRODUCT) acpi_sleep=s3_bios,s3_mode
--- /dev/null
+device {
+ path /dev/block/sda
+
+ scheme mbr
+
+ # bytes in a disk sector (== 1 LBA), must be a power of 2!
+ sector_size 512
+
+ # What LBA should the partitions start at?
+ start_lba 2048
+
+ # Autodetect disk size if == 0
+ num_lba 0
+
+ partitions {
+ sysloader {
+ active y
+ type linux
+ len 7M
+ }
+
+ recovery {
+ active y
+ type linux
+ len 16M
+ }
+
+ boot {
+ active y
+ type linux
+ len 8M
+ }
+
+ cache {
+ type linux
+ len 512M
+ }
+
+ system {
+ type linux
+ len 512M
+ }
+
+ third_party {
+ type linux
+ len 512M
+ }
+
+ data {
+ type linux
+ len -1
+ }
+ }
+}
--- /dev/null
+#
+# Copyright (C) 2009 The Android-x86 Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+LOCAL_FIRMWARES_DIR ?= $(call my-dir)
+LOCAL_PATH := $(LOCAL_FIRMWARES_DIR)
+LOCAL_FIRMWARES ?= $(filter-out Android.mk,$(subst $(LOCAL_PATH)/,,$(shell find $(LOCAL_PATH) -type f)))
+$(call add-prebuilt-targets,$(TARGET_OUT_SHARED_LIBRARIES)/firmware,$(LOCAL_FIRMWARES))
--- /dev/null
+
+on init
+
+sysclktz 0
+
+loglevel 3
+
+# setup the global environment
+ export PATH /sbin:/system/sbin:/system/bin:/system/xbin
+ export LD_LIBRARY_PATH /system/lib
+ export ANDROID_BOOTLOGO 1
+ export ANDROID_ROOT /system
+ export ANDROID_ASSETS /system/app
+ export ANDROID_DATA /data
+ export EXTERNAL_STORAGE /sdcard
+ export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
+
+# Backward compatibility
+ symlink system/etc /etc
+ symlink system/lib /lib
+
+# create mountpoints and mount tmpfs on sqlite_stmt_journals and debugfs on d
+ mkdir /d
+ chown system system /sdcard
+ chmod 0777 /sdcard
+ mkdir /data 0771 system system
+ mkdir /cache 0770 system cache
+ mkdir /sqlite_stmt_journals 01777 root root
+ mount tmpfs tmpfs /sqlite_stmt_journals size=4m
+ mount debugfs debugfs /d
+
+ mount rootfs rootfs / ro remount
+
+ write /proc/sys/kernel/panic_on_oops 1
+ write /proc/sys/kernel/hung_task_timeout_secs 0
+ write /proc/cpu/alignment 4
+ write /proc/sys/kernel/sched_latency_ns 10000000
+ write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
+
+# mount mtd partitions
+# TODO: this should be mounted by fs vol id (i.e. /dev/block-by-volid/system),
+# once init gets that functionality.
+# mount ext3 /dev/block/sda6 /system
+# mount ext3 /dev/block/sda6 /system ro remount
+
+ # We chown/chmod /data again so because mount is run as root + defaults
+# mount ext3 /dev/block/sda8 /data
+ chown system system /data
+ chmod 0771 /data
+
+ # Same reason as /data above
+# mount ext3 /dev/block/sda5 /cache
+ chown system cache /cache
+ chmod 0770 /cache
+
+ # This may have been created by the recovery system with odd permissions
+ chown system system /cache/recovery
+ chmod 0770 /cache/recovery
+
+# create basic filesystem structure
+ mkdir /data/misc 01771 system misc
+ mkdir /data/misc/hcid 0770 bluetooth bluetooth
+ mkdir /data/local 0771 shell shell
+ mkdir /data/local/tmp 0771 shell shell
+ mkdir /data/data 0771 system system
+ mkdir /data/app-private 0771 system system
+ mkdir /data/app 0771 system system
+ mkdir /data/property 0700 root root
+
+ mkdir /data/misc/wifi 0770 wifi wifi
+ mkdir /data/misc/wifi/sockets 0770 wifi wifi
+ mkdir /data/system/wpa_supplicant 0770 wifi wifi
+ mkdir /data/misc/dhcp 0770 dhcp dhcp
+ chown dhcp dhcp /data/misc/dhcp
+
+ # create dalvik-cache and double-check the perms
+ mkdir /data/dalvik-cache 0771 system system
+ chown system system /data/dalvik-cache
+ chmod 0771 /data/dalvik-cache
+
+ # create the lost+found directories, so as to enforce our permissions
+ mkdir /data/lost+found 0770
+ mkdir /cache/lost+found 0770
+
+ # double check the perms, in case lost+found already exists, and set owner
+ chown root root /data/lost+found
+ chmod 0770 /data/lost+found
+ chown root root /cache/lost+found
+ chmod 0770 /cache/lost+found
+
+
+### Load some modules
+
+on boot
+# basic network init
+ ifup lo
+ hostname localhost
+ domainname localdomain
+
+# set RLIMIT_NICE to allow priorities from 19 to -20
+ setrlimit 13 40 40
+
+# Define the oom_adj values for the classes of processes that can be
+# killed by the kernel. These are used in ActivityManagerService.
+ setprop ro.FOREGROUND_APP_ADJ 0
+ setprop ro.VISIBLE_APP_ADJ 1
+ setprop ro.SECONDARY_SERVER_ADJ 2
+ setprop ro.BACKUP_APP_ADJ 2
+ setprop ro.HOME_APP_ADJ 4
+ setprop ro.HIDDEN_APP_MIN_ADJ 7
+ setprop ro.CONTENT_PROVIDER_ADJ 14
+ setprop ro.EMPTY_APP_ADJ 15
+
+# Define the memory thresholds at which the above process classes will
+# be killed. These numbers are in pages (4k).
+ setprop ro.FOREGROUND_APP_MEM 1536
+ setprop ro.VISIBLE_APP_MEM 2048
+ setprop ro.SECONDARY_SERVER_MEM 4096
+ setprop ro.BACKUP_APP_MEM 4096
+ setprop ro.HOME_APP_MEM 4096
+ setprop ro.HIDDEN_APP_MEM 8192
+ setprop ro.CONTENT_PROVIDER_MEM 8704
+ setprop ro.EMPTY_APP_MEM 16384
+
+# Write value must be consistent with the above properties.
+ write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
+
+ write /proc/sys/vm/overcommit_memory 1
+ write /proc/sys/vm/min_free_order_shift 4
+ write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,8192,8704,16384
+
+ # Set init its forked children's oom_adj.
+ write /proc/1/oom_adj -16
+
+ # Permissions for System Server and daemons.
+ chown radio system /sys/android_power/state
+ chown radio system /sys/android_power/request_state
+ chown radio system /sys/android_power/acquire_full_wake_lock
+ chown radio system /sys/android_power/acquire_partial_wake_lock
+ chown radio system /sys/android_power/release_wake_lock
+ chown radio system /sys/power/state
+ chown radio system /sys/power/wake_lock
+ chown radio system /sys/power/wake_unlock
+ chmod 0660 /sys/power/state
+ chmod 0660 /sys/power/wake_lock
+ chmod 0660 /sys/power/wake_unlock
+ chown system system /sys/class/timed_output/vibrator/enable
+ chown system system /sys/class/leds/keyboard-backlight/brightness
+ chown system system /sys/class/leds/lcd-backlight/brightness
+ chown system system /sys/class/leds/button-backlight/brightness
+ chown system system /sys/class/leds/red/brightness
+ chown system system /sys/class/leds/green/brightness
+ chown system system /sys/class/leds/blue/brightness
+ chown system system /sys/class/leds/red/device/grpfreq
+ chown system system /sys/class/leds/red/device/grppwm
+ chown system system /sys/class/leds/red/device/blink
+ chown system system /sys/class/leds/red/brightness
+ chown system system /sys/class/leds/green/brightness
+ chown system system /sys/class/leds/blue/brightness
+ chown system system /sys/class/leds/red/device/grpfreq
+ chown system system /sys/class/leds/red/device/grppwm
+ chown system system /sys/class/leds/red/device/blink
+ chown system system /sys/class/timed_output/vibrator/enable
+ chown system system /sys/module/sco/parameters/disable_esco
+ chown system system /sys/kernel/ipv4/tcp_wmem_min
+ chown system system /sys/kernel/ipv4/tcp_wmem_def
+ chown system system /sys/kernel/ipv4/tcp_wmem_max
+ chown system system /sys/kernel/ipv4/tcp_rmem_min
+ chown system system /sys/kernel/ipv4/tcp_rmem_def
+ chown system system /sys/kernel/ipv4/tcp_rmem_max
+ chown root radio /proc/cmdline
+
+# Define TCP buffer sizes for various networks
+# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
+ setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
+ setprop net.tcp.buffersize.wifi 4095,87380,110208,4096,16384,110208
+ setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208
+ setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040
+ setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680
+
+ setprop ro.radio.use-ppp no
+ setprop ro.radio.noril yes
+ setprop status.battery.state Slow
+ setprop status.battery.level 5
+ setprop status.battery.level_raw 50
+ setprop status.battery.level_scale 9
+ setprop alsa.mixer.playback.master Master
+ setprop alsa.mixer.capture.master Capture
+ setprop alsa.mixer.playback.earpiece Master
+ setprop alsa.mixer.capture.earpiece Capture
+ setprop alsa.mixer.playback.headset Master
+ setprop alsa.mixer.playback.speaker Master
+
+ setprop EXTERNAL_STORAGE_STATE unmounted
+
+ # merge from system.prop
+ setprop ro.config.sync yes
+ setprop app.setupwizard.disable 1
+ setprop keyguard.no_require_sim 1
+ setprop ro.alarm.volume.adjustable true
+ setprop ro.simulated.phone true
+
+ class_start default
+
+## Daemon processes to be run by init.
+##
+service console /system/bin/sh
+ console
+
+# adbd is controlled by the persist.service.adb.enable system property
+service adbd /sbin/adbd
+
+on property:persist.service.adb.enable=1
+ start adbd
+
+on property:persist.service.adb.enable=0
+ stop adbd
+
+service servicemanager /system/bin/servicemanager
+ user system
+ critical
+ onrestart restart zygote
+ onrestart restart media
+
+service vold /system/bin/vold
+ socket vold stream 0660 root mount
+
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
+ socket zygote stream 666
+ onrestart write /sys/android_power/request_state wake
+ onrestart write /sys/power/state on
+
+service media /system/bin/mediaserver
+ user media
+ group system audio camera graphics inet net_bt net_bt_admin
+
+service bootanim /system/bin/bootanimation
+ user graphics
+ group graphics
+ disabled
+ oneshot
+
+service installd /system/bin/installd
+ socket installd stream 600 system system
+
+service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf
+ group system wifi
+ disabled
+ oneshot
+
+service dbus /system/bin/dbus-daemon --system --nofork
+ socket dbus stream 660 bluetooth bluetooth
+ user bluetooth
+ group bluetooth net_bt_admin
+
+service hcid /system/bin/hcid -d -s -n -f /etc/bluez/hcid.conf
+ socket bluetooth stream 660 bluetooth bluetooth
+ socket dbus_bluetooth stream 660 bluetooth bluetooth
+ group bluetooth net_bt_admin misc
+ disabled
+
+service hfag /system/bin/sdptool add --channel=10 HFAG
+ user bluetooth
+ group bluetooth net_bt_admin misc
+ disabled
+ oneshot
+
+service hsag /system/bin/sdptool add --channel=11 HSAG
+ user bluetooth
+ group bluetooth net_bt_admin misc
+ disabled
+ oneshot
+
+#Please do not change anything below this line. If you want to add new service, add it above this line
+#REMOVE FROM HERE
+service dhcpcd /system/bin/dhcpcd wlan0
+ group system dhcp
+ disabled
+ oneshot
+
--- /dev/null
+#
+# Copyright (C) 2009 The Android-x86 Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+define include-keymap
+
+include $$(CLEAR_VARS)
+LOCAL_SRC_FILES := $(1)
+include $$(BUILD_KEY_CHAR_MAP)
+
+$$(call add-prebuilt-target,$$(TARGET_OUT_KEYLAYOUT),$$(subst .kcm,.kl,$(1)))
+
+endef
+
+define add-keymap
+$(eval $(include-keymap))
+endef
+
+define add-keymaps
+$(foreach f,$(1),$(call add-keymap,$(f)))
+endef
+
+LOCAL_KEYMAPS_DIR ?= $(call my-dir)
+LOCAL_PATH := $(LOCAL_KEYMAPS_DIR)
+LOCAL_KEYMAPS ?= $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.kcm))
+$(call add-keymaps,$(LOCAL_KEYMAPS))
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x0301
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'z' 'Z' '%' 0x00A1
+Z 'Z' '9' 'y' 'Y' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' ';' ';' '|'
+PERIOD '.' '.' '.' ':' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '-' '_' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' '=' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' 0x00A7 '#' '#'
+4 '4' '4' '4' '$' '$' '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' '&' '^' '^'
+7 '7' '7' '7' '/' '&' '&'
+8 '8' '8' '8' '(' '*' '*'
+9 '9' '9' '9' ')' '(' '('
+
+GRAVE '`' '`' 0x005E 0x00B0 '`' '~'
+MINUS '-' '-' 0x00DF '?' '-' '_'
+EQUALS '=' '=' 0x00B4 0x0060 '=' '+'
+LEFT_BRACKET '[' '[' 0x00FC 0x00DC '[' '{'
+RIGHT_BRACKET ']' ']' '+' '*' ']' '}'
+BACKSLASH '\' '\' '#' ''' '\' '|'
+SEMICOLON ';' ';' 0x00F6 0x00D6 ';' ':'
+APOSTROPHE ''' ''' 0x00E4 0x00C4 ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '<' '<' '<' '>' '>' '|'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x0301
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0040
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' ';' ';' '|'
+PERIOD '.' '.' '.' ':' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '-' '_' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' '=' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' '#' '#' '#'
+4 '4' '4' '4' '$' '$' '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' '&' '^' '^'
+7 '7' '7' '7' '/' '&' '&'
+8 '8' '8' '8' '(' '*' '*'
+9 '9' '9' '9' ')' '(' '('
+
+GRAVE '`' '`' 0x7C 0xB0 '`' 0xAC
+MINUS '-' '-' 0x27 0x3F '-' 0x5C
+EQUALS '=' '=' 0xBF 0xA1 '=' '+'
+LEFT_BRACKET '[' '[' 0xB4 0xA8 '[' '{'
+RIGHT_BRACKET ']' ']' 0x2B 0x2A ']' 0x7E
+BACKSLASH '\' '\' '}' ']' '\' 0x60
+SEMICOLON ';' ';' 0xF1 0xD1 ';' ':'
+APOSTROPHE ''' ''' '{' '[' ''' 0x5E
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '<' '<' '<' '>' '>' '>'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x20AC
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x03BC
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' ';' ';' '|'
+PERIOD '.' '.' '.' ':' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '-' '_' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' '=' ')' '}'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' '#' '#' 0xA3
+4 '4' '4' '4' 0xA4 '$' '$'
+5 '5' '5' '5' '%' '%' 0x20AC
+6 '6' '6' '6' '&' '&' '&'
+7 '7' '7' '7' '/' '&' '{'
+8 '8' '8' '8' '(' '*' '['
+9 '9' '9' '9' ')' '(' ']'
+
+GRAVE '`' '`' 0xA7 0xBD '`' '~'
+MINUS '-' '-' '+' '?' '-' '\'
+EQUALS '=' '=' 0xB4 '`' '=' '+'
+LEFT_BRACKET '[' '[' 0xE5 0xC5 '[' '{'
+RIGHT_BRACKET ']' ']' 0xA8 '^' ']' '~'
+BACKSLASH '\' '\' ''' '*' '\' '|'
+SEMICOLON ';' ';' 0xF6 0xD6 ';' ':'
+APOSTROPHE ''' ''' 0xE4 0xC4 ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '<' '<' '<' '>' '>' '|'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x20AC
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ';' '.' ';' '|'
+PERIOD '.' '.' ':' '/' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '!' 0xA7 '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' 0xE0 '0' ')' '@'
+1 '1' '1' '&' '1' '!' '!'
+2 '2' '2' 0xE9 '2' '@' '~'
+3 '3' '3' '"' '3' '#' '#'
+4 '4' '4' ''' '4' '$' '{'
+5 '5' '5' '(' '5' '%' '['
+6 '6' '6' '-' '6' '^' '|'
+7 '7' '7' 0xE8 '7' '&' '`'
+8 '8' '8' '_' '8' '*' '\'
+9 '9' '9' 0x00E7 '9' '(' '^'
+
+GRAVE '`' '`' 0xB2 '~' '`' '~'
+MINUS '-' '-' ')' 0xB0 '-' ']'
+EQUALS '=' '=' '=' '+' '=' '}'
+LEFT_BRACKET '[' '[' '^' 0xA8 '[' '{'
+RIGHT_BRACKET ']' ']' '$' 0xA3 ']' 0xA4
+BACKSLASH '\' '\' '*' 0x03BC '\' '|'
+SEMICOLON ';' ';' ',' '?' ';' ':'
+APOSTROPHE ''' ''' 0xF9 '%' ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '<' '<' '<' '>' '>' '>'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 A
+key 17 Z
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 Q
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 M
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 W
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 SEMICOLON
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x0301
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' '<' ';' '|'
+PERIOD '.' '.' '.' '>' ':' 0x2026
+SLASH '/' '/' '/' '?' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' '0' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' '#' '#' '#'
+4 '4' '4' '4' '$' '$' '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' '&' '^' '^'
+7 '7' '7' '7' ''' '&' '&'
+8 '8' '8' '8' '(' '*' '*'
+9 '9' '9' '9' ')' '(' '('
+
+GRAVE '`' '`' '`' '~' '`' '~'
+MINUS '-' '-' '-' '=' '-' '_'
+EQUALS '^' '^' '^' '~' '^' '+'
+AT '@' '@' '@' '`' '@' '@'
+LEFT_BRACKET '[' '[' '[' '{' '[' '{'
+RIGHT_BRACKET ']' ']' ']' '}' ']' '|'
+SEMICOLON ';' ';' ';' '+' ';' ':'
+STAR ':' ':' ':' '*' ':' ':'
+POUND '#' '#' '#' '#' '#' '#'
+BACKSLASH '\' '\' '\' '_' '\' '\'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY 0xA5 0xA5 0xA5 '|' 0xA5 0xA5
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 AT
+key 27 LEFT_BRACKET
+key 43 RIGHT_BRACKET
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 STAR
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 89 BACKSLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 124 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' '#' 0x00
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' '2' 0x0301
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' '$' 0x0302
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' '(' 0x00
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' '&' 0x0308
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' '<' ';' '|'
+PERIOD '.' '.' '.' '>' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '/' '?' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' ')' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '@' '@' '@'
+3 '3' '3' '3' '#' '#' '#'
+4 '4' '4' '4' '$' '$' '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' '^' '^' '^'
+7 '7' '7' '7' '&' '&' '&'
+8 '8' '8' '8' '*' '*' '*'
+9 '9' '9' '9' '(' '(' '('
+
+GRAVE '`' '`' '`' '~' '`' '~'
+MINUS '-' '-' '-' '_' '-' '_'
+EQUALS '=' '=' '=' '+' '=' '+'
+LEFT_BRACKET '[' '[' '[' '{' '[' '{'
+RIGHT_BRACKET ']' ']' ']' '}' ']' '}'
+BACKSLASH '\' '\' '\' '|' '\' '|'
+SEMICOLON ';' ';' ';' ':' ';' ':'
+APOSTROPHE ''' ''' ''' '"' ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 0x0444 0x0424 '#' 0x00
+B 'B' '2' 0x0438 0x0418 '<' 0x00
+C 'C' '2' 0x0441 0x0421 '9' 0x00E7
+D 'D' '3' 0x0432 0x0412 '5' 0x00
+E 'E' '3' 0x0443 0x0423 '2' 0x0301
+F 'F' '3' 0x0430 0x0410 '6' 0x00A5
+G 'G' '4' 0x043F 0x041F '-' '_'
+H 'H' '4' 0x0440 0x0420 '[' '{'
+I 'I' '4' 0x0448 0x0428 '$' 0x0302
+J 'J' '5' 0x043E 0x041E ']' '}'
+K 'K' '5' 0x043B 0x041B '"' '~'
+L 'L' '5' 0x0434 0x0414 ''' '`'
+M 'M' '6' 0x044C 0x042C '!' 0x00
+N 'N' '6' 0x0442 0x0422 '>' 0x0303
+O 'O' '6' 0x0449 0x0429 '(' 0x00
+P 'P' '7' 0x0437 0x0417 ')' 0x00
+Q 'Q' '7' 0x0439 0x0419 '*' 0x0300
+R 'R' '7' 0x043A 0x041A '3' 0x20AC
+S 'S' '7' 0x044B 0x042B '4' 0x00DF
+T 'T' '8' 0x0435 0x0415 '+' 0x00A3
+U 'U' '8' 0x0433 0x0413 '&' 0x0308
+V 'V' '8' 0x043C 0x041C '=' '^'
+W 'W' '9' 0x0446 0x0426 '1' 0x00
+X 'X' '9' 0x0447 0x0427 '8' 0xEF00
+Y 'Y' '9' 0x043D 0x041D '%' 0x00A1
+Z 'Z' '9' 0x044F 0x042F '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' 0x0431 0x0411 ';' '|'
+PERIOD '.' '.' 0x044E 0x042E ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '.' ',' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' ')' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' 0x2116 '#' '#'
+4 '4' '4' '4' ';' '$' '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' ':' '^' '^'
+7 '7' '7' '7' '?' '&' '&'
+8 '8' '8' '8' '*' '*' '*'
+9 '9' '9' '9' '(' '(' '('
+
+GRAVE '`' '`' 0x0451 0x0401 '`' '~'
+MINUS '-' '-' '-' '_' '-' '_'
+EQUALS '=' '=' '=' '+' '=' '+'
+LEFT_BRACKET '[' '[' 0x0445 0x0425 '[' '{'
+RIGHT_BRACKET ']' ']' 0x044A 0x042A ']' '}'
+BACKSLASH '\' '\' '\' '/' '\' '|'
+SEMICOLON ';' ';' 0x0436 0x0416 ';' ':'
+APOSTROPHE ''' ''' 0x044D 0x042D ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '\' '\' '\' '|' '|' '|'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 54 SHIFT_RIGHT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
--- /dev/null
+[type=QWERTY]
+
+# keycode display number base caps fn caps_fn
+
+A 'A' '2' 'a' 'A' 0x00E1 0x00C1
+B 'B' '2' 'b' 'B' '<' 0x00
+C 'C' '2' 'c' 'C' '9' 0x00E7
+D 'D' '3' 'd' 'D' '5' 0x00
+E 'E' '3' 'e' 'E' 0x00E9 0x00C9
+F 'F' '3' 'f' 'F' '6' 0x00A5
+G 'G' '4' 'g' 'G' '-' '_'
+H 'H' '4' 'h' 'H' '[' '{'
+I 'I' '4' 'i' 'I' 0x00ED 0x00CD
+J 'J' '5' 'j' 'J' ']' '}'
+K 'K' '5' 'k' 'K' '"' '~'
+L 'L' '5' 'l' 'L' ''' '`'
+M 'M' '6' 'm' 'M' '!' 0x00
+N 'N' '6' 'n' 'N' '>' 0x0303
+O 'O' '6' 'o' 'O' 0x00F3 0x00D3
+P 'P' '7' 'p' 'P' ')' 0x00
+Q 'Q' '7' 'q' 'Q' '*' 0x0300
+R 'R' '7' 'r' 'R' '3' 0x20AC
+S 'S' '7' 's' 'S' '4' 0x00DF
+T 'T' '8' 't' 'T' '+' 0x00A3
+U 'U' '8' 'u' 'U' 0x00FA 0x00DA
+V 'V' '8' 'v' 'V' '=' '^'
+W 'W' '9' 'w' 'W' '1' 0x00
+X 'X' '9' 'x' 'X' '8' 0xEF00
+Y 'Y' '9' 'y' 'Y' '%' 0x00A1
+Z 'Z' '9' 'z' 'Z' '7' 0x00
+
+# on pc keyboards
+COMMA ',' ',' ',' '<' ';' '|'
+PERIOD '.' '.' '.' '>' ':' 0x2026
+AT '@' '0' '@' '0' '0' 0x2022
+SLASH '/' '/' '/' '?' '?' '\'
+
+SPACE 0x20 0x20 0x20 0x20 0x9 0x9
+ENTER 0xa 0xa 0xa 0xa 0xa 0xa
+
+TAB 0x9 0x9 0x9 0x9 0x9 0x9
+0 '0' '0' '0' ')' ')' ')'
+1 '1' '1' '1' '!' '!' '!'
+2 '2' '2' '2' '"' '@' '@'
+3 '3' '3' '3' 0x00A3 '#' '#'
+4 '4' '4' '4' '$' 0x20AC '$'
+5 '5' '5' '5' '%' '%' '%'
+6 '6' '6' '6' '^' '^' '^'
+7 '7' '7' '7' '&' '&' '&'
+8 '8' '8' '8' '*' '*' '*'
+9 '9' '9' '9' '(' '(' '('
+
+GRAVE '`' '`' '`' 0x00AC 0x00A6 0x00A6
+MINUS '-' '-' '-' '_' '-' '_'
+EQUALS '=' '=' '=' '+' '=' '+'
+LEFT_BRACKET '[' '[' '[' '{' '[' '{'
+RIGHT_BRACKET ']' ']' ']' '}' ']' '}'
+BACKSLASH '\' '\' '#' '~' '\' '|'
+SEMICOLON ';' ';' ';' ':' ';' ':'
+APOSTROPHE ''' ''' ''' '@' ''' '"'
+STAR '*' '*' '*' '*' '*' '*'
+POUND '#' '#' '#' '#' '#' '#'
+PLUS '+' '+' '+' '+' '+' '+'
+MORE_KEY '\' '\' '\' '|' '|' '|'
--- /dev/null
+key 41 GRAVE
+key 2 1
+key 3 2
+key 4 3
+key 5 4
+key 6 5
+key 7 6
+key 8 7
+key 9 8
+key 10 9
+key 11 0
+key 1 BACK WAKE_DROPPED
+key 230 SOFT_RIGHT WAKE
+key 60 SOFT_RIGHT WAKE
+key 107 ENDCALL WAKE_DROPPED
+key 62 ENDCALL WAKE_DROPPED
+key 64 ENDCALL WAKE_DROPPED
+key 127 MENU WAKE_DROPPED
+key 139 MENU WAKE_DROPPED
+key 228 POUND
+key 227 STAR
+key 231 CALL WAKE_DROPPED
+key 61 CALL WAKE_DROPPED
+key 221 DPAD_CENTER WAKE_DROPPED
+key 108 DPAD_DOWN WAKE_DROPPED
+key 103 DPAD_UP WAKE_DROPPED
+key 125 HOME WAKE
+key 105 DPAD_LEFT WAKE_DROPPED
+key 106 DPAD_RIGHT WAKE_DROPPED
+key 113 VOLUME_MUTE
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 116 POWER WAKE
+key 211 FOCUS
+key 212 CAMERA
+key 238 WIFI
+key 142 SLEEP
+
+key 16 Q
+key 17 W
+key 18 E
+key 19 R
+key 20 T
+key 21 Y
+key 22 U
+key 23 I
+key 24 O
+key 25 P
+key 26 LEFT_BRACKET
+key 27 RIGHT_BRACKET
+key 43 BACKSLASH
+
+key 30 A
+key 31 S
+key 32 D
+key 33 F
+key 34 G
+key 35 H
+key 36 J
+key 37 K
+key 38 L
+key 39 SEMICOLON
+key 40 APOSTROPHE
+key 14 DEL
+
+key 44 Z
+key 45 X
+key 46 C
+key 47 V
+key 48 B
+key 49 N
+key 50 M
+key 51 COMMA
+key 52 PERIOD
+key 53 SLASH
+key 28 ENTER
+
+key 56 ALT_LEFT
+key 42 SHIFT_LEFT
+key 15 TAB
+key 57 SPACE
+key 150 EXPLORER
+key 155 ENVELOPE
+
+key 12 MINUS
+key 13 EQUALS
+key 215 AT
+
+key 75 BACK WAKE_DROPPED
+key 77 SOFT_RIGHT WAKE
+key 96 ENTER
+key 100 ALT_RIGHT
+key 102 HOME WAKE
+key 104 PAGE_UP
+key 109 PAGE_DOWN
+key 29 CTRL_LEFT
+key 97 CTRL_RIGHT
+key 58 CAPS_LOCK CAPS_LOCK
+key 86 MORE_KEY
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/generic.mk \
+ $(LOCAL_DIR)/generic_x86.mk \
$(LOCAL_DIR)/min_dev.mk \
$(LOCAL_DIR)/sdk.mk \
$(LOCAL_DIR)/sim.mk \
--- /dev/null
+# This is a generic product that isn't specialized for a specific device.
+# It includes the base Android-x86 platform.
+
+PRODUCT_PACKAGES := \
+ GlobalTime \
+ JETBoy \
+ LunarLander \
+ NotePad \
+ PinyinIME \
+ RSSReader \
+ Snake
+
+THIRD_PARTY_APPS = \
+ ConnectBot \
+ FileManager \
+
+
+$(call inherit-product,$(SRC_TARGET_DIR)/product/generic.mk)
+
+# Overrides
+PRODUCT_BRAND := generic_x86
+PRODUCT_DEVICE := generic_x86
+PRODUCT_NAME := generic_x86
+PRODUCT_POLICY := android.policy_mid
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.com.android.dataroaming=true
+
+GENERIC_X86_CONFIG_MK := $(SRC_TARGET_DIR)/board/generic_x86/BoardConfig.mk
+GENERIC_X86_ANDROID_MK := $(SRC_TARGET_DIR)/board/generic_x86/AndroidBoard.mk