- Home /
 
Windows Phone 8.1 TouchKeyboard problem
Hi, I am developing an application for Windows Store / Windows Phone 8.1 (Unity platform Windows Store, SDK Phone 8.1) and I have a problem with touch keyboard. I used the approach described here: http://answers.unity3d.com/questions/746682/how-to-use-and-test-the-virtual-keyboard-in-window.html (with few changes). The keyboard.text property does not work for me, so I use Input.inputString.
It works fine, but the problem is, by default I can write only Capital letters, if I want to write small caps, I have to shift down before every letter. Then the keyboard writes small cap, but immediately changes back to Capitals. Does anyone knows the solution to this problem, or is this just a Unity bug? I am using Unity 4.5.5f1.
Code I use to process keyboard input:
     // to display the keyboard
     public void ShowOnScreenKeyboard()
     {
         m_ActiveTextInput = this;
 
         TouchScreenKeyboard keyboard = TouchScreenKeyboard.Open(
             m_Text,
             TouchScreenKeyboardType.Default,
             false,
             false,
             false,
             false,
             PlaceholderString);
             
         keyboard.active = true;
         StartCoroutine("ProcessOnscreenKeyboardInput", keyboard);
     }
     
     //coroutine that processes input
     private IEnumerator ProcessOnscreenKeyboardInput(TouchScreenKeyboard keyboard)
     {
         m_TouchscreenKeyboard = keyboard;
         string text           = m_Text;
         float startTime       = Time.time;
         keyboard.active       = true;
         
         //wait for keyboard activation - just for sure, but sometimes keyboard really did not activate on time
         while(keyboard.done && Time.time - startTime < 1f)
         {
             yield return null;
         }
         
         while (keyboard != null && !keyboard.done && m_ActiveTextInput == this && keyboard.active == true)
         {
             if (Input.inputString.Length > 0)
             {
                 foreach (char c in Input.inputString)
                 {
                     if (c == '\b' && text.Length > 0)
                     {
                         // backspace: remove last char
                         text = text.Substring(0, text.Length - 1);
                     }
                     else
                     {
                         // add any other char to the string
                         text += c;
                     }
                 }
             }    
             
             SetText(text); // displays written text on screen
             yield return new WaitForEndOfFrame();
         }
     }
 
              Answer by chucky-w · Nov 18, 2014 at 02:16 PM
Found out, it is a Unity bug currently resolved in Unity 4.6 beta
Your answer
 
             Follow this Question
Related Questions
UWP Deployment Error :: DEP0001 : Unexpected Error: -2146958844 2 Answers
Build Universal Windows 10 apps. 0 Answers
BuildPipeline.BuildPlayer windows phone 8.1 0 Answers
Cannot bind to the target method 0 Answers
Windows app Splash Screen 0 Answers