[Gambas-user] How to Change Keyboard Layout

Gianluigi bagonergi at gmail.com
Thu Oct 4 09:59:47 CEST 2018


> 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

I can not understand the reason for the loss of focus, in the simple tests
I made this does not happen, eg:

Public Sub TextBox1_GotFocus()

  keyboard(TextBox1)

End

Public Sub TextBox2_GotFocus()

  keyboard(TextBox2)

End

' Etcetera...

Private Sub keyboard(hTxt As TextBox)

  Dim s As String

  Desktop.SendKeys("{[Shift_L]6}")
  Wait 0.1
  s = Mid(hTxt.Text, hTxt.Pos, 1)
  Print s
  Wait 0.1
  Desktop.SendKeys("[BackSpace]")
  If s = "&" Then
    Print "Italian keyboard"
  Else
    Print "Stranger keyboard"
  Endif

End

Regards
Gianluigi

Il giorno gio 4 ott 2018 alle ore 01:00 Gianluigi <bagonergi at gmail.com> ha
scritto:

> If you get the layout when you open the app, it should work.
> Just keep an eye on the switches, e.g:
>
> Private $bItalian 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
>   Desktop.SendKeys("{[Shift_L]6}")
>   Wait 0.1
>   s = hTxt.Text
>
>   hTxt.Delete
>   If s = "&" Then
>     $bItalian = True
>     Print "Italian keyboard"
>   Else
>     $bItalian = False
>     Print "Stranger keyboard"
>   Endif
>   Print $bItalian
>
> End
>
> Public Sub Form_KeyPress()
>
>   ' I don't remember your shortcut to switch keyboard layout, supposing
> Ctrl+K
>   If Key.Code = Key["K"] And If Key.Control Then
>     $bItalian = Not $bItalian
>     Print $bItalian
>   End If
>
> End
>
> Regards
> Gianluigi
>
> Il giorno mer 3 ott 2018 alle ore 23:28 Wael M via User <
> user at lists.gambas-basic.org> ha scritto:
>
>> 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
>>
>> --------------------------------------------
>> On Wed, 10/3/18, Gianluigi <bagonergi at gmail.com> wrote:
>>
>>  Subject: Re: [Gambas-user] How to Change Keyboard Layout
>>  To: "Gambas Mailing List" <user at lists.gambas-basic.org>
>>  Date: Wednesday, October 3, 2018, 4:00 PM
>>
>>  With this code, I'm trying to explain better
>>  what I meant to say:
>>
>>  Public
>>  Sub TextBox1_GotFocus()
>>
>>    Dim s As String
>>
>>
>>  Desktop.SendKeys("{[Shift_L]6}")
>>    Wait 0.1
>>    s =
>>  TextBox1.Text
>>    Print s
>>
>>  Wait 0.1
>>    TextBox1.Clear
>>    If s = "&" Then
>>      Print "Italian keyboard"
>>    Else
>>      Print
>>  "Stranger keyboard"
>>    Endif
>>
>>  End
>>
>>  Regards
>>  Gianluigi
>>
>>  Il giorno
>>  mer 3 ott 2018 alle ore 09:45 Gianluigi <bagonergi at gmail.com>
>>  ha scritto:
>>  >Lee, I subscribed to the list
>>  you mentioned but should I repeate the same thread there or
>>  what?
>>
>>
>>
>>  >Charlie, thanks for your answer but it didn't
>>  exactly did what I want
>>
>>  >I'm using Ubuntu
>>
>>  >the code you put gave me this result:
>>  XKBLAYOUT=us,ara
>>
>>  >what I need to get is the current keyboard layout
>>
>>  >maybe I wasn't clear while putting my problem, so
>>  I"ll try to explain more
>>
>>  >I want to check my current keyboard layout so if its
>>  Arabic, it would be changed to English (in >some
>>  textboxes) and vices versa.
>>
>>  >i.e I want to use English in some textboxes and Arabic
>>  in others, and I
>>  want that to be done >through a code to check Keyboard
>>  layout and change
>>  it if needed or keep it if no need to change >it
>>
>>  >thanks in advance to everyone trying to help
>>
>>  This
>>  code that need to do something else, maybe you can direct it
>>  to a key that makes you understand if the keyboard is
>>  'ara' or 'us'.
>>  RegardsGianluigi
>>
>>
>>  ----[ Gambas mailing-list is hosted by https://www.hostsharing.net ]----
>>
>>  -----Inline Attachment Follows-----
>>
>>
>>
>> ----[ 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/0c3d0761/attachment.html>


More information about the User mailing list