24 #include "table/strings.h"
36 static byte _keystate = KEYS_NONE;
49 assert(parent != NULL);
52 assert(par_wid != NULL);
57 this->text_btn = button;
58 this->text = &this->qs->text;
62 this->orig_str_buf =
stredup(this->qs->text.buf);
123 if (
HasBit(_keystate, KEYS_SHIFT)) {
169 if (this->
qs->orig == NULL || strcmp(this->
qs->text.
buf, this->qs->orig) != 0) {
204 if (!gui_scope)
return;
216 static const int HALF_KEY_WIDTH = 7;
217 static const int INTER_KEY_SPACE = 2;
232 int key_width = HALF_KEY_WIDTH + (INTER_KEY_SPACE + HALF_KEY_WIDTH) * (num_half - 1);
235 if (!hor->
IsEmpty()) key_width += INTER_KEY_SPACE;
248 *biggest_index =
max(*biggest_index, widnum);
350 _nested_osk_widgets,
lengthof(_nested_osk_widgets)
361 bool has_error =
false;
364 GetString(keyboard[0], STR_OSK_KEYBOARD_LAYOUT,
lastof(keyboard[0]));
370 GetString(keyboard[1], STR_OSK_KEYBOARD_LAYOUT_CAPS,
lastof(keyboard[1]));
375 for (uint j = 0; j < 2; j++) {
376 const char *kbd = keyboard[j];
379 _keyboard[j][i] = Utf8Consume(&kbd);
382 if (_keyboard[j][i] ==
'\0' || ended) {
384 _keyboard[j][i] =
' ';
388 if (IsPrintable(_keyboard[j][i])) {
389 errormark[j][i] =
' ';
392 errormark[j][i] =
'^';
393 _keyboard[j][i] =
' ';
399 ShowInfoF(
"The keyboard layout you selected contains invalid chars. Please check those chars marked with ^.");
400 ShowInfoF(
"Normal keyboard: %s", keyboard[0]);
417 new OskWindow(&_osk_desc, parent, button);
430 if (osk == NULL || osk->
parent != parent || osk->
text_btn != button)
return;
447 return osk != NULL && osk->
parent == w && osk->
text_btn == button;