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;