Well,
after burning my eyes out until now trying to get this thing working i'm just about to give up !!!! 
I made some small changes to my main code and tryed many descriptors and configurations.
All descriptors in this forum, or dont compile, or are not accepted by the PC, etc.
I was able to modify some so that they would compile and accept by the PC as keyboard but i got strange results...
With the same main code, some descriptors jam my PC keyboard inputs like one of the keys got stucked ( mostly control key or Alt Gr ). Disconnecting the circuit dos not solve...only a restart.
I also noticed that if i changed the value from "usage minimum" retlw 0x19/retlw 0xE0 to retlw 0x19/retlw 0x04 i stopped getting the key stucked simptom.
Weird is that most keyboard descriptor examples use E0 value 
Anyway...
With the 04 value, when turning the circuit on i get a group of characters non stop "cdefh".
A second descriptor with also the 04 value sends out "CDEH37W*" non stop.
They both send characters even without any button being pressed...and with button pressed the output has the same characters.
Again, here are both main code and descriptor
Code:
'****************************************************************
'* Name : HID_USB_Keypad.BAS *
'* Author : Peter MacLeod *
'* Date : 01/30/2011 *
'* Version : 1.01 *
'* Notes : *
'****************************************************************
'@ CONFIG PLLDIV = 12 ;1=4MHz, 2=8MHz, 3=12MHz, 4=16MHz, 5=20MHz, 6=24MHz, 10=40MHz, 12=48MHz
'@ CONFIG FOSC = ECIO_EC ;XT_XT, XTPLL_XT, HS, HSPLL_HS, ECIO_EC
@ __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@ __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H
'@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_512_2H
'@ __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _MCLRE_OFF_3H
'OSCTUNE.6 = 1 ' Enable PLL for 18F87J50 family
DEFINE OSC 48
INCLUDE "KYPD_DESC.pbp"
'include "KBDDESC.pbp"
'include "DESCUSBProject.bas"
'include "KBDDESCMOJA.bas"
'DEFINE LOADER_USED 1
'DEFINE RESET_ORG 1100h
'DEFINE INTERRUPT_ORG 1108h
'ASM
'INT_LIST macro ; IntSource, Label, Type, ResetFlag?
' INT_Handler USB_INT, _SERVICE_USB, ASM, yes
' ;INT_Handler RBC_INT, _SERVICE_KYPD, PBP, yes
' endm
' INT_CREATE ; Creates the interrupt processor
'ENDASM
'-------------------------------------------------------------------------------
' System Settings
'-------------------------------------------------------------------------------
i VAR BYTE
BufferOut Var Byte[8]
ADCON1 = 15 ' Set all I/Os to Digital
INTCON2.7 = 1 ' Disable PortB Pullups
CMCON = 7 ' Disable Comparators
'-------------------------------------------------------------------------------
' Keypad Settings
'-------------------------------------------------------------------------------
TRISB = %01111111 'Set PORTB as inputs for keypad
Keypad_Debounce CON 60
KeyPress VAR BYTE
KeyPress_Old VAR BYTE
Keypad_Prev VAR PORTB.0
Keypad_Next VAR PORTB.1
Keypad_Play VAR PORTB.2
Keypad_Stop VAR PORTB.3
Keypad_Eject VAR PORTB.4
Keypad_Mute VAR PORTB.5
Keypad_VolUp VAR PORTB.6
led VAR PORTB.7
Keypress = 0
'KeyPress_Old = 0
'-------------------------------------------------------------------------------
'START USB AND INTERRUPTS
'-------------------------------------------------------------------------------
PAUSE 500 'TIME TO SETTLE
USBINIT 'INITIALIZE USB
USBSERVICE 'SERVICE USB
'UIE = $7F 'ENABLE USB INTERRUPTS
'UEIE = $9F 'ENABLE USB ERROR INTERRUPTS
'@ INT_ENABLE USB_INT
;@ INT_ENABLE RBC_INT
'-------------------------------------------------------------------------------
BufferOut[0] = 0
BufferOut[1] = 0
BufferOut[2] = 0
BufferOut[3] = 0
BufferOut[4] = 0
BufferOut[5] = 0
BufferOut[6] = 0
BufferOut[7] = 0
low led
pause 100
high led
pause 2500
low led
pause 100
'-------------------------------------------------------------------------------
' Main Subroutine
'-------------------------------------------------------------------------------
Main:
if Keypad_Prev=1 then
BufferOut[0] = 0
BufferOut[1] = 0
BufferOut[2] = $15
BufferOut[3] = 0
else
BufferOut[0] = 0
BufferOut[1] = 0
BufferOut[2] = 0
BufferOut[3] = 0
endif
gosub SERVICE_USB
GOSUB DoUSBOut
GOTO Main
'-------------------------------------------------------------------------------
' Transmit data on the USB bus
'-------------------------------------------------------------------------------
DoUSBOut:
USBService
USBOut 1, BufferOut, 8, DoUSBOut
RETURN
'-------------------------------------------------------------------------------
SERVICE_USB:
USBSERVICE
'@ INT_RETURN
return
Code:
'****************************************************************
'* Name : KYPD_DESC.BAS *
'* Author : Peter MacLeod *
'* Date : 25/07/2014 *
'* Version : 1.01 *
'* Notes : USB HID CNC Keypad Descriptor *
'****************************************************************
'USBMEMORYADDRESS Con $400 ' USB RAM starts here (set in device header file)
USBMEMORYSIZE Con 256 ' USB RAM size in bytes
USBReservedMemory Var Byte[USBMEMORYSIZE] USBMEMORYADDRESS ' Reserve memory used by USB assembler code
Goto kypd_desc_end ' Skip over all of the USB assembler code
Asm
#define USB_EP0_BUFF_SIZE 8 ; 8, 16, 32, or 64
#define USB_MAX_NUM_INT 1
#define USB_MAX_EP_NUMBER 1
#define NUM_CONFIGURATIONS 1
#define NUM_INTERFACES 1
#define UCFG_VAL USB_PULLUP_ENABLE|USB_INTERNAL_TRANSCEIVER|USB_FULL_SPEED|USB_PING_PONG__NO_PING_PONG
#define USB_POLLING
#define HID_INTF_ID 0x00
#define HID_EP 1
#define HID_INT_OUT_EP_SIZE 1
#define HID_INT_IN_EP_SIZE 1
#define HID_NUM_OF_DSC 1
include "usb_hid.asm" ; Include rest of USB files, starting with HID class code
DeviceDescriptor
retlw (EndDeviceDescriptor-DeviceDescriptor)/2 ; Length of this descriptor
retlw USB_DESCRIPTOR_DEVICE ; DEVICE descriptor type
retlw 0x10 ; USB Spec Release Number (low)
retlw 0x01 ; (high)
retlw 0x00 ; Class Code
retlw 0x00 ; Subclass code
retlw 0x00 ; Protocol code
retlw USB_EP0_BUFF_SIZE ; Max packet size for EP0
retlw 0x81 ; Vendor ID (low byte)
retlw 0x17 ; (high byte)
retlw 0xD1 ; Product ID (low byte)
retlw 0x07 ; (high byte)
;retlw 0x6F ; Product ID (low byte)
;retlw 0x09 ; (high byte)
retlw 0x01 ; Device release number (low)
retlw 0x00 ; (high)
retlw 0x01 ; Manufacturer string index
retlw 0x02 ; Product string index
retlw 0x00 ; Device serial number string index
retlw NUM_CONFIGURATIONS ; Number of possible configurations
EndDeviceDescriptor
USB_CD_Ptr
Configs
db low Config1, high Config1
db upper Config1, 0
Config1
retlw (Interface1-Config1)/2 ; Size of this descriptor in bytes
retlw USB_DESCRIPTOR_CONFIGURATION ; CONFIGURATION descriptor type
Config1Len
retlw low ((EndConfig1 - Config1)/2) ; Length of this configuration (low)
retlw high ((EndConfig1 - Config1)/2) ; (high)
retlw NUM_INTERFACES ; Number of interfaces in this cfg
retlw 0x01 ; Index value of this configuration
retlw 0x00 ; Configuration string index
retlw _DEFAULT|_SELF ; Attributes - bus powered
retlw 0x32 ; Max power consumption (2X mA)
Interface1
retlw (HIDDescriptor1-Interface1)/2 ; Size of this descriptor in bytes
retlw USB_DESCRIPTOR_INTERFACE ; INTERFACE descriptor type
retlw 0x00 ; Interface Number
retlw 0x00 ; Alternate Setting Number
retlw 0x01 ; Number of endpoints in this interface
retlw HID_INTF ; Class code
retlw BOOT_INTF_SUBCLASS ; Subclass code
retlw 0x00 ; Protocol code
retlw 0x00 ; Interface string index
HIDDescriptor1
retlw (Endpoint1In-HIDDescriptor1)/2 ; Size of this descriptor in bytes
retlw DSC_HID ; HID descriptor type
retlw 0x11 ; HID Spec Release Number in BCD format - 1.11 (low byte)
retlw 0x01 ; (high byte)
retlw 0x00 ; Country Code (0x00 for Not supported)
retlw HID_NUM_OF_DSC ; Number of class descriptors
retlw DSC_RPT ; Report descriptor type (HID)
ReportDescriptor1Len
retlw low ((EndReportDescriptor1-ReportDescriptor1)/2)
retlw high ((EndReportDescriptor1-ReportDescriptor1)/2)
Endpoint1In
retlw (EndConfig1-Endpoint1In)/2 ; length of descriptor
retlw USB_DESCRIPTOR_ENDPOINT ; ENDPOINT descriptor type
retlw HID_EP|_EP_IN ; EP1, In
retlw _INT ; Interrupt
retlw low (HID_INT_IN_EP_SIZE) ; This should be the size of the endpoint buffer
retlw high (HID_INT_IN_EP_SIZE)
retlw 0x0A ; polling interval (10ms)
EndConfig1
ENDASM
ASM
ReportDescriptor1
retlw 0x05
retlw 0x01 ; usage page (generic desktop)
retlw 0x09
retlw 0x06 ; usage (keyboard)
retlw 0xA1
retlw 0x01 ; collection (application)
retlw 0x05
retlw 0x07 ; usage (Key codes)
retlw 0x19
retlw 0x04 ; usage minimum (224) e0 04
retlw 0x29
retlw 0xE7 ; usage minimum (231)
retlw 0x15
retlw 0x00 ; logical minimum (0)
retlw 0x25
retlw 0x01 ; logical maximum (1)
retlw 0x75
retlw 0x01 ; report size (1)
retlw 0x95
retlw 0x08 ; report count (8)
retlw 0x81
retlw 0x02 ; Input (data,variable,absolute)
retlw 0x95
retlw 0x01 ; report count (1)
retlw 0x75
retlw 0x08 ; report size (8)
retlw 0x81
retlw 0x01 ; Input (constant)
retlw 0x95
retlw 0x05 ; report count (5)
retlw 0x75
retlw 0x01 ; report size (1)
retlw 0x05
retlw 0x08 ; usage page (page# for leds)
retlw 0x19
retlw 0x01 ; Usage minimum (1)
retlw 0x29
retlw 0x05 ; Usage maximum (5)
retlw 0x91
retlw 0x02 ; output (data,variable,absolute)
retlw 0x95
retlw 0x01 ; report count (1)
retlw 0x75
retlw 0x03 ; report size (3)
retlw 0x91
retlw 0x01 ; output (constant)
retlw 0x95
retlw 0x06 ; report count (6)
retlw 0x75
retlw 0x08 ; report size (8)
retlw 0x15
retlw 0x00 ; logical minimum (0)
retlw 0x25
retlw 0x65 ; logical maximum (101)
retlw 0x05
retlw 0x07 ; usage page (keycodes)
retlw 0x19
retlw 0x00 ; usage minimum (0)
retlw 0x29
retlw 0x65 ; usage maximum (101)
retlw 0x81
retlw 0x00 ; input (data, array)
retlw 0xC0 ; end collection
EndReportDescriptor1
USB_SD_Ptr
Strings
db low String0, high String0
db upper String0, 0
db low String1, high String1
db upper String1, 0
db low String2, high String2
db upper String2, 0
String0
retlw (String1-String0)/2 ; Size of this descriptor in bytes
retlw USB_DESCRIPTOR_STRING ; STRING descriptor type
retlw 0x09 ; Language ID as defined by MS - 0x0409 (low byte)
retlw 0x04 ; (high byte)
String1
retlw (String2-String1)/2
retlw USB_DESCRIPTOR_STRING
retlw 'R'
retlw 0x00
retlw 'J'
retlw 0x00
retlw 'C'
retlw 0x00
retlw ' '
retlw 0x00
retlw 'E'
retlw 0x00
retlw 'L'
retlw 0x00
retlw 'E'
retlw 0x00
retlw 'C'
retlw 0x00
retlw 'T'
retlw 0x00
retlw 'R'
retlw 0x00
retlw 'O'
retlw 0x00
retlw 'N'
retlw 0x00
retlw 'I'
retlw 0x00
retlw 'C'
retlw 0x00
String2
retlw (EndStringDescriptors-String2)/2
retlw USB_DESCRIPTOR_STRING
retlw 'H'
retlw 0x00
retlw 'I'
retlw 0x00
retlw 'D'
retlw 0x00
retlw ' '
retlw 0x00
retlw 'K'
retlw 0x00
retlw 'E'
retlw 0x00
retlw 'Y'
retlw 0x00
retlw ' '
retlw 0x00
retlw ' '
retlw 0x00
retlw 'T'
retlw 0x00
retlw 'E'
retlw 0x00
retlw 'S'
retlw 0x00
retlw 'T'
retlw 0x00
retlw 'E'
retlw 0x00
retlw 'R'
retlw 0x00
retlw ' '
retlw 0x00
retlw ' '
retlw 0x00
retlw ' '
retlw 0x00
retlw ' '
retlw 0x00
retlw '0'
retlw 0x00
retlw '1'
retlw 0x00
EndStringDescriptors
Endasm
kypd_desc_end ' End of skipped over USB assembler code
Although these are original from Peter MacLeod, they have suffered many changes in an effort of getting things to start working.
Bookmarks