1119 lines
57 KiB
Plaintext
1119 lines
57 KiB
Plaintext
/*
|
|
* Copyright © 2013 Intel Corporation
|
|
* Copyright © 2014 Jaguar Landrover
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
images {
|
|
image: "icon-backspace.png" COMP;
|
|
image: "icon-enter.png" COMP;
|
|
image: "icon-language.png" COMP;
|
|
image: "icon-shift-active.png" COMP;
|
|
image: "icon-shift.png" COMP;
|
|
image: "icon-space.png" COMP;
|
|
|
|
image: "key-default.png" COMP;
|
|
image: "key-default-pressed.png" COMP;
|
|
image: "key-hint.png" COMP;
|
|
image: "key-hint-bg.png" COMP;
|
|
image: "key-special.png" COMP;
|
|
image: "key-special-pressed.png" COMP;
|
|
}
|
|
|
|
fonts {
|
|
font: "SourceSansPro-Regular.ttf" "Regular";
|
|
font: "SourceSansPro-Semibold.ttf" "Semibold";
|
|
}
|
|
|
|
data {
|
|
file: "ignore-keys" "ignorekeys.txt";
|
|
}
|
|
|
|
collections {
|
|
group {
|
|
name: "main";
|
|
|
|
min: MIN_WIDTH MIN_HEIGHT;
|
|
max: MAX_WIDTH MAX_HEIGHT;
|
|
|
|
parts {
|
|
part {
|
|
name: "rect_bg";
|
|
mouse_events: 0;
|
|
type: RECT;
|
|
description {
|
|
state: "default" 0.0;
|
|
color: 255 255 255 0;
|
|
rel1 {
|
|
relative: 0.0 0.0;
|
|
offset: 0 0;
|
|
}
|
|
rel2 {
|
|
relative: 1.0 1.0;
|
|
offset: -1 -1;
|
|
}
|
|
}
|
|
}
|
|
|
|
part {
|
|
name: "background";
|
|
mouse_events: 1;
|
|
pointer_mode: NOGRAB;
|
|
type: RECT;
|
|
description {
|
|
state: "default" 0.0;
|
|
color: 214 215 218 255;
|
|
rel1 {
|
|
relative: 0.0 0.0;
|
|
offset: 0 (150*SCALE);
|
|
}
|
|
rel2 {
|
|
relative: 1.0 1.0;
|
|
offset: -1 -1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#define KEY_GROUP(_name) \
|
|
parts { \
|
|
part { \
|
|
name: _name"_clip"; \
|
|
type: RECT; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
rel1 { \
|
|
relative: 0.0 0.0; \
|
|
offset: 0 0; \
|
|
} \
|
|
rel2 { \
|
|
relative: 1.0 1.0; \
|
|
offset: -1 -1; \
|
|
} \
|
|
} \
|
|
description { \
|
|
state: "hidden" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 0; \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: _name; \
|
|
type: GROUP; \
|
|
source: _name; \
|
|
clip_to: _name"_clip"; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
rel1 { \
|
|
to: "background"; \
|
|
relative: 0.0 0.0; \
|
|
offset: (5*SCALE) (10*SCALE); \
|
|
} \
|
|
rel2 { \
|
|
to: "background"; \
|
|
relative: 1.0 1.0; \
|
|
offset: -1 -1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
programs { \
|
|
program { \
|
|
name: "show-"_name; \
|
|
action: STATE_SET "default" 0.0; \
|
|
target: _name"_clip"; \
|
|
} \
|
|
program { \
|
|
name: "hide-"_name; \
|
|
action: STATE_SET "hidden" 0.0; \
|
|
target: _name"_clip"; \
|
|
} \
|
|
}
|
|
|
|
KEY_GROUP("alphanum")
|
|
KEY_GROUP("numeric")
|
|
KEY_GROUP("special-1")
|
|
KEY_GROUP("special-2")
|
|
KEY_GROUP("fixed")
|
|
|
|
programs {
|
|
program {
|
|
name: "alphanum_show";
|
|
signal: "show,alphanumeric";
|
|
after: "show-alphanum";
|
|
after: "hide-numeric";
|
|
after: "hide-special-1";
|
|
after: "hide-special-2";
|
|
after: "show-fixed";
|
|
}
|
|
|
|
program {
|
|
name: "numeric_show";
|
|
signal: "show,numeric";
|
|
after: "show-numeric";
|
|
after: "hide-alphanum";
|
|
after: "hide-special-1";
|
|
after: "hide-special-2";
|
|
after: "hide-fixed";
|
|
}
|
|
|
|
program {
|
|
name: "special-1_show";
|
|
signal: "show,special,1";
|
|
after: "show-special-1";
|
|
after: "hide-numeric";
|
|
after: "hide-alphanum";
|
|
after: "hide-special-2";
|
|
after: "show-fixed";
|
|
}
|
|
|
|
program {
|
|
name: "special-2_show";
|
|
signal: "show,special,2";
|
|
after: "show-special-2";
|
|
after: "hide-numeric";
|
|
after: "hide-alphanum";
|
|
after: "hide-special-1";
|
|
after: "show-fixed";
|
|
}
|
|
|
|
program {
|
|
name: "?123_clicked";
|
|
signal: "key_down";
|
|
source: "alphanum:?123";
|
|
after: "special-1_show";
|
|
}
|
|
program {
|
|
name: "special-1_abc_clicked";
|
|
signal: "key_down";
|
|
source: "special-1:abc";
|
|
after: "alphanum_show";
|
|
}
|
|
program {
|
|
name: "special-2_abc_clicked";
|
|
signal: "key_down";
|
|
source: "special-2:abc";
|
|
after: "alphanum_show";
|
|
}
|
|
program {
|
|
name: "1/2_clicked";
|
|
signal: "key_down";
|
|
source: "special-1:1/2";
|
|
after: "special-2_show";
|
|
}
|
|
program {
|
|
name: "2/2_clicked";
|
|
signal: "key_down";
|
|
source: "special-2:2/2";
|
|
after: "special-1_show";
|
|
}
|
|
program {
|
|
name: "init";
|
|
signal: "show";
|
|
after: "alphanum_show";
|
|
}
|
|
}
|
|
}
|
|
|
|
group {
|
|
name: "alphanum";
|
|
|
|
#define MOUSE_DOWN_UP_SCRIPTS \
|
|
public shift_pressed = 0; \
|
|
public mouse_down = 0; \
|
|
public long_press_timer = 0; \
|
|
public long_press = 0; \
|
|
public pressed_key; \
|
|
\
|
|
public _set_long_press(val) { \
|
|
new _cur[20]; \
|
|
new _timer; \
|
|
_timer = get_int(long_press_timer); \
|
|
if (_timer) { \
|
|
cancel_timer(_timer); \
|
|
set_int(long_press_timer, 0); \
|
|
} \
|
|
set_int(long_press, val); \
|
|
if (!val) \
|
|
return; \
|
|
get_str(pressed_key, _cur, 20); \
|
|
if (strlen(_cur) > 0) { \
|
|
emit("long_press", _cur); \
|
|
} \
|
|
} \
|
|
\
|
|
_set_key_pressed(_key[]) { \
|
|
new _cur[20]; \
|
|
new _prg[30]; \
|
|
new _timer; \
|
|
get_str(pressed_key, _cur, 20); \
|
|
if (strlen(_cur) > 0) { \
|
|
_set_key_released(_cur); \
|
|
} \
|
|
set_str(pressed_key, _key); \
|
|
_timer = timer(0.5, "_set_long_press", 1); \
|
|
set_int(long_press_timer, _timer); \
|
|
snprintf(_prg, 30, "key-press-%s", _key); \
|
|
run_program(get_program_id(_prg)); \
|
|
} \
|
|
\
|
|
_set_key_released(_key[]) { \
|
|
new _prg[30]; \
|
|
_set_long_press(0); \
|
|
set_str(pressed_key, ""); \
|
|
snprintf(_prg, 30, "key-release-%s", _key); \
|
|
run_program(get_program_id(_prg)); \
|
|
} \
|
|
|
|
#define MOUSE_DOWN_UP_PROGRAMS \
|
|
program { \
|
|
name: "mouse-down"; \
|
|
signal: "mouse,down,1"; \
|
|
source: "*"; \
|
|
script { \
|
|
set_int(mouse_down, 1); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "mouse-up"; \
|
|
signal: "mouse,up,1"; \
|
|
source: "*"; \
|
|
script { \
|
|
set_int(mouse_down, 0); \
|
|
} \
|
|
}
|
|
|
|
script {
|
|
MOUSE_DOWN_UP_SCRIPTS
|
|
}
|
|
programs {
|
|
MOUSE_DOWN_UP_PROGRAMS
|
|
}
|
|
parts {
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE 5
|
|
#define KEY_WIDTH (65*SCALE)
|
|
#define KEY_HEIGHT (90*SCALE)
|
|
#define COL_SPACE 5
|
|
#define KEY_OFFSET(index) ((COL_SPACE+KEY_WIDTH)*index)+INIT_HSPACE
|
|
|
|
#define FIRST_ROW 0
|
|
#define ROW_SPACE (20*SCALE)
|
|
|
|
#define SKEY_FULL(key_low, key_up, key_name, key_alt, x, y) \
|
|
part { \
|
|
name: "key-img-"key_name; \
|
|
type: IMAGE; \
|
|
mouse_events: 0; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
min: KEY_WIDTH KEY_HEIGHT; \
|
|
max: KEY_WIDTH KEY_HEIGHT; \
|
|
fixed: 1 1; \
|
|
rel1 { \
|
|
relative: 0.0 0.0; \
|
|
offset: (x) (y); \
|
|
} \
|
|
rel2 { \
|
|
relative: 0.0 0.0; \
|
|
offset: (x+KEY_WIDTH-1) (y+KEY_HEIGHT-1); \
|
|
} \
|
|
image { \
|
|
normal: "key-default.png"; \
|
|
border: 8 8 10 10; \
|
|
} \
|
|
} \
|
|
description { \
|
|
state: "down" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
rel1.offset: (x+1) (y+1); \
|
|
rel2.offset: (x+1+KEY_WIDTH-1) (y+1+KEY_HEIGHT-1); \
|
|
image.normal: "key-default-pressed.png"; \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-bg-"key_name; \
|
|
type: RECT; \
|
|
pointer_mode: NOGRAB; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
color: 0 0 0 0; \
|
|
rel1 { \
|
|
to: "key-img-"key_name; \
|
|
relative: 0.0 0.0; \
|
|
offset: 3 2; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-img-"key_name; \
|
|
relative: 1.0 1.0; \
|
|
offset: -4 -6; \
|
|
} \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-lbl-"key_name; \
|
|
type: TEXT; \
|
|
mouse_events: 0; \
|
|
effect: SHADOW BOTTOM; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
color: 63 67 72 255; \
|
|
color2: 240 240 240 255; \
|
|
color3: 240 240 240 255; \
|
|
rel1 { \
|
|
to: "key-bg-"key_name; \
|
|
relative: 0.0 0.4; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-bg-"key_name; \
|
|
relative: 1.0 0.9; \
|
|
} \
|
|
text { \
|
|
font: "Regular"; \
|
|
size: (44*SCALE); \
|
|
text: key_low; \
|
|
} \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-lbl-alt-"key_name; \
|
|
type: TEXT; \
|
|
mouse_events: 0; \
|
|
effect: SHADOW BOTTOM; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
color: 63 67 72 255; \
|
|
color2: 240 240 240 255; \
|
|
color3: 240 240 240 255; \
|
|
rel1 { \
|
|
to: "key-bg-"key_name; \
|
|
relative: 0.0 0.1; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-bg-"key_name; \
|
|
relative: 1.0 0.4; \
|
|
} \
|
|
text { \
|
|
font: "Regular"; \
|
|
size: (22*SCALE); \
|
|
align: 0.8 0.0; \
|
|
text: key_alt; \
|
|
} \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-img-hint-"key_name; \
|
|
type: IMAGE; \
|
|
mouse_events: 0; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
min: KEY_WIDTH KEY_HEIGHT; \
|
|
max: KEY_WIDTH KEY_HEIGHT; \
|
|
fixed: 1 1; \
|
|
rel1 { \
|
|
to: "key-img-"key_name; \
|
|
relative: 0.0 0.0; \
|
|
offset: 0 ((-20*SCALE)-KEY_HEIGHT); \
|
|
} \
|
|
rel2 { \
|
|
to: "key-img-"key_name; \
|
|
relative: 1.0 0.0; \
|
|
offset: 0 (-20*SCALE); \
|
|
} \
|
|
image { \
|
|
normal: "key-hint.png"; \
|
|
border: 8 8 10 10; \
|
|
} \
|
|
visible: 0; \
|
|
} \
|
|
description { \
|
|
state: "down" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 1; \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-lbl-hint-"key_name; \
|
|
type: TEXT; \
|
|
mouse_events: 0; \
|
|
effect: SHADOW BOTTOM; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
color: 63 67 72 255; \
|
|
color2: 240 240 240 255; \
|
|
color3: 240 240 240 255; \
|
|
rel1 { \
|
|
to: "key-img-hint-"key_name; \
|
|
relative: 0.0 0.0; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-img-hint-"key_name; \
|
|
relative: 1.0 1.0; \
|
|
} \
|
|
text { \
|
|
font: "Regular"; \
|
|
size: (48*SCALE); \
|
|
text: key_low; \
|
|
} \
|
|
visible: 0; \
|
|
} \
|
|
description { \
|
|
state: "down" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 1; \
|
|
} \
|
|
} \
|
|
programs { \
|
|
program { \
|
|
name: "key-mouse-in-"key_name; \
|
|
signal: "mouse,in"; \
|
|
source: "key-bg-"key_name; \
|
|
script { \
|
|
if (get_int(mouse_down) == 0) \
|
|
return; \
|
|
_set_key_pressed(key_name); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-out-"key_name; \
|
|
signal: "mouse,out"; \
|
|
source: "key-bg-"key_name; \
|
|
script { \
|
|
if (get_int(mouse_down) == 0) \
|
|
return; \
|
|
_set_key_released(key_name); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-down-"key_name; \
|
|
signal: "mouse,down,1"; \
|
|
source: "key-bg-"key_name; \
|
|
script { \
|
|
_set_key_pressed(key_name); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-up-"key_name; \
|
|
signal: "mouse,up,1"; \
|
|
source: "key-bg-"key_name; \
|
|
script { \
|
|
if (get_int(long_press) == 0) { \
|
|
if (get_int(shift_pressed) == 0) \
|
|
emit("key_down", key_low); \
|
|
else \
|
|
emit("key_down", key_up); \
|
|
} else { \
|
|
if (strcmp(key_alt, " ")) \
|
|
emit("key_down", key_alt); \
|
|
else if (get_int(shift_pressed) == 0) \
|
|
emit("key_down", key_low); \
|
|
else \
|
|
emit("key_down", key_up); \
|
|
} \
|
|
_set_key_released(key_name); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-press-"key_name; \
|
|
action: STATE_SET "down" 0.0; \
|
|
target: "key-img-"key_name; \
|
|
target: "key-img-hint-"key_name; \
|
|
target: "key-lbl-hint-"key_name; \
|
|
} \
|
|
program { \
|
|
name: "key-release-"key_name; \
|
|
action: STATE_SET "default" 0.0; \
|
|
transition: LINEAR 0.2; \
|
|
target: "key-img-"key_name; \
|
|
target: "key-img-hint-"key_name; \
|
|
target: "key-lbl-hint-"key_name; \
|
|
after: "shift-pressed-"key_name; \
|
|
} \
|
|
program { \
|
|
name: "long-press-"key_name; \
|
|
signal: "long_press"; \
|
|
source: key_name; \
|
|
script { \
|
|
if (strcmp(key_alt, " ")) \
|
|
set_text(PART:"key-lbl-hint-"key_name, key_alt); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "shift-pressed-"key_name; \
|
|
signal: "key_down"; \
|
|
source: "shift"; \
|
|
script { \
|
|
if (get_int(shift_pressed) == 0) { \
|
|
set_text(PART:"key-lbl-"key_name, key_low); \
|
|
set_text(PART:"key-lbl-hint-"key_name, key_low); \
|
|
} else { \
|
|
set_text(PART:"key-lbl-"key_name, key_up); \
|
|
set_text(PART:"key-lbl-hint-"key_name, key_up); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
#define KEY_FULL(low, up, alt, x, y) SKEY_FULL(low, up, low, alt, x, y)
|
|
#define SKEY(name, text, alt, x, y) SKEY_FULL(name, name, text, alt, x, y)
|
|
#define KEY(v, alt, x, y) SKEY(v, v, alt, x, y)
|
|
|
|
KEY_FULL("q", "Q", "1", KEY_OFFSET(0), FIRST_ROW)
|
|
KEY_FULL("w", "W", "2", KEY_OFFSET(1), FIRST_ROW)
|
|
KEY_FULL("e", "E", "3", KEY_OFFSET(2), FIRST_ROW)
|
|
KEY_FULL("r", "R", "4", KEY_OFFSET(3), FIRST_ROW)
|
|
KEY_FULL("t", "T", "5", KEY_OFFSET(4), FIRST_ROW)
|
|
KEY_FULL("y", "Y", "6", KEY_OFFSET(5), FIRST_ROW)
|
|
KEY_FULL("u", "U", "7", KEY_OFFSET(6), FIRST_ROW)
|
|
KEY_FULL("i", "I", "8", KEY_OFFSET(7), FIRST_ROW)
|
|
KEY_FULL("o", "O", "9", KEY_OFFSET(8), FIRST_ROW)
|
|
KEY_FULL("p", "P", "0", KEY_OFFSET(9), FIRST_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (45*SCALE)
|
|
#define SECOND_ROW FIRST_ROW+KEY_HEIGHT+ROW_SPACE
|
|
|
|
KEY_FULL("a", "A", "-", KEY_OFFSET(0), SECOND_ROW)
|
|
KEY_FULL("s", "S", "@", KEY_OFFSET(1), SECOND_ROW)
|
|
KEY_FULL("d", "D", "*", KEY_OFFSET(2), SECOND_ROW)
|
|
KEY_FULL("f", "F", "^", KEY_OFFSET(3), SECOND_ROW)
|
|
KEY_FULL("g", "G", ":", KEY_OFFSET(4), SECOND_ROW)
|
|
KEY_FULL("h", "H", ";", KEY_OFFSET(5), SECOND_ROW)
|
|
KEY_FULL("j", "J", "(", KEY_OFFSET(6), SECOND_ROW)
|
|
KEY_FULL("k", "K", ")", KEY_OFFSET(7), SECOND_ROW)
|
|
KEY_FULL("l", "L", "~", KEY_OFFSET(8), SECOND_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (110*SCALE)
|
|
#define THIRD_ROW SECOND_ROW+KEY_HEIGHT+ROW_SPACE
|
|
|
|
KEY_FULL("z", "Z", "/", KEY_OFFSET(0), THIRD_ROW)
|
|
KEY_FULL("x", "X", "'", KEY_OFFSET(1), THIRD_ROW)
|
|
KEY_FULL("c", "C", "\"", KEY_OFFSET(2), THIRD_ROW)
|
|
KEY_FULL("v", "V", ".", KEY_OFFSET(3), THIRD_ROW)
|
|
KEY_FULL("b", "B", ",", KEY_OFFSET(4), THIRD_ROW)
|
|
KEY_FULL("n", "N", "?", KEY_OFFSET(5), THIRD_ROW)
|
|
KEY_FULL("m", "M", "!", KEY_OFFSET(6), THIRD_ROW)
|
|
|
|
#define KEY_SPECIAL(val, x, y, w) \
|
|
part { \
|
|
name: "key-img-"val; \
|
|
type: IMAGE; \
|
|
mouse_events: 0; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
min: w KEY_HEIGHT; \
|
|
max: w KEY_HEIGHT; \
|
|
fixed: 1 1; \
|
|
rel1 { \
|
|
relative: 0.0 0.0; \
|
|
offset: (x) (y); \
|
|
} \
|
|
rel2 { \
|
|
relative: 0.0 0.0; \
|
|
offset: (x+w-1) (y+KEY_HEIGHT-1); \
|
|
} \
|
|
image { \
|
|
normal: "key-special.png"; \
|
|
border: 8 8 10 10; \
|
|
} \
|
|
} \
|
|
description { \
|
|
state: "down" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
rel1.offset: (x+1) (y+1); \
|
|
rel2.offset: (x+1+w-1) (y+1+KEY_HEIGHT-1); \
|
|
image.normal: "key-special-pressed.png"; \
|
|
} \
|
|
} \
|
|
part { \
|
|
name: "key-bg-"val; \
|
|
type: RECT; \
|
|
pointer_mode: NOGRAB; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
rel1 { \
|
|
to: "key-img-"val; \
|
|
relative: 0.0 0.0; \
|
|
offset: 3 2; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-img-"val; \
|
|
relative: 1.0 1.0; \
|
|
offset: -4 -6; \
|
|
} \
|
|
color: 0 0 0 0; \
|
|
} \
|
|
} \
|
|
programs { \
|
|
program { \
|
|
name: "key-mouse-up-"val; \
|
|
signal: "mouse,up,1"; \
|
|
source: "key-bg-"val; \
|
|
script { \
|
|
emit("key_down", val); \
|
|
_set_key_released(val); \
|
|
emit("key_up", val); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-in-"val; \
|
|
signal: "mouse,in"; \
|
|
source: "key-bg-"val; \
|
|
script { \
|
|
if (get_int(mouse_down) == 0) \
|
|
return; \
|
|
_set_key_pressed(val); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-out-"val; \
|
|
signal: "mouse,out"; \
|
|
source: "key-bg-"val; \
|
|
script { \
|
|
if (get_int(mouse_down) == 0) \
|
|
return; \
|
|
_set_key_released(val); \
|
|
emit("key_up", val); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-mouse-down-"val; \
|
|
signal: "mouse,down,1"; \
|
|
source: "key-bg-"val; \
|
|
script { \
|
|
_set_key_pressed(val); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-press-"val; \
|
|
action: STATE_SET "down" 0.0; \
|
|
target: "key-img-"val; \
|
|
target: "key-lbl-"val; \
|
|
} \
|
|
program { \
|
|
name: "key-release-"val; \
|
|
action: STATE_SET "default" 0.0; \
|
|
transition: LINEAR 0.2; \
|
|
target: "key-img-"val; \
|
|
target: "key-lbl-"val; \
|
|
} \
|
|
}
|
|
|
|
#define KEY_SPECIAL_TEXT(val, x, y, w) \
|
|
KEY_SPECIAL(val, x, y, w) \
|
|
part { \
|
|
name: "key-lbl-"val; \
|
|
type: TEXT; \
|
|
mouse_events: 0; \
|
|
effect: SHADOW BOTTOM; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
color: 63 67 72 255; \
|
|
color2: 240 240 240 255; \
|
|
color3: 240 240 240 255; \
|
|
rel1 { \
|
|
to: "key-bg-"val; \
|
|
relative: 0.0 0.4; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-bg-"val; \
|
|
relative: 1.0 1.0; \
|
|
} \
|
|
text { \
|
|
font: "Semibold"; \
|
|
size: (34*SCALE); \
|
|
text: val; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define KEY_SPECIAL_ICON(val, x, y, w, icon_size) \
|
|
KEY_SPECIAL(val, x, y, w) \
|
|
part { \
|
|
name: "key-lbl-"val; \
|
|
type: IMAGE; \
|
|
mouse_events: 0; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
min: icon_size icon_size; \
|
|
max: icon_size icon_size; \
|
|
fixed: 1 1; \
|
|
rel1 { \
|
|
to: "key-bg-"val; \
|
|
relative: 0.5 0.4; \
|
|
} \
|
|
rel2 { \
|
|
to: "key-bg-"val; \
|
|
relative: 0.5 0.8; \
|
|
} \
|
|
image.normal: "icon-"val".png"; \
|
|
} \
|
|
} \
|
|
|
|
#define FOURTH_ROW THIRD_ROW+KEY_HEIGHT+ROW_SPACE
|
|
KEY_SPECIAL_TEXT("?123", (5*SCALE), FOURTH_ROW, (95*SCALE))
|
|
|
|
part {
|
|
name: "key-img-shift";
|
|
type: IMAGE;
|
|
mouse_events: 0;
|
|
description {
|
|
state: "default" 0.0;
|
|
min: (85*SCALE) KEY_HEIGHT;
|
|
max: (85*SCALE) KEY_HEIGHT;
|
|
fixed: 1 1;
|
|
rel1 {
|
|
relative: 0.0 0.0;
|
|
offset: (5*SCALE) (THIRD_ROW);
|
|
}
|
|
rel2 {
|
|
relative: 0.0 0.0;
|
|
offset: (((5+85)*SCALE)-1) (THIRD_ROW+KEY_HEIGHT-1);
|
|
}
|
|
image {
|
|
normal: "key-special.png";
|
|
border: 8 8 10 10;
|
|
}
|
|
}
|
|
description {
|
|
state: "down" 0.0;
|
|
inherit: "default" 0.0;
|
|
rel1.offset: ((5*SCALE)+2) (THIRD_ROW+2);
|
|
rel2.offset: ((((5+85)*SCALE)+2)-1) (THIRD_ROW+2+KEY_HEIGHT-1);
|
|
image.normal: "key-special-pressed.png";
|
|
}
|
|
}
|
|
part {
|
|
name: "key-bg-shift";
|
|
type: RECT;
|
|
pointer_mode: NOGRAB;
|
|
description {
|
|
state: "default" 0.0;
|
|
rel1 {
|
|
to: "key-img-shift";
|
|
relative: 0.0 0.0;
|
|
offset: 3 2;
|
|
}
|
|
rel2 {
|
|
to: "key-img-shift";
|
|
relative: 1.0 1.0;
|
|
offset: -4 -6;
|
|
}
|
|
color: 0 0 0 0;
|
|
}
|
|
}
|
|
part {
|
|
name: "key-lbl-shift";
|
|
type: IMAGE;
|
|
mouse_events: 0;
|
|
description {
|
|
state: "default" 0.0;
|
|
max: (50*SCALE) (50*SCALE);
|
|
min: (50*SCALE) (50*SCALE);
|
|
fixed: 1 1;
|
|
rel1 {
|
|
to: "key-bg-shift";
|
|
relative: 0.5 0.4;
|
|
}
|
|
rel2 {
|
|
to: "key-bg-shift";
|
|
relative: 0.5 0.8;
|
|
}
|
|
image.normal: "icon-shift.png";
|
|
}
|
|
description {
|
|
state: "down" 0.0;
|
|
inherit: "default" 0.0;
|
|
image.normal: "icon-shift-active.png";
|
|
}
|
|
}
|
|
programs {
|
|
program {
|
|
name: "key-press-shift";
|
|
signal: "mouse,down,1";
|
|
source: "key-bg-shift";
|
|
action: STATE_SET "down" 0.0;
|
|
target: "key-img-shift";
|
|
target: "key-lbl-shift";
|
|
}
|
|
program {
|
|
name: "key-release-shift";
|
|
action: STATE_SET "default" 0.0;
|
|
transition: LINEAR 0.2;
|
|
target: "key-img-shift";
|
|
target: "key-lbl-shift";
|
|
}
|
|
program {
|
|
name: "key-mouse-in-shift";
|
|
signal: "mouse,in";
|
|
source: "key-bg-shift";
|
|
script {
|
|
if (get_int(mouse_down) == 0)
|
|
return;
|
|
run_program(PROGRAM:"key-press-shift");
|
|
}
|
|
}
|
|
program {
|
|
name: "key-mouse-out-shift";
|
|
signal: "mouse,out";
|
|
source: "key-bg-shift";
|
|
script {
|
|
if (get_int(mouse_down) == 0)
|
|
return;
|
|
run_program(PROGRAM:"key-release-shift");
|
|
}
|
|
}
|
|
program {
|
|
name: "key-down-shift";
|
|
signal: "mouse,up,1";
|
|
source: "key-bg-shift";
|
|
script {
|
|
emit("key_down", "shift");
|
|
if (get_int(shift_pressed) == 0) {
|
|
run_program(PROGRAM:"key-press-shift");
|
|
set_int(shift_pressed, 1);
|
|
} else {
|
|
run_program(PROGRAM:"key-release-shift");
|
|
set_int(shift_pressed, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
group {
|
|
name: "special-1";
|
|
|
|
script {
|
|
MOUSE_DOWN_UP_SCRIPTS
|
|
}
|
|
programs {
|
|
MOUSE_DOWN_UP_PROGRAMS
|
|
}
|
|
parts {
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE 5
|
|
|
|
KEY("1", "#", KEY_OFFSET(0), FIRST_ROW)
|
|
KEY("2", "&", KEY_OFFSET(1), FIRST_ROW)
|
|
KEY("3", "%", KEY_OFFSET(2), FIRST_ROW)
|
|
KEY("4", "+", KEY_OFFSET(3), FIRST_ROW)
|
|
KEY("5", "=", KEY_OFFSET(4), FIRST_ROW)
|
|
KEY("6", "_", KEY_OFFSET(5), FIRST_ROW)
|
|
KEY("7", "\\", KEY_OFFSET(6), FIRST_ROW)
|
|
KEY("8", "|", KEY_OFFSET(7), FIRST_ROW)
|
|
KEY("9", "<", KEY_OFFSET(8), FIRST_ROW)
|
|
KEY("0", ">", KEY_OFFSET(9), FIRST_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (45*SCALE)
|
|
|
|
SKEY("-", "dash", "{", KEY_OFFSET(0), SECOND_ROW)
|
|
SKEY("@", "at", "}", KEY_OFFSET(1), SECOND_ROW)
|
|
SKEY("*", "star", "[", KEY_OFFSET(2), SECOND_ROW)
|
|
SKEY("^", "circumflex", "]", KEY_OFFSET(3), SECOND_ROW)
|
|
SKEY(":", "colon", "$", KEY_OFFSET(4), SECOND_ROW)
|
|
SKEY(";", "semi_colon", "£", KEY_OFFSET(5), SECOND_ROW)
|
|
SKEY("(", "open_par", "¥", KEY_OFFSET(6), SECOND_ROW)
|
|
SKEY(")", "close_par", "€", KEY_OFFSET(7), SECOND_ROW)
|
|
SKEY("~", "tilde", "₩", KEY_OFFSET(8), SECOND_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (110*SCALE)
|
|
|
|
SKEY("/", "slash", "¢", KEY_OFFSET(0), THIRD_ROW)
|
|
SKEY("'", "single_quote", "`", KEY_OFFSET(1), THIRD_ROW)
|
|
SKEY("\"", "double_quote", "°", KEY_OFFSET(2), THIRD_ROW)
|
|
SKEY(".", "dot", "˙", KEY_OFFSET(3), THIRD_ROW)
|
|
SKEY(",", "comma", "®", KEY_OFFSET(4), THIRD_ROW)
|
|
SKEY("?", "question", "©", KEY_OFFSET(5), THIRD_ROW)
|
|
SKEY("!", "exclamation", "¿", KEY_OFFSET(6), THIRD_ROW)
|
|
|
|
KEY_SPECIAL_TEXT("1/2", (5*SCALE), THIRD_ROW, (85*SCALE))
|
|
KEY_SPECIAL_TEXT("abc", (5*SCALE), FOURTH_ROW, (95*SCALE))
|
|
}
|
|
}
|
|
|
|
group {
|
|
name: "special-2";
|
|
|
|
script {
|
|
MOUSE_DOWN_UP_SCRIPTS
|
|
}
|
|
programs {
|
|
MOUSE_DOWN_UP_PROGRAMS
|
|
}
|
|
parts {
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE 5
|
|
|
|
SKEY("#", "hash", "1", KEY_OFFSET(0), FIRST_ROW)
|
|
SKEY("&", "amp", "2", KEY_OFFSET(1), FIRST_ROW)
|
|
SKEY("%", "percent", "3", KEY_OFFSET(2), FIRST_ROW)
|
|
SKEY("+", "plus", "4", KEY_OFFSET(3), FIRST_ROW)
|
|
SKEY("=", "equal", "5", KEY_OFFSET(4), FIRST_ROW)
|
|
SKEY("_", "underline", "6", KEY_OFFSET(5), FIRST_ROW)
|
|
SKEY("\\", "backslash", "7", KEY_OFFSET(6), FIRST_ROW)
|
|
SKEY("|", "vert_bar", "8", KEY_OFFSET(7), FIRST_ROW)
|
|
SKEY("<", "less", "9", KEY_OFFSET(8), FIRST_ROW)
|
|
SKEY(">", "greater", "0", KEY_OFFSET(9), FIRST_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (45*SCALE)
|
|
|
|
SKEY("{", "open_brace", "-", KEY_OFFSET(0), SECOND_ROW)
|
|
SKEY("}", "close_brace", "@", KEY_OFFSET(1), SECOND_ROW)
|
|
SKEY("[", "open_bracket", "*", KEY_OFFSET(2), SECOND_ROW)
|
|
SKEY("]", "close_bracket", "^", KEY_OFFSET(3), SECOND_ROW)
|
|
SKEY("$", "dollar", ":", KEY_OFFSET(4), SECOND_ROW)
|
|
SKEY("£", "sterling", ";", KEY_OFFSET(5), SECOND_ROW)
|
|
SKEY("¥", "yen", "(", KEY_OFFSET(6), SECOND_ROW)
|
|
SKEY("€", "euro", ")", KEY_OFFSET(7), SECOND_ROW)
|
|
SKEY("₩", "won", "~", KEY_OFFSET(8), SECOND_ROW)
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (110*SCALE)
|
|
|
|
SKEY("¢", "cent" , "/", KEY_OFFSET(0), THIRD_ROW)
|
|
SKEY("`", "back_quote", "'", KEY_OFFSET(1), THIRD_ROW)
|
|
SKEY("°", "ring", "\"", KEY_OFFSET(2), THIRD_ROW)
|
|
SKEY("˙", "dot", ".", KEY_OFFSET(3), THIRD_ROW)
|
|
SKEY("®", "registered", ",", KEY_OFFSET(4), THIRD_ROW)
|
|
SKEY("©", "copyright", "?", KEY_OFFSET(5), THIRD_ROW)
|
|
SKEY("¿", "inv_question", "!", KEY_OFFSET(6), THIRD_ROW)
|
|
|
|
KEY_SPECIAL_TEXT("2/2", (5*SCALE), THIRD_ROW, (85*SCALE))
|
|
KEY_SPECIAL_TEXT("abc", (5*SCALE), FOURTH_ROW, (95*SCALE))
|
|
}
|
|
}
|
|
|
|
group {
|
|
name: "fixed";
|
|
|
|
#define REPEAT_KEY_SCRIPTS \
|
|
public repeat_timer; \
|
|
public repeat_key; \
|
|
\
|
|
public _repeat_key(val) { \
|
|
new _cur[20]; \
|
|
new _timer; \
|
|
get_str(repeat_key, _cur, 20); \
|
|
emit("key_down", _cur); \
|
|
_timer = get_int(repeat_timer); \
|
|
if (_timer) { \
|
|
cancel_timer(_timer); \
|
|
} \
|
|
_timer = timer(0.1, "_repeat_key", 1); \
|
|
set_int(repeat_timer, _timer); \
|
|
} \
|
|
\
|
|
public _repeat_key_pressed(_key[]) { \
|
|
new _cur[20]; \
|
|
get_str(repeat_key, _cur, 20); \
|
|
if (strlen(_cur) > 0) { \
|
|
_repeat_key_released(_cur); \
|
|
} \
|
|
set_str(repeat_key, _key); \
|
|
_repeat_key(1); \
|
|
} \
|
|
\
|
|
public _repeat_key_released(_key[]) { \
|
|
new _timer; \
|
|
set_str(repeat_key, ""); \
|
|
_timer = get_int(repeat_timer); \
|
|
if (_timer) { \
|
|
cancel_timer(_timer); \
|
|
set_int(repeat_timer, 0); \
|
|
} \
|
|
}
|
|
|
|
script {
|
|
MOUSE_DOWN_UP_SCRIPTS
|
|
REPEAT_KEY_SCRIPTS
|
|
}
|
|
programs {
|
|
MOUSE_DOWN_UP_PROGRAMS
|
|
}
|
|
|
|
#define KEY_SPECIAL_ICON_REPEAT(val, x, y, w, icon_size) \
|
|
KEY_SPECIAL_ICON(val, x, y, w, icon_size) \
|
|
programs { \
|
|
program { \
|
|
name: "long-press-"val; \
|
|
signal: "long_press"; \
|
|
source: val; \
|
|
script { \
|
|
_repeat_key_pressed(val); \
|
|
} \
|
|
} \
|
|
program { \
|
|
name: "key-up-"val; \
|
|
signal: "key_up"; \
|
|
source: val; \
|
|
script { \
|
|
_repeat_key_released(val); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
parts {
|
|
KEY_SPECIAL_ICON_REPEAT("backspace", (620*SCALE), THIRD_ROW, (85*SCALE), (60*SCALE))
|
|
KEY_SPECIAL_ICON("enter", (610*SCALE), FOURTH_ROW, (95*SCALE), (60*SCALE))
|
|
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (120*SCALE)
|
|
KEY_SPECIAL_ICON_REPEAT("space", KEY_OFFSET(0), FOURTH_ROW, KEY_OFFSET(5), (64*SCALE));
|
|
}
|
|
}
|
|
|
|
group {
|
|
name: "numeric";
|
|
script {
|
|
MOUSE_DOWN_UP_SCRIPTS
|
|
REPEAT_KEY_SCRIPTS
|
|
}
|
|
programs {
|
|
MOUSE_DOWN_UP_PROGRAMS
|
|
}
|
|
parts {
|
|
#undef KEY_WIDTH
|
|
#define KEY_WIDTH (200*SCALE)
|
|
#undef KEY_HEIGHT
|
|
#define KEY_HEIGHT NUMERIC_KEY_HEIGHT
|
|
#undef INIT_HSPACE
|
|
#define INIT_HSPACE (45*SCALE)
|
|
#undef ROW_SPACE
|
|
#define ROW_SPACE (10*SCALE)
|
|
#undef COL_SPACE
|
|
#define COL_SPACE (10*SCALE)
|
|
KEY("1", " ", KEY_OFFSET(0), FIRST_ROW)
|
|
KEY("2", " ", KEY_OFFSET(1), FIRST_ROW)
|
|
KEY("3", " ", KEY_OFFSET(2), FIRST_ROW)
|
|
|
|
KEY("4", " ", KEY_OFFSET(0), SECOND_ROW)
|
|
KEY("5", " ", KEY_OFFSET(1), SECOND_ROW)
|
|
KEY("6", " ", KEY_OFFSET(2), SECOND_ROW)
|
|
|
|
KEY("7", " ", KEY_OFFSET(0), THIRD_ROW)
|
|
KEY("8", " ", KEY_OFFSET(1), THIRD_ROW)
|
|
KEY("9", " ", KEY_OFFSET(2), THIRD_ROW)
|
|
|
|
KEY_SPECIAL_ICON_REPEAT("backspace", KEY_OFFSET(0), FOURTH_ROW, KEY_WIDTH, (50*SCALE))
|
|
KEY("0", " ", KEY_OFFSET(1), FOURTH_ROW)
|
|
KEY_SPECIAL_ICON("enter", KEY_OFFSET(2), FOURTH_ROW, KEY_WIDTH, (60*SCALE))
|
|
}
|
|
}
|
|
}
|