JBで日本語キーボードマップ(まだうまくいってない) - ReDo

2012年7月15日

JBで日本語キーボードマップ(まだうまくいってない)

jellybean-109-jp-keymap.png

今まではプラットフォーム側のキーボード設定を入れ替えないとダメでしたが、JellyBeanから、アプリ内リソースファイルによるキーマップの追加が対応されました。

【2012.07.15時点でのオチ】
入れ替えはうまくいってshift+2が@ではなくちゃんと"になったりしたのですが、pipeとかunderscore等のもともと101キーボードになかった(?)あたりがうまくいっておりません。後で再度チャレンジ予定。

詳しくはInputManagerあたりに書いてあるのですが
http://developer.android.com/reference/android/hardware/input/InputManager.html

・AndroidManifest.xmlにReceiver宣言を追加する。
・空のBroadcastReceiverを実装する。
・res/xml配下にキーボードマップリスト(.xml)を、res/rawにKey Character Mapファイル(.kcm)を追加する

という手順なのですが、実際のところなんのこっちゃだと思いますので、AOSPのソース見てください。

おなじみのOESF提供OpenGrokソースコード検索より、InputDevices
http://tools.oesf.biz/android-4.1.1_r1.0/xref/frameworks/base/packages/InputDevices/

Manifestに宣言したBroadcastReceiverもonReceiveの空実装のみで良いことが分かります。
http://tools.oesf.biz/android-4.1.1_r1.0/xref/frameworks/base/packages/InputDevices/src/com/android/inputdevices/InputDeviceReceiver.java

そんなわけで、せこせこと以下の様なkcmファイルを作成したのですが、今のところうまくいっておりません。そのうちリベンジ。

# 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.
 
# Japanese (JP) keyboard layout
 
type OVERLAY
 
 
### 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:                              '#'
}
 
key 4 {
    label:                              '4'
    base:                               '4'
    shift:                              '$'
}
 
key 5 {
    label:                              '5'
    base:                               '5'
    shift:                              '%'
}
 
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'
}
 
key MINUS {
    label:                              '-'
    base:                               '-'
    shift:                              '='
}

key EQUALS {
    label:                              '^'
    base:                               '^'
    shift:                              '~'
}
 
key DEL {
    label:                              '\\'
    base:                               '\\'
    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'
}
 
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:                              '`'
}
 
key RIGHT_BRACKET {
    label:                              '['
    base:                               '['
    shift:                              '{'
}
 
key BACKSLASH {
    label:                              ']'
    base:                               ']'
    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:                              ';'
    base:                               ';'
    shift:                              '+'
}
 
key APOSTROPHE {
    label:                              ':'
    base:                               ':'
    shift:                              '*'
}
 
### ROW 4
 
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 SLASH {
    label:                              '/'
    base:                               '/'
    shift:                              '?'
}
 
key SHIFT_RIGHT {
    label:                              '\\'
    base:                               '\\'
    shift:                              '_'
}
 

コメントする