2016-08-05 3 views
1

Windows 10(英語とロシア語)に2つの言語があります。言語が英語に設定し、私はRight Alt + T押しされSWTがキーの組み合わせを誤って検出する

public static void main(String[] args) throws Exception { 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setSize(640, 480); 
    shell.setLocation(500, 250); 
    shell.setText("SWT"); 

    FillLayout layout = new FillLayout(); 
    shell.setLayout(layout); 

    shell.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyPressed(KeyEvent e) { 
      List<String> keys = new ArrayList<>(); 
      if ((e.stateMask & SWT.CTRL) != 0) { 
       keys.add("Ctrl"); 
      } 
      if ((e.stateMask & SWT.ALT) != 0) { 
       keys.add("Alt"); 
      } 
      if ((e.stateMask & SWT.SHIFT) != 0) { 
       keys.add("Shift"); 
      } 
      keys.add(Character.toString((char) e.keyCode)); 
      System.out.println(keys); 
     } 
    }); 

    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) { 
      display.sleep(); 
     } 
    } 

    display.dispose(); 
} 

は、プログラムが正しく[Alt, t]を出力します。私は、次のコードスニペットを実行します。

しかし、言語をロシア語に切り替えてRight Alt+Tを押すと、[Ctrl, Alt, t]が印刷されます。 Ctrlキーを押さなかったため、これは間違っています。

私たちのEclipse RCPキーバインディング(Alt+F7またはAlt+Shift+F5など)が正しく動作しないため、これは面倒です。

SWTがCtrlを間違って検出する理由はありますか?

最新のEclipse 4.6(SWT 3.105.0)からSWTを使用しています。

+0

あなたはhttps://www.eclipse.org/swt/bugs.phpをチェックしましたか? – zapl

+1

標準の「Alt」ボタン(左の「Alt」)ではなく、「AltGr」ボタン(右の「Alt」)を使用していませんか? 'AltGr'の解釈はキーボードレイアウトと密接に関連しているようです。 –

+0

@LorisSecuroはい、私は右のAltを使用しています – ZhekaKozlov

答えて

1

で言語を変更するショートカットを無効にしようとしたことがあり、米国以外のキーボードレイアウトで使用AltGr(右Alt)キーが自動的にCtrl + Altsee Wikipedia about this)としてオペレーティングシステムによって変換され、 。

これは特にSWTに関連していません。

この問題を回避するには、標準Alt(左Alt)のキーを使用してください。

+0

右のAltを使用しないように顧客に伝えることはできません。このための回避策はありますか? – ZhekaKozlov

-1

あなたは歴史的な理由については、Windows 10

関連する問題