Ajuda na interrupção de teclas

Olá senhores,

Tenho uma duvida no meu programa, quero, para fins didáticos, desenhar um quadrado vermelho na tela quando a tecla 1 for pressionada e um quadrado azul quando ela for solta,
tentei utilizar o keyPressed e o KeyReleased, porém nao obtive resultado. Utilizei esse parte no código para faze-lo, mas o quadrado vermelho aparece quando eu pressiono a tecla 1 e somente desaparece quando aperto outra tecla, e o quadrado azul nunca aparece.

if (teclaP == 49)
{ g.setColor(255,0,0);
g.fillRect(85,105,20,20);
}
if (teclaS == 49)
{
g.setColor(0,0,255);
g.fillRect(85,105,20,20);
}
public void keyPressed(int key)
{
if (key >= 49 && key <= 57)
{
teclaP = key;
repaint();}
}
}
public void keyreleased (int key1)
{
if (key1 >= 49 && key1 <= 57)
{
teclaS = key1;
repaint();
}
}

No meu projeto eu preciso que eu faça uma ação, mandar uma dado via Bluetooth, somente enquanto a tecla é segurada, e mandar outro dado quando ela for solta.

Muito obrigado desde de já.