我正在尝试在处理中模拟打字机,类似于这个。
由于我主要用葡萄牙语写作,所以我需要变音符号,在打字机中变音符号被实现为非前进键(它打印重音,然后在其下方打印下一个键,例如“pé pão pátria”。
当我简单地使用以下行打印键值和代码时,当我输入
~
时,即使重复输入,我也什么也得不到,而当我输入 ~
+ a
时,我只得到 a
:
void keyPressed()
println("key: " + String.valueOf(key) + " value: " + int(key) + " code: " + keyCode);
}
所以问题是:
如何在拉丁布局键盘(法语、西班牙语、葡萄牙语)中捕获变音符号重音击键,以及如何用它们组成 unicode 重音字符?
如果键盘设置为正确的语言并且字体支持这些字符,则应该可以使用这些字符。
这是一个基于您提供的链接的示例:
String text1 = " ";
PFont font;
int bfill = 150;
boolean randomizer = false;
void setup() {
size(400, 400);
smooth();
font = createFont("Arial",48);//loadFont("Arial-Black-48.vlw");
textFont(font, 20);
}
void draw() {
background(bfill);
fill(255);
text(text1, 0, 40, width, height);
if(randomizer) {
for(int j = 0; j < 400; j++) {
text1 += char(int(random(18, 126)));
}
text(text1, 0, 40, width, height);
text1 = " ";
}
}
void keyPressed() {
if (key == BACKSPACE) {
if(text1.length() > 0) {
text1 = text1.substring(0, text1.length() - 1);
}
}
else if (key == '1') {
randomizer = true;
}
else {
text1 += key;
if(key == 'ă') println("got ă");
}
}
我只是将键盘输入更改为罗马尼亚语(也有变音符号,例如 ăâîşş)。
我还看到按预期在
ă
字符上打印到控制台的消息:
got ă
更新 Stackoverflow 和处理论坛用户 GoToLoop 使用 keyTyped()
在处理论坛上提供了更好的解决方案。