Merge "Add pseudo LMP theme"

This commit is contained in:
Tadashi G. Takaoka 2014-05-12 03:29:30 +00:00 committed by Android (Google) Code Review
commit 43e371e513
69 changed files with 343 additions and 20 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_dark_pressed_lmp" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -39,7 +39,7 @@
<!-- Empty background keys. -->
<item android:state_empty="true"
android:drawable="@drawable/transparent" />
android:drawable="@android:color/transparent" />
<!-- Normal keys. -->
<item android:state_pressed="true"

View file

@ -39,7 +39,7 @@
<!-- Empty background keys. -->
<item android:state_empty="true"
android:drawable="@drawable/transparent" />
android:drawable="@android:color/transparent" />
<!-- Normal keys. -->
<item android:state_pressed="true"

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_single="true" android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_dark_pressed_lmp" />
<item android:state_single="true"
android:drawable="@android:color/transparent" />
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_dark_pressed_lmp" />
<item android:state_active="true"
android:drawable="@android:color/transparent" />
<!-- Toggle keys. Use checkable/checked state. -->
<item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_lmp" />
<item android:state_checkable="true" android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_dark_pressed_lmp" />
<item android:state_checkable="true" android:state_checked="true"
android:drawable="@drawable/btn_keyboard_key_dark_normal_on_lmp" />
<item android:state_checkable="true"
android:drawable="@android:color/transparent" />
<!-- Empty background keys. -->
<item android:state_empty="true"
android:drawable="@android:color/transparent" />
<!-- Normal keys. -->
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_light_pressed_lmp" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -17,5 +17,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
<item android:drawable="@drawable/transparent" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -17,5 +17,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
<item android:drawable="@drawable/transparent" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_popup_selected_lmp" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_light_pressed_lmp" />
<item android:drawable="@android:color/transparent" />
</selector>

View file

@ -2,7 +2,7 @@
<!--
/*
**
** Copyright 2011, The Android Open Source Project
** Copyright 2014, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
@ -18,13 +18,10 @@
*/
-->
<shape
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid
android:color="@android:color/transparent" />
<size
android:width="50dp"
android:height="40dp" />
</shape>
<item
android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_popup_selected_lmp" />
</selector>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<!-- Left edge -->
<item latin:state_left_edge="true" latin:state_has_morekeys="true"
android:drawable="@drawable/keyboard_key_feedback_left_more_background_lmp" />
<item latin:state_left_edge="true"
android:drawable="@drawable/keyboard_key_feedback_left_background_lmp" />
<!-- Right edge -->
<item latin:state_right_edge="true" latin:state_has_morekeys="true"
android:drawable="@drawable/keyboard_key_feedback_right_more_background_lmp" />
<item latin:state_right_edge="true"
android:drawable="@drawable/keyboard_key_feedback_right_background_lmp" />
<item latin:state_has_morekeys="true"
android:drawable="@drawable/keyboard_key_feedback_more_background_lmp" />
<item android:drawable="@drawable/keyboard_key_feedback_background_lmp" />
</selector>

View file

@ -40,6 +40,12 @@
<color name="typed_word_color_klp">#D8F0F0F0</color>
<color name="suggested_word_color_klp">#B2F0F0F0</color>
<color name="highlight_translucent_color_klp">#99E0E0E0</color>
<!-- Color resources for LMP theme. Base color = F0F0F0 -->
<color name="key_hint_letter_color_lmp">@android:color/white</color>
<color name="highlight_color_lmp">#FFF0F0F0</color>
<color name="typed_word_color_lmp">#D8F0F0F0</color>
<color name="suggested_word_color_lmp">#B2F0F0F0</color>
<color name="highlight_translucent_color_lmp">#99E0E0E0</color>
<!-- Color resources for setup wizard and tutorial -->
<color name="setup_background">#FFEBEBEB</color>
<color name="setup_text_dark">#FF707070</color>

View file

@ -21,9 +21,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="KeyboardIcons.Holo">
<!-- Keyboard icons -->
<!-- TODO: The following holo icon for phone (drawable-hdpi and drawable-xhdpi) are missing.
sym_keyboard_123_mic_holo
-->
<item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
<item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
<item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2014, The Android Open Source Project
**
** 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.
*/
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="KeyboardIcons.LMP">
<!-- Keyboard icons -->
<item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
<item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
<item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
<item name="iconSpaceKey">@drawable/sym_keyboard_space_holo_dark</item>
<item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
<item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
<item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
<item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
<item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
<item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
<item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
<item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
<item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
<item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
<item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
<item name="iconEmojiKey">@drawable/sym_keyboard_smiley_holo_dark</item>
</style>
</resources>

View file

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2014, The Android Open Source Project
**
** 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.
*/
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="KeyboardTheme.LMP" parent="KeyboardIcons.LMP">
<item name="keyboardStyle">@style/Keyboard.LMP</item>
<item name="keyboardViewStyle">@style/KeyboardView.LMP</item>
<item name="mainKeyboardViewStyle">@style/MainKeyboardView.LMP</item>
<item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LMP</item>
<item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LMP</item>
<item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LMP</item>
<item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LMP</item>
<item name="suggestionStripViewStyle">@style/SuggestionStripView.LMP</item>
<item name="suggestionWordStyle">@style/SuggestionWord.LMP</item>
</style>
<style
name="Keyboard.LMP"
parent="Keyboard"
>
<!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
<item name="themeId">0</item>
<item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
<item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
<item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
<item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
<item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
</style>
<style
name="KeyboardView.LMP"
parent="KeyboardView"
>
<item name="android:background">@drawable/keyboard_background_holo</item>
<item name="keyBackground">@drawable/btn_keyboard_key_lmp</item>
<item name="keyTypeface">bold</item>
<item name="keyTextColor">@color/key_text_color_holo</item>
<item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
<item name="keyHintLetterColor">@color/key_hint_letter_color_lmp</item>
<item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
<item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
<item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
<item name="keyPreviewTextColor">@color/key_text_color_holo</item>
<item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
<item name="keyTextShadowRadius">0.0</item>
</style>
<style
name="MainKeyboardView.LMP"
parent="KeyboardView.LMP"
>
<item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
<item name="gestureFloatingPreviewTextColor">@color/highlight_color_lmp</item>
<item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
<item name="gestureTrailColor">@color/highlight_color_lmp</item>
<item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lmp</item>
<item name="autoCorrectionSpacebarLedEnabled">false</item>
<item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
<item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
<item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
<item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lmp</item>
</style>
<style
name="KeyPreviewTextView.LMP"
parent="KeyPreviewTextView"
>
<item name="android:background">@drawable/keyboard_key_feedback_lmp</item>
</style>
<!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
for instance delete button, need themed {@link KeyboardView} attributes. -->
<style
name="EmojiPalettesView.LMP"
parent="KeyboardView.LMP"
>
<item name="keyBackgroundEmojiFunctional">@drawable/btn_keyboard_key_functional_lmp</item>
<item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
</style>
<style
name="MoreKeysKeyboard.LMP"
parent="Keyboard.LMP"
>
<item name="keyboardTopPadding">0%p</item>
<item name="keyboardBottomPadding">0%p</item>
<item name="horizontalGap">0%p</item>
<item name="touchPositionCorrectionData">@null</item>
</style>
<style
name="MoreKeysKeyboardView.LMP"
parent="KeyboardView.LMP"
>
<item name="android:background">@drawable/keyboard_popup_panel_background_lmp</item>
<item name="keyBackground">@drawable/btn_keyboard_key_popup_lmp</item>
<item name="keyTypeface">normal</item>
<item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
</style>
<style
name="SuggestionStripView.LMP"
parent="KeyboardView.LMP"
>
<item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
<item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
<item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
<item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
<item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
<item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
<item name="colorValidTypedWord">@color/typed_word_color_lmp</item>
<item name="colorTypedWord">@color/typed_word_color_lmp</item>
<item name="colorAutoCorrect">@color/highlight_color_lmp</item>
<item name="colorSuggested">@color/suggested_word_color_lmp</item>
<item name="alphaObsoleted">70%</item>
</style>
<style
name="SuggestionWord.LMP"
parent="SuggestionWord"
>
<item name="android:background">@drawable/btn_suggestion_lmp</item>
<item name="android:textColor">@color/highlight_color_lmp</item>
</style>
</resources>

View file

@ -78,7 +78,7 @@
latin:keyboardLayout="@xml/key_styles_enter" />
<key-style
latin:styleName="spaceKeyStyle"
latin:keySpec=" |!code/key_space"
latin:keySpec="!icon/space_key|!code/key_space"
latin:keyActionFlags="noKeyPreview|enableLongPress" />
<!-- U+200C: ZERO WIDTH NON-JOINER
U+200D: ZERO WIDTH JOINER -->

View file

@ -87,7 +87,7 @@
latin:keyboardLayout="@xml/key_styles_enter" />
<key-style
latin:styleName="spaceKeyStyle"
latin:keySpec=" |!code/key_space"
latin:keySpec="!icon/space_key|!code/key_space"
latin:keyActionFlags="noKeyPreview|enableLongPress" />
<!-- U+200C: ZERO WIDTH NON-JOINER
U+200D: ZERO WIDTH JOINER -->

View file

@ -109,6 +109,8 @@ public abstract class AbstractLayoutBase {
// Icon ids.
private static final int ICON_DELETE = KeyboardIconsSet.getIconId(
KeyboardIconsSet.NAME_DELETE_KEY);
private static final int ICON_SPACE = KeyboardIconsSet.getIconId(
KeyboardIconsSet.NAME_SPACE_KEY);
private static final int ICON_TAB = KeyboardIconsSet.getIconId(
KeyboardIconsSet.NAME_TAB_KEY);
private static final int ICON_SHORTCUT = KeyboardIconsSet.getIconId(
@ -131,6 +133,5 @@ public abstract class AbstractLayoutBase {
ICON_LANGUAGE_SWITCH, Constants.CODE_LANGUAGE_SWITCH);
public static final ExpectedKey ENTER_KEY = key(ICON_ENTER, Constants.CODE_ENTER);
public static final ExpectedKey EMOJI_KEY = key(ICON_EMOJI, Constants.CODE_EMOJI);
public static final ExpectedKey SPACE_KEY = key(
StringUtils.newSingleCodePointString(Constants.CODE_SPACE));
public static final ExpectedKey SPACE_KEY = key(ICON_SPACE, Constants.CODE_SPACE);
}