有谁知道一个库(最好是java),它可以给我相邻的键给US_ENGLISH标准键盘的键输入?
例如,如果我输入字符 'd',我应该返回以下字符:[w,e,r,s,f,x,c,v]。
或者,网格操作 api 也可以工作(这样我就可以用 qwerty 键盘布局实例化一个网格并使用它来查找我的邻居)。
注 1:我使用同义词“字符”和“键”来指代字符。
注意 2:我知道我可以硬编码一种方法来将 50 个左右的主键映射到它们的邻居。我正在寻找更好的解决方案。
谢谢你。
有谁知道一个库(最好是java),它可以给我相邻的键给US_ENGLISH标准键盘的键输入?
例如,如果我输入字符 'd',我应该返回以下字符:[w,e,r,s,f,x,c,v]。
或者,网格操作 api 也可以工作(这样我就可以用 qwerty 键盘布局实例化一个网格并使用它来查找我的邻居)。
注 1:我使用同义词“字符”和“键”来指代字符。
注意 2:我知道我可以硬编码一种方法来将 50 个左右的主键映射到它们的邻居。我正在寻找更好的解决方案。
谢谢你。
我同意 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;
}
}
我放弃了这一点,只是让用户选择合适的相邻键。在这个项目中 anenum Key
将每个命令与 a 相关联keyCode
,并且此对话框允许用户更改映射。结果保存在Preferences
.
如果有比 Note 2 更好的解决方案,我会感到惊讶。
如果不是这个,图书馆会在下面做什么?键之间没有任何关系,您可以从中构建。
执行此操作时要小心。例如,D 旁边是 ZERSFXCV,如果您在法国,则不是 WERSFXCV。如果你使用 Dvorak,那就是 YFGIHXBM。如果您在土耳其,则可能是 567ORUTK。