All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.marathon.javafxagent.JavaAgentKeys Maven / Gradle / Ivy

There is a newer version: 5.4.0.0
Show newest version
/*******************************************************************************
 * Copyright 2016 Jalian Systems Pvt. Ltd.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package net.sourceforge.marathon.javafxagent;

public enum JavaAgentKeys implements CharSequence {

    // @formatter:off
    NULL('\uE000'),
    CANCEL('\uE001'), // ^break
    HELP('\uE002'),
    BACK_SPACE('\uE003'),
    TAB('\uE004'),
    CLEAR('\uE005'),
    RETURN('\uE006'),
    ENTER('\uE007'),
    SHIFT('\uE008'),
    LEFT_SHIFT('\uE008'), // alias
    CONTROL('\uE009'),
    LEFT_CONTROL('\uE009'), // alias
    ALT('\uE00A'),
    LEFT_ALT('\uE00A'), // alias
    PAUSE('\uE00B'),
    ESCAPE('\uE00C'),
    SPACE('\uE00D'),
    PAGE_UP('\uE00E'),
    PAGE_DOWN('\uE00F'),
    END('\uE010'),
    HOME('\uE011'),
    LEFT('\uE012'),
    ARROW_LEFT('\uE012'), // alias
    UP('\uE013'),
    ARROW_UP('\uE013'), // alias
    RIGHT('\uE014'),
    ARROW_RIGHT('\uE014'), // alias
    DOWN('\uE015'),
    ARROW_DOWN('\uE015'), // alias
    INSERT('\uE016'),
    DELETE('\uE017'),
    SEMICOLON('\uE018'),
    EQUALS('\uE019'),

    NUMPAD0('\uE01A'), // number pad keys
    NUMPAD1('\uE01B'),
    NUMPAD2('\uE01C'),
    NUMPAD3('\uE01D'),
    NUMPAD4('\uE01E'),
    NUMPAD5('\uE01F'),
    NUMPAD6('\uE020'),
    NUMPAD7('\uE021'),
    NUMPAD8('\uE022'),
    NUMPAD9('\uE023'),
    MULTIPLY('\uE024'),
    ADD('\uE025'),
    SEPARATOR('\uE026'),
    SUBTRACT('\uE027'),
    DECIMAL('\uE028'),
    DIVIDE('\uE029'),

    F1('\uE031'), // function keys
    F2('\uE032'),
    F3('\uE033'),
    F4('\uE034'),
    F5('\uE035'),
    F6('\uE036'),
    F7('\uE037'),
    F8('\uE038'),
    F9('\uE039'),
    F10('\uE03A'),
    F11('\uE03B'),
    F12('\uE03C'),

    META('\uE03D'),
    COMMAND('\uE03D'), // Alias

    ZENKAKU_HANKAKU('\uE040');
    // @formatter:on

    private final char keyCode;

    JavaAgentKeys(char keyCode) {
        if (keyCode == '\uE03F') {
            if (Platform.getCurrent().is(Platform.MAC)) {
                this.keyCode = '\uE03D';
            } else {
                this.keyCode = '\uE009';
            }
        } else {
            this.keyCode = keyCode;
        }
    }

    @Override
    public char charAt(int index) {
        if (index == 0) {
            return keyCode;
        }

        return 0;
    }

    @Override
    public int length() {
        return 1;
    }

    @Override
    public CharSequence subSequence(int start, int end) {
        if (start == 0 && end == 1) {
            return String.valueOf(keyCode);
        }

        throw new IndexOutOfBoundsException();
    }

    public static String chord(CharSequence... value) {
        StringBuilder builder = new StringBuilder();

        for (CharSequence seq : value) {
            builder.append(seq);
        }

        builder.append(JavaAgentKeys.NULL);
        return builder.toString();
    }

    public static JavaAgentKeys getKeyFromUnicode(char key) {
        for (JavaAgentKeys unicodeKey : values()) {
            if (unicodeKey.charAt(0) == key) {
                return unicodeKey;
            }
        }

        return null;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy