part { name: "key-bg-shift"; type: RECT; pointer_mode: NOGRAB; description { state: "default" 0.0; min: 32 32; max: 32 32; rel1 { relative: 0.0 0.0; offset: (44) (THIRD_ROW + 27); } rel2 { relative: 0.0 0.0; offset: (44) (THIRD_ROW + 27); } color: 0 0 0 0; } } part { name: "key-img-shift"; type: IMAGE; mouse_events: 0; description { state: "default" 0.0; min: 87 54; max: 87 54; rel1 { relative: 0.0 0.0; offset: (44) (THIRD_ROW + 27); } rel2 { relative: 0.0 0.0; offset: (44) (THIRD_ROW + 27); } image { normal: "key-special.png"; border: 9 9 9 9; } } description { state: "down" 0.0; inherit: "default" 0.0; image { normal: "key-special-selected.png"; border: 9 9 9 9; } } } part { name: "key-lbl-shift"; type: IMAGE; mouse_events: 0; description { state: "default" 0.0; max: 32 32; min: 32 32; rel1 { to: "key-bg-shift"; relative: 0.5 0.5; } rel2 { to: "key-bg-shift"; relative: 0.5 0.5; } image.normal: "shift.png"; } description { state: "down" 0.0; inherit: "default" 0.0; image.normal: "shift-selected.png"; } } programs { program { name: "key-down-shift"; signal: "mouse,clicked,1"; source: "key-bg-shift"; action: SIGNAL_EMIT "key_down" "shift"; } program { name: "key-down-shift-enter"; signal: "press_shift"; action: STATE_SET "down" 0.0; transition: LINEAR 0.1; target: "key-img-shift"; target: "key-lbl-shift"; } program { name: "key-down-shift-revert"; signal: "release_shift"; action: STATE_SET "default" 0.0; transition: LINEAR 0.1; target: "key-img-shift"; target: "key-lbl-shift"; } }