[Gambas-user] How to Change Keyboard Layout

Gianluigi bagonergi at gmail.com
Thu Oct 4 22:59:27 CEST 2018


With activated gb.desktop component:

Private $bArabian As Boolean

Public Sub Form_Open()

  Dim s As String
  Dim hTxt As TextBox

  hTxt = New TextBox(Me)
  hTxt.Foreground = Color.Transparent
  hTxt.SetFocus
  Me.Show
  Wait 0.1
  ' This combination works with the Italian layout and not with the
American one.
  ' You must find a combination suitable for Arabic.
  Desktop.SendKeys("{[Shift_L]6}")
  Wait 0.1
  s = hTxt.Text
  hTxt.Delete
  If s = "&" Then
    $bArabian = True
    Print "Arabian keyboard"
  Else
    $bArabian = False
    Print "American keyboard"
  Endif
  Print $bArabian

End

Public Sub txtArabian_GotFocus()
  ' I don't remember your shortcut to switch keyboard layout, supposing
Ctrl+K
  If $bArabian = False Then
    Desktop.SendKeys("{[Control_L]K}")
    $bArabian = True
  Endif

End

Public Sub txtAmerican_GotFocus()
  ' I don't remember your shortcut to switch keyboard layout, supposing
Ctrl+K
  If $bArabian Then
    Desktop.SendKeys("{[Control_L]K}")
    $bArabian = False
  Endif

End

Public Sub Form_KeyPress()

  If Key.Code = Key["K"] And If Key.Control Then
    Print "SWITCH KEYBOARD"
  End If

End

Regards
Gianluigi

Il giorno gio 4 ott 2018 alle ore 21:41 Wael M via User <
user at lists.gambas-basic.org> ha scritto:

> Thanks Gianluigi and thanks Lee
> you both put some solutions that seems brilliant but I got confused and
> couldn't get an appropriate code out of those
> is my fault I know but don't forget I'm new to Gambas
> so if you please could send me an example for a forum with two textboxes
> each one changes the keyboard language when it get focus, I will be
> profoundly appreciated
>
> thanks again for your valuable time
>
> --------------------------------------------
> On Thu, 10/4/18, T Lee Davidson <t.lee.davidson at gmail.com> wrote:
>
>  Subject: Re: [Gambas-user] How to Change Keyboard Layout
>  To: user at lists.gambas-basic.org
>  Date: Thursday, October 4, 2018, 3:08 PM
>
>  If each box will use a specific
>  layout, you could use a semaphore.
>
>  [code]
>  Public $IsEnglishLayout
>  = True
>
>  Public Sub
>  EnglishTextbox1_GotFocus()
>    If Not
>  $IsEnglishLayout then Destkop.Sendkeys(blah)
>    $IsEnglishLayout = True
>  End
>
>  Public Sub
>  ArabicTextbox1_GotFocus()
>    If
>  $IsEnglishLayout then Destkop.Sendkeys(blah)
>    $IsEnglishLayout = False
>  End
>  [/code]
>
>
>  ___
>  Lee
>
>
>  On 10/3/18 5:27 PM, Wael M
>  via User wrote:
>  > Thank you very much
>  Gianluigi for your help, grazie :)
>  > it
>  worked and could detect my language but not the way I
>  want
>  > let me tell you my story :)
>  > I came to linux from windows and I'm
>  trying to translate an app I did with VB to the
>  corresponding codes in Gambas.
>  > I
>  realized that Gambas is not the same as VB because Linux is
>  not the same as windows
>  > Gambas is just
>  using the same names and following the main rules of VB
>  > in my app I had a form that with three
>  textboxes are filled in Arabic and three are filled in
>  English
>  > when I put the cursor in a
>  textbox it detects the keyboard layout and change it to the
>  desired language
>  > I followed the code
>  you gave but I want to put the event of this code to be when
>  textbox got focus
>  > here is the problem,
>  when I put cursor in the desired textbox, it evokes the code
>  and losing the focus the focus again the textbox making it
>  evoking the same code again and so on
>  >
>  so what I really need is to detect the keyboard layout like
>  reading it directly from linux
>  >
>  > again and again thank you very much for
>  your patience and help
>
>  ----[ Gambas mailing-list is hosted by https://www.hostsharing.net ]----
>
>
> ----[ Gambas mailing-list is hosted by https://www.hostsharing.net ]----
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gambas-basic.org/pipermail/user/attachments/20181004/c825f7c4/attachment-0001.html>


More information about the User mailing list