enlightenment/src/modules/wl_weekeyboard/themes/default/default.edc

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))
}
}
}