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

时间:2015-10-21 01:11:40

标签: unicode processing keypress

我正在尝试在Processing中模拟打字机,类似于this one

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

当我只使用以下行来打印键值和代码时,当我输入~时,即使重复,我也什么都没得到,当我输入~ + a时,我得到了只有a

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

所以问题是:

  

如何在拉丁语布局键盘(法语,西班牙语,葡萄牙语)中捕捉变音符重音键,以及如何用它们组合带有unicode重音字符?

1 个答案:

答案 0 :(得分: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 ă");
  }
}

diacritics in Processing

我只是将键盘输入更改为罗马尼亚语(也有变音符号,例如ăâîşţ)。

我还看到在ă字符上按预期打印到控制台的消息:

got ă