diff options
Diffstat (limited to 'packages')
25 files changed, 5163 insertions, 59 deletions
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index 8e3a3c5..3eec18c 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -81,13 +81,15 @@ public class DefaultContainerService extends IntentService { * @return Returns the new cache path where the resource has been copied into * */ - public String copyResourceToContainer(final Uri packageURI, - final String cid, - final String key, final String resFileName) { + public String copyResourceToContainer(final Uri packageURI, final String cid, + final String key, final String resFileName, final String publicResFileName, + boolean isExternal, boolean isForwardLocked) { if (packageURI == null || cid == null) { return null; } - return copyResourceInner(packageURI, cid, key, resFileName); + + return copyResourceInner(packageURI, cid, key, resFileName, publicResFileName, + isExternal, isForwardLocked); } /* @@ -169,22 +171,23 @@ public class DefaultContainerService extends IntentService { } @Override - public boolean checkInternalFreeStorage(Uri packageUri, long threshold) - throws RemoteException { + public boolean checkInternalFreeStorage(Uri packageUri, boolean isForwardLocked, + long threshold) throws RemoteException { final File apkFile = new File(packageUri.getPath()); try { - return isUnderInternalThreshold(apkFile, threshold); - } catch (FileNotFoundException e) { + return isUnderInternalThreshold(apkFile, isForwardLocked, threshold); + } catch (IOException e) { return true; } } @Override - public boolean checkExternalFreeStorage(Uri packageUri) throws RemoteException { + public boolean checkExternalFreeStorage(Uri packageUri, boolean isForwardLocked) + throws RemoteException { final File apkFile = new File(packageUri.getPath()); try { - return isUnderExternalThreshold(apkFile); - } catch (FileNotFoundException e) { + return isUnderExternalThreshold(apkFile, isForwardLocked); + } catch (IOException e) { return true; } } @@ -259,12 +262,16 @@ public class DefaultContainerService extends IntentService { return mBinder; } - private String copyResourceInner(Uri packageURI, String newCid, String key, String resFileName) { - // Make sure the sdcard is mounted. - String status = Environment.getExternalStorageState(); - if (!status.equals(Environment.MEDIA_MOUNTED)) { - Slog.w(TAG, "Make sure sdcard is mounted."); - return null; + private String copyResourceInner(Uri packageURI, String newCid, String key, String resFileName, + String publicResFileName, boolean isExternal, boolean isForwardLocked) { + + if (isExternal) { + // Make sure the sdcard is mounted. + String status = Environment.getExternalStorageState(); + if (!status.equals(Environment.MEDIA_MOUNTED)) { + Slog.w(TAG, "Make sure sdcard is mounted."); + return null; + } } // The .apk file @@ -272,17 +279,18 @@ public class DefaultContainerService extends IntentService { File codeFile = new File(codePath); // Calculate size of container needed to hold base APK. - int sizeMb; + final int sizeMb; try { - sizeMb = calculateContainerSize(codeFile); - } catch (FileNotFoundException e) { - Slog.w(TAG, "File does not exist when trying to copy " + codeFile.getPath()); + sizeMb = calculateContainerSize(codeFile, isForwardLocked); + } catch (IOException e) { + Slog.w(TAG, "Problem when trying to copy " + codeFile.getPath()); return null; } // Create new container - final String newCachePath; - if ((newCachePath = PackageHelper.createSdDir(sizeMb, newCid, key, Process.myUid())) == null) { + final String newCachePath = PackageHelper.createSdDir(sizeMb, newCid, key, Process.myUid(), + isExternal); + if (newCachePath == null) { Slog.e(TAG, "Failed to create container " + newCid); return null; } @@ -303,6 +311,30 @@ public class DefaultContainerService extends IntentService { return null; } + if (isForwardLocked) { + File publicZipFile = new File(newCachePath, publicResFileName); + try { + PackageHelper.extractPublicFiles(resFile.getAbsolutePath(), publicZipFile); + if (localLOGV) { + Slog.i(TAG, "Copied resources to " + publicZipFile); + } + } catch (IOException e) { + Slog.e(TAG, "Could not chown public APK " + publicZipFile.getAbsolutePath() + ": " + + e.getMessage()); + PackageHelper.destroySdDir(newCid); + return null; + } + + try { + Libcore.os.chmod(resFile.getAbsolutePath(), 0640); + Libcore.os.chmod(publicZipFile.getAbsolutePath(), 0644); + } catch (ErrnoException e) { + Slog.e(TAG, "Could not chown APK or resource file: " + e.getMessage()); + PackageHelper.destroySdDir(newCid); + return null; + } + } + final File sharedLibraryDir = new File(newCachePath, LIB_DIR_NAME); if (sharedLibraryDir.mkdir()) { int ret = NativeLibraryHelper.copyNativeBinariesIfNeededLI(codeFile, sharedLibraryDir); @@ -412,18 +444,13 @@ public class DefaultContainerService extends IntentService { int prefer; boolean checkBoth = false; + final boolean isForwardLocked = (flags & PackageManager.INSTALL_FORWARD_LOCK) != 0; + check_inner : { /* * Explicit install flags should override the manifest settings. */ - if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0) { - /* - * Forward-locked applications cannot be installed on SD card, - * so only allow checking internal storage. - */ - prefer = PREFER_INTERNAL; - break check_inner; - } else if ((flags & PackageManager.INSTALL_INTERNAL) != 0) { + if ((flags & PackageManager.INSTALL_INTERNAL) != 0) { prefer = PREFER_INTERNAL; break check_inner; } else if ((flags & PackageManager.INSTALL_EXTERNAL) != 0) { @@ -473,8 +500,8 @@ public class DefaultContainerService extends IntentService { boolean fitsOnInternal = false; if (checkBoth || prefer == PREFER_INTERNAL) { try { - fitsOnInternal = isUnderInternalThreshold(apkFile, threshold); - } catch (FileNotFoundException e) { + fitsOnInternal = isUnderInternalThreshold(apkFile, isForwardLocked, threshold); + } catch (IOException e) { return PackageHelper.RECOMMEND_FAILED_INVALID_URI; } } @@ -482,8 +509,8 @@ public class DefaultContainerService extends IntentService { boolean fitsOnSd = false; if (!emulated && (checkBoth || prefer == PREFER_EXTERNAL)) { try { - fitsOnSd = isUnderExternalThreshold(apkFile); - } catch (FileNotFoundException e) { + fitsOnSd = isUnderExternalThreshold(apkFile, isForwardLocked); + } catch (IOException e) { return PackageHelper.RECOMMEND_FAILED_INVALID_URI; } } @@ -527,13 +554,17 @@ public class DefaultContainerService extends IntentService { * @return true if file fits under threshold * @throws FileNotFoundException when APK does not exist */ - private boolean isUnderInternalThreshold(File apkFile, long threshold) - throws FileNotFoundException { - final long size = apkFile.length(); + private boolean isUnderInternalThreshold(File apkFile, boolean isForwardLocked, long threshold) + throws IOException { + long size = apkFile.length(); if (size == 0 && !apkFile.exists()) { throw new FileNotFoundException(); } + if (isForwardLocked) { + size += PackageHelper.extractPublicFiles(apkFile.getAbsolutePath(), null); + } + final StatFs internalStats = new StatFs(Environment.getDataDirectory().getPath()); final long availInternalSize = (long) internalStats.getAvailableBlocks() * (long) internalStats.getBlockSize(); @@ -549,12 +580,13 @@ public class DefaultContainerService extends IntentService { * @return true if file fits * @throws IOException when file does not exist */ - private boolean isUnderExternalThreshold(File apkFile) throws FileNotFoundException { + private boolean isUnderExternalThreshold(File apkFile, boolean isForwardLocked) + throws IOException { if (Environment.isExternalStorageEmulated()) { return false; } - final int sizeMb = calculateContainerSize(apkFile); + final int sizeMb = calculateContainerSize(apkFile, isForwardLocked); final int availSdMb; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { @@ -573,9 +605,9 @@ public class DefaultContainerService extends IntentService { * * @param apkFile file from which to calculate size * @return size in megabytes (2^20 bytes) - * @throws FileNotFoundException when file does not exist + * @throws IOException when there is a problem reading the file */ - private int calculateContainerSize(File apkFile) throws FileNotFoundException { + private int calculateContainerSize(File apkFile, boolean forwardLocked) throws IOException { // Calculate size of container needed to hold base APK. long sizeBytes = apkFile.length(); if (sizeBytes == 0 && !apkFile.exists()) { @@ -586,6 +618,10 @@ public class DefaultContainerService extends IntentService { // container size. sizeBytes += NativeLibraryHelper.sumNativeBinariesLI(apkFile); + if (forwardLocked) { + sizeBytes += PackageHelper.extractPublicFiles(apkFile.getPath(), null); + } + int sizeMb = (int) (sizeBytes >> 20); if ((sizeBytes - (sizeMb * 1024 * 1024)) > 0) { sizeMb++; diff --git a/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm b/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm new file mode 100644 index 0000000..eec9d27 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm @@ -0,0 +1,352 @@ +# Copyright (C) 2012 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. + +# +# Croatian and Slovenian keyboard layout, QWERTZ style. +# + +type OVERLAY + +map key 12 SLASH +map key 21 Z +map key 44 Y +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u00b8' + base: '\u0327' + shift: '\u0308' +} + +key 1 { + label: '1' + base: '1' + shift: '!' + ralt: '\u0303' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '\u030c' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u0302' +} + +key 4 { + label: '4' + base: '4' + shift: '$' + ralt: '\u0306' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u030a' +} + +key 6 { + label: '6' + base: '6' + shift: '&' + ralt: '\u0328' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '\u0300' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '\u0307' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: '\u0301' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '\u030b' +} + +key SLASH { + label: '\'' + base: '\'' + shift: '?' + ralt: '\u0308' +} + +key EQUALS { + label: '+' + base: '+' + shift: '*' + ralt: '\u0327' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' + ralt: '\\' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' + ralt: '|' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u0160' + base: '\u0161' + shift, capslock: '\u0160' + ralt: '\u00f7' +} + +key RIGHT_BRACKET { + label: '\u0110' + base: '\u0111' + shift, capslock: '\u0110' + ralt: '\u00d7' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' + ralt: '[' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' + ralt: ']' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' + ralt: '\u0268' + ralt+shift, ralt+capslock: '\u0197' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' + ralt: '\u0142' + ralt+shift, ralt+capslock: '\u0141' +} + +key SEMICOLON { + label: '\u010d' + base: '\u010c' + shift, capslock: '\u010d' +} + +key APOSTROPHE { + label: '\u0106' + base: '\u0107' + shift, capslock: '\u0106' + ralt: '\u00df' +} + +key BACKSLASH { + label: '\u017d' + base: '\u017e' + shift, capslock: '\u017d' + ralt: '\u00a4' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' + ralt: '@' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' + ralt: '{' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' + ralt: '}' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00a7' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' + ralt: '<' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' + ralt: '>' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_czech.kcm b/packages/InputDevices/res/raw/keyboard_layout_czech.kcm new file mode 100644 index 0000000..f710a8e --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_czech.kcm @@ -0,0 +1,348 @@ +# Copyright (C) 2012 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. + +# +# Czech keyboard layout. +# + +type OVERLAY + +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: ';' + base: ';' + shift: '\u00b0' +} + +key 1 { + label: '1' + base: '+' + shift: '1' + ralt: '!' +} + +key 2 { + label: '2' + base: '\u011b' + shift: '2' + ralt: '@' +} + +key 3 { + label: '3' + base: '\u0161' + shift: '3' + ralt: '#' +} + +key 4 { + label: '4' + base: '\u010d' + shift: '4' + ralt: '$' +} + +key 5 { + label: '5' + base: '\u0159' + shift: '5' + ralt: '%' +} + +key 6 { + label: '6' + base: '\u017e' + shift: '6' + ralt: '^' +} + +key 7 { + label: '7' + base: '\u00fd' + shift: '7' + ralt: '&' +} + +key 8 { + label: '8' + base: '\u00e1' + shift: '8' + ralt: '*' +} + +key 9 { + label: '9' + base: '\u00ed' + shift: '9' + ralt: '(' +} + +key 0 { + label: '0' + base: '\u00e9' + shift: '0' + ralt: ')' +} + +key MINUS { + label: '=' + base: '=' + shift: '%' + ralt: '-' + ralt+shift: '_' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u030c' + ralt: '=' + ralt+shift: '+' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00fa' + base: '\u00fa' + shift: '/' + ralt: '[' + ralt+shift: '{' +} + +key RIGHT_BRACKET { + label: ')' + base: ')' + shift: '(' + ralt: ']' + ralt+shift: '}' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u016f' + base: '\u016f' + shift: '"' + ralt: ';' + ralt+shift: ':' +} + +key APOSTROPHE { + label: '\u00a7' + base: '\u00a7' + shift: '!' + ralt: '\'' + ralt+shift: '"' +} + +key BACKSLASH { + label: '\u0308' + base: '\u0308' + shift: '\'' + ralt: '\\' + ralt+shift: '|' +} + +### ROW 4 + +key PLUS { + label: '\\' + base: '\\' + shift: '|' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' + ralt: '@' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' +} + +key COMMA { + label: ',' + base: ',' + shift: '?' + ralt: '<' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' + ralt: '>' +} + +key SLASH { + label: '-' + base: '-' + shift: '_' + ralt: '/' + ralt+shift: '?' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_danish.kcm b/packages/InputDevices/res/raw/keyboard_layout_danish.kcm new file mode 100644 index 0000000..9386a45 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_danish.kcm @@ -0,0 +1,331 @@ +# Copyright (C) 2012 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. + +# +# Danish keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u00bd' + base: '\u00bd' + shift: '\u00a7' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '\u00a4' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '+' + base: '+' + shift: '?' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u0300' + ralt: '|' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00c5' + base: '\u00e5' + shift, capslock: '\u00c5' +} + +key RIGHT_BRACKET { + label: '\u00a8' + base: '\u0308' + shift: '\u0302' + ralt: '\u0303' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00c6' + base: '\u00e6' + shift, capslock: '\u00c6' +} + +key APOSTROPHE { + label: '\u00d8' + base: '\u00f8' + shift, capslock: '\u00d8' +} + +key BACKSLASH { + label: '\'' + base: '\'' + shift: '*' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '\\' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm b/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm new file mode 100644 index 0000000..ef545b8 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm @@ -0,0 +1,336 @@ +# Copyright (C) 2012 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. + +# +# Estonian keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u02c7' + base: '\u030c' + shift: '\u0303' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '\u00a4' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '+' + base: '+' + shift: '?' + ralt: '\\' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u0300' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00dc' + base: '\u00fc' + shift, capslock: '\u00dc' +} + +key RIGHT_BRACKET { + label: '\u00d5' + base: '\u00f5' + shift, capslock: '\u00d5' + ralt: '\u00a7' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' + ralt: '\u0161' + ralt+shift, ralt+capslock: '\u0160' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' +} + +key APOSTROPHE { + label: '\u00c4' + base: '\u00e4' + shift, capslock: '\u00c4' + ralt: '\u0302' +} + +key BACKSLASH { + label: '\'' + base: '\'' + shift: '*' + ralt: '\u00bd' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '|' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' + ralt: '\u017e' + ralt+shift, ralt+capslock: '\u017d' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm b/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm new file mode 100644 index 0000000..c6e5ac4 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm @@ -0,0 +1,380 @@ +# Copyright (C) 2012 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. + +# +# Finnish multilingual keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u00a7' + base: '\u00a7' + shift: '\u00bd' + ralt: '\u0335' +} + +key 1 { + label: '1' + base: '1' + shift: '!' + ralt+shift: '\u00a1' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' + ralt+shift: '\u201d' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' + ralt+shift: '\u00bb' +} + +key 4 { + label: '4' + base: '4' + shift: '\u00a4' + ralt: '$' + ralt+shift: '\u00ab' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u2030' + ralt+shift: '\u201c' +} + +key 6 { + label: '6' + base: '6' + shift: '&' + ralt: '\u201a' + ralt+shift: '\u201e' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' + ralt+shift: '\u00b0' +} + +key SLASH { + label: '+' + base: '+' + shift: '?' + ralt: '\\' + ralt+shift: '\u00bf' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u0300' + ralt: '\u0327' + ralt+shift: '\u0328' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' + ralt: '\u00fe' + ralt+shift, ralt+capslock: '\u00de' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' + ralt: '\u0131' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' + ralt: '\u0153' + ralt+shift, ralt+capslock: '\u0152' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' + ralt: '\u031b' + ralt+shift: '\u0309' +} + +key LEFT_BRACKET { + label: '\u00c5' + base: '\u00e5' + shift, capslock: '\u00c5' + ralt: '\u030b' + ralt+shift: '\u030a' +} + +key RIGHT_BRACKET { + label: '\u00a8' + base: '\u0308' + shift: '\u0302' + ralt: '\u0303' + ralt+shift: '\u0304' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' + ralt: '\u0259' + ralt+shift, ralt+capslock: '\u018f' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' + ralt: '\u00df' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' + ralt: '\u00f0' + ralt+shift, ralt+capslock: '\u00d0' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' + ralt: '\u0138' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' + ralt: '\u0335' +} + +key SEMICOLON { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' + ralt: '\u00f8' + ralt+shift, ralt+capslock: '\u00d8' +} + +key APOSTROPHE { + label: '\u00c4' + base: '\u00e4' + shift, capslock: '\u00c4' + ralt: '\u00e6' + ralt+shift, ralt+capslock: '\u00c6' +} + +key BACKSLASH { + label: '\'' + base: '\'' + shift: '*' + ralt: '\u030c' + ralt+shift: '\u0306' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '|' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' + ralt: '\u0292' + ralt+shift, ralt+capslock: '\u01b7' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' + ralt: '\u00d7' + ralt+shift: '\u00b7' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' + ralt: '\u014b' + ralt+shift, ralt+capslock: '\u014a' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' + ralt+shift: '\u2014' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' + ralt: '\u2019' + ralt+shift: '\u2018' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' + ralt: '\u0323' + ralt+shift: '\u0307' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' + ralt: '\u2013' + ralt+shift: '\u0307' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm new file mode 100644 index 0000000..dafb50b --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm @@ -0,0 +1,362 @@ +# Copyright (C) 2012 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. + +# +# Hungarian keyboard layout, QWERTZ style. +# + +type OVERLAY + +map key 41 0 +map key 11 GRAVE +map key 12 SLASH +map key 21 Z +map key 44 Y +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key 0 { + label: '0' + base: '0' + shift: '\u00a7' +} + +key 1 { + label: '1' + base: '1' + shift: '!' + ralt: '\u0303' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '\u030c' +} + +key 3 { + label: '3' + base: '3' + shift: '+' + ralt: '\u0302' +} + +key 4 { + label: '4' + base: '4' + shift: '!' + ralt: '\u0306' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u030a' +} + +key 6 { + label: '6' + base: '6' + shift: '/' + ralt: '\u0328' +} + +key 7 { + label: '7' + base: '7' + shift: '=' + ralt: '\u0300' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '\u0307' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: '\u0301' +} + +key GRAVE { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' + ralt: '\u030b' +} + +key SLASH { + label: '\u00dc' + base: '\u00fc' + shift, capslock: '\u00dc' + ralt: '\u0308' +} + +key EQUALS { + label: '\u00d3' + base: '\u00f3' + shift, capslock: '\u00d3' + ralt: '\u0327' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' + ralt: '\\' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' + ralt: '|' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u00c4' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' + ralt: '\u20ac' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' + ralt: '\u00cd' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u0150' + base: '\u0151' + shift, capslock: '\u0150' + ralt: '\u00f7' +} + +key RIGHT_BRACKET { + label: '\u00da' + base: '\u00fa' + shift, capslock: '\u00da' + ralt: '\u00d7' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' + ralt: '\u00e4' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' + ralt: '\u0111' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' + ralt: '\u0110' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' + ralt: '[' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' + ralt: ']' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' + ralt: '\u00ed' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' + ralt: '\u0197' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' + ralt: '\u0141' +} + +key SEMICOLON { + label: '\u00c9' + base: '\u00e9' + shift, capslock: '\u00c9' + ralt: '$' +} + +key APOSTROPHE { + label: '\u00c1' + base: '\u00e1' + shift, capslock: '\u00c1' + ralt: '\u00df' +} + +key BACKSLASH { + label: '\u0170' + base: '\u0171' + shift, capslock: '\u0170' + ralt: '\u00a4' +} + +### ROW 4 + +key PLUS { + label: '\u00cd' + base: '\u00ed' + shift, capslock: '\u00cd' + ralt: '<' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' + ralt: '>' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' + ralt: '#' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' + ralt: '&' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' + ralt: '@' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' + ralt: '{' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' + ralt: '}' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: '?' + ralt: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' + ralt: '*' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm b/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm new file mode 100644 index 0000000..117f58b --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm @@ -0,0 +1,332 @@ +# Copyright (C) 2012 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. + +# +# Icelandic keyboard layout. +# + +type OVERLAY + +map key 12 EQUALS +map key 13 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u02da' + base: '\u030a' + shift: '\u0308' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' +} + +key 3 { + label: '3' + base: '3' + shift: '#' +} + +key 4 { + label: '4' + base: '4' + shift: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u20ac' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key EQUALS { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' + ralt: '\\' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' + ralt: '@' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u0110' + base: '\u0111' + shift, capslock: '\u0110' +} + +key RIGHT_BRACKET { + label: '\'' + base: '\'' + shift: '?' + ralt: '~' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00c6' + base: '\u00e6' + shift, capslock: '\u00c6' +} + +key APOSTROPHE { + label: '\u00b4' + base: '\u0301' + shift: '\'' + ralt: '^' +} + +key BACKSLASH { + label: '+' + base: '+' + shift: '*' + ralt: '`' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '|' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key SLASH { + label: '\u00de' + base: '\u00fe' + shift, capslock: '\u00de' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_italian.kcm b/packages/InputDevices/res/raw/keyboard_layout_italian.kcm new file mode 100644 index 0000000..bd2d25a --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_italian.kcm @@ -0,0 +1,327 @@ +# Copyright (C) 2012 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. + +# +# Italian keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\\' + base: '\\' + shift: '|' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' +} + +key 3 { + label: '3' + base: '3' + shift: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u20ac' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' +} + +key 8 { + label: '8' + base: '8' + shift: '(' +} + +key 9 { + label: '9' + base: '9' + shift: ')' +} + +key 0 { + label: '0' + base: '0' + shift: '=' +} + +key SLASH { + label: '\'' + base: '\'' + shift: '?' +} + +key EQUALS { + label: '\u00ec' + base: '\u00ec' + shift: '^' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00e8' + base: '\u00e8' + shift: '\u00e9' + ralt: '[' + ralt+shift: '{' +} + +key RIGHT_BRACKET { + label: '+' + base: '+' + shift: '*' + ralt: ']' + ralt+shift: '}' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00f2' + base: '\u00f2' + shift: '\u00e7' + ralt: '@' +} + +key APOSTROPHE { + label: '\u00e0' + base: '\u00e0' + shift: '\u00b0' + ralt: '#' +} + +key BACKSLASH { + label: '\u00f9' + base: '\u00f9' + shift: '\u00a7' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm b/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm new file mode 100644 index 0000000..d1be485 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm @@ -0,0 +1,330 @@ +# Copyright (C) 2012 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. + +# +# Norwegian keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '|' + base: '|' + shift: '\u00a7' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '\u00a4' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '+' + base: '+' + shift: '?' +} + +key EQUALS { + label: '\\' + base: '\\' + shift: '\u0300' + ralt: '\u0301' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00c5' + base: '\u00e5' + shift, capslock: '\u00c5' +} + +key RIGHT_BRACKET { + label: '\u00a8' + base: '\u0308' + shift: '\u0302' + ralt: '\u0303' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00d8' + base: '\u00f8' + shift, capslock: '\u00d8' +} + +key APOSTROPHE { + label: '\u00c6' + base: '\u00e6' + shift, capslock: '\u00c6' +} + +key BACKSLASH { + label: '\'' + base: '\'' + shift: '*' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm b/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm new file mode 100644 index 0000000..47ee867 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm @@ -0,0 +1,329 @@ +# Copyright (C) 2012 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. + +# +# Portuguese keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\\' + base: '\\' + shift: '|' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '$' + ralt: '\u00a7' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '\'' + base: '\'' + shift: '?' +} + +key EQUALS { + label: '\u00ab' + base: '\u00ab' + shift: '\u00bb' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '+' + base: '+' + shift: '*' + ralt: '\u0308' +} + +key RIGHT_BRACKET { + label: '\u00b4' + base: '\u0301' + shift: '\u0300' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00c7' + base: '\u00e7' + shift, capslock: '\u00c7' +} + +key APOSTROPHE { + label: '\u00ba' + base: '\u00ba' + shift: '\u00aa' +} + +key BACKSLASH { + label: '\u02dc' + base: '\u0303' + shift: '\u0302' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '\\' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_russian_apple.kcm b/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm index 8c1d596..11c2ad4 100644 --- a/packages/InputDevices/res/raw/keyboard_layout_russian_apple.kcm +++ b/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm @@ -15,7 +15,7 @@ # # Russian keyboard layout. # This is a variant of the typical Russian PC keyboard layout that is presented -# on Apple keyboards. In contrast with the standard layout, some of the symbols and +# on Mac keyboards. In contrast with the standard layout, some of the symbols and # punctuation characters have been rearranged. # As an added convenience, English characters are accessible using ralt (Alt Gr). # diff --git a/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm b/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm new file mode 100644 index 0000000..70c1fa4 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm @@ -0,0 +1,353 @@ +# Copyright (C) 2012 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. + +# +# Slovak keyboard layout. +# + +type OVERLAY + +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: ';' + base: ';' + shift: '\u00b0' + ralt: '`' + ralt+shift: '~' +} + +key 1 { + label: '1' + base: '+' + shift: '1' + ralt: '!' +} + +key 2 { + label: '2' + base: '\u013e' + shift: '2' + ralt: '@' +} + +key 3 { + label: '3' + base: '\u0161' + shift: '3' + ralt: '#' +} + +key 4 { + label: '4' + base: '\u010d' + shift: '4' + ralt: '$' +} + +key 5 { + label: '5' + base: '\u0165' + shift: '5' + ralt: '%' +} + +key 6 { + label: '6' + base: '\u017e' + shift: '6' + ralt: '^' +} + +key 7 { + label: '7' + base: '\u00fd' + shift: '7' + ralt: '&' +} + +key 8 { + label: '8' + base: '\u00e1' + shift: '8' + ralt: '*' +} + +key 9 { + label: '9' + base: '\u00ed' + shift: '9' + ralt: '(' +} + +key 0 { + label: '0' + base: '\u00e9' + shift: '0' + ralt: ')' +} + +key MINUS { + label: '=' + base: '=' + shift: '%' + ralt: '-' + ralt+shift: '_' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u030c' + ralt: '=' + ralt+shift: '+' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' + ralt: '\\' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' + ralt: '|' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00fa' + base: '\u00fa' + shift: '/' + ralt: '[' + ralt+shift: '{' +} + +key RIGHT_BRACKET { + label: '\u00e4' + base: '\u00e4' + shift: '(' + ralt: ']' + ralt+shift: '}' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00f4' + base: '\u00f4' + shift: '"' + ralt: ';' + ralt+shift: ':' +} + +key APOSTROPHE { + label: '\u00a7' + base: '\u00a7' + shift: '!' + ralt: '\'' + ralt+shift: '"' +} + +key BACKSLASH { + label: '\u0148' + base: '\u0148' + shift: ')' + ralt: '\\' + ralt+shift: '|' +} + +### ROW 4 + +key PLUS { + label: '\\' + base: '\\' + shift: '|' + ralt: '&' + ralt+shift: '*' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' + ralt: '@' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: '?' + ralt: '<' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' + ralt: '>' +} + +key SLASH { + label: '-' + base: '-' + shift: '_' + ralt: '/' + ralt+shift: '?' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm b/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm new file mode 100644 index 0000000..e42bd6c --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm @@ -0,0 +1,331 @@ +# Copyright (C) 2012 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. + +# +# Swedish keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 53 MINUS +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u00a7' + base: '\u00a7' + shift: '\u00bd' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' + ralt: '\u00a3' +} + +key 4 { + label: '4' + base: '4' + shift: '\u00a4' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '+' + base: '+' + shift: '?' + ralt: '\\' +} + +key EQUALS { + label: '\u00b4' + base: '\u0301' + shift: '\u0300' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u00c5' + base: '\u00e5' + shift, capslock: '\u00c5' +} + +key RIGHT_BRACKET { + label: '\u00a8' + base: '\u0308' + shift: '\u0302' + ralt: '\u0303' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' +} + +key APOSTROPHE { + label: '\u00c4' + base: '\u00e4' + shift, capslock: '\u00c4' +} + +key BACKSLASH { + label: '\'' + base: '\'' + shift: '*' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '|' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' + ralt: '\u00b5' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm b/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm new file mode 100644 index 0000000..e193d34 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm @@ -0,0 +1,347 @@ +# Copyright (C) 2012 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. + +# +# Turkish keyboard layout. +# + +type OVERLAY + +map key 12 SLASH +map key 13 MINUS +map key 43 COMMA +map key 51 EQUALS +map key 52 BACKSLASH +map key 53 PERIOD +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '"' + base: '"' + shift: '\u00e9' + ralt: '<' +} + +key 1 { + label: '1' + base: '1' + shift: '!' + ralt: '>' +} + +key 2 { + label: '2' + base: '2' + shift: '\'' + ralt: '\u00a3' +} + +key 3 { + label: '3' + base: '3' + shift: '\u0302' + ralt: '#' +} + +key 4 { + label: '4' + base: '4' + shift: '+' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '\u00bd' +} + +key 6 { + label: '6' + base: '6' + shift: '&' +} + +key 7 { + label: '7' + base: '7' + shift: '/' + ralt: '{' +} + +key 8 { + label: '8' + base: '8' + shift: '(' + ralt: '[' +} + +key 9 { + label: '9' + base: '9' + shift: ')' + ralt: ']' +} + +key 0 { + label: '0' + base: '0' + shift: '=' + ralt: '}' +} + +key SLASH { + label: '*' + base: '*' + shift: '?' + ralt: '\\' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' + ralt: '|' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' + ralt: '@' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' + ralt: '\u20ac' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key I { + label: 'I' + base: '\u0131' + shift, capslock: 'I' + ralt: 'i' + ralt+shift, ralt+capslock: '\u0130' +} + +key O { + label: 'O' + base: 'o' + shift, capslock: 'O' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u011e' + base: '\u011f' + shift, capslock: '\u011e' + ralt: '\u0308' +} + +key RIGHT_BRACKET { + label: '\u00dc' + base: '\u00fc' + shift, capslock: '\u00dc' + ralt: '\u0303' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' + ralt: '\u00e6' + ralt+shift, ralt+capslock: '\u00c6' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' + ralt: '\u00df' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key SEMICOLON { + label: '\u015e' + base: '\u015f' + shift, capslock: '\u015e' + ralt: '\u0301' +} + +key APOSTROPHE { + label: '\u0130' + base: 'i' + shift, capslock: '\u0130' +} + +key COMMA { + label: ',' + base: ',' + shift: ';' + ralt: '\u0300' +} + +### ROW 4 + +key PLUS { + label: '<' + base: '<' + shift: '>' + ralt: '\\' +} + +key Z { + label: 'Z' + base: 'z' + shift, capslock: 'Z' +} + +key X { + label: 'X' + base: 'x' + shift, capslock: 'X' +} + +key C { + label: 'C' + base: 'c' + shift, capslock: 'C' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key EQUALS { + label: '\u00d6' + base: '\u00f6' + shift, capslock: '\u00d6' +} + +key BACKSLASH { + label: '\u00c7' + base: '\u00e7' + shift, capslock: '\u00c7' +} + +key PERIOD { + label: '.' + base: '.' + shift: ':' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm b/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm new file mode 100644 index 0000000..a802460 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm @@ -0,0 +1,404 @@ +# Copyright (C) 2012 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. + +# +# Ukrainian keyboard layout. +# This is a typical Ukrainian PC keyboard layout. +# As an added convenience, English characters are accessible using ralt (Alt Gr). +# + +type OVERLAY + +map key 86 PLUS + +### ROW 1 + +key GRAVE { + label: '\u0401' + base: '\u0451' + shift, capslock: '\u0401' + ralt: '`' + ralt+shift: '~' +} + +key 1 { + label: '1' + base: '1' + shift: '!' + ralt: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '"' + ralt: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '\u2116' + ralt: '#' +} + +key 4 { + label: '4' + base: '4' + shift: ';' + ralt: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' + ralt: '%' +} + +key 6 { + label: '6' + base: '6' + shift: ':' + ralt: '^' +} + +key 7 { + label: '7' + base: '7' + shift: '?' + ralt: '&' +} + +key 8 { + label: '8' + base: '8' + shift: '*' + ralt: '*' +} + +key 9 { + label: '9' + base: '9' + shift: '(' + ralt: '(' +} + +key 0 { + label: '0' + base: '0' + shift: ')' + ralt: ')' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' + ralt: '-' + ralt+shift: '_' +} + +key EQUALS { + label: '=' + base: '=' + shift: '+' + ralt: '=' + ralt+shift: '+' +} + +### ROW 2 + +key Q { + label: '\u0419' + base: '\u0439' + shift, capslock: '\u0419' + ralt: 'q' + ralt+shift, ralt+capslock: 'Q' +} + +key W { + label: '\u0426' + base: '\u0446' + shift, capslock: '\u0426' + ralt: 'w' + ralt+shift, ralt+capslock: 'W' +} + +key E { + label: '\u0423' + base: '\u0443' + shift, capslock: '\u0423' + ralt: 'e' + ralt+shift, ralt+capslock: 'E' +} + +key R { + label: '\u041a' + base: '\u043a' + shift, capslock: '\u041a' + ralt: 'r' + ralt+shift, ralt+capslock: 'R' +} + +key T { + label: '\u0415' + base: '\u0435' + shift, capslock: '\u0415' + ralt: 't' + ralt+shift, ralt+capslock: 'T' +} + +key Y { + label: '\u041d' + base: '\u043d' + shift, capslock: '\u041d' + ralt: 'y' + ralt+shift, ralt+capslock: 'Y' +} + +key U { + label: '\u0413' + base: '\u0433' + shift, capslock: '\u0413' + ralt: 'u' + ralt+shift, ralt+capslock: 'U' +} + +key I { + label: '\u0428' + base: '\u0448' + shift, capslock: '\u0428' + ralt: 'i' + ralt+shift, ralt+capslock: 'I' +} + +key O { + label: '\u0429' + base: '\u0449' + shift, capslock: '\u0429' + ralt: 'o' + ralt+shift, ralt+capslock: 'O' +} + +key P { + label: '\u0417' + base: '\u0437' + shift, capslock: '\u0417' + ralt: 'p' + ralt+shift, ralt+capslock: 'P' +} + +key LEFT_BRACKET { + label: '\u0425' + base: '\u0445' + shift, capslock: '\u0425' + ralt: '[' + ralt+shift: '{' +} + +key RIGHT_BRACKET { + label: '\u0407' + base: '\u0457' + shift, capslock: '\u0407' + ralt: ']' + ralt+shift: '}' +} + +### ROW 3 + +key A { + label: '\u0424' + base: '\u0444' + shift, capslock: '\u0424' + ralt: 'a' + ralt+shift, ralt+capslock: 'A' +} + +key S { + label: '\u0406' + base: '\u0456' + shift, capslock: '\u0406' + ralt: 's' + ralt+shift, ralt+capslock: 'S' +} + +key D { + label: '\u0412' + base: '\u0432' + shift, capslock: '\u0412' + ralt: 'd' + ralt+shift, ralt+capslock: 'D' +} + +key F { + label: '\u0410' + base: '\u0430' + shift, capslock: '\u0410' + ralt: 'f' + ralt+shift, ralt+capslock: 'F' +} + +key G { + label: '\u041f' + base: '\u043f' + shift, capslock: '\u041f' + ralt: 'g' + ralt+shift, ralt+capslock: 'G' +} + +key H { + label: '\u0420' + base: '\u0440' + shift, capslock: '\u0420' + ralt: 'h' + ralt+shift, ralt+capslock: 'H' +} + +key J { + label: '\u041e' + base: '\u043e' + shift, capslock: '\u041e' + ralt: 'j' + ralt+shift, ralt+capslock: 'J' +} + +key K { + label: '\u041b' + base: '\u043b' + shift, capslock: '\u041b' + ralt: 'k' + ralt+shift, ralt+capslock: 'K' +} + +key L { + label: '\u0414' + base: '\u0434' + shift, capslock: '\u0414' + ralt: 'l' + ralt+shift, ralt+capslock: 'L' +} + +key SEMICOLON { + label: '\u0416' + base: '\u0436' + shift, capslock: '\u0416' + ralt: ';' + ralt+shift: ':' +} + +key APOSTROPHE { + label: '\u0404' + base: '\u0454' + shift, capslock: '\u0404' + ralt: '\'' + ralt+shift: '"' +} + +key BACKSLASH { + label: '\\' + base: '\\' + shift: '/' + ralt: '|' +} + +### ROW 4 + +key PLUS { + label: '\u0490' + base: '\u0491' + shift, capslock: '\u0490' + ralt: '\\' + ralt+shift: '|' +} + +key Z { + label: '\u042f' + base: '\u044f' + shift, capslock: '\u042f' + ralt: 'z' + ralt+shift, ralt+capslock: 'Z' +} + +key X { + label: '\u0427' + base: '\u0447' + shift, capslock: '\u0427' + ralt: 'x' + ralt+shift, ralt+capslock: 'X' +} + +key C { + label: '\u0421' + base: '\u0441' + shift, capslock: '\u0421' + ralt: 'c' + ralt+shift, ralt+capslock: 'C' +} + +key V { + label: '\u041c' + base: '\u043c' + shift, capslock: '\u041c' + ralt: 'v' + ralt+shift, ralt+capslock: 'V' +} + +key B { + label: '\u0418' + base: '\u0438' + shift, capslock: '\u0418' + ralt: 'b' + ralt+shift, ralt+capslock: 'B' +} + +key N { + label: '\u0422' + base: '\u0442' + shift, capslock: '\u0422' + ralt: 'n' + ralt+shift, ralt+capslock: 'N' +} + +key M { + label: '\u042c' + base: '\u044c' + shift, capslock: '\u042c' + ralt: 'm' + ralt+shift, ralt+capslock: 'M' +} + +key COMMA { + label: '\u0411' + base: '\u0431' + shift, capslock: '\u0411' + ralt: ',' + ralt+shift: '<' +} + +key PERIOD { + label: '\u042e' + base: '\u044e' + shift, capslock: '\u042e' + ralt: '.' + ralt+shift: '>' +} + +key SLASH { + label: '.' + base: '.' + shift: ',' + ralt: '/' + ralt+shift: '?' +} diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml index 95e7401..140c7d4 100644 --- a/packages/InputDevices/res/values/strings.xml +++ b/packages/InputDevices/res/values/strings.xml @@ -7,7 +7,7 @@ <string name="keyboard_layout_english_us_label">English (US)</string> <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] --> - <string name="keyboard_layout_english_us_dvorak_label">English (US), Dvorak</string> + <string name="keyboard_layout_english_us_dvorak_label">English (US), Dvorak style</string> <!-- German keyboard layout label. [CHAR LIMIT=35] --> <string name="keyboard_layout_german_label">German</string> @@ -21,8 +21,8 @@ <!-- Russian keyboard layout label. [CHAR LIMIT=35] --> <string name="keyboard_layout_russian_label">Russian</string> - <!-- Russian (Apple style) keyboard layout label. [CHAR LIMIT=35] --> - <string name="keyboard_layout_russian_apple_label">Russian, Apple</string> + <!-- Russian (Mac style) keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_russian_mac_label">Russian, Mac style</string> <!-- Spanish keyboard layout label. [CHAR LIMIT=35] --> <string name="keyboard_layout_spanish_label">Spanish</string> @@ -38,4 +38,49 @@ <!-- Bulgarian keyboard layout label. [CHAR LIMIT=35] --> <string name="keyboard_layout_bulgarian">Bulgarian</string> + + <!-- Italian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_italian">Italian</string> + + <!-- Danish keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_danish">Danish</string> + + <!-- Norwegian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_norwegian">Norwegian</string> + + <!-- Swedish keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_swedish">Swedish</string> + + <!-- Finnish keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_finnish">Finnish</string> + + <!-- Croatian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_croatian">Croatian</string> + + <!-- Czech keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_czech">Czech</string> + + <!-- Estonian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_estonian">Estonian</string> + + <!-- Hungarian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_hungarian">Hungarian</string> + + <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_icelandic">Icelandic</string> + + <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_portuguese">Portuguese</string> + + <!-- Slovak keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_slovak">Slovak</string> + + <!-- Slovenian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_slovenian">Slovenian</string> + + <!-- Turkish keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_turkish">Turkish</string> + + <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_ukrainian">Ukrainian</string> </resources> diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml index 50672a1..23f6bcb 100644 --- a/packages/InputDevices/res/xml/keyboard_layouts.xml +++ b/packages/InputDevices/res/xml/keyboard_layouts.xml @@ -24,9 +24,9 @@ android:label="@string/keyboard_layout_russian_label" android:kcm="@raw/keyboard_layout_russian" /> - <keyboard-layout android:name="keyboard_layout_russian_apple" - android:label="@string/keyboard_layout_russian_apple_label" - android:kcm="@raw/keyboard_layout_russian_apple" /> + <keyboard-layout android:name="keyboard_layout_russian_mac" + android:label="@string/keyboard_layout_russian_mac_label" + android:kcm="@raw/keyboard_layout_russian_mac" /> <keyboard-layout android:name="keyboard_layout_spanish" android:label="@string/keyboard_layout_spanish_label" @@ -47,4 +47,64 @@ <keyboard-layout android:name="keyboard_layout_bulgarian" android:label="@string/keyboard_layout_bulgarian" android:kcm="@raw/keyboard_layout_bulgarian" /> + + <keyboard-layout android:name="keyboard_layout_italian" + android:label="@string/keyboard_layout_italian" + android:kcm="@raw/keyboard_layout_italian" /> + + <keyboard-layout android:name="keyboard_layout_danish" + android:label="@string/keyboard_layout_danish" + android:kcm="@raw/keyboard_layout_danish" /> + + <keyboard-layout android:name="keyboard_layout_norwegian" + android:label="@string/keyboard_layout_norwegian" + android:kcm="@raw/keyboard_layout_norwegian" /> + + <keyboard-layout android:name="keyboard_layout_swedish" + android:label="@string/keyboard_layout_swedish" + android:kcm="@raw/keyboard_layout_swedish" /> + + <keyboard-layout android:name="keyboard_layout_finnish" + android:label="@string/keyboard_layout_finnish" + android:kcm="@raw/keyboard_layout_finnish" /> + + <keyboard-layout android:name="keyboard_layout_croatian" + android:label="@string/keyboard_layout_croatian" + android:kcm="@raw/keyboard_layout_croatian_and_slovenian" /> + + <keyboard-layout android:name="keyboard_layout_czech" + android:label="@string/keyboard_layout_czech" + android:kcm="@raw/keyboard_layout_czech" /> + + <keyboard-layout android:name="keyboard_layout_estonian" + android:label="@string/keyboard_layout_estonian" + android:kcm="@raw/keyboard_layout_estonian" /> + + <keyboard-layout android:name="keyboard_layout_hungarian" + android:label="@string/keyboard_layout_hungarian" + android:kcm="@raw/keyboard_layout_hungarian" /> + + <keyboard-layout android:name="keyboard_layout_icelandic" + android:label="@string/keyboard_layout_icelandic" + android:kcm="@raw/keyboard_layout_icelandic" /> + + <keyboard-layout android:name="keyboard_layout_portuguese" + android:label="@string/keyboard_layout_portuguese" + android:kcm="@raw/keyboard_layout_portuguese" /> + + <keyboard-layout android:name="keyboard_layout_slovak" + android:label="@string/keyboard_layout_slovak" + android:kcm="@raw/keyboard_layout_slovak" /> + + <keyboard-layout android:name="keyboard_layout_slovenian" + android:label="@string/keyboard_layout_slovenian" + android:kcm="@raw/keyboard_layout_croatian_and_slovenian" /> + + <keyboard-layout android:name="keyboard_layout_turkish" + android:label="@string/keyboard_layout_turkish" + android:kcm="@raw/keyboard_layout_turkish" /> + + <keyboard-layout android:name="keyboard_layout_ukrainian" + android:label="@string/keyboard_layout_ukrainian" + android:kcm="@raw/keyboard_layout_ukrainian" /> </keyboard-layouts> diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml index 8fbab74..b905db3 100644 --- a/packages/SystemUI/res/layout/navigation_bar.xml +++ b/packages/SystemUI/res/layout/navigation_bar.xml @@ -54,6 +54,7 @@ android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" android:layout_weight="0" + android:scaleType="center" systemui:glowBackground="@drawable/ic_sysbar_highlight" android:contentDescription="@string/accessibility_back" /> @@ -214,6 +215,7 @@ android:layout_height="80dp" android:layout_width="match_parent" android:src="@drawable/ic_sysbar_back_land" + android:scaleType="center" systemui:keyCode="4" android:layout_weight="0" android:contentDescription="@string/accessibility_back" diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 0ba8cce..f565e75 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -29,6 +29,17 @@ android:fitsSystemWindows="true" > + <ImageView + android:id="@+id/notification_lights_out" + android:layout_width="@dimen/status_bar_icon_size" + android:layout_height="match_parent" + android:paddingLeft="6dip" + android:paddingBottom="2dip" + android:src="@drawable/ic_sysbar_lights_out_dot_small" + android:scaleType="center" + android:visibility="gone" + /> + <LinearLayout android:id="@+id/icons" android:layout_width="match_parent" android:layout_height="match_parent" @@ -38,6 +49,7 @@ > <LinearLayout + android:id="@+id/notification_icon_area" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 3981701..9fd8d35 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -114,7 +114,7 @@ <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> - <string name="accessibility_no_sim" msgid="8274017118472455155">"Žádná karta SIM."</string> + <string name="accessibility_no_sim" msgid="8274017118472455155">"Žádná SIM karta."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering přes Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim V letadle."</string> <!-- String.format failed for translation --> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 39832fc..ac07e9b 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -141,5 +141,5 @@ <string name="gps_notification_found_text" msgid="4619274244146446464">"Standort durch GPS festgelegt"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string> <string name="dreams_dock_launcher" msgid="3541196417659166245">"Bildschirmschoner aktivieren"</string> - <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Info"</string> + <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index fe7d5aa..3c30f5d 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -241,7 +241,7 @@ public class PowerUI extends SystemUI { if (soundUri != null) { final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri); if (sfx != null) { - sfx.setStreamType(AudioManager.STREAM_NOTIFICATION); + sfx.setStreamType(AudioManager.STREAM_SYSTEM); sfx.play(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 73c5d3a..424317a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -23,6 +23,7 @@ import android.app.StatusBarManager; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; import android.os.ServiceManager; @@ -71,6 +72,8 @@ public class NavigationBarView extends LinearLayout { int mDisabledFlags = 0; int mNavigationIconHints = 0; + private Drawable mBackIcon, mBackLandIcon, mBackAltIcon, mBackAltLandIcon; + private DelegateViewHelper mDelegateHelper; // workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288) @@ -146,6 +149,11 @@ public class NavigationBarView extends LinearLayout { mVertical = false; mShowMenu = false; mDelegateHelper = new DelegateViewHelper(this); + + mBackIcon = res.getDrawable(R.drawable.ic_sysbar_back); + mBackLandIcon = res.getDrawable(R.drawable.ic_sysbar_back_land); + mBackAltIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime); + mBackAltLandIcon = res.getDrawable(R.drawable.ic_sysbar_back_ime); } View.OnTouchListener mLightsOutListener = new View.OnTouchListener() { @@ -188,10 +196,10 @@ public class NavigationBarView extends LinearLayout { getRecentsButton().setAlpha( (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); - ((ImageView)getBackButton()).setImageResource( + ((ImageView)getBackButton()).setImageDrawable( (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) - ? R.drawable.ic_sysbar_back_ime - : R.drawable.ic_sysbar_back); + ? (mVertical ? mBackAltLandIcon : mBackAltIcon) + : (mVertical ? mBackLandIcon : mBackIcon)); } public void setDisabledFlags(int disabledFlags) { @@ -250,7 +258,7 @@ public class NavigationBarView extends LinearLayout { } else { navButtons.animate() .alpha(lightsOut ? 0f : 1f) - .setDuration(lightsOut ? 600 : 200) + .setDuration(lightsOut ? 750 : 250) .start(); lowLights.setOnTouchListener(mLightsOutListener); @@ -260,8 +268,7 @@ public class NavigationBarView extends LinearLayout { } lowLights.animate() .alpha(lightsOut ? 1f : 0f) - .setStartDelay(lightsOut ? 500 : 0) - .setDuration(lightsOut ? 1000 : 300) + .setDuration(lightsOut ? 750 : 250) .setInterpolator(new AccelerateInterpolator(2.0f)) .setListener(lightsOut ? null : new AnimatorListenerAdapter() { @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 80ee64f..8586185 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -16,6 +16,9 @@ package com.android.systemui.statusbar.phone; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.ActivityManager; import android.app.ActivityManagerNative; @@ -55,6 +58,7 @@ import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; import android.view.WindowManagerImpl; +import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; @@ -207,6 +211,8 @@ public class PhoneStatusBar extends BaseStatusBar { int[] mAbsPos = new int[2]; Runnable mPostCollapseCleanup = null; + private AnimatorSet mLightsOutAnimation; + private AnimatorSet mLightsOnAnimation; // for disabling the status bar int mDisabled = 0; @@ -935,7 +941,26 @@ public class PhoneStatusBar extends BaseStatusBar { mClearButton.setAlpha(clearable ? 1.0f : 0.0f); } mClearButton.setEnabled(clearable); - + + final View nlo = mStatusBarView.findViewById(R.id.notification_lights_out); + final boolean showDot = (any&&!areLightsOn()); + if (showDot != (nlo.getAlpha() == 1.0f)) { + if (showDot) { + nlo.setAlpha(0f); + nlo.setVisibility(View.VISIBLE); + } + nlo.animate() + .alpha(showDot?1:0) + .setDuration(showDot?750:250) + .setInterpolator(new AccelerateInterpolator(2.0f)) + .setListener(showDot ? null : new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator _a) { + nlo.setVisibility(View.GONE); + } + }) + .start(); + } } public void showClock(boolean show) { @@ -1372,6 +1397,10 @@ public class PhoneStatusBar extends BaseStatusBar { final int hitSize = statusBarSize*2; final int y = (int)event.getRawY(); if (action == MotionEvent.ACTION_DOWN) { + if (!areLightsOn()) { + setLightsOn(true); + } + if (!mExpanded) { mViewDelta = statusBarSize - y; } else { @@ -1470,16 +1499,64 @@ public class PhoneStatusBar extends BaseStatusBar { final boolean lightsOut = (0 != (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE)); if (lightsOut) { animateCollapse(); + if (mTicking) { + mTicker.halt(); + } } + if (mNavigationBarView != null) { mNavigationBarView.setLowProfile(lightsOut); } + + setStatusBarLowProfile(lightsOut); } notifyUiVisibilityChanged(); } } + private void setStatusBarLowProfile(boolean lightsOut) { + if (mLightsOutAnimation == null) { + final View notifications = mStatusBarView.findViewById(R.id.notification_icon_area); + final View systemIcons = mStatusBarView.findViewById(R.id.statusIcons); + final View signal = mStatusBarView.findViewById(R.id.signal_cluster); + final View battery = mStatusBarView.findViewById(R.id.battery); + final View clock = mStatusBarView.findViewById(R.id.clock); + + mLightsOutAnimation = new AnimatorSet(); + mLightsOutAnimation.playTogether( + ObjectAnimator.ofFloat(notifications, View.ALPHA, 0), + ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 0), + ObjectAnimator.ofFloat(signal, View.ALPHA, 0), + ObjectAnimator.ofFloat(battery, View.ALPHA, 0.5f), + ObjectAnimator.ofFloat(clock, View.ALPHA, 0.5f) + ); + mLightsOutAnimation.setDuration(750); + + mLightsOnAnimation = new AnimatorSet(); + mLightsOnAnimation.playTogether( + ObjectAnimator.ofFloat(notifications, View.ALPHA, 1), + ObjectAnimator.ofFloat(systemIcons, View.ALPHA, 1), + ObjectAnimator.ofFloat(signal, View.ALPHA, 1), + ObjectAnimator.ofFloat(battery, View.ALPHA, 1), + ObjectAnimator.ofFloat(clock, View.ALPHA, 1) + ); + mLightsOnAnimation.setDuration(250); + } + + mLightsOutAnimation.cancel(); + mLightsOnAnimation.cancel(); + + final Animator a = lightsOut ? mLightsOutAnimation : mLightsOnAnimation; + a.start(); + + setAreThereNotifications(); + } + + private boolean areLightsOn() { + return 0 == (mSystemUiVisibility & View.SYSTEM_UI_FLAG_LOW_PROFILE); + } + public void setLightsOn(boolean on) { Log.v(TAG, "setLightsOn(" + on + ")"); if (on) { @@ -1580,6 +1657,9 @@ public class PhoneStatusBar extends BaseStatusBar { } private void tick(StatusBarNotification n) { + // no ticking in lights-out mode + if (!areLightsOn()) return; + // Show the ticker if one is requested. Also don't do this // until status bar window is attached to the window manager, // because... well, what's the point otherwise? And trying to |