Отправка текста Unicode в позицию курсора в Java

Занимаясь лингвистикой и фонетикой, мне часто приходится использовать определенные специальные фонетические символы. Хотя я использую специальную раскладку клавиатуры, которая позволяет мне писать некоторые из этих символов, набирая их, комбинации клавиш часто могут быть довольно сложными и часто повторяющимися, поэтому я хотел бы создать небольшое приложение, которое, возможно, содержало бы несколько кнопок. , каждый из которых способен отправлять указанный (фонетический) символ в любую текущую позицию курсора, независимо от того, какое окно на экране находится в фокусе.

Можно ли что-то подобное сделать на Java?

Я видел решение, которое копирует значения в буфер обмена, а затем вставляет их (вставка Java в текущая позиция курсора), но это не очень чистый способ сделать это, не так ли? Есть ли способ лучше, чем просто вставить символы через ctrl+V?

Большое спасибо за любую помощь или совет заранее!

P.


person petusek79    schedule 29.11.2013    source источник
comment
Проблема в том, что при нажатии кнопки текущий курсор, который предположительно находится в другом приложении, потеряет фокус.   -  person Robin Green    schedule 30.11.2013


Ответы (1)


Вы можете использовать робот AWT для создания ключа пресс-мероприятия. Это не даст возможности вставлять произвольные символы юникода, но вы можете совместить это с уже описанной вами техникой: перенести символы юникода в буфер обмена и затем сгенерировать событие клавиши CTRL+V. Вы можете попытаться сохранить и восстановить исходное содержимое буфера обмена, но это будет работать только с типами, поддерживаемыми Java.

Проблема фокуса, упомянутая в комментариях, может быть решена путем настройки окна так, чтобы оно не получало фокус через Window.setFocusableWindowState с аргументом false.

Альтернативой является предоставление текста Unicode с помощью перетаскивания. Большинство приложений поддерживают удаление текста в своих полях ввода. Код для экспорта текста очень похож, поскольку и буфер обмена, и d&d используют одни и те же интерфейсы в Java.

person Holger    schedule 29.11.2013
comment
Спасибо, Хольгер. В качестве временного решения этого должно хватить. Поскольку мне было бы интересно создать что-то вроде Ergonis PopChar ( только лучше адаптированный к потребностям лингвистов, поэтому некоторые функции PopChar сознательно игнорируются), мне, вероятно, понадобится что-то более продвинутое. В любом случае, еще раз спасибо! :-) - person petusek79; 16.04.2014