public IbusKeyboardSwitchingAdaptor(IIbusCommunicator ibusCommunicator)
        {
            _ibusComm = ibusCommunicator;

            if (KeyboardController.Instance != null)
            {
                KeyboardController.Instance.ControlAdded    += OnControlRegistered;
                KeyboardController.Instance.ControlRemoving += OnControlRemoving;
            }

            // Don't turn on any Ibus IME keyboard until requested explicitly.
            // If we do nothing, the first Ibus IME keyboard is automatically activated.
            _ibusComm.FocusIn();
            if (GlobalCachedInputContext.InputContext != null)
            {
                try
                {
                    var context = GlobalCachedInputContext.InputContext;
                    context.Reset();
                    GlobalCachedInputContext.Keyboard = null;
                    context.SetEngine("");
                    context.Disable();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
            _ibusComm.FocusOut();
        }
		public IbusKeyboardSwitchingAdaptor(IIbusCommunicator ibusCommunicator)
		{
			IBusCommunicator = ibusCommunicator;

			if (KeyboardController.EventProvider != null)
			{
				KeyboardController.EventProvider.ControlAdded += OnControlRegistered;
				KeyboardController.EventProvider.ControlRemoving += OnControlRemoving;
			}

			// Don't turn on any Ibus IME keyboard until requested explicitly.
			// If we do nothing, the first Ibus IME keyboard is automatically activated.
			IBusCommunicator.FocusIn();
			if (GlobalCachedInputContext.InputContext != null)
			{
				try
				{
					var context = GlobalCachedInputContext.InputContext;
					context.Reset();
					GlobalCachedInputContext.Keyboard = null;
					context.SetEngine("");
					context.Disable();
				}
				catch (Exception e)
				{
					Console.WriteLine(e);
				}
			}
			IBusCommunicator.FocusOut();
		}
예제 #3
0
        private void HandleLostFocus(object sender, EventArgs e)
        {
            if (!IBusCommunicator.Connected)
            {
                return;
            }

            IBusCommunicator.FocusOut();

            var eventHandler = GetEventHandlerForControl(sender as Control);

            if (eventHandler == null)
            {
                return;
            }

            eventHandler.CommitOrReset();
        }