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