• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

Attn: Wacom Tablet Users

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.
Thanks for giving it a test tannim :) That error is probably from JTablet being copied to the wrong location when you ran make install (actually, you should be seeing a NoClassDefFoundError except for two files I accidently put in the examples directory :bang head)

The two JTablet files were supposed to be copied to:
  • $JAVA_HOME/lib/i386/libjtablet.so
  • $JAVA_HOME/lib/ext/jtablet.jar
  • $JDK_HOME/jre/lib/i386/libjtablet.so
  • $JDK_HOME/jre/lib/ext/jtablet.jar

The installer actually copied files to:
  • /usr/lib/java/jre/lib/i386/libjtablet.so
  • /usr/lib/java/jre/lib/ext/jtablet.jar
  • /usr/lib/java/jre/lib/i386/libjtablet.so
  • /usr/lib/java/jre/jtablet.jar

Based on this, root should have the following environment variables:
  • JAVA_HOME = /usr/lib/java/jre
  • JDK_HOME = /usr/lib/java

Run echo $JAVA_HOME and echo $JDK_HOME to see if your $JAVA_HOME and $JDK_HOME match up with the ones root has. If they're different, you can copy the files to their correct location (or try running make test_applet2 as root)

JigPu
 
I manually moved the SO and JAR files into the java directory. The java home and JDK home were correctly exported, but apparently the java one was ignored or something because the files were not put in it's i386 or EXT directories.

New test_applet output

cd ../examples && appletviewer JTablet-test2.html
using java 2! (v1.4+!)
INFO : Initializing tablets. Version 20 for X11
INFO : Closing all known tablets.
INFO : Tablet(s) closed.
INFO : Connected to X server.
INFO : Enumerating devices...
DEBUG: Found: deviceInfo[0].name = Virtual core keyboard, type = 0, id = 0
INFO : Constructing new XTabletDevice (id = 0, type = 0)
INFO : Constructing new XWacomDevice (id = 0, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 1
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core keyboard
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[1].name = Virtual core pointer, type = 0, id = 1
INFO : Constructing new XTabletDevice (id = 1, type = 0)
INFO : Constructing new XWacomDevice (id = 1, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 0
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core pointer
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[2].name = Keyboard1, type = 86, id = 2
INFO : Constructing new XTabletDevice (id = 2, type = 86)
INFO : Constructing new XWacomDevice (id = 2, type = 86)
DEBUG: Verifying compatibility:
DEBUG: + use = 3
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 86
DEBUG: + name = Keyboard1
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[3].name = Tablet, type = 185, id = 3
INFO : Constructing new XTabletDevice (id = 3, type = 185)
INFO : Constructing new XWacomDevice (id = 3, type = 185)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 185
DEBUG: + name = Tablet
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[4].name = ConfiguredMouse, type = 87, id = 4
INFO : Constructing new XTabletDevice (id = 4, type = 87)
INFO : Constructing new XWacomDevice (id = 4, type = 87)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 87
DEBUG: ! Mouse not supported.
DEBUG: + name = ConfiguredMouse
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
WARN : No tablet(s) detected.
cello.tablet.JTabletException: Could not initialize tablet.
at cello.tablet.JTablet.initializeTablet(Native Method)
at cello.tablet.JTablet.<init>(JTablet.java:84)
at cello.tablet.JTablet.<init>(JTablet.java:72)
at cello.tablettest.JTablettest2.init(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at cello.tablettest.JTablettest2.init(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
 
I've checked out the Wizardpen drivers, but unfortunatly haven't been able to learn much of value. :( I do know that the Wizardpen driver lays out its axes in the same way as the Wacom driver (based on Marupa's partial success at getting JTablet to work), so my code should work once you get over all the hurdles.

The current hurdle appears to be caused by your Wizardpen failing the compatibility check. Right now (since I've yet to find a better way to distinguish tablets from other devices) JTablet requires that the tablet device be named "stylus", "eraser", or "cursor" (the standard Wacom device names). I'm going to also add in "Tablet" and "Wizardpen Tablet" as legal possiblities though, since the Wizardpen driver appears to be at least somewhat compatible with my code :)

I saw your recent post here while doing some research, and was wondering if you've tried JPen yet and what your results were. I'm going to be taking another look at its sourcecode to see if they have a better way to determine tablets from non-tablets, since my current compatibility check is way too conservative...

New version will be up shortly... I'll edit this post when its available.

EDIT: New version has been uploaded. Your tablet should now pass the compatibility check.

JigPu
 
Last edited:
No, I haven't tried Jpen yet. I can't figure out how to install the thing. There are no installation instructions anywhere on the site or forum.
 
Failed it seems

cd ../examples && appletviewer JTablet-test2.html
using java 2! (v1.4+!)
INFO : Initializing tablets. Version 20 for X11
INFO : Closing all known tablets.
INFO : Tablet(s) closed.
INFO : Connected to X server.
INFO : Enumerating devices...
DEBUG: Found: deviceInfo[0].name = Virtual core keyboard, type = 0, id = 0
INFO : Constructing new XTabletDevice (id = 0, type = 0)
INFO : Constructing new XWacomDevice (id = 0, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 1
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core keyboard
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[1].name = Virtual core pointer, type = 0, id = 1
INFO : Constructing new XTabletDevice (id = 1, type = 0)
INFO : Constructing new XWacomDevice (id = 1, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 0
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core pointer
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[2].name = Keyboard1, type = 86, id = 2
INFO : Constructing new XTabletDevice (id = 2, type = 86)
INFO : Constructing new XWacomDevice (id = 2, type = 86)
DEBUG: Verifying compatibility:
DEBUG: + use = 3
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 86
DEBUG: + name = Keyboard1
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[3].name = Tablet, type = 185, id = 3
INFO : Constructing new XTabletDevice (id = 3, type = 185)
INFO : Constructing new XWacomDevice (id = 3, type = 185)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 185
DEBUG: + name = Tablet
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[4].name = ConfiguredMouse, type = 87, id = 4
INFO : Constructing new XTabletDevice (id = 4, type = 87)
INFO : Constructing new XWacomDevice (id = 4, type = 87)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 87
DEBUG: ! Mouse not supported.
DEBUG: + name = ConfiguredMouse
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
WARN : No tablet(s) detected.
cello.tablet.JTabletException: Could not initialize tablet.
at cello.tablet.JTablet.initializeTablet(Native Method)
at cello.tablet.JTablet.<init>(JTablet.java:84)
at cello.tablet.JTablet.<init>(JTablet.java:72)
at cello.tablettest.JTablettest2.init(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at cello.tablettest.JTablettest2.init(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
 
Looks like its still using the old version. I imagine that since "make install" didn't work correctly for you last time, something went haywire yet again :(

Try copying the two files again like I outlined above and then running the test again. One of the very first lines of output should be "INFO : Initializing tablets. Version 21 for X11", since version 21 is what I just uploaded. If you still see version 20, try a "make clean" followed by a "make", and then copying the newly-created libjtablet.so from the c++src/X11 directory to the proper Java directories.

JigPu
 
Last edited:
It did work that time. Pressure is reported up to 1024 as is correct. I cannot post the output just yet, but I am loading my paintchat to see if it will work. Though linux is incredibly slow loading paintchat, I'm not sure why. Iceweasle completely crashes trying to load it. Opera sort of managed but not really... it is related to jtablet.

I will post some output when I am done
 
Marupa reported slowness with his Wizardpen when using the Sketcher applet. It could be the same thing you're seeing, though I as yet haven't managed to come up with a reason for it. If you notice that pressure appears to be lagging behind what you're actually doing, then its very likely to be the same problem.

Best of luck with your test!
JigPu
 
Ok, pressure DID work in my paintchat. Sort of. The pressure button does turn on the pressure window, though I had to move it after it popped up before it showed the correct window contents. Also I did get visual variation in both color and size of brush.

I am not entirely sure this is because of the driver. My linux seems to be lagging on this computer for some reason, especially wireless internet. That could be part of the reason for my results.

Both size and opacity worked, but not very well. Sometimes it was instantly dark, sometimes it was very light. The gradients were very visible where the pressure turned from one level to another instead of a smooth gradient there were circles that showed many colors skipped before it caught back up. Size was equally unreliable, sometimes big, sometimes small, neither were always in relation to pressure I was putting on it.

Below is the abridged output of test_applet2

cd ../examples && appletviewer JTablet-test2.html
using java 2! (v1.4+!)
INFO : Initializing tablets. Version 21 for X11
INFO : Closing all known tablets.
INFO : Tablet(s) closed.
INFO : Connected to X server.
INFO : Enumerating devices...
DEBUG: Found: deviceInfo[0].name = Virtual core keyboard, type = 0, id = 0
INFO : Constructing new XTabletDevice (id = 0, type = 0)
INFO : Constructing new XWacomDevice (id = 0, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 1
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core keyboard
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[1].name = Virtual core pointer, type = 0, id = 1
INFO : Constructing new XTabletDevice (id = 1, type = 0)
INFO : Constructing new XWacomDevice (id = 1, type = 0)
DEBUG: Verifying compatibility:
DEBUG: + use = 0
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 0
DEBUG: + name = Virtual core pointer
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[2].name = Keyboard1, type = 86, id = 2
INFO : Constructing new XTabletDevice (id = 2, type = 86)
INFO : Constructing new XWacomDevice (id = 2, type = 86)
DEBUG: Verifying compatibility:
DEBUG: + use = 3
DEBUG: ! Not an extension device.
DEBUG: ! Not an extension pointer.
INFO : + Device failed test, but allowing anyway...
DEBUG: + type = 86
DEBUG: ! Keyboard not supported.
DEBUG: + name = Keyboard1
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[3].name = Tablet, type = 185, id = 3
INFO : Constructing new XTabletDevice (id = 3, type = 185)
INFO : Constructing new XWacomDevice (id = 3, type = 185)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 185
DEBUG: + name = Tablet
DEBUG: Detected 2 classes:
DEBUG: + Class 0 is a ButtonClass. There are 3 buttons.
DEBUG: + Class 1 is a ValuatorClass. There are 3 valuators.
DEBUG: * Valuator #0: 1280 - 0 (resolution: 1000)
DEBUG: * Valuator #1: 1024 - 0 (resolution: 1000)
DEBUG: * Valuator #2: 1023 - 0 (resolution: 1000)
DEBUG: Selecting extension events:
DEBUG: + device: 3 type: 104 base: 104 class: 5 offset: 0
DEBUG: eventTable[0][0] = 104
DEBUG: * eventTable[0][1] = XI_DeviceFocusIn
DEBUG: + device: 3 type: 105 base: 104 class: 5 offset: 1
DEBUG: eventTable[1][0] = 105
DEBUG: * eventTable[1][1] = XI_DeviceFocusOut
DEBUG: + device: 3 type: 103 base: 103 class: 2 offset: 0
DEBUG: eventTable[2][0] = 103
DEBUG: * eventTable[2][1] = XI_DeviceMotionNotify
DEBUG: + device: 3 type: 108 base: 108 class: 6 offset: 0
DEBUG: eventTable[3][0] = 108
DEBUG: * eventTable[3][1] = XI_DeviceStateNotify
DEBUG: + device: 3 type: 106 base: 106 class: 4 offset: 0
DEBUG: eventTable[4][0] = 106
DEBUG: eventTable[4][1] = XI_ProximityIn
DEBUG: + device: 3 type: 107 base: 106 class: 4 offset: 1
DEBUG: eventTable[5][0] = 107
DEBUG: * eventTable[5][1] = XI_ProximityOut
DEBUG: + device: 3 type: 102 base: 101 class: 1 offset: 1
DEBUG: eventTable[6][0] = 102
DEBUG: * eventTable[6][1] = XI_DeviceButtonRelease
DEBUG: + device: 3 type: 101 base: 101 class: 1 offset: 0
DEBUG: eventTable[7][0] = 101
DEBUG: * eventTable[7][1] = XI_DeviceButtonPress
DEBUG: ? device: 3 type: 104
DEBUG: ? device: 3 type: 105
DEBUG: ? device: 3 type: 103
DEBUG: ? device: 3 type: 108
DEBUG: ? device: 3 type: 106
DEBUG: ? device: 3 type: 107
DEBUG: ? device: 3 type: 102
DEBUG: ? device: 3 type: 101
DEBUG: ? device: 0 type: 0
DEBUG: ? device: 0 type: 73
DEBUG: ? device: 3 type: 104
DEBUG: ? device: 3 type: 105
DEBUG: ? device: 3 type: 103
DEBUG: ? device: 3 type: 108
DEBUG: ? device: 3 type: 106
DEBUG: ? device: 3 type: 107
DEBUG: Found: deviceInfo[4].name = ConfiguredMouse, type = 87, id = 4
INFO : Constructing new XTabletDevice (id = 4, type = 87)
INFO : Constructing new XWacomDevice (id = 4, type = 87)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 87
DEBUG: ! Mouse not supported.
DEBUG: + name = ConfiguredMouse
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
INFO : Tablet(s) initialized.
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet

DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: pollToLatest = 1; skippedEvents = 0
INFO : Cursors differ! Was cursorPhysicalId = 65535, cursorId = 65535; Now cursorPhysicalId = 3, cursorId = 3
DEBUG: Checking if returned cursor is non-null
DEBUG: JTablet_makeCursor(
DEBUG: env->FindClass("cello/tablet/JTabletCursor")
DEBUG: find success
Failed to get static field dataMaximum
Failed to get static field field_dataMinimum
Failed to get static field field_dataIsAvailable
Failed to get static field field_dataSupported
DEBUG: AllocObject
DEBUG: <init>
DEBUG: global ref
DEBUG: new node
DEBUG: fill node
DEBUG: insert node
DEBUG: JTablet_makeCursor);
DEBUG: Checking if created cursor is non-null
INFO : Initializing Cursor cursorPhysicalId = 3, cursorId = 3.
INFO : Getting cursor data
DEBUG: Locating device id 3
DEBUG: Getting Cursor Info
INFO : Getting cursor data
DEBUG: Locating device id 3
DEBUG: Getting Button Info
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
INFO : Getting cursor data
DEBUG: Locating device id 3
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1

DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1

DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: Finding button mask.
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
 
Have you tried your tablet in GIMP yet? That would be a good test to determine if its my code or your system which is causing problems.

To get GIMP working with your tablet, open it, go to "File -> Preferenes" and select the "Input Devices" option on the left. Click the "Configure Extended Input Devices..." button on the right. Select your tablet from the Device dropdown, and make sure that the axes are set correctly (X = 1; Y = 2; Pressure = 3). Save and exit out of all the dialogs, and then create a new image. Choose the Paintbrush tool, make sure that one of its Pressure Sensitivity options is selected, and then try making a few strokes in the canvas.

If the program appears to be responding smoothly to pressure then your problem is a bug in my code. Marupa was having similar problems, but I not been able to figure out what causes it. It might be related to the Wizardpen specifically, but I haven't had enough people test with Wacoms to be sure.

JigPu
 
Can talk on IMs if you want faster replies :)

Ok, the problem in the code seems to be how fast you read the pressure.

The x and y coordinates are read instantly but using the test applet I saw that there was a noticeable delay in reacting to the pressure from the tablet. I can tap and let up before the test applet showed any reaction to pressure. I can even tap repeatedly and watch it stay 0, then increase, then decrease to 0, then increase again and decrease again for each tap. The reading and reaction time of pressure is too slow.
 
tannim,

I've incorporated your suggestions over IM into v23 which is now available for download. I've also added in the debug message for events which might have been disappearing earlier without a trace. Go ahead and give it a shot. It probably won't improve your performance, but be on the lookout for any messages saying "ReadTablet fell through to default case. Some tablet data was lost."

EDIT: By the way... If you surround the pasted output with
Code:
blocks, the forum won't touch the formatting :)

JigPu
 
could you add an event reporting analyser that analyses every output to only report a new line if that event has changed? Either that or have it output to a file that we could send you through email or whatever.

I'm not sure about the Valuator values. I don't know the resolution of the tablet, though NewEgg lists it as up to 4000lines per inch.
There are a good number of default case events, but I can't say when they apear because it seems to do a lot of lines for each press.

The test_applet reports pressure a lot faster suddenly for me. I can do a bunch of rapid taps that it can't keep up with but normal tapping it keeps up just fine now.

No improvement on functionality for drawing though.

Could a problem be reading pressure as reported by or probably reporting to java rather than a read problem from X or the wizardpen driver?

Output:
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 253
DEBUG: + name = Tablet
DEBUG: Detected 2 classes:
DEBUG: + Class 0 is a ButtonClass. There are 3 buttons.
DEBUG: + Class 1 is a ValuatorClass. There are 3 valuators.
DEBUG: * Valuator #0: 1280 - 0 (resolution: 1000)
DEBUG: * Valuator #1: 800 - 0 (resolution: 1000)
DEBUG: * Valuator #2: 1023 - 0 (resolution: 1000)
DEBUG: Selecting extension events:
DEBUG: + device: 3 type: 85 base: 85 class: 5 offset: 0
DEBUG: eventTable[0][0] = 85
DEBUG: * eventTable[0][1] = XI_DeviceFocusIn
DEBUG: + device: 3 type: 86 base: 85 class: 5 offset: 1
DEBUG: eventTable[1][0] = 86
DEBUG: * eventTable[1][1] = XI_DeviceFocusOut
DEBUG: + device: 3 type: 84 base: 84 class: 2 offset: 0
DEBUG: eventTable[2][0] = 84
DEBUG: * eventTable[2][1] = XI_DeviceMotionNotify
DEBUG: + device: 3 type: 89 base: 89 class: 6 offset: 0
DEBUG: eventTable[3][0] = 89
DEBUG: * eventTable[3][1] = XI_DeviceStateNotify
DEBUG: + device: 3 type: 87 base: 87 class: 4 offset: 0
DEBUG: eventTable[4][0] = 87
DEBUG: eventTable[4][1] = XI_ProximityIn
DEBUG: + device: 3 type: 88 base: 87 class: 4 offset: 1
DEBUG: eventTable[5][0] = 88
DEBUG: * eventTable[5][1] = XI_ProximityOut
DEBUG: + device: 3 type: 83 base: 82 class: 1 offset: 1
DEBUG: eventTable[6][0] = 83
DEBUG: * eventTable[6][1] = XI_DeviceButtonRelease
DEBUG: + device: 3 type: 82 base: 82 class: 1 offset: 0
DEBUG: eventTable[7][0] = 82
DEBUG: * eventTable[7][1] = XI_DeviceButtonPress
DEBUG: ? device: 3 type: 85
DEBUG: ? device: 3 type: 86
DEBUG: ? device: 3 type: 84
DEBUG: ? device: 3 type: 89
DEBUG: ? device: 3 type: 87
DEBUG: ? device: 3 type: 88
DEBUG: ? device: 3 type: 83
DEBUG: ? device: 3 type: 82
DEBUG: Found: deviceInfo[4].name = Pad1, type = 127, id = 4
INFO : Constructing new XTabletDevice (id = 4, type = 127)
INFO : Constructing new XWacomDevice (id = 4, type = 127)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 127
DEBUG: ! Mouse not supported.
DEBUG: + name = Pad1
WARN : ! This device failed one or more compatibility checks
DEBUG: Found: deviceInfo[5].name = ConfiguredMouse, type = 127, id = 5
INFO : Constructing new XTabletDevice (id = 5, type = 127)
INFO : Constructing new XWacomDevice (id = 5, type = 127)
DEBUG: Verifying compatibility:
DEBUG: + use = 4
DEBUG: + type = 127
DEBUG: ! Mouse not supported.
DEBUG: + name = ConfiguredMouse
DEBUG: ! Name does not match one of recognized types.
WARN : ! This device failed one or more compatibility checks
INFO : Tablet(s) initialized.


DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: Finding button mask.
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1

DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: Default Case-EventIgnored
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet

DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: Default Case-EventIgnored
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: No interesting events in the queue. Returning from ReadTablet
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: Default Case-EventIgnored
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: pollToLatest = 1; skippedEvents = 1
DEBUG: Finding button mask.
DEBUG: pollToLatest = 1; skippedEvents = 0
DEBUG: pollToLatest = 1; skippedEvents = 1
 
I put in the "output analyzer" in the latest version, so it appears that the old version is still being run. Any performance gain you're seeing is either the placebo effect, or indication of a variable component to this problem...

Have you set the JAVA_HOME and JDK_HOME variables to both be /usr/lib/jvm/java-6-sun (at least I think that's what we decided they should be in your case)? Those two variables define where to install the files, so if they're wrong you'd still be running the old version :) If you have set them, you'll need to copy the two files over by hand again :(

As for writing to a file, I didn't put that in the latest version for a number of reasons. However saving the output to a file is very simple, and I'll be posting instructions on how in the first post later today. Very quickly, though it just consists of doing
Code:
make test_applet2 2> output.txt
instead of just
Code:
make test_applet2
when you try to run the file. The "2>" tells Linux to redirect STDERR (where the output is written) to a file for you. You won't see anything on the screen if you do it, but everything that was displayed will be in the file.

JigPu
 
Code:
==> Starting build()...
make -C X11
make[1]: Entering directory `/var/abs/local/jtablet/src/jtablet-sdk-v0.9.5_linux/c++src/X11'
g++ -g3 -dDEBUG -D PRINT_DEBUG -Wall -D REENTRANT -D GNU_SOURCE -D PRINT_INFO -I/opt/java//include -I/opt/java//include/linux -fPIC -c ../cello_tablet_JTablet.cpp -o ../cello_tablet_JTablet.o
In file included from ../JTablet.h:37,
                 from ../cello_tablet_JTablet.cpp:33:
../Log.h:38: error: ‘clock_t’ in namespace ‘std’ does not name a type
make[1]: *** [../cello_tablet_JTablet.o] Error 1
make[1]: Leaving directory `/var/abs/local/jtablet/src/jtablet-sdk-v0.9.5_linux/c++src/X11'
make: *** [all] Error 2
==> ERROR: Build Failed.
    Aborting...
This is v23, same system, double checked for all dependencies. (Arch is bleeding edge, so all the components have been heavily upgraded)
 
I managed to get JTablet installed, but I still can't seem to make it work. The test applet fails to initialize. I'm using a Wacom Graphire3 on Ubuntu 8.04.1 Hardy Heron.
Here's the commandline output:

Code:
ripps@ripps-desktop:~/Downloads/jtablet-sdk-v0.9.5_linux/c++src$ make test_applet2
cd ../examples && appletviewer JTablet-test2.html
using java 2! (v1.4+!)
0        INFO: 	Initializing tablets. Version 23 for X11

0        INFO: 	Closing all known tablets.
0        INFO: 	Tablet(s) closed.
0        INFO: 	Connected to X server.
0        INFO: 	Enumerating devices...
0        DEBUG:	Found: deviceInfo[0].name = Virtual core keyboard, type = 0, id = 0
0        INFO: 	Constructing new XTabletDevice (id = 0, type = 0
0        INFO: 	Constructing new XWacomDevice (id = 0, type = 0
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 1
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 0
0        DEBUG:	      + name = Virtual core keyboard
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[1].name = Virtual core pointer, type = 0, id = 1
0        INFO: 	Constructing new XTabletDevice (id = 1, type = 0
0        INFO: 	Constructing new XWacomDevice (id = 1, type = 0
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 0
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 0
0        DEBUG:	      + name = Virtual core pointer
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[2].name = Generic Keyboard, type = 94, id = 2
0        INFO: 	Constructing new XTabletDevice (id = 2, type = 94
0        INFO: 	Constructing new XWacomDevice (id = 2, type = 94
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 94
0        DEBUG:	         ! Keyboard not supported.
0        DEBUG:	      + name = Generic Keyboard
0        DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[3].name = Wacom Mouse, type = 221, id = 3
10000    INFO: 	Constructing new XTabletDevice (id = 3, type = 221
10000    INFO: 	Constructing new XWacomDevice (id = 3, type = 221
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 4
10000    DEBUG:	      + type = 221
10000    DEBUG:	      + name = Wacom Mouse
10000    DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[4].name = Wacom Eraser, type = 222, id = 4
10000    INFO: 	Constructing new XTabletDevice (id = 4, type = 222
10000    INFO: 	Constructing new XWacomDevice (id = 4, type = 222
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 4
10000    DEBUG:	      + type = 222
10000    DEBUG:	      + name = Wacom Eraser
10000    DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[5].name = Wacom Pen, type = 223, id = 5
10000    INFO: 	Constructing new XTabletDevice (id = 5, type = 223
10000    INFO: 	Constructing new XWacomDevice (id = 5, type = 223
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 4
10000    DEBUG:	      + type = 223
10000    DEBUG:	      + name = Wacom Pen
10000    DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[6].name = Wacom Tablet, type = 224, id = 6
10000    INFO: 	Constructing new XTabletDevice (id = 6, type = 224
10000    INFO: 	Constructing new XWacomDevice (id = 6, type = 224
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 4
10000    DEBUG:	      + type = 224
10000    DEBUG:	      + name = Wacom Tablet
10000    DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[7].name = Configured Mouse, type = 95, id = 7
10000    INFO: 	Constructing new XTabletDevice (id = 7, type = 95
10000    INFO: 	Constructing new XWacomDevice (id = 7, type = 95
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 4
10000    DEBUG:	      + type = 95
10000    DEBUG:	         ! Mouse not supported.
10000    DEBUG:	      + name = Configured Mouse
10000    DEBUG:	         ! Name does not match one of recognized types.
10000    DEBUG:	Found: deviceInfo[8].name = Generic Keyboard, type = 94, id = 8
10000    INFO: 	Constructing new XTabletDevice (id = 8, type = 94
10000    INFO: 	Constructing new XWacomDevice (id = 8, type = 94
10000    DEBUG:	   Verifying compatibility:
10000    DEBUG:	      + use = 3
10000    DEBUG:	         ! Not an extension device.
10000    DEBUG:	         ! Not an extension pointer.
10000    INFO: 	         + Device failed test, but allowing anyway...
10000    DEBUG:	      + type = 94
10000    DEBUG:	         ! Keyboard not supported.
10000    DEBUG:	      + name = Generic Keyboard
10000    DEBUG:	         ! Name does not match one of recognized types.
cello.tablet.JTabletException: Could not initialize tablet.
	at cello.tablet.JTablet.initializeTablet(Native Method)
	at cello.tablet.JTablet.<init>(JTablet.java:84)
	at cello.tablet.JTablet.<init>(JTablet.java:72)
	at cello.tablettest.JTablettest2.init(Unknown Source)
	at sun.applet.AppletPanel.run(AppletPanel.java:425)
	at java.lang.Thread.run(Thread.java:619)
java.lang.NullPointerException
	at cello.tablettest.JTablettest2.init(Unknown Source)
	at sun.applet.AppletPanel.run(AppletPanel.java:425)
	at java.lang.Thread.run(Thread.java:619)
110000   DEBUG:	Closing tablet
110000   INFO: 	Closing all known tablets.
110000   INFO: 	Tablet(s) closed.
110000   DEBUG:	Deleting cursors
110000   DEBUG:	Deleted nodes: 0
 
Version 23 does not compile with gcc-4.3, here's a patch to fix compilation:
Code:
--- jtablet-sdk-v0.9.5_linux23.orig/c++src/Log.h	2008-06-18 22:35:34.000000000 -0400
+++ jtablet-sdk-v0.9.5_linux23.mod/c++src/Log.h	2008-06-24 23:11:39.510745967 -0400
@@ -28,6 +28,7 @@
 
 #include <string>
 #include <sstream>
+#include <ctime>
 #include <time.h>
 
 class Log

I am on a 64-bit system (Gentoo bleeding-edge everything), so to install I had to edit the paths in c++src/X11/Makefile to make everything install in the right place.

The test applet initializes, producing the following output:
Code:
$ make test_applet2
cd ../examples && appletviewer JTablet-test2.html
using java 2! (v1.4+!)
0        INFO: 	Initializing tablets. Version 23 for X11

0        INFO: 	Closing all known tablets.
0        INFO: 	Tablet(s) closed.
0        INFO: 	Connected to X server.
0        INFO: 	Enumerating devices...
0        DEBUG:	Found: deviceInfo[0].name = Virtual core keyboard, type = 0, id = 0
0        INFO: 	Constructing new XTabletDevice (id = 0, type = 0
0        INFO: 	Constructing new XWacomDevice (id = 0, type = 0
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 1
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 0
0        DEBUG:	      + name = Virtual core keyboard
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[1].name = Virtual core pointer, type = 0, id = 1
0        INFO: 	Constructing new XTabletDevice (id = 1, type = 0
0        INFO: 	Constructing new XWacomDevice (id = 1, type = 0
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 0
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 0
0        DEBUG:	      + name = Virtual core pointer
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[2].name = AT Translated Set 2 keyboard, type = 86, id = 7
0        INFO: 	Constructing new XTabletDevice (id = 7, type = 86
0        INFO: 	Constructing new XWacomDevice (id = 7, type = 86
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 86
0        DEBUG:	         ! Keyboard not supported.
0        DEBUG:	      + name = AT Translated Set 2 keyboard
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[3].name = Logitech USB Gaming Mouse, type = 87, id = 6
0        INFO: 	Constructing new XTabletDevice (id = 6, type = 87
0        INFO: 	Constructing new XWacomDevice (id = 6, type = 87
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 4
0        DEBUG:	      + type = 87
0        DEBUG:	         ! Mouse not supported.
0        DEBUG:	      + name = Logitech USB Gaming Mouse
0        DEBUG:	         ! Name does not match one of recognized types.
0        DEBUG:	Found: deviceInfo[4].name = pad, type = 213, id = 2
0        INFO: 	Constructing new XTabletDevice (id = 2, type = 213
0        INFO: 	Constructing new XWacomDevice (id = 2, type = 213
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 213
0        DEBUG:	      + name = pad
0        DEBUG:	   Detected 3 classes:
0        DEBUG:	      + Class 0 is a KeyClass. There are 248 keys from 8 to 255.
0        DEBUG:	      + Class 1 is a ButtonClass. There are 7 buttons.
0        DEBUG:	      + Class 2 is a ValuatorClass. There are 6 valuators.
0        DEBUG:	         * Valuator #0: 21648 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #1: 13530 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #2: 511 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #3: 0 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #4: 0 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #5: 71 - 0 (resolution: 1)
0        DEBUG:	   Selecting extension events:
0        DEBUG:	      + device: 2   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	         eventTable[0][0] = 106
0        DEBUG:	         * eventTable[0][1] = XI_DeviceFocusIn
0        DEBUG:	      + device: 2   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	         eventTable[1][0] = 107
0        DEBUG:	         * eventTable[1][1] = XI_DeviceFocusOut
0        DEBUG:	      + device: 2   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	         eventTable[2][0] = 105
0        DEBUG:	         * eventTable[2][1] = XI_DeviceMotionNotify
0        DEBUG:	      + device: 2   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	         eventTable[3][0] = 110
0        DEBUG:	         * eventTable[3][1] = XI_DeviceStateNotify
0        DEBUG:	      + device: 2   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	         eventTable[4][0] = 108
0        DEBUG:	         eventTable[4][1] = XI_ProximityIn
0        DEBUG:	      + device: 2   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	         eventTable[5][0] = 109
0        DEBUG:	         * eventTable[5][1] = XI_ProximityOut
0        DEBUG:	      + device: 2   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	         eventTable[6][0] = 104
0        DEBUG:	         * eventTable[6][1] = XI_DeviceButtonRelease
0        DEBUG:	      + device: 2   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	         eventTable[7][0] = 103
0        DEBUG:	         * eventTable[7][1] = XI_DeviceButtonPress
0        DEBUG:	      + device: 2   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	         eventTable[8][0] = 102
0        DEBUG:	         * eventTable[8][1] = XI_DeviceKeyRelease
0        DEBUG:	      + device: 2   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	         eventTable[9][0] = 101
0        DEBUG:	         * eventTable[9][1] = XI_DeviceKeyPress
0        DEBUG:	      ? device: 2   type: 106
0        DEBUG:	      ? device: 2   type: 107
0        DEBUG:	      ? device: 2   type: 105
0        DEBUG:	      ? device: 2   type: 110
0        DEBUG:	      ? device: 2   type: 108
0        DEBUG:	      ? device: 2   type: 109
0        DEBUG:	      ? device: 2   type: 104
0        DEBUG:	      ? device: 2   type: 103
0        DEBUG:	      ? device: 2   type: 102
0        DEBUG:	      ? device: 2   type: 101
0        DEBUG:	Found: deviceInfo[5].name = cursor, type = 214, id = 3
0        INFO: 	Constructing new XTabletDevice (id = 3, type = 214
0        INFO: 	Constructing new XWacomDevice (id = 3, type = 214
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 214
0        DEBUG:	      + name = cursor
0        DEBUG:	   Detected 3 classes:
0        DEBUG:	      + Class 0 is a KeyClass. There are 248 keys from 8 to 255.
0        DEBUG:	      + Class 1 is a ButtonClass. There are 5 buttons.
0        DEBUG:	      + Class 2 is a ValuatorClass. There are 6 valuators.
0        DEBUG:	         * Valuator #0: 21648 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #1: 13530 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #2: 511 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #3: 899 - -900 (resolution: 1)
0        DEBUG:	         * Valuator #4: 1023 - -1023 (resolution: 1)
0        DEBUG:	         * Valuator #5: 1023 - 0 (resolution: 1)
0        DEBUG:	   Selecting extension events:
0        DEBUG:	      + device: 2   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 2   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 2   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 2   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 2   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 2   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 2   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 2   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 2   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 2   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 3   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	         eventTable[0][0] = 106
0        DEBUG:	         * eventTable[0][1] = XI_DeviceFocusIn
0        DEBUG:	      + device: 3   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	         eventTable[1][0] = 107
0        DEBUG:	         * eventTable[1][1] = XI_DeviceFocusOut
0        DEBUG:	      + device: 3   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	         eventTable[2][0] = 105
0        DEBUG:	         * eventTable[2][1] = XI_DeviceMotionNotify
0        DEBUG:	      + device: 3   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	         eventTable[3][0] = 110
0        DEBUG:	         * eventTable[3][1] = XI_DeviceStateNotify
0        DEBUG:	      + device: 3   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	         eventTable[4][0] = 108
0        DEBUG:	         eventTable[4][1] = XI_ProximityIn
0        DEBUG:	      + device: 3   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	         eventTable[5][0] = 109
0        DEBUG:	         * eventTable[5][1] = XI_ProximityOut
0        DEBUG:	      + device: 3   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	         eventTable[6][0] = 104
0        DEBUG:	         * eventTable[6][1] = XI_DeviceButtonRelease
0        DEBUG:	      + device: 3   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	         eventTable[7][0] = 103
0        DEBUG:	         * eventTable[7][1] = XI_DeviceButtonPress
0        DEBUG:	      + device: 3   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	         eventTable[8][0] = 102
0        DEBUG:	         * eventTable[8][1] = XI_DeviceKeyRelease
0        DEBUG:	      + device: 3   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	         eventTable[9][0] = 101
0        DEBUG:	         * eventTable[9][1] = XI_DeviceKeyPress
0        DEBUG:	      ? device: 2   type: 106
0        DEBUG:	      ? device: 2   type: 107
0        DEBUG:	      ? device: 2   type: 105
0        DEBUG:	      ? device: 2   type: 110
0        DEBUG:	      ? device: 2   type: 108
0        DEBUG:	      ? device: 2   type: 109
0        DEBUG:	      ? device: 2   type: 104
0        DEBUG:	      ? device: 2   type: 103
0        DEBUG:	      ? device: 2   type: 102
0        DEBUG:	      ? device: 2   type: 101
0        DEBUG:	      ? device: 3   type: 106
0        DEBUG:	      ? device: 3   type: 107
0        DEBUG:	      ? device: 3   type: 105
0        DEBUG:	      ? device: 3   type: 110
0        DEBUG:	      ? device: 3   type: 108
0        DEBUG:	      ? device: 3   type: 109
0        DEBUG:	      ? device: 3   type: 104
0        DEBUG:	      ? device: 3   type: 103
0        DEBUG:	      ? device: 3   type: 102
0        DEBUG:	      ? device: 3   type: 101
0        DEBUG:	Found: deviceInfo[6].name = eraser, type = 215, id = 4
0        INFO: 	Constructing new XTabletDevice (id = 4, type = 215
0        INFO: 	Constructing new XWacomDevice (id = 4, type = 215
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 215
0        DEBUG:	      + name = eraser
0        DEBUG:	   Detected 3 classes:
0        DEBUG:	      + Class 0 is a KeyClass. There are 248 keys from 8 to 255.
0        DEBUG:	      + Class 1 is a ButtonClass. There are 5 buttons.
0        DEBUG:	      + Class 2 is a ValuatorClass. There are 6 valuators.
0        DEBUG:	         * Valuator #0: 21648 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #1: 13530 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #2: 511 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #3: 63 - -64 (resolution: 1)
0        DEBUG:	         * Valuator #4: 63 - -64 (resolution: 1)
0        DEBUG:	         * Valuator #5: 1023 - 0 (resolution: 1)
0        DEBUG:	   Selecting extension events:
0        DEBUG:	      + device: 2   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 2   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 2   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 2   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 2   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 2   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 2   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 2   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 2   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 2   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 3   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 3   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 3   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 3   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 3   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 3   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 3   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 3   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 3   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 3   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 4   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	         eventTable[0][0] = 106
0        DEBUG:	         * eventTable[0][1] = XI_DeviceFocusIn
0        DEBUG:	      + device: 4   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	         eventTable[1][0] = 107
0        DEBUG:	         * eventTable[1][1] = XI_DeviceFocusOut
0        DEBUG:	      + device: 4   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	         eventTable[2][0] = 105
0        DEBUG:	         * eventTable[2][1] = XI_DeviceMotionNotify
0        DEBUG:	      + device: 4   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	         eventTable[3][0] = 110
0        DEBUG:	         * eventTable[3][1] = XI_DeviceStateNotify
0        DEBUG:	      + device: 4   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	         eventTable[4][0] = 108
0        DEBUG:	         eventTable[4][1] = XI_ProximityIn
0        DEBUG:	      + device: 4   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	         eventTable[5][0] = 109
0        DEBUG:	         * eventTable[5][1] = XI_ProximityOut
0        DEBUG:	      + device: 4   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	         eventTable[6][0] = 104
0        DEBUG:	         * eventTable[6][1] = XI_DeviceButtonRelease
0        DEBUG:	      + device: 4   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	         eventTable[7][0] = 103
0        DEBUG:	         * eventTable[7][1] = XI_DeviceButtonPress
0        DEBUG:	      + device: 4   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	         eventTable[8][0] = 102
0        DEBUG:	         * eventTable[8][1] = XI_DeviceKeyRelease
0        DEBUG:	      + device: 4   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	         eventTable[9][0] = 101
0        DEBUG:	         * eventTable[9][1] = XI_DeviceKeyPress
0        DEBUG:	      ? device: 2   type: 106
0        DEBUG:	      ? device: 2   type: 107
0        DEBUG:	      ? device: 2   type: 105
0        DEBUG:	      ? device: 2   type: 110
0        DEBUG:	      ? device: 2   type: 108
0        DEBUG:	      ? device: 2   type: 109
0        DEBUG:	      ? device: 2   type: 104
0        DEBUG:	      ? device: 2   type: 103
0        DEBUG:	      ? device: 2   type: 102
0        DEBUG:	      ? device: 2   type: 101
0        DEBUG:	      ? device: 3   type: 106
0        DEBUG:	      ? device: 3   type: 107
0        DEBUG:	      ? device: 3   type: 105
0        DEBUG:	      ? device: 3   type: 110
0        DEBUG:	      ? device: 3   type: 108
0        DEBUG:	      ? device: 3   type: 109
0        DEBUG:	      ? device: 3   type: 104
0        DEBUG:	      ? device: 3   type: 103
0        DEBUG:	      ? device: 3   type: 102
0        DEBUG:	      ? device: 3   type: 101
0        DEBUG:	      ? device: 4   type: 106
0        DEBUG:	      ? device: 4   type: 107
0        DEBUG:	      ? device: 4   type: 105
0        DEBUG:	      ? device: 4   type: 110
0        DEBUG:	      ? device: 4   type: 108
0        DEBUG:	      ? device: 4   type: 109
0        DEBUG:	      ? device: 4   type: 104
0        DEBUG:	      ? device: 4   type: 103
0        DEBUG:	      ? device: 4   type: 102
0        DEBUG:	      ? device: 4   type: 101
0        DEBUG:	Found: deviceInfo[7].name = stylus, type = 216, id = 5
0        INFO: 	Constructing new XTabletDevice (id = 5, type = 216
0        INFO: 	Constructing new XWacomDevice (id = 5, type = 216
0        DEBUG:	   Verifying compatibility:
0        DEBUG:	      + use = 3
0        DEBUG:	         ! Not an extension device.
0        DEBUG:	         ! Not an extension pointer.
0        INFO: 	         + Device failed test, but allowing anyway...
0        DEBUG:	      + type = 216
0        DEBUG:	      + name = stylus
0        DEBUG:	   Detected 3 classes:
0        DEBUG:	      + Class 0 is a KeyClass. There are 248 keys from 8 to 255.
0        DEBUG:	      + Class 1 is a ButtonClass. There are 5 buttons.
0        DEBUG:	      + Class 2 is a ValuatorClass. There are 6 valuators.
0        DEBUG:	         * Valuator #0: 21648 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #1: 13530 - 0 (resolution: 2540)
0        DEBUG:	         * Valuator #2: 511 - 0 (resolution: 1)
0        DEBUG:	         * Valuator #3: 63 - -64 (resolution: 1)
0        DEBUG:	         * Valuator #4: 63 - -64 (resolution: 1)
0        DEBUG:	         * Valuator #5: 1023 - 0 (resolution: 1)
0        DEBUG:	   Selecting extension events:
0        DEBUG:	      + device: 2   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 2   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 2   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 2   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 2   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 2   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 2   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 2   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 2   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 2   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 3   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 3   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 3   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 3   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 3   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 3   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 3   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 3   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 3   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 3   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 4   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	      + device: 4   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	      + device: 4   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	      + device: 4   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	      + device: 4   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	      + device: 4   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	      + device: 4   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	      + device: 4   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	      + device: 4   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	      + device: 4   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	      + device: 5   type: 106   base: 106   class: 5   offset: 0
0        DEBUG:	         eventTable[0][0] = 106
0        DEBUG:	         * eventTable[0][1] = XI_DeviceFocusIn
0        DEBUG:	      + device: 5   type: 107   base: 106   class: 5   offset: 1
0        DEBUG:	         eventTable[1][0] = 107
0        DEBUG:	         * eventTable[1][1] = XI_DeviceFocusOut
0        DEBUG:	      + device: 5   type: 105   base: 105   class: 2   offset: 0
0        DEBUG:	         eventTable[2][0] = 105
0        DEBUG:	         * eventTable[2][1] = XI_DeviceMotionNotify
0        DEBUG:	      + device: 5   type: 110   base: 110   class: 6   offset: 0
0        DEBUG:	         eventTable[3][0] = 110
0        DEBUG:	         * eventTable[3][1] = XI_DeviceStateNotify
0        DEBUG:	      + device: 5   type: 108   base: 108   class: 4   offset: 0
0        DEBUG:	         eventTable[4][0] = 108
0        DEBUG:	         eventTable[4][1] = XI_ProximityIn
0        DEBUG:	      + device: 5   type: 109   base: 108   class: 4   offset: 1
0        DEBUG:	         eventTable[5][0] = 109
0        DEBUG:	         * eventTable[5][1] = XI_ProximityOut
0        DEBUG:	      + device: 5   type: 104   base: 103   class: 1   offset: 1
0        DEBUG:	         eventTable[6][0] = 104
0        DEBUG:	         * eventTable[6][1] = XI_DeviceButtonRelease
0        DEBUG:	      + device: 5   type: 103   base: 103   class: 1   offset: 0
0        DEBUG:	         eventTable[7][0] = 103
0        DEBUG:	         * eventTable[7][1] = XI_DeviceButtonPress
0        DEBUG:	      + device: 5   type: 102   base: 101   class: 0   offset: 1
0        DEBUG:	         eventTable[8][0] = 102
0        DEBUG:	         * eventTable[8][1] = XI_DeviceKeyRelease
0        DEBUG:	      + device: 5   type: 101   base: 101   class: 0   offset: 0
0        DEBUG:	         eventTable[9][0] = 101
0        DEBUG:	         * eventTable[9][1] = XI_DeviceKeyPress
0        DEBUG:	      ? device: 2   type: 106
0        DEBUG:	      ? device: 2   type: 107
0        DEBUG:	      ? device: 2   type: 105
0        DEBUG:	      ? device: 2   type: 110
0        DEBUG:	      ? device: 2   type: 108
0        DEBUG:	      ? device: 2   type: 109
0        DEBUG:	      ? device: 2   type: 104
0        DEBUG:	      ? device: 2   type: 103
0        DEBUG:	      ? device: 2   type: 102
0        DEBUG:	      ? device: 2   type: 101
0        DEBUG:	      ? device: 3   type: 106
0        DEBUG:	      ? device: 3   type: 107
0        DEBUG:	      ? device: 3   type: 105
0        DEBUG:	      ? device: 3   type: 110
0        DEBUG:	      ? device: 3   type: 108
0        DEBUG:	      ? device: 3   type: 109
0        DEBUG:	      ? device: 3   type: 104
0        DEBUG:	      ? device: 3   type: 103
0        DEBUG:	      ? device: 3   type: 102
0        DEBUG:	      ? device: 3   type: 101
0        DEBUG:	      ? device: 4   type: 106
0        DEBUG:	      ? device: 4   type: 107
0        DEBUG:	      ? device: 4   type: 105
0        DEBUG:	      ? device: 4   type: 110
0        DEBUG:	      ? device: 4   type: 108
0        DEBUG:	      ? device: 4   type: 109
0        DEBUG:	      ? device: 4   type: 104
0        DEBUG:	      ? device: 4   type: 103
0        DEBUG:	      ? device: 4   type: 102
0        DEBUG:	      ? device: 4   type: 101
0        DEBUG:	      ? device: 5   type: 106
0        DEBUG:	      ? device: 5   type: 107
0        DEBUG:	      ? device: 5   type: 105
0        DEBUG:	      ? device: 5   type: 110
0        DEBUG:	      ? device: 5   type: 108
0        DEBUG:	      ? device: 5   type: 109
0        DEBUG:	      ? device: 5   type: 104
0        DEBUG:	      ? device: 5   type: 103
0        DEBUG:	      ? device: 5   type: 102
0        DEBUG:	      ? device: 5   type: 101
0        INFO: 	Tablet(s) initialized.
420000   DEBUG:	No interesting events in the queue. Returning from ReadTablet.
..........................................71 duplicates of the above message.
580000   INFO: 	Cursors differ! Was cursorPhysicalId = 65535, cursorId = 65535; Now cursorPhysicalId = 5, cursorId = 5
580000   DEBUG:	Checking if returned cursor is non-null.
580000   DEBUG:	JTablet_makeCursor(
580000   DEBUG:	env->FindClass("cello/tablet/JTabletCursor")
580000   DEBUG:	find success
580000   DEBUG:	AllocObject
580000   DEBUG:	<init>
580000   DEBUG:	global ref
580000   DEBUG:	new node
580000   DEBUG:	fill node
580000   DEBUG:	insert node
580000   DEBUG:	JTablet_makeCursor);
580000   DEBUG:	Checking if created cursor is non-null.
580000   INFO: 	Initializing Cursor cursorPhysicalId = 5, cursorId = 5.
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   DEBUG:	Getting Cursor Info.
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   DEBUG:	Getting Button Info.
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   INFO: 	Getting cursor data
580000   DEBUG:	Locating device id 5
580000   DEBUG:	Finding button mask.
600000   DEBUG:	No interesting events in the queue. Returning from ReadTablet.

My system is Gentoo ~amd64, gcc-4.3.1, kernel-2.6.25.6, linuxwacom-0.8.0_p3, sun-jdk- 1.6.0.06 (64-bit JDK), icedtea-6.1.2 (64-bit Firefox plugin). My tablet is Wacom Bamboo Fun.

And after copying libjtablet.so to /usr/lib64/icedtea-6.1.2/jre/lib/amd64 and jtablet.jar to /usr/lib64/icedtea-6.1.2/jre/lib/ext, I get working tablet support in the browser (tested with Shi Normal oekaki applets).

JigPu, thank you very much for your work! You rock.
 
Version 23 does not compile with gcc-4.3, here's a patch to fix compilation:
Code:
PATCH

I am on a 64-bit system (Gentoo bleeding-edge everything), so to install I had to edit the paths in c++src/X11/Makefile to make everything install in the right place.

The test applet initializes, producing the following output:
Code:
LOG OUTPUT

My system is Gentoo ~amd64, gcc-4.3.1, kernel-2.6.25.6, linuxwacom-0.8.0_p3, sun-jdk- 1.6.0.06 (64-bit JDK), icedtea-6.1.2 (64-bit Firefox plugin). My tablet is Wacom Bamboo Fun.

And after copying libjtablet.so to /usr/lib64/icedtea-6.1.2/jre/lib/amd64 and jtablet.jar to /usr/lib64/icedtea-6.1.2/jre/lib/ext, I get working tablet support in the browser (tested with Shi Normal oekaki applets).

JigPu, thank you very much for your work! You rock.
Thanks tetromino! :) I'll integrate that patch into version 24, which should be released in a short while. I'm glad to hear its working well for you!

Code:
MAKEFILE OUTPUT
This is v23, same system, double checked for all dependencies. (Arch is bleeding edge, so all the components have been heavily upgraded)
The patch provided by tetromino will hopefully fix your problem, since it includes the missing time library. As said above, I'll have a version with it integrated up soon if you'd rather not do the patching yourself. :)

I managed to get JTablet installed, but I still can't seem to make it work. The test applet fails to initialize. I'm using a Wacom Graphire3 on Ubuntu 8.04.1 Hardy Heron.
Here's the commandline output:

Code:
LOG OUTPUT
Based on the output, it appears that its not recognizing the tablet because of the device names in your xorg.conf file. I appologize for this, since its a common problem I've not found a good solution to. :(

I'm going to change the name requirement into a warning in version 24. Although there is already a filter to reject all standard X11 devices which are not tablets, I'm concerned that the code may crash on systems with devices using non-standard X11 device types. I don't know how common this would be, but hopefully significantly less than the number of people using device names that I haven't anticipated :)

JigPu
 
Back