如何在处理中使用 keyPressed() 捕获变音符号?

问题描述 投票:0回答:1

我正在尝试在处理中模拟打字机,类似于这个

由于我主要用葡萄牙语写作,所以我需要变音符号,在打字机中变音符号被实现为非前进键(它打印重音,然后在其下方打印下一个键,例如“pé pão pátria”。

当我简单地使用以下行打印键值和代码时,当我输入

~
时,即使重复输入,我也什么也得不到,而当我输入
~
+
a
时,我只得到
a
:

void keyPressed()   
    println("key: " + String.valueOf(key) + " value: " + int(key) + " code: " + keyCode);  
}

所以问题是:

如何在拉丁布局键盘(法语、西班牙语、葡萄牙语)中捕获变音符号重音击键,以及如何用它们组成 unicode 重音字符?

unicode processing keypress
1个回答
1
投票

如果键盘设置为正确的语言并且字体支持这些字符,则应该可以使用这些字符。

这是一个基于您提供的链接的示例:

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()

在处理论坛
上提供了更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.