6

有谁知道一个库(最好是java),它可以给我相邻的键给US_ENGLISH标准键盘的键输入?

例如,如果我输入字符 'd',我应该返回以下字符:[w,e,r,s,f,x,c,v]。

或者,网格操作 api 也可以工作(这样我就可以用 qwerty 键盘布局实例化一个网格并使用它来查找我的邻居)。

注 1:我使用同义词“字符”和“键”来指代字符。

注意 2:我知道我可以硬编码一种方法来将 50 个左右的主键映射到它们的邻居。我正在寻找更好的解决方案。

谢谢你。

4

4 回答 4

6

我同意 BlueNovember 但如果你想要一个更“数学”的解决方案,请检查这个。首先,您创建一个字符网格,然后返回与传递的键的距离小于 2 的所有字符...有点没用,但这是一个很好的练习 :)

public class Test {

    static String chars = "qwertyuiopasdfghjkl;zxcvbnm,.";

    public static void main(String[] args) {
        System.out.println(getNeighboringKeys('f'));
        System.out.println(getNeighboringKeys('u'));
        System.out.println(getNeighboringKeys('m'));
        System.out.println(getNeighboringKeys('q'));
    }

    public static String getNeighboringKeys(char key) {
        StringBuffer result = new StringBuffer();
        for (char c : chars.toCharArray()) {
            if (c!=key && distance(c,key)<2) {
                result.append(c);
            }
        }
        return result.toString();
    }

    public static double distance(char c1, char c2) {
        return Math.sqrt(Math.pow(colOf(c2)-colOf(c1),2)+Math.pow(rowOf(c2)-rowOf(c1),2));
    }

    public static int rowOf(char c) {
        return chars.indexOf(c) / 10;
    }

    public static int colOf(char c) {
        return chars.indexOf(c) % 10;
    }
}
于 2010-01-22T23:20:52.907 回答
1

我放弃了这一点,只是让用户选择合适的相邻键。在这个项目中 anenum Key将每个命令与 a 相关联keyCode,并且此对话框允许用户更改映射。结果保存在Preferences.

于 2010-01-22T23:04:43.160 回答
0

如果有比 Note 2 更好的解决方案,我会感到惊讶。

如果不是这个,图书馆会在下面做什么?键之间没有任何关系,您可以从中构建。

于 2010-01-22T23:13:02.707 回答
0

执行此操作时要小心。例如,D 旁边是 ZERSFXCV,如果您在法国,则不是 WERSFXCV。如果你使用 Dvorak,那就是 YFGIHXBM。如果您在土耳其,则可能是 567ORUTK。

于 2010-01-23T02:10:38.130 回答