Gambas-it

Gambas3 => Programmazione => Topic aperto da: tornu - 09 Luglio 2018, 12:06:23

Titolo: Tasto Caps Lock attivo
Inserito da: tornu - 09 Luglio 2018, 12:06:23
Buongiorno a tutti,
avendo la necessità in un mio programma di verificare se attivo il tasto Caps Lock (Maiuscole)
ho fatto una ricerca su Google non avendo trovato niente sul nostro Forum, mi sono imbattuto
su un post della Mailing ufficiale dove un utente faceva riferimento ad un vecchio programma di
un utente di questo Forum (Fsurfing) che aveva utilizzato questo codice
Codice: [Seleziona]
PUBLIC SUB Main()
  DIM sShellOutput AS String
  DIM iKeyLocks AS Integer
 
  SHELL "xset q | grep 'LED mask:'" TO sShellOutput
 
  sShellOutput = Replace(sShellOutput, " ", "")
 
  iKeyLocks = Val(Split(sShellOutput, ":")[3])
 
  SELECT iKeyLocks
    CASE 1
      PRINT "Caps Lock is ON"
    CASE 2
      PRINT "Num Lock is ON"
    CASE 3
      PRINT "Caps Lock is ON"
      PRINT "Num Lock is ON"
   END SELECT       
 END
La mia domanda è: si deve ricorrere obbligatoriamente alla Shell per verificarne lo stato?
Non ho trovato altre soluzioni
Titolo: Re:Tasto Caps Lock attivo
Inserito da: Gianluigi - 09 Luglio 2018, 13:19:10
Non so se questo può servirti:

Codice: [Seleziona]
Private $bMaiusc As Boolean

Public Sub Form_KeyRelease()

  If Key.Code = Key.CapsLock Then
    $bMaiusc = Not $bMaiusc
  Endif
 
  Print $bMaiusc

End

 :ciao: :ciao:

Avevo fatto un errore, scusa  :-[
Titolo: Re:Tasto Caps Lock attivo
Inserito da: vuott - 09 Luglio 2018, 18:12:36
La mia domanda è: si deve ricorrere obbligatoriamente alla Shell per verificarne lo stato?
Vi è anche la soluzione delle funzioni esterne del sistema SDL:

http://www.gambas-it.org/wiki/index.php?title=Sapere_via_codice_se_il_tasto_%27Blocco_Maiuscole%27_%C3%A8_attivo
Titolo: Re:Tasto Caps Lock attivo
Inserito da: tornu - 10 Luglio 2018, 20:02:57
La mia esigenza è verificare se all'avvio del programma il tasto maiuscole è attivo.

Grazie comunque per i suggerimenti, si apprende sempre qualcosa di interessante.
Titolo: Re:Tasto Caps Lock attivo
Inserito da: Gianluigi - 10 Luglio 2018, 22:55:54
La mia esigenza è verificare se all'avvio del programma il tasto maiuscole è attivo.

Grazie comunque per i suggerimenti, si apprende sempre qualcosa di interessante.

Questo potrebbe andare bene?:
Alcune precisazioni occorre attivare il componente gb.desktop dare alla TextBox 1 px di altezza e 1 di larghezza e aumentare i tempi della sospensione ad almeno 0.5.
Codice: [Seleziona]
Public Sub Form_Open()

  Dim s As String

  With TextBox1
    .Border = False
    .Background = Color.Transparent
    .Foreground = Color.Transparent
  End With
  Me.Show
  Wait 0.5
  Desktop.SendKeys("[a]")
  Wait 0.5
  s = TextBox1.Text
  Print s
  If s = "A" Then Message.Warning("ATTENZIONE: Il blocco maiuscole è attivo")
  TextBox1.Delete

End

 :ciao: :ciao:

Così è meglio