Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion srcs/juloo.keyboard2/KeyModifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ private static KeyValue apply_selection_mode(KeyValue k)
case Cursor_left: name = "selection_cursor_left"; break;
case Cursor_right: name = "selection_cursor_right"; break;
}
break;
return (name == null) ? k : KeyValue.getSpecialKeyByName(name).withSymbol(k.getString());
case Keyevent:
switch (k.getKeyevent())
{
Expand Down
70 changes: 67 additions & 3 deletions srcs/juloo.keyboard2/KeyValue.java
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ public int getHangulPrecomposed()
/** Defined only when [getKind() == Kind.Slider]. */
public Slider getSlider()
{
return (Slider)_payload;
return ((SliderWithSymbol)_payload).getSlider();
}

/** Defined only when [getKind() == Kind.Slider]. */
Expand Down Expand Up @@ -266,7 +266,9 @@ public KeyValue withFlags(int f)

public KeyValue withSymbol(String symbol)
{
int flags = getFlags() & ~(FLAG_KEY_FONT | FLAG_SMALLER_FONT);
int flags = getFlags() & ~FLAG_SMALLER_FONT;
if (symbol.length() == 0 || Character.getType(symbol.codePointAt(0)) != Character.PRIVATE_USE)
flags &= ~FLAG_KEY_FONT;
switch (getKind())
{
case Char:
Expand All @@ -281,6 +283,10 @@ public KeyValue withSymbol(String symbol)
if (symbol.length() > 1)
flags |= FLAG_SMALLER_FONT;
return new KeyValue(symbol, _code, _code, flags);
case Slider:
if (symbol.length() > 1)
flags |= FLAG_SMALLER_FONT;
return new KeyValue(new SliderWithSymbol(getSlider(), symbol), _code, _code, flags);
case Macro:
return makeMacro(symbol, getMacro(), flags);
default:
Expand Down Expand Up @@ -415,7 +421,7 @@ private static KeyValue editingKey(int symbol, Editing action, int flags)
public static KeyValue sliderKey(Slider s, int repeatition)
{
// Casting to a short then back to a int to preserve the sign bit.
return new KeyValue(s, Kind.Slider, (short)repeatition & 0xFFFF,
return new KeyValue(new SliderWithSymbol(s), Kind.Slider, (short)repeatition & 0xFFFF,
FLAG_SPECIAL | FLAG_SECONDARY | FLAG_KEY_FONT);
}

Expand Down Expand Up @@ -876,6 +882,12 @@ public static enum Slider implements Describe

final String symbol;
final boolean vertical;

private static final Slider[] VALUES = Slider.values();
public static Slider fromOrdinal(int index)
{
return VALUES[index];
}

Slider(int symbol_, boolean vertical)
{
Expand All @@ -893,7 +905,59 @@ public boolean isVertical() {
@Override
public String describe() { return name(); }
};


public static final class SliderWithSymbol implements Comparable<SliderWithSymbol>, Describe
{
final String symbol;
final int index;

public SliderWithSymbol(String symbol, int index)
{
this.symbol = symbol;
this.index = index;
}

public SliderWithSymbol(Slider slider)
{
this.symbol = slider.symbol;
this.index = slider.ordinal();
}

public SliderWithSymbol(Slider slider, String symbol)
{
this.symbol = symbol;
this.index = slider.ordinal();
}

public Slider getSlider()
{
return Slider.fromOrdinal(index);
}

public boolean isVertical() {
return getSlider().isVertical();
}

@Override
public String toString() { return symbol; }

@Override
public String describe() { return getSlider().name(); }

@Override
public int compareTo(SliderWithSymbol snd)
{
return index != snd.index ? Integer.compare(index, snd.index) : symbol.compareTo(snd.symbol);
}

@Override
public boolean equals(Object obj)
{
return (obj != null) && index == ((SliderWithSymbol)obj).index && symbol.equals(((SliderWithSymbol)obj).symbol);
}
};

public static final class Macro implements Comparable<Macro>, Describe
{
public final KeyValue[] keys;
Expand Down
Loading