15b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka/* 25b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * Copyright (C) 2014 The Android Open Source Project 35b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * 45b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 55b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * you may not use this file except in compliance with the License. 65b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * You may obtain a copy of the License at 75b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * 85b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 95b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * 105b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 115b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 125b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * See the License for the specific language governing permissions and 145b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * limitations under the License. 155b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka */ 165b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 175b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaokapackage com.android.inputmethod.keyboard.layout; 185b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 195b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaokaimport com.android.inputmethod.keyboard.KeyboardId; 206959a0f214fc18e314f54213877956d95a1631e8Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.customizer.LayoutCustomizer; 215b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.expected.ExpectedKey; 225b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; 235b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 245b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka/** 255b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka * The Colemak alphabet keyboard. 265b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka */ 275b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaokapublic final class Colemak extends LayoutBase { 285b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka private static final String LAYOUT_NAME = "colemak"; 295b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 305b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka public Colemak(final LayoutCustomizer customizer) { 315b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka super(customizer, Symbols.class, SymbolsShifted.class); 325b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka } 335b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 345b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka @Override 355b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka public String getName() { return LAYOUT_NAME; } 365b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 375b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka @Override 385b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { 395b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON); 405b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka getCustomizer().setAccentedLetters(builder); 415b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka builder.replaceKeyOfLabel(ROW1_10, key(";", additionalMoreKey("0"), moreKey(":"))); 425b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka return builder.build(); 435b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka } 445b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 455b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka @Override 465b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) { 475b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka final ExpectedKeyboardBuilder builder; 485b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED 495b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) { 505b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone)); 515b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka } else { 525b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON); 535b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka getCustomizer().setAccentedLetters(builder); 545b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka builder.replaceKeyOfLabel(ROW1_10, key(":", additionalMoreKey("0"))); 555b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka } 565b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka builder.toUpperCase(getLocale()); 575b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka return builder.build(); 585b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka } 595b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 605b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka private static final String ROW1_10 = "ROW1_10"; 615b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka 625b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() 635b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka .setKeysOfRow(1, 645b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("q", additionalMoreKey("1")), 655b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("w", additionalMoreKey("2")), 665b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("f", additionalMoreKey("3")), 675b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("p", additionalMoreKey("4")), 685b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("g", additionalMoreKey("5")), 695b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("j", additionalMoreKey("6")), 705b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("l", additionalMoreKey("7")), 715b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("u", additionalMoreKey("8")), 725b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka key("y", additionalMoreKey("9")), 735b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka ROW1_10) 745b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka .setKeysOfRow(2, "a", "r", "s", "t", "d", "h", "n", "e", "i", "o") 755b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka .setKeysOfRow(3, "z", "x", "c", "v", "b", "k", "m") 765b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka .build(); 775b2c686885a7454150e1f559f17c2e58185ab60dTadashi G. Takaoka} 78