ウィンドウ上にCanvasとTextがある状態で、

canvas.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e){
        if (e.character == 15 && e.stateMask == SWT.CTRL){
            hoge();
        }
    }
text.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e){
        if (e.character == 111){
            hogehoge();
        }
    }
とすると、canvasのほうでは、意図したとうりに動くのですが、textのほうでは「o」を押しても
hogehoge()が実行されません。逆にtext.addKeyListenerを最初にもってきて、canvas.addKeyListener
を下にもってくると、textのほうでは意図したとうりに動くけどcanvasでは動かないというまったく逆
の症状になります。
両方でaddKeyListenerが働くようにするにはどうしたらよいのでしょうか?