template "widget[@type='Keypad']", mode="widget_defs" {
labels("Esc Enter BackSpace Keys Info Value");
optional_labels("Sign CapsLock Shift Space");
foreach "$hmi_element/*[@inkscape:label = 'Keys']/*" {
| id("«@id»").setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_key_click('«func:escape_quotes(@inkscape:label)»')");
foreach "str:split('Esc Enter BackSpace Sign Space CapsLock Shift')" {
| this.«.»_elt.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_«.»_click()");
| on_key_click: function(symbols) {
| var syms = symbols.split(" ");
| this.shift = this.caps;
| this.editstr += syms[this.shift?syms.length:0];
| on_Esc_click: function() {
| on_Enter_click: function() {
| callback_obj = this.result_callback_obj;
| callback_obj.edit_callback(this.editstr);
| on_BackSpace_click: function() {
| this.editstr = this.editstr.slice(0,this.editstr.length-1);
| console.log("BackSpace");
| on_Sign_click: function() {
| if(this.editstr[0] == "-")
| this.editstr = this.editstr.slice(1,this.editstr.length);
| this.editstr = "-" + this.editstr;
| on_Space_click: function() {
| on_CapsLock_click: function() {
| this.caps = !this.caps;
| console.log("CapsLock");
| on_Shift_click: function() {
const "g", "$geometry[@Id = $hmi_element/@id]";
| coordinates: [«$g/@x», «$g/@y»],
| result_callback_obj: undefined,
| start_edit: function(info, valuetype, callback_obj, initial) {
| this.editstr = initial;
| this.result_callback_obj = callback_obj;
| this.Info_elt.textContent = info;
| /* TODO Swith shift and capslock active/inactive elements */
| this.Value_elt.textContent = this.editstr;