package org.apelikecoder.bulgariankeyboard2; import android.content.res.XmlResourceParser; import android.util.Log; import android.view.KeyCharacterMap; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.HashMap; /** * Created by IntelliJ IDEA. * User: alex * Date: 1/3/11 * Time: 4:08 PM */ public class Mapper { private static final String TAG = "Mapper"; private HashMap<Character, Character> map; private HashMap<String, Character> composers; private KeyCharacterMap charMap; public Mapper(XmlResourceParser xrp) { charMap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD); map = new HashMap<Character, Character>(); composers = new HashMap<String, Character>(); try { int current = xrp.getEventType(); while (current != XmlResourceParser.END_DOCUMENT) { if (current == XmlResourceParser.START_TAG) { String tag = xrp.getName(); if (tag != null) { String key, value; key = xrp.getAttributeValue(null, "name"); value = xrp.getAttributeValue(null, "value"); if (tag.equals("key")) map.put(key.charAt(0), value.charAt(0)); else if (tag.equals("compose")) composers.put(key, value.charAt(0)); } } xrp.next(); current = xrp.getEventType(); } } catch (XmlPullParserException e) { Log.e(TAG, "XML parsing failure"); } catch (IOException e) { Log.e(TAG, "XML IOException"); } // for (Character c : map.keySet()) // System.out.println(c + " (" + (int)c + ") " + map.get(c)); // for (String s : composers.keySet()) // System.out.println(s + " " + composers.get(s)); } public char getComposed(String composer) { // System.out.println(composers.get(composer) + " " + composer); Character c = composers.get(composer.toLowerCase()); return c != null ? c : 0; } public char getMappedChar(int keyCode) { int c = charMap.get(keyCode, 0); Character m = map.get((char) c); //System.out.println("mmmmm " + keyCode + " " + m + " " + c); return m != null ? m : 0; } }