On Sat, 23 Jan 2021 23:49:04 GMT, Nir Lisker <[email protected]> wrote:
>> The JavaFX API does not provide a way to get the state of CAPS LOCK or NUM
>> LOCK on the keyboard. Being able to read the lock state would allow an
>> application to inform the user that caps lock was enabled for passwords or
>> other usages where the keyboard input might not be echoed. It would also
>> allow an application to do spell checking / auto-correction that might
>> ordinarily be skipped when typing all upper-case letters.
>>
>> We need an equivalent JavaFX API to the existing AWT
>> `java.awt.ToolKit::getLockingKeyState` method. A natural place to put this
>> in JavaFX is in the `javafx.application.Platform` class, so we propose to
>> create a new `Platform::isKeyLocked` method, which will take a `KeyCode` --
>> either `CAPS` or `NUM_LOCK` -- and return an `Optional<Boolean>` indicating
>> whether or not that key is in the locked or "on" state. If we can't read the
>> key state on a particular platform, we will return `Optional.empty()`,
>> rather than throwing a runtime exception as AWT does.
>>
>> I have provided both an automated Robot test and a manual test. The latter
>> is needed primarily because we can't set the CAPS lock on Mac using Robot,
>> but also because we want way to test the case where the user has enabled
>> CAPS lock before the program starts.
>
> modules/javafx.graphics/src/main/java/javafx/application/Platform.java line
> 351:
>
>> 349: *
>> 350: * @throws IllegalArgumentException if {@code keyCode} is not one
>> of the
>> 351: * valid KeyCode values.
>
> `{@code KeyCode}`
In addition, I see that two of the three `@throws` statements end with a
period, which I'll remove, since the usual pattern is to omit it.
-------------
PR: https://git.openjdk.java.net/jfx/pull/385