symbolsactivesyncwindows-mobile-6.1keyboard-wedge

Is it possible to write a program on windows mobile to simulate a keyboard wedge connection when hooked up via USB


I'm writing an app for the Symbol MC9090Z which is a device running windows mobile 6.1 and is also a bar code / rfid reader.

I don't want to get too deep into what I'm doing but at a certain point in my mobile app it'd be very useful if I could use the scanner as a keyboard wedge to return whatever it scans.

I'm wondering if it's possible to do this. As far as I know there's no option to do this with the scanner itself, I can only hook the PC and Scanner via USB and putting client software on the PC itself isn't an option for my situation. I think using active-sync may be the only way to really hook the devices together. I'm wondering if anybody out there knows if it's possible to write a keyboard wedge app in this situation and if so how I would get started doing it?


Solution

  • Wow, that would be an expensive keyboard wedge! :).

    I don't think what you're wanting to do is possible in a way that would meet your requirements... When you connect the Symbol via USB cradle, it is not accessed as an input device. It is either accessed as a simple disk drive, or (if you have it synced with device center) it can be accessed via ActiveSync. There is no option to access it as an input device (without writing your own device driver, but since you can't install software on the computer, I'm guessing a custom device driver is not a possibility either).

    Have a look at the ActiveSync API. There are no methods for subscribing to input events on the device itself, but there are methods for transferring files and data (as one would expect). So, in theory you could perhaps use this API, but there are several dependencies:

    1. You'd need to write and run a custom program on the device that enables the barcode scanner and outputs any barcodes to your expected data format (or text files), and this program would need to be running on the device when users want to scan.
    2. Device would need to be cradled and accessible via ActiveSync.
    3. You would need to write a program running on the host computer using the ActiveSync API methods to capture this data.

    But you mention not putting client software on the computer itself, so in your situation, the above wouldn't be possible... Sorry, that's all I could come up with... Good luck!