# 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:                              ':'
}
