Merge "Port Emulator keymaps."
This commit is contained in:
19
data/keyboards/Android.mk
Normal file
19
data/keyboards/Android.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# This makefile performs build time validation of framework keymap files.
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(LOCAL_PATH)/common.mk
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
type FULL
|
||||
|
||||
### Basic QWERTY keys ###
|
||||
|
||||
key A {
|
||||
label: 'A'
|
||||
base: 'a'
|
||||
@@ -369,6 +371,8 @@ key APOSTROPHE {
|
||||
ctrl, alt, meta: none
|
||||
}
|
||||
|
||||
### Numeric keypad ###
|
||||
|
||||
key NUMPAD_0 {
|
||||
label, number: '0'
|
||||
base: fallback INSERT
|
||||
@@ -499,3 +503,25 @@ key NUMPAD_ENTER {
|
||||
base: '\n' fallback ENTER
|
||||
ctrl, alt, meta: none fallback ENTER
|
||||
}
|
||||
|
||||
### Special keys on phones ###
|
||||
|
||||
key AT {
|
||||
label, number: '@'
|
||||
base: '@'
|
||||
}
|
||||
|
||||
key STAR {
|
||||
label, number: '*'
|
||||
base: '*'
|
||||
}
|
||||
|
||||
key POUND {
|
||||
label, number: '#'
|
||||
base: '#'
|
||||
}
|
||||
|
||||
key PLUS {
|
||||
label, number: '+'
|
||||
base: '+'
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
type FULL
|
||||
|
||||
### Basic QWERTY keys ###
|
||||
|
||||
key A {
|
||||
label: 'A'
|
||||
base: 'a'
|
||||
@@ -366,6 +368,8 @@ key APOSTROPHE {
|
||||
ctrl, alt, meta: none
|
||||
}
|
||||
|
||||
### Numeric keypad ###
|
||||
|
||||
key NUMPAD_0 {
|
||||
label, number: '0'
|
||||
base: fallback INSERT
|
||||
@@ -496,3 +500,25 @@ key NUMPAD_ENTER {
|
||||
base: '\n' fallback ENTER
|
||||
ctrl, alt, meta: none fallback ENTER
|
||||
}
|
||||
|
||||
### Special keys on phones ###
|
||||
|
||||
key AT {
|
||||
label, number: '@'
|
||||
base: '@'
|
||||
}
|
||||
|
||||
key STAR {
|
||||
label, number: '*'
|
||||
base: '*'
|
||||
}
|
||||
|
||||
key POUND {
|
||||
label, number: '#'
|
||||
base: '#'
|
||||
}
|
||||
|
||||
key PLUS {
|
||||
label, number: '+'
|
||||
base: '+'
|
||||
}
|
||||
|
||||
30
data/keyboards/common.mk
Normal file
30
data/keyboards/common.mk
Normal file
@@ -0,0 +1,30 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# This is the list of framework provided keylayouts and key character maps to include.
|
||||
# Used by Android.mk and keyboards.mk.
|
||||
|
||||
keylayouts := \
|
||||
AVRCP.kl \
|
||||
Generic.kl \
|
||||
Motorola_Bluetooth_Wireless_Keyboard.kl \
|
||||
qwerty.kl \
|
||||
qwerty2.kl
|
||||
|
||||
keycharmaps := \
|
||||
Generic.kcm \
|
||||
Virtual.kcm \
|
||||
Motorola_Bluetooth_Wireless_Keyboard.kcm \
|
||||
qwerty.kcm \
|
||||
qwerty2.kcm
|
||||
@@ -14,15 +14,7 @@
|
||||
|
||||
# Warning: this is actually a product definition, to be inherited from
|
||||
|
||||
keylayouts := \
|
||||
AVRCP.kl \
|
||||
Generic.kl \
|
||||
Motorola_Bluetooth_Wireless_Keyboard.kl
|
||||
|
||||
keycharmaps := \
|
||||
Generic.kcm \
|
||||
Virtual.kcm \
|
||||
Motorola_Bluetooth_Wireless_Keyboard.kcm
|
||||
include $(LOCAL_PATH)/common.mk
|
||||
|
||||
PRODUCT_COPY_FILES := $(foreach file,$(keylayouts),\
|
||||
frameworks/base/data/keyboards/$(file):system/usr/keylayout/$(file))
|
||||
@@ -30,4 +22,4 @@ PRODUCT_COPY_FILES := $(foreach file,$(keylayouts),\
|
||||
PRODUCT_COPY_FILES += $(foreach file,$(keycharmaps),\
|
||||
frameworks/base/data/keyboards/$(file):system/usr/keychars/$(file))
|
||||
|
||||
PRODUCT_PACKAGES := $(keycharmaps)
|
||||
PRODUCT_PACKAGES := $(keylayouts) $(keycharmaps)
|
||||
|
||||
508
data/keyboards/qwerty.kcm
Normal file
508
data/keyboards/qwerty.kcm
Normal file
@@ -0,0 +1,508 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# Emulator keyboard character map #1.
|
||||
#
|
||||
# This file is no longer used as the platform's default keyboard character map.
|
||||
# Refer to Generic.kcm and Virtual.kcm instead.
|
||||
#
|
||||
|
||||
type ALPHA
|
||||
|
||||
key A {
|
||||
label: 'A'
|
||||
number: '2'
|
||||
base: 'a'
|
||||
shift, capslock: 'A'
|
||||
alt: '#'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key B {
|
||||
label: 'B'
|
||||
number: '2'
|
||||
base: 'b'
|
||||
shift, capslock: 'B'
|
||||
alt: '<'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key C {
|
||||
label: 'C'
|
||||
number: '2'
|
||||
base: 'c'
|
||||
shift, capslock: 'C'
|
||||
alt: '9'
|
||||
shift+alt, capslock+alt: '\u00e7'
|
||||
}
|
||||
|
||||
key D {
|
||||
label: 'D'
|
||||
number: '3'
|
||||
base: 'd'
|
||||
shift, capslock: 'D'
|
||||
alt: '5'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key E {
|
||||
label: 'E'
|
||||
number: '3'
|
||||
base: 'e'
|
||||
shift, capslock: 'E'
|
||||
alt: '2'
|
||||
shift+alt, capslock+alt: '\u0301'
|
||||
}
|
||||
|
||||
key F {
|
||||
label: 'F'
|
||||
number: '3'
|
||||
base: 'f'
|
||||
shift, capslock: 'F'
|
||||
alt: '6'
|
||||
shift+alt, capslock+alt: '\u00a5'
|
||||
}
|
||||
|
||||
key G {
|
||||
label: 'G'
|
||||
number: '4'
|
||||
base: 'g'
|
||||
shift, capslock: 'G'
|
||||
alt: '-'
|
||||
shift+alt, capslock+alt: '_'
|
||||
}
|
||||
|
||||
key H {
|
||||
label: 'H'
|
||||
number: '4'
|
||||
base: 'h'
|
||||
shift, capslock: 'H'
|
||||
alt: '['
|
||||
shift+alt, capslock+alt: '{'
|
||||
}
|
||||
|
||||
key I {
|
||||
label: 'I'
|
||||
number: '4'
|
||||
base: 'i'
|
||||
shift, capslock: 'I'
|
||||
alt: '$'
|
||||
shift+alt, capslock+alt: '\u0302'
|
||||
}
|
||||
|
||||
key J {
|
||||
label: 'J'
|
||||
number: '5'
|
||||
base: 'j'
|
||||
shift, capslock: 'J'
|
||||
alt: ']'
|
||||
shift+alt, capslock+alt: '}'
|
||||
}
|
||||
|
||||
key K {
|
||||
label: 'K'
|
||||
number: '5'
|
||||
base: 'k'
|
||||
shift, capslock: 'K'
|
||||
alt: '"'
|
||||
shift+alt, capslock+alt: '~'
|
||||
}
|
||||
|
||||
key L {
|
||||
label: 'L'
|
||||
number: '5'
|
||||
base: 'l'
|
||||
shift, capslock: 'L'
|
||||
alt: '\''
|
||||
shift+alt, capslock+alt: '`'
|
||||
}
|
||||
|
||||
key M {
|
||||
label: 'M'
|
||||
number: '6'
|
||||
base: 'm'
|
||||
shift, capslock: 'M'
|
||||
alt: '!'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key N {
|
||||
label: 'N'
|
||||
number: '6'
|
||||
base: 'n'
|
||||
shift, capslock: 'N'
|
||||
alt: '>'
|
||||
shift+alt, capslock+alt: '\u0303'
|
||||
}
|
||||
|
||||
key O {
|
||||
label: 'O'
|
||||
number: '6'
|
||||
base: 'o'
|
||||
shift, capslock: 'O'
|
||||
alt: '('
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key P {
|
||||
label: 'P'
|
||||
number: '7'
|
||||
base: 'p'
|
||||
shift, capslock: 'P'
|
||||
alt: ')'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key Q {
|
||||
label: 'Q'
|
||||
number: '7'
|
||||
base: 'q'
|
||||
shift, capslock: 'Q'
|
||||
alt: '*'
|
||||
shift+alt, capslock+alt: '\u0300'
|
||||
}
|
||||
|
||||
key R {
|
||||
label: 'R'
|
||||
number: '7'
|
||||
base: 'r'
|
||||
shift, capslock: 'R'
|
||||
alt: '3'
|
||||
shift+alt, capslock+alt: '\u20ac'
|
||||
}
|
||||
|
||||
key S {
|
||||
label: 'S'
|
||||
number: '7'
|
||||
base: 's'
|
||||
shift, capslock: 'S'
|
||||
alt: '4'
|
||||
shift+alt, capslock+alt: '\u00df'
|
||||
}
|
||||
|
||||
key T {
|
||||
label: 'T'
|
||||
number: '8'
|
||||
base: 't'
|
||||
shift, capslock: 'T'
|
||||
alt: '+'
|
||||
shift+alt, capslock+alt: '\u00a3'
|
||||
}
|
||||
|
||||
key U {
|
||||
label: 'U'
|
||||
number: '8'
|
||||
base: 'u'
|
||||
shift, capslock: 'U'
|
||||
alt: '&'
|
||||
shift+alt, capslock+alt: '\u0308'
|
||||
}
|
||||
|
||||
key V {
|
||||
label: 'V'
|
||||
number: '8'
|
||||
base: 'v'
|
||||
shift, capslock: 'V'
|
||||
alt: '='
|
||||
shift+alt, capslock+alt: '^'
|
||||
}
|
||||
|
||||
key W {
|
||||
label: 'W'
|
||||
number: '9'
|
||||
base: 'w'
|
||||
shift, capslock: 'W'
|
||||
alt: '1'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key X {
|
||||
label: 'X'
|
||||
number: '9'
|
||||
base: 'x'
|
||||
shift, capslock: 'X'
|
||||
alt: '8'
|
||||
shift+alt, capslock+alt: '\uef00'
|
||||
}
|
||||
|
||||
key Y {
|
||||
label: 'Y'
|
||||
number: '9'
|
||||
base: 'y'
|
||||
shift, capslock: 'Y'
|
||||
alt: '%'
|
||||
shift+alt, capslock+alt: '\u00a1'
|
||||
}
|
||||
|
||||
key Z {
|
||||
label: 'Z'
|
||||
number: '9'
|
||||
base: 'z'
|
||||
shift, capslock: 'Z'
|
||||
alt: '7'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key COMMA {
|
||||
label: ','
|
||||
number: ','
|
||||
base: ','
|
||||
shift, capslock: ';'
|
||||
alt: ';'
|
||||
shift+alt, capslock+alt: '|'
|
||||
}
|
||||
|
||||
key PERIOD {
|
||||
label: '.'
|
||||
number: '.'
|
||||
base: '.'
|
||||
shift: ':'
|
||||
alt: ':'
|
||||
shift+alt: '\u2026'
|
||||
}
|
||||
|
||||
key AT {
|
||||
label: '@'
|
||||
number: '0'
|
||||
base: '@'
|
||||
shift: '0'
|
||||
alt: '0'
|
||||
shift+alt: '\u2022'
|
||||
}
|
||||
|
||||
key SLASH {
|
||||
label: '/'
|
||||
number: '/'
|
||||
base: '/'
|
||||
shift: '?'
|
||||
alt: '?'
|
||||
shift+alt: '\\'
|
||||
}
|
||||
|
||||
key SPACE {
|
||||
label: ' '
|
||||
number: ' '
|
||||
base: ' '
|
||||
shift: ' '
|
||||
alt: '\uef01'
|
||||
shift+alt: '\uef01'
|
||||
}
|
||||
|
||||
key ENTER {
|
||||
label: '\n'
|
||||
number: '\n'
|
||||
base: '\n'
|
||||
shift: '\n'
|
||||
alt: '\n'
|
||||
shift+alt: '\n'
|
||||
}
|
||||
|
||||
key TAB {
|
||||
label: '\t'
|
||||
number: '\t'
|
||||
base: '\t'
|
||||
shift: '\t'
|
||||
alt: '\t'
|
||||
shift+alt: '\t'
|
||||
}
|
||||
|
||||
key 0 {
|
||||
label: '0'
|
||||
number: '0'
|
||||
base: '0'
|
||||
shift: ')'
|
||||
alt: ')'
|
||||
shift+alt: ')'
|
||||
}
|
||||
|
||||
key 1 {
|
||||
label: '1'
|
||||
number: '1'
|
||||
base: '1'
|
||||
shift: '!'
|
||||
alt: '!'
|
||||
shift+alt: '!'
|
||||
}
|
||||
|
||||
key 2 {
|
||||
label: '2'
|
||||
number: '2'
|
||||
base: '2'
|
||||
shift: '@'
|
||||
alt: '@'
|
||||
shift+alt: '@'
|
||||
}
|
||||
|
||||
key 3 {
|
||||
label: '3'
|
||||
number: '3'
|
||||
base: '3'
|
||||
shift: '#'
|
||||
alt: '#'
|
||||
shift+alt: '#'
|
||||
}
|
||||
|
||||
key 4 {
|
||||
label: '4'
|
||||
number: '4'
|
||||
base: '4'
|
||||
shift: '$'
|
||||
alt: '$'
|
||||
shift+alt: '$'
|
||||
}
|
||||
|
||||
key 5 {
|
||||
label: '5'
|
||||
number: '5'
|
||||
base: '5'
|
||||
shift: '%'
|
||||
alt: '%'
|
||||
shift+alt: '%'
|
||||
}
|
||||
|
||||
key 6 {
|
||||
label: '6'
|
||||
number: '6'
|
||||
base: '6'
|
||||
shift: '^'
|
||||
alt: '^'
|
||||
shift+alt: '^'
|
||||
}
|
||||
|
||||
key 7 {
|
||||
label: '7'
|
||||
number: '7'
|
||||
base: '7'
|
||||
shift: '&'
|
||||
alt: '&'
|
||||
shift+alt: '&'
|
||||
}
|
||||
|
||||
key 8 {
|
||||
label: '8'
|
||||
number: '8'
|
||||
base: '8'
|
||||
shift: '*'
|
||||
alt: '*'
|
||||
shift+alt: '*'
|
||||
}
|
||||
|
||||
key 9 {
|
||||
label: '9'
|
||||
number: '9'
|
||||
base: '9'
|
||||
shift: '('
|
||||
alt: '('
|
||||
shift+alt: '('
|
||||
}
|
||||
|
||||
key GRAVE {
|
||||
label: '`'
|
||||
number: '`'
|
||||
base: '`'
|
||||
shift: '~'
|
||||
alt: '`'
|
||||
shift+alt: '~'
|
||||
}
|
||||
|
||||
key MINUS {
|
||||
label: '-'
|
||||
number: '-'
|
||||
base: '-'
|
||||
shift: '_'
|
||||
alt: '-'
|
||||
shift+alt: '_'
|
||||
}
|
||||
|
||||
key EQUALS {
|
||||
label: '='
|
||||
number: '='
|
||||
base: '='
|
||||
shift: '+'
|
||||
alt: '='
|
||||
shift+alt: '+'
|
||||
}
|
||||
|
||||
key LEFT_BRACKET {
|
||||
label: '['
|
||||
number: '['
|
||||
base: '['
|
||||
shift: '{'
|
||||
alt: '['
|
||||
shift+alt: '{'
|
||||
}
|
||||
|
||||
key RIGHT_BRACKET {
|
||||
label: ']'
|
||||
number: ']'
|
||||
base: ']'
|
||||
shift: '}'
|
||||
alt: ']'
|
||||
shift+alt: '}'
|
||||
}
|
||||
|
||||
key BACKSLASH {
|
||||
label: '\\'
|
||||
number: '\\'
|
||||
base: '\\'
|
||||
shift: '|'
|
||||
alt: '\\'
|
||||
shift+alt: '|'
|
||||
}
|
||||
|
||||
key SEMICOLON {
|
||||
label: ';'
|
||||
number: ';'
|
||||
base: ';'
|
||||
shift: ':'
|
||||
alt: ';'
|
||||
shift+alt: ':'
|
||||
}
|
||||
|
||||
key APOSTROPHE {
|
||||
label: '\''
|
||||
number: '\''
|
||||
base: '\''
|
||||
shift: '"'
|
||||
alt: '\''
|
||||
shift+alt: '"'
|
||||
}
|
||||
|
||||
key STAR {
|
||||
label: '*'
|
||||
number: '*'
|
||||
base: '*'
|
||||
shift: '*'
|
||||
alt: '*'
|
||||
shift+alt: '*'
|
||||
}
|
||||
|
||||
key POUND {
|
||||
label: '#'
|
||||
number: '#'
|
||||
base: '#'
|
||||
shift: '#'
|
||||
alt: '#'
|
||||
shift+alt: '#'
|
||||
}
|
||||
|
||||
key PLUS {
|
||||
label: '+'
|
||||
number: '+'
|
||||
base: '+'
|
||||
shift: '+'
|
||||
alt: '+'
|
||||
shift+alt: '+'
|
||||
}
|
||||
112
data/keyboards/qwerty.kl
Normal file
112
data/keyboards/qwerty.kl
Normal file
@@ -0,0 +1,112 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# Emulator keyboard layout #1.
|
||||
#
|
||||
# This file is no longer used as the platform's default keyboard layout.
|
||||
# Refer to Generic.kl instead.
|
||||
#
|
||||
|
||||
key 399 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 158 BACK WAKE_DROPPED
|
||||
key 230 SOFT_RIGHT WAKE
|
||||
key 60 SOFT_RIGHT WAKE
|
||||
key 107 ENDCALL WAKE_DROPPED
|
||||
key 62 ENDCALL WAKE_DROPPED
|
||||
key 229 MENU WAKE_DROPPED
|
||||
key 139 MENU WAKE_DROPPED
|
||||
key 59 MENU WAKE_DROPPED
|
||||
key 127 SEARCH WAKE_DROPPED
|
||||
key 217 SEARCH WAKE_DROPPED
|
||||
key 228 POUND
|
||||
key 227 STAR
|
||||
key 231 CALL WAKE_DROPPED
|
||||
key 61 CALL WAKE_DROPPED
|
||||
key 232 DPAD_CENTER WAKE_DROPPED
|
||||
key 108 DPAD_DOWN WAKE_DROPPED
|
||||
key 103 DPAD_UP WAKE_DROPPED
|
||||
key 102 HOME WAKE
|
||||
key 105 DPAD_LEFT WAKE_DROPPED
|
||||
key 106 DPAD_RIGHT WAKE_DROPPED
|
||||
key 115 VOLUME_UP WAKE
|
||||
key 114 VOLUME_DOWN WAKE
|
||||
key 116 POWER WAKE
|
||||
key 212 CAMERA
|
||||
|
||||
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 100 ALT_RIGHT
|
||||
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
|
||||
|
||||
# On an AT keyboard: ESC, F10
|
||||
key 1 BACK WAKE_DROPPED
|
||||
key 68 MENU WAKE_DROPPED
|
||||
505
data/keyboards/qwerty2.kcm
Normal file
505
data/keyboards/qwerty2.kcm
Normal file
@@ -0,0 +1,505 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# Emulator keyboard character map #2.
|
||||
#
|
||||
|
||||
type ALPHA
|
||||
|
||||
key A {
|
||||
label: 'A'
|
||||
number: '2'
|
||||
base: 'a'
|
||||
shift, capslock: 'A'
|
||||
alt: 'a'
|
||||
shift+alt, capslock+alt: 'A'
|
||||
}
|
||||
|
||||
key B {
|
||||
label: 'B'
|
||||
number: '2'
|
||||
base: 'b'
|
||||
shift, capslock: 'B'
|
||||
alt: 'b'
|
||||
shift+alt, capslock+alt: 'B'
|
||||
}
|
||||
|
||||
key C {
|
||||
label: 'C'
|
||||
number: '2'
|
||||
base: 'c'
|
||||
shift, capslock: 'C'
|
||||
alt: '\u00e7'
|
||||
shift+alt, capslock+alt: '\u00e7'
|
||||
}
|
||||
|
||||
key D {
|
||||
label: 'D'
|
||||
number: '3'
|
||||
base: 'd'
|
||||
shift, capslock: 'D'
|
||||
alt: '\''
|
||||
shift+alt, capslock+alt: '\''
|
||||
}
|
||||
|
||||
key E {
|
||||
label: 'E'
|
||||
number: '3'
|
||||
base: 'e'
|
||||
shift, capslock: 'E'
|
||||
alt: '"'
|
||||
shift+alt, capslock+alt: '\u0301'
|
||||
}
|
||||
|
||||
key F {
|
||||
label: 'F'
|
||||
number: '3'
|
||||
base: 'f'
|
||||
shift, capslock: 'F'
|
||||
alt: '['
|
||||
shift+alt, capslock+alt: '['
|
||||
}
|
||||
|
||||
key G {
|
||||
label: 'G'
|
||||
number: '4'
|
||||
base: 'g'
|
||||
shift, capslock: 'G'
|
||||
alt: ']'
|
||||
shift+alt, capslock+alt: ']'
|
||||
}
|
||||
|
||||
key H {
|
||||
label: 'H'
|
||||
number: '4'
|
||||
base: 'h'
|
||||
shift, capslock: 'H'
|
||||
alt: '<'
|
||||
shift+alt, capslock+alt: '<'
|
||||
}
|
||||
|
||||
key I {
|
||||
label: 'I'
|
||||
number: '4'
|
||||
base: 'i'
|
||||
shift, capslock: 'I'
|
||||
alt: '-'
|
||||
shift+alt, capslock+alt: '\u0302'
|
||||
}
|
||||
|
||||
key J {
|
||||
label: 'J'
|
||||
number: '5'
|
||||
base: 'j'
|
||||
shift, capslock: 'J'
|
||||
alt: '>'
|
||||
shift+alt, capslock+alt: '>'
|
||||
}
|
||||
|
||||
key K {
|
||||
label: 'K'
|
||||
number: '5'
|
||||
base: 'k'
|
||||
shift, capslock: 'K'
|
||||
alt: ';'
|
||||
shift+alt, capslock+alt: '~'
|
||||
}
|
||||
|
||||
key L {
|
||||
label: 'L'
|
||||
number: '5'
|
||||
base: 'l'
|
||||
shift, capslock: 'L'
|
||||
alt: ':'
|
||||
shift+alt, capslock+alt: '`'
|
||||
}
|
||||
|
||||
key M {
|
||||
label: 'M'
|
||||
number: '6'
|
||||
base: 'm'
|
||||
shift, capslock: 'M'
|
||||
alt: '%'
|
||||
shift+alt, capslock+alt: none
|
||||
}
|
||||
|
||||
key N {
|
||||
label: 'N'
|
||||
number: '6'
|
||||
base: 'n'
|
||||
shift, capslock: 'N'
|
||||
alt: none
|
||||
shift+alt, capslock+alt: '\u0303'
|
||||
}
|
||||
|
||||
key O {
|
||||
label: 'O'
|
||||
number: '6'
|
||||
base: 'o'
|
||||
shift, capslock: 'O'
|
||||
alt: '+'
|
||||
shift+alt, capslock+alt: '+'
|
||||
}
|
||||
|
||||
key P {
|
||||
label: 'P'
|
||||
number: '7'
|
||||
base: 'p'
|
||||
shift, capslock: 'P'
|
||||
alt: '='
|
||||
shift+alt, capslock+alt: '\u00a5'
|
||||
}
|
||||
|
||||
key Q {
|
||||
label: 'Q'
|
||||
number: '7'
|
||||
base: 'q'
|
||||
shift, capslock: 'Q'
|
||||
alt: '|'
|
||||
shift+alt, capslock+alt: '\u0300'
|
||||
}
|
||||
|
||||
key R {
|
||||
label: 'R'
|
||||
number: '7'
|
||||
base: 'r'
|
||||
shift, capslock: 'R'
|
||||
alt: '`'
|
||||
shift+alt, capslock+alt: '\u20ac'
|
||||
}
|
||||
|
||||
key S {
|
||||
label: 'S'
|
||||
number: '7'
|
||||
base: 's'
|
||||
shift, capslock: 'S'
|
||||
alt: '\\'
|
||||
shift+alt, capslock+alt: '\u00df'
|
||||
}
|
||||
|
||||
key T {
|
||||
label: 'T'
|
||||
number: '8'
|
||||
base: 't'
|
||||
shift, capslock: 'T'
|
||||
alt: '{'
|
||||
shift+alt, capslock+alt: '\u00a3'
|
||||
}
|
||||
|
||||
key U {
|
||||
label: 'U'
|
||||
number: '8'
|
||||
base: 'u'
|
||||
shift, capslock: 'U'
|
||||
alt: '_'
|
||||
shift+alt, capslock+alt: '\u0308'
|
||||
}
|
||||
|
||||
key V {
|
||||
label: 'V'
|
||||
number: '8'
|
||||
base: 'v'
|
||||
shift, capslock: 'V'
|
||||
alt: 'v'
|
||||
shift+alt, capslock+alt: 'V'
|
||||
}
|
||||
|
||||
key W {
|
||||
label: 'W'
|
||||
number: '9'
|
||||
base: 'w'
|
||||
shift, capslock: 'W'
|
||||
alt: '~'
|
||||
shift+alt, capslock+alt: '~'
|
||||
}
|
||||
|
||||
key X {
|
||||
label: 'X'
|
||||
number: '9'
|
||||
base: 'x'
|
||||
shift, capslock: 'X'
|
||||
alt: 'x'
|
||||
shift+alt, capslock+alt: '\uef00'
|
||||
}
|
||||
|
||||
key Y {
|
||||
label: 'Y'
|
||||
number: '9'
|
||||
base: 'y'
|
||||
shift, capslock: 'Y'
|
||||
alt: '}'
|
||||
shift+alt, capslock+alt: '\u00a1'
|
||||
}
|
||||
|
||||
key Z {
|
||||
label: 'Z'
|
||||
number: '9'
|
||||
base: 'z'
|
||||
shift, capslock: 'Z'
|
||||
alt: 'z'
|
||||
shift+alt, capslock+alt: 'Z'
|
||||
}
|
||||
|
||||
key COMMA {
|
||||
label: ','
|
||||
number: ','
|
||||
base: ','
|
||||
shift: '<'
|
||||
alt: ','
|
||||
shift+alt: ','
|
||||
}
|
||||
|
||||
key PERIOD {
|
||||
label: '.'
|
||||
number: '.'
|
||||
base: '.'
|
||||
shift: '>'
|
||||
alt: '.'
|
||||
shift+alt: '\u2026'
|
||||
}
|
||||
|
||||
key AT {
|
||||
label: '@'
|
||||
number: '@'
|
||||
base: '@'
|
||||
shift: '@'
|
||||
alt: '@'
|
||||
shift+alt: '\u2022'
|
||||
}
|
||||
|
||||
key SLASH {
|
||||
label: '/'
|
||||
number: '/'
|
||||
base: '/'
|
||||
shift: '?'
|
||||
alt: '?'
|
||||
shift+alt: '?'
|
||||
}
|
||||
|
||||
key SPACE {
|
||||
label: ' '
|
||||
number: ' '
|
||||
base: ' '
|
||||
shift: ' '
|
||||
alt: '\uef01'
|
||||
shift+alt: '\uef01'
|
||||
}
|
||||
|
||||
key ENTER {
|
||||
label: '\n'
|
||||
number: '\n'
|
||||
base: '\n'
|
||||
shift: '\n'
|
||||
alt: '\n'
|
||||
shift+alt: '\n'
|
||||
}
|
||||
|
||||
key TAB {
|
||||
label: '\t'
|
||||
number: '\t'
|
||||
base: '\t'
|
||||
shift: '\t'
|
||||
alt: '\t'
|
||||
shift+alt: '\t'
|
||||
}
|
||||
|
||||
key 0 {
|
||||
label: '0'
|
||||
number: '0'
|
||||
base: '0'
|
||||
shift: ')'
|
||||
alt: ')'
|
||||
shift+alt: ')'
|
||||
}
|
||||
|
||||
key 1 {
|
||||
label: '1'
|
||||
number: '1'
|
||||
base: '1'
|
||||
shift: '!'
|
||||
alt: '!'
|
||||
shift+alt: '!'
|
||||
}
|
||||
|
||||
key 2 {
|
||||
label: '2'
|
||||
number: '2'
|
||||
base: '2'
|
||||
shift: '@'
|
||||
alt: '@'
|
||||
shift+alt: '@'
|
||||
}
|
||||
|
||||
key 3 {
|
||||
label: '3'
|
||||
number: '3'
|
||||
base: '3'
|
||||
shift: '#'
|
||||
alt: '#'
|
||||
shift+alt: '#'
|
||||
}
|
||||
|
||||
key 4 {
|
||||
label: '4'
|
||||
number: '4'
|
||||
base: '4'
|
||||
shift: '$'
|
||||
alt: '$'
|
||||
shift+alt: '$'
|
||||
}
|
||||
|
||||
key 5 {
|
||||
label: '5'
|
||||
number: '5'
|
||||
base: '5'
|
||||
shift: '%'
|
||||
alt: '%'
|
||||
shift+alt: '%'
|
||||
}
|
||||
|
||||
key 6 {
|
||||
label: '6'
|
||||
number: '6'
|
||||
base: '6'
|
||||
shift: '^'
|
||||
alt: '^'
|
||||
shift+alt: '^'
|
||||
}
|
||||
|
||||
key 7 {
|
||||
label: '7'
|
||||
number: '7'
|
||||
base: '7'
|
||||
shift: '&'
|
||||
alt: '&'
|
||||
shift+alt: '&'
|
||||
}
|
||||
|
||||
key 8 {
|
||||
label: '8'
|
||||
number: '8'
|
||||
base: '8'
|
||||
shift: '*'
|
||||
alt: '*'
|
||||
shift+alt: '*'
|
||||
}
|
||||
|
||||
key 9 {
|
||||
label: '9'
|
||||
number: '9'
|
||||
base: '9'
|
||||
shift: '('
|
||||
alt: '('
|
||||
shift+alt: '('
|
||||
}
|
||||
|
||||
key GRAVE {
|
||||
label: '`'
|
||||
number: '`'
|
||||
base: '`'
|
||||
shift: '~'
|
||||
alt: '`'
|
||||
shift+alt: '~'
|
||||
}
|
||||
|
||||
key MINUS {
|
||||
label: '-'
|
||||
number: '-'
|
||||
base: '-'
|
||||
shift: '_'
|
||||
alt: '-'
|
||||
shift+alt: '_'
|
||||
}
|
||||
|
||||
key EQUALS {
|
||||
label: '='
|
||||
number: '='
|
||||
base: '='
|
||||
shift: '+'
|
||||
alt: '='
|
||||
shift+alt: '+'
|
||||
}
|
||||
|
||||
key LEFT_BRACKET {
|
||||
label: '['
|
||||
number: '['
|
||||
base: '['
|
||||
shift: '{'
|
||||
alt: '['
|
||||
shift+alt: '{'
|
||||
}
|
||||
|
||||
key RIGHT_BRACKET {
|
||||
label: ']'
|
||||
number: ']'
|
||||
base: ']'
|
||||
shift: '}'
|
||||
alt: ']'
|
||||
shift+alt: '}'
|
||||
}
|
||||
|
||||
key BACKSLASH {
|
||||
label: '\\'
|
||||
number: '\\'
|
||||
base: '\\'
|
||||
shift: '|'
|
||||
alt: '\\'
|
||||
shift+alt: '|'
|
||||
}
|
||||
|
||||
key SEMICOLON {
|
||||
label: ';'
|
||||
number: ';'
|
||||
base: ';'
|
||||
shift: ':'
|
||||
alt: ';'
|
||||
shift+alt: ':'
|
||||
}
|
||||
|
||||
key APOSTROPHE {
|
||||
label: '\''
|
||||
number: '\''
|
||||
base: '\''
|
||||
shift: '"'
|
||||
alt: '\''
|
||||
shift+alt: '"'
|
||||
}
|
||||
|
||||
key STAR {
|
||||
label: '*'
|
||||
number: '*'
|
||||
base: '*'
|
||||
shift: '*'
|
||||
alt: '*'
|
||||
shift+alt: '*'
|
||||
}
|
||||
|
||||
key POUND {
|
||||
label: '#'
|
||||
number: '#'
|
||||
base: '#'
|
||||
shift: '#'
|
||||
alt: '#'
|
||||
shift+alt: '#'
|
||||
}
|
||||
|
||||
key PLUS {
|
||||
label: '+'
|
||||
number: '+'
|
||||
base: '+'
|
||||
shift: '+'
|
||||
alt: '+'
|
||||
shift+alt: '+'
|
||||
}
|
||||
109
data/keyboards/qwerty2.kl
Normal file
109
data/keyboards/qwerty2.kl
Normal file
@@ -0,0 +1,109 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# Emulator keyboard layout #2.
|
||||
#
|
||||
|
||||
key 399 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 158 BACK WAKE_DROPPED
|
||||
key 230 SOFT_RIGHT WAKE
|
||||
key 60 SOFT_RIGHT WAKE
|
||||
key 107 ENDCALL WAKE_DROPPED
|
||||
key 62 ENDCALL WAKE_DROPPED
|
||||
key 229 MENU WAKE_DROPPED
|
||||
key 139 MENU WAKE_DROPPED
|
||||
key 59 MENU WAKE_DROPPED
|
||||
key 127 SEARCH WAKE_DROPPED
|
||||
key 217 SEARCH WAKE_DROPPED
|
||||
key 228 POUND
|
||||
key 227 STAR
|
||||
key 231 CALL WAKE_DROPPED
|
||||
key 61 CALL WAKE_DROPPED
|
||||
key 232 DPAD_CENTER WAKE_DROPPED
|
||||
key 108 DPAD_DOWN WAKE_DROPPED
|
||||
key 103 DPAD_UP WAKE_DROPPED
|
||||
key 102 HOME WAKE
|
||||
key 105 DPAD_LEFT WAKE_DROPPED
|
||||
key 106 DPAD_RIGHT WAKE_DROPPED
|
||||
key 115 VOLUME_UP WAKE
|
||||
key 114 VOLUME_DOWN WAKE
|
||||
key 116 POWER WAKE
|
||||
key 212 CAMERA
|
||||
|
||||
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 100 ALT_RIGHT
|
||||
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
|
||||
|
||||
# On an AT keyboard: ESC, F10
|
||||
key 1 BACK WAKE_DROPPED
|
||||
key 68 MENU WAKE_DROPPED
|
||||
@@ -1,7 +1,46 @@
|
||||
# Copyright (C) 2010 The Android 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
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
# libui is partially built for the host (used by build time keymap validation tool)
|
||||
# These files are common to host and target builds.
|
||||
commonSources:= \
|
||||
Input.cpp \
|
||||
Keyboard.cpp \
|
||||
KeyLayoutMap.cpp \
|
||||
KeyCharacterMap.cpp \
|
||||
|
||||
# For the host
|
||||
# =====================================================
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= $(commonSources)
|
||||
|
||||
LOCAL_MODULE:= libui
|
||||
|
||||
include $(BUILD_HOST_STATIC_LIBRARY)
|
||||
|
||||
|
||||
# For the device
|
||||
# =====================================================
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
$(commonSources) \
|
||||
EGLUtils.cpp \
|
||||
EventHub.cpp \
|
||||
EventRecurrence.cpp \
|
||||
@@ -10,10 +49,6 @@ LOCAL_SRC_FILES:= \
|
||||
GraphicBufferAllocator.cpp \
|
||||
GraphicBufferMapper.cpp \
|
||||
GraphicLog.cpp \
|
||||
Keyboard.cpp \
|
||||
KeyLayoutMap.cpp \
|
||||
KeyCharacterMap.cpp \
|
||||
Input.cpp \
|
||||
InputDispatcher.cpp \
|
||||
InputManager.cpp \
|
||||
InputReader.cpp \
|
||||
|
||||
@@ -733,6 +733,7 @@ status_t KeyCharacterMap::Parser::parseModifier(const String8& token, int32_t* o
|
||||
}
|
||||
|
||||
combinedMeta |= metaState;
|
||||
start = cur + 1;
|
||||
|
||||
if (ch == '\0') {
|
||||
break;
|
||||
|
||||
34
tools/validatekeymaps/Android.mk
Normal file
34
tools/validatekeymaps/Android.mk
Normal file
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# Copyright 2010 The Android Open Source Project
|
||||
#
|
||||
# Keymap validation tool.
|
||||
#
|
||||
|
||||
# This tool is prebuilt if we're doing an app-only build.
|
||||
ifeq ($(TARGET_BUILD_APPS),)
|
||||
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
Main.cpp
|
||||
|
||||
LOCAL_CFLAGS := -Wall -Werror
|
||||
|
||||
#LOCAL_C_INCLUDES +=
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libui \
|
||||
libutils \
|
||||
libcutils
|
||||
|
||||
ifeq ($(HOST_OS),linux)
|
||||
LOCAL_LDLIBS += -lpthread
|
||||
endif
|
||||
|
||||
LOCAL_MODULE := validatekeymaps
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
include $(BUILD_HOST_EXECUTABLE)
|
||||
|
||||
endif # TARGET_BUILD_APPS
|
||||
110
tools/validatekeymaps/Main.cpp
Normal file
110
tools/validatekeymaps/Main.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android 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
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <ui/KeyCharacterMap.h>
|
||||
#include <ui/KeyLayoutMap.h>
|
||||
#include <utils/String8.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
using namespace android;
|
||||
|
||||
static const char* gProgName = "validatekeymaps";
|
||||
|
||||
enum FileType {
|
||||
FILETYPE_UNKNOWN,
|
||||
FILETYPE_KEYLAYOUT,
|
||||
FILETYPE_KEYCHARACTERMAP,
|
||||
};
|
||||
|
||||
|
||||
static void usage() {
|
||||
fprintf(stderr, "Keymap Validation Tool\n\n");
|
||||
fprintf(stderr, "Usage:\n");
|
||||
fprintf(stderr,
|
||||
" %s [FILENAME.kl] [FILENAME.kcm] [...]\n"
|
||||
" Validates the specified key layout and/or key character map files.\n\n", gProgName);
|
||||
}
|
||||
|
||||
static FileType getFileType(const char* filename) {
|
||||
char *extension = strrchr(filename, '.');
|
||||
if (extension) {
|
||||
if (strcmp(extension, ".kl") == 0) {
|
||||
return FILETYPE_KEYLAYOUT;
|
||||
}
|
||||
if (strcmp(extension, ".kcm") == 0) {
|
||||
return FILETYPE_KEYCHARACTERMAP;
|
||||
}
|
||||
}
|
||||
return FILETYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
static bool validateFile(const char* filename) {
|
||||
fprintf(stdout, "Validating file '%s'...\n", filename);
|
||||
|
||||
FileType fileType = getFileType(filename);
|
||||
switch (fileType) {
|
||||
case FILETYPE_UNKNOWN:
|
||||
fprintf(stderr, "File extension must be .kl or .kcm.\n\n");
|
||||
return false;
|
||||
|
||||
case FILETYPE_KEYLAYOUT: {
|
||||
KeyLayoutMap* map;
|
||||
status_t status = KeyLayoutMap::load(String8(filename), &map);
|
||||
if (status) {
|
||||
fprintf(stderr, "Error %d parsing key layout file.\n\n", status);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case FILETYPE_KEYCHARACTERMAP: {
|
||||
KeyCharacterMap* map;
|
||||
status_t status = KeyCharacterMap::load(String8(filename), &map);
|
||||
if (status) {
|
||||
fprintf(stderr, "Error %d parsing key character map file.\n\n", status);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fputs("No errors.\n\n", stdout);
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, const char** argv) {
|
||||
if (argc < 2) {
|
||||
usage();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
for (int i = 1; i < argc; i++) {
|
||||
if (!validateFile(argv[i])) {
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (result) {
|
||||
fputs("Failed!\n", stderr);
|
||||
} else {
|
||||
fputs("Success.\n", stdout);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user