Page 1 sur 2

Clavier multimédia

Publié : lun. 29/mai/2006 12:26
par lionel_om
Bonjour à tous.

J'avais réussi à repérer sur un ancien clavier les codes des touches multimédia (suivant, précédent, stop, etc.).

Mais là avec les nouveaux claviers, l'accès à ces fonctions ne semble plus se faire par le biais de touches : j'ai testé les keycode jusqu'à 500 et aucune ne correspond aux touches de lecture. J'ai essayé aussi en repérer un évènement par un callBack, mais sans succès : l'appui d'une touche multimédia ne déclenche pas une nouvel évènement (WaitWindowEvent() reste blocant et pas d'accès dans la fonction de CallBack).

Donc si vous avez une piste ou un code qui propose de gérer ces touches, je suis très très preneur !!! :D

Merci d'avance
Lio

Publié : lun. 29/mai/2006 18:32
par Flype
çà devrait pouvoir t'aider,
en tout cas les 9 touches multimédia de mon clavier usb sont bien reconnues.

Code : Tout sélectionner

If OpenWindow(0,100,100,200,200,"",#PB_Window_SystemMenu)
  
  Repeat
    
    Select WaitWindowEvent()
      
      Case #WM_CLOSE
        Break
        
      Case #WM_KEYUP
        
      Case #WM_KEYDOWN
        
        wParam.l = EventwParam() ; virtual-key code
        lParam.l = EventlParam() ; flags
        
        If lParam & $1000000
          Debug "Extended-key"
        Else
          Debug "Standard-key"
        EndIf
        
        Debug "Code: " + Str(wParam)
        Debug "Flags: " + RSet(Bin(lParam), 32, "0")
        
    EndSelect
    
  ForEver
  
EndIf

Publié : lun. 29/mai/2006 18:46
par Flype
et pour être encore plus précis:

Code : Tout sélectionner

Enumeration #VK_RMENU + 1 ; #VK pour Windows 2000/XP
  #VK_BROWSER_BACK
  #VK_BROWSER_FORWARD
  #VK_BROWSER_REFRESH
  #VK_BROWSER_STOP
  #VK_BROWSER_SEARCH
  #VK_BROWSER_FAVORITES
  #VK_BROWSER_HOME
  #VK_VOLUME_MUTE
  #VK_VOLUME_DOWN
  #VK_VOLUME_UP
  #VK_MEDIA_NEXT_TRACK
  #VK_MEDIA_PREV_TRACK
  #VK_MEDIA_STOP
  #VK_MEDIA_PLAY_PAUSE
  #VK_LAUNCH_MAIL
  #VK_LAUNCH_MEDIA_SELECT
  #VK_LAUNCH_APP1
  #VK_LAUNCH_APP2
EndEnumeration

If OpenWindow(0, 100, 100, 300, 200, "Touches Multimedia", #PB_Window_SystemMenu)
  
  Repeat
    
    Select WaitWindowEvent()
      
      Case #WM_CLOSE
        Break
        
      Case #WM_KEYDOWN
        
        If EventlParam() & $1000000
          
          Debug "Extended-key"
          
          Select EventwParam()
            Case #VK_BROWSER_BACK:        Debug "#VK_BROWSER_BACK"
            Case #VK_BROWSER_FORWARD:     Debug "#VK_BROWSER_FORWARD"
            Case #VK_BROWSER_REFRESH:     Debug "#VK_BROWSER_REFRESH"
            Case #VK_BROWSER_STOP:        Debug "#VK_BROWSER_STOP"
            Case #VK_BROWSER_SEARCH:      Debug "#VK_BROWSER_SEARCH"
            Case #VK_BROWSER_FAVORITES:   Debug "#VK_BROWSER_FAVORITES"
            Case #VK_BROWSER_HOME:        Debug "#VK_BROWSER_HOME"
            Case #VK_VOLUME_MUTE:         Debug "#VK_VOLUME_MUTE"
            Case #VK_VOLUME_DOWN:         Debug "#VK_VOLUME_DOWN"
            Case #VK_VOLUME_UP:           Debug "#VK_VOLUME_UP"
            Case #VK_MEDIA_NEXT_TRACK:    Debug "#VK_MEDIA_NEXT_TRACK"
            Case #VK_MEDIA_PREV_TRACK:    Debug "#VK_MEDIA_PREV_TRACK"
            Case #VK_MEDIA_STOP:          Debug "#VK_MEDIA_STOP"
            Case #VK_MEDIA_PLAY_PAUSE:    Debug "#VK_MEDIA_PLAY_PAUSE"
            Case #VK_LAUNCH_MAIL:         Debug "#VK_LAUNCH_MAIL"
            Case #VK_LAUNCH_MEDIA_SELECT: Debug "#VK_LAUNCH_MEDIA_SELECT"
            Case #VK_LAUNCH_APP1:         Debug "#VK_LAUNCH_APP1"
            Case #VK_LAUNCH_APP2:         Debug "#VK_LAUNCH_APP2"
          EndSelect
          
        Else
          
          Debug "Standard-key"
          
        EndIf
        
    EndSelect
    
  ForEver
  
EndIf

Publié : lun. 29/mai/2006 20:37
par lionel_om
Merci Flype.

Arf, j'ai pas ma clé USB sur moi, je récupère le code demain.

Mais j'ai l'impressin que c'est ce que j'avais fait pour pour lecteur MP3 (ALP). Ca marchait niquel sur mon ancien clavier, mais plus sur le nouveau. En tout cas je récupère ça demain qd même.

Merci :lol:

Publié : lun. 29/mai/2006 22:19
par Backup
chez moi ça marche niquel sur mon clavier logitech noir !! :D

Merci pour le code ! :D

Publié : mar. 30/mai/2006 8:02
par Good07
Chez moi ça ne marche pas :(

Il n'y a que les touches standards qui fonctionnent et les touches page up et page down.

Clavier Microsoft "Wireless mutimédia keyboard".

Publié : mar. 30/mai/2006 8:27
par Flype
il faut winXP ou win2000, as-tu essayé sur cet OS ?

Publié : mer. 31/mai/2006 9:07
par lionel_om
Non je confirme, chez moi ca ne marche pas sur mon nouveau clavier (Logitech Cordless Desktop S510 Media Remote). Mon ancien gérait très bien les touches multimédia avec ce code, mais pour le nouveau aucun signal ni touche ne sont détectés...

J'v aller regarder sur le forum anglais...

Publié : mer. 31/mai/2006 17:17
par Good07
Bonjour flype.

Désolé pour cette réponse tardive, mais j'utilise window XP version SP2 et ça ne marche pas. :(

Publié : mer. 31/mai/2006 23:39
par Flype
bah alors là je vois pas.

sinon question bête mais avez vous déjà un soft (livré avec le clavier ou pas) qui controle déjà ces touches, qui tourne en tache de fond ?

j'ai testé chez moi et au boulot, 2 claviers USB (1 Laptec, 1 Logitech ).
ca marche nickel. pour mes 2 claviers, dans le gestionnaire de périphériques, j'ai "Claviers -> Périphérique clavier PIH". Et vous ?
sachant que je n'ai justement pas installé de driver et/ou soft.

Publié : jeu. 01/juin/2006 9:20
par lionel_om
Oué y'a un soft qui tourne.
Moi aussi j'ai WinXp SP2.

Par contre ces touches multimédia marchent sous leurs logiciels, mais aussi Windows Media Player et sans doute d'autres...

Mais ni code touche, ni événement n'est envoyé, donc c'est bizarre :?
Ya pas d'autres moyens pour avoir des E/S ???

Publié : jeu. 01/juin/2006 15:38
par Good07
Moi dans le gestionnaire de périphérique j'ai "Clavier standard 101/102 touches ou clavier microsoft natural keyboard ps/2.
Mais j'ai aussi un soft qui tourne et effectivement mon clavier est bien géré par lui. Chaque fois que j'appuie sur une touche elle est bien reconnue, par contre sous Pure nada...Aucun évènements interceptés.
Comment font ils ?
I don't Know...

Publié : mar. 10/oct./2006 16:48
par Flype
voici un code de Karlkox qui pourrait faire l'affaire.

voir ici:
http://www.purebasic.fr/english/viewtopic.php?t=24059

@good007 et lionel_om

cela marche-t-il chez vous ?

Code : Tout sélectionner

Enumeration 
  #APPCOMMAND_BROWSER_BACKWARD        =   1 
  #APPCOMMAND_BROWSER_FORWARD 
  #APPCOMMAND_BROWSER_REFRESH 
  #APPCOMMAND_BROWSER_STOP 
  #APPCOMMAND_BROWSER_SEARCH 
  #APPCOMMAND_BROWSER_FAVORITES 
  #APPCOMMAND_BROWSER_HOME 
  #APPCOMMAND_VOLUME_MUTE 
  #APPCOMMAND_VOLUME_DOWN 
  #APPCOMMAND_VOLUME_UP 
  #APPCOMMAND_MEDIA_NEXTTRACK 
  #APPCOMMAND_MEDIA_PREVIOUSTRACK 
  #APPCOMMAND_MEDIA_STOP 
  #APPCOMMAND_MEDIA_PLAY_PAUSE 
  #APPCOMMAND_LAUNCH_MAIL 
  #APPCOMMAND_LAUNCH_MEDIA_SELECT 
  #APPCOMMAND_LAUNCH_APP1 
  #APPCOMMAND_LAUNCH_APP2 
  #APPCOMMAND_BASS_DOWN 
  #APPCOMMAND_BASS_BOOST 
  #APPCOMMAND_BASS_UP 
  #APPCOMMAND_TREBLE_DOWN 
  #APPCOMMAND_TREBLE_UP 
  
;#if(_WIN32_WINNT >= 0x0501) 
  #APPCOMMAND_MICROPHONE_VOLUME_MUTE 
  #APPCOMMAND_MICROPHONE_VOLUME_DOWN 
  #APPCOMMAND_MICROPHONE_VOLUME_UP 
  #APPCOMMAND_HELP 
  #APPCOMMAND_FIND 
  #APPCOMMAND_NEW 
  #APPCOMMAND_OPEN 
  #APPCOMMAND_CLOSE 
  #APPCOMMAND_SAVE 
  #APPCOMMAND_PRINT 
  #APPCOMMAND_UNDO 
  #APPCOMMAND_REDO 
  #APPCOMMAND_COPY 
  #APPCOMMAND_CUT 
  #APPCOMMAND_PASTE 
  #APPCOMMAND_REPLY_TO_MAIL 
  #APPCOMMAND_FORWARD_MAIL 
  #APPCOMMAND_SEND_MAIL 
  #APPCOMMAND_SPELL_CHECK 
  #APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 
  #APPCOMMAND_MIC_ON_OFF_TOGGLE 
  #APPCOMMAND_CORRECTION_LIST 
  #APPCOMMAND_MEDIA_PLAY 
  #APPCOMMAND_MEDIA_PAUSE 
  #APPCOMMAND_MEDIA_RECORD 
  #APPCOMMAND_MEDIA_FAST_FORWARD 
  #APPCOMMAND_MEDIA_REWIND 
  #APPCOMMAND_MEDIA_CHANNEL_UP 
  #APPCOMMAND_MEDIA_CHANNEL_DOWN 
EndEnumeration 

Macro LOWORD(Value) 
  Value & $FFFF 
EndMacro 

Macro HIWORD(Value) 
  (Value >> 16) & $FFFF 
EndMacro 

#FAPPCOMMAND_MASK  = $F000 
Macro GET_APPCOMMAND_LPARAM(lParam) 
  HIWORD(lParam) & ~#FAPPCOMMAND_MASK 
EndMacro 

Procedure WndProc(WindowID, message, wParam, lParam) 
Protected result.l, cmd.l 

  result = #PB_ProcessPureBasicEvents 
  
  If message = #WM_APPCOMMAND 
    cmd = GET_APPCOMMAND_LPARAM(lParam) 
    Debug "cmd = " + Str(cmd) 
  EndIf 
  
  ProcedureReturn Result 
EndProcedure 

If OpenWindow(0,0,0,320,240,"Multimedia Keyboard Extension") 
  SetWindowCallback(@WndProc()) 
  Repeat : event = WaitWindowEvent() : Until event = #PB_Event_CloseWindow 
EndIf

Publié : mer. 11/oct./2006 7:39
par lionel_om
Merci Flype pour ce code.

Avec un ancien clavier multimédia ca marche nickel, par contre n'étant pas chez moi (mais au boulot) j'v tester ça ce soir en rentrant.

Si ca marche tu seras mon héros ! :lol:

Publié : mer. 11/oct./2006 8:53
par Flype
pas moi - karlkox oui - moi j'ai juste pensé à toi :wink: