Как зафиксировать нажатие клавиши Ctrl в eclipse RAP

Я хочу знать, когда клавиша Ctrl отпускается в eclipse RAP, я добился этого в RCP. Но узнал, что он ведет себя по-разному на RAP. Любые предложения о том, как этого добиться.


person Juseeth    schedule 21.05.2016    source источник


Ответы (1)


IIRC RAP не отправляет ключевые события, если нажата или отпущена только клавиша-модификатор (например, Shift, Ctrl и т. д.). Только для обычных клавиш отправляются события, и event.stateMask можно запросить, какие клавиши-модификаторы нажаты в данный момент.

Нажатие Ctrl+A отправит keyPressed и keyReleased, где character – A, а stateMask – Ctrl.

Нажатие только Ctrl не отправит событие.

Если вы сомневаетесь, простой Shell с прикрепленным KeyListener, который печатает события в System.out, поможет вам прояснить ситуацию.

person Rüdiger Herrmann    schedule 21.05.2016
comment
Но проблема в том, что ключевые слушатели не вызываются в нужное время. Какой слушатель я должен использовать для этого? - person Juseeth; 21.05.2016
comment
В RAP нет возможности получать уведомления, когда была нажата только клавиша ‹kbd›Ctrl‹/kbd›. - person Rüdiger Herrmann; 21.05.2016
comment
Я имею в виду, что я могу получить, какая клавиша была нажата из stateMask, как вы упомянули, но будут ли прослушиватели клавиш получать уведомления при нажатии клавиши? - person Juseeth; 21.05.2016
comment
Как я уже сказал, прослушиватель клавиш будет уведомлен только в том случае, если была нажата обычная клавиша с клавишей-модификатором или без нее. Если была нажата только измененная клавиша, такая как Ctrl, событие не будет отправлено. - person Rüdiger Herrmann; 21.05.2016
comment
Моя цель - выбрать несколько элементов с помощью щелчка Ctrl. Так вот, я никогда не использую отдельные клавиши с Ctrl. - person Juseeth; 21.05.2016
comment
Какой виджет (Список?, Таблица?, ...?) вы используете для выбора нескольких элементов? - person Rüdiger Herrmann; 22.05.2016
comment
Я использую ListViewer для выбора Ctrl, после отпускания клавиши Ctrl должен быть вызван мой метод. - person Juseeth; 22.05.2016
comment
Если виджет List был создан с помощью SWT.MULTI, он должен позволять Ctrl+выбирать элементы. Событие выбора уведомит, если элементы выбраны или не выбраны. Почему вы пытаетесь получить состояние модификатора? - person Rüdiger Herrmann; 23.05.2016
comment
Я хочу сделать это сразу после выбора элементов (т.е. после отпускания клавиши Ctrl). Вот почему я хочу это сделать. - person Juseeth; 23.05.2016
comment
Используйте SelectionListener. Его событие widgetSelected отправляется при каждом изменении выбора. - person Rüdiger Herrmann; 23.05.2016