summaryrefslogtreecommitdiff
path: root/app/src/main/java/com/javispedro/vndroid/keymaps/SpanishKeyHandler.java
blob: 4337b61ec1a958ed9890f3a232daa810a190c69c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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;
    }
}