From 3f42c61ead715884ac6b1f85c0b6054ff437646d Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 1 Nov 2018 13:01:39 +0100 Subject: Initial import --- .../vndroid/keymaps/SpanishKeyHandler.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java (limited to 'app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java') diff --git a/app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java b/app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java new file mode 100644 index 0000000..4337b61 --- /dev/null +++ b/app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java @@ -0,0 +1,51 @@ +package com.javispedro.vndroid.keymaps; + +import java.text.Normalizer; + +import static com.javispedro.vndroid.keymaps.KeySyms.Key_dead_acute; +import static com.javispedro.vndroid.keymaps.KeySyms.Key_dead_grave; + +public class SpanishKeyHandler extends KeyHandler { + + private char deadKey = 0; + + @Override + public boolean keyDown(int key) { + if (key >= KeySyms.Key_space && key <= KeySyms.Key_z) { + // Printable keysyms + char c = (char) (' ' + (key - KeySyms.Key_space)); + if (deadKey != 0) { + StringBuilder builder = new StringBuilder(2); + builder.append(c); + builder.append(deadKey); + String text = Normalizer.normalize(builder.toString(), Normalizer.Form.NFKC); + action.postText(text); + deadKey = 0; + return true; + } + action.postChar(c); + return true; + } else { + switch (key) { + case KeySyms.Key_ccedilla: + action.postChar('ç'); + return true; + case KeySyms.Key_ntilde: + action.postChar('ñ'); + return true; + case Key_dead_acute: + deadKey = '\u0301'; + return true; + case Key_dead_grave: + deadKey = '\u0300'; + return true; + } + } + return false; + } + + @Override + public boolean keyUp(int key) { + return false; + } +} -- cgit v1.2.3