We would like to show you a description here but the site won’t allow us. The Linux Kernel Driver for the Aiptek HyperPen tablet basically sits in-between the USB sub-system and the Linux Input Event system, and provides the glue to translate and present movement events into a format that can be read from a kernel device driver. The Kernel Driver has sole responsibility for understanding the meaning of incoming packets from the tablet; it also undertakes responsibility for. The package provides the installation files for Microsoft USB Input Device Driver version 10.0.4. If the driver is already installed on your system, updating (overwrite-installing) may. Go to Device Manager (right click on My Computer, choose Manage and then find Device Manager in the left panel), or right click on Start Menu for Windows 10 and select Device Manager. Sometimes your USB device, which is plug-and-play nature really need a set of codes, in this case known as a driver, to interact with your device. If the computer prompts you to install a driver, let it try. If it doesn’t, go to Control Panel Printers and devices to see if there is any Unidentified USB device or Unknown device listed there.
The Gaiptek Tablet Manager is a front-end to the programmatic featuresfound in the Linux Kernel Device Driver and the X11 Input Driver. Withthe Tablet Manager, you can inspect and dynamically program the tablet,as well as inspect and modify the behavior of the two drivers. Doing sodoes not mean you have to reboot or reload the driver, nor do you have torestart the X Server.
Having the Gaiptek Tablet Manager running does not affect the normaluse of your tablet: you can have it active while running otherapplications. It won't affect the tablet or its driver's behavior until you reprogram them.
Both the Kernel and X Server Drivers support bidirectional interactionwith the user. The X Server Driver uses the Tablet Manager as the front-endto its programmatic interface. The Linux Kernel driver natively supportsa file-oriented user interface, through the sysfs (or procfs on Linux2.4.x) virtual file system. We believe you'll find the file-orientedinterface useful in batch processing, but will use this interface the majority of the time.
The Tablet Manager is actually three programs in one. One section of theprogram communicates with the Kernel Driver. The other communicates with theX Server Input Driver. The remaining section provides diagnostics for your tablet. Along those lines, we attempted to break down the screens by their function.
Looking at the main screen, you'll notice that we have set up a tab controlalong the left side of the screen. Those tabs control whether you see Kernel-,X Server-, or Diagnostics-related screens. The left-handed tab controls appearon every page.
But those are not the only controls that appear on every page. The menubar and associated toolbar appears on every page, as well as the series of buttonscalled the 'Stylus Tools' appears on every page, at the same location.
Aiptek Driver For Windows 10
The controls along the top of the screen are Kernel Driver-related; thebottom controls are Kernel Driver-related, although you'll mostly see theiraffect through the X Server Driver. The point is, the two drivers are veryinterdependent: someone wanting to configure one driver may well want to alsowork with the other driver.
1. Which Tablet Is Being Managed?
The first control is something that's not very apparent at first –the Window's title decoration. We use it to convey which tablet you areinspecting and/or programming.
One of the problems we have, when supporting multiple tablets, isconveying which tablet is presently being viewed and/or modifiedto you in an obviousway. The Linux Kernel does not assign device driver entries for USBinput devices in the same way as it does for RS-232C. E.g., there is no/dev/tty01 that always refers to the device connected to the firstserial port. And, should no device be attached to the given serial port,the device entry will still exists in /dev.
Instead, for input devices, the kernel might assign adevice entry like, /dev/input/event5, to your tablet. But even then,that device entry assignment is transitory: it can change everytime you reboot your system. (There is background on this that we'lldiscuss later.)
We get around this issue by displaying the USBconnector that's physically attached to your tablet. If you lookat thetitle bar shown below, we display that information, much like otherprograms will display the name of the file they are editing.
2. The “Button” Controls
You'll notice in the above picture, that there are a series ofbuttons going along the top of the page. These buttons appear on allpages of the Tablet Manager.
2.1 The “Open Tablet” Button
Knowing what we now know about the Window's title, and how we addresstelling you which tablet is being presented, you might wonder how to have theTablet Manager deal with your other tablet(s). That's easy – press the“Open Tablet” button, or choose Tablet|Open Tablet from the menu, and you will see thefollowing panel:
And as you might expect, the pull-down has the list of Aiptektablets controlled by the Linux Kernel Device Driver, identified by theUSB connector they are attached to. Merely choose the correct tablet,and press the “OK” button. The panel disappears, and the Tablet Managerdisplays information about the new tablet.
Now, if you only have one tablet, do you need to go through theprocess of selecting and opening a tablet? No, (and also, No, if youhave more than one) the Tablet Manager will automatically find and openthe first Aiptek tablet it finds.
Of course, if you were in the process of reconfiguring the previoustablet, and did not yet go through the process of reprogramming itfirst, you'll lose your changes. Which is why there is a “Cancel”button. But it does beg the question, how do you program your tablet?
2.2 The “Program” Button
If you are in the process of modifying your tablet's configuration,or the Linux Kernel Device Driver's configuration, you might move theTablet Manager from page to page, setting the parameters you wantchanged. And then, when satisfied, you'll want to program the tablet.This is what the “Program” button, or the Tablet|Program menu option,does for you.
(As you will later see, there is another “Program” Button elsewherein the Tablet Manager, so let us stress: the one along the top of the screen deals with the LinuxKernel Device Driver. Don't set attributes for the X Server Driver andexpect this button to program them for you. It won't. It just programs theKernel Driver's attributes. No harm will come of it ifyou do, but we'd like to avoid frustrating you if we can.)
2.3 The 'Refresh' Button
While inspecting/setting attributes from the Linux Kernel DeviceDriver, you might decide that you want to throw away your changes, andhave the Tablet Manager, instead of showing your pending changes,instead re-present the tablet's and Linux Kernel Driver's current state. Howto do this? With the “Refresh” button, or the Tablet|Refresh menu option.
(Again, this refreshes attributes from the Linux Kernel DeviceDriver. Not from the X Server Driver. And yes, there is another“Refresh” button, but it only appears on the X Server page. We'lldiscuss that later.)
2.4 The 'Tools' Button
So far, every button we've described along the top of the page dealswith the Linux Kernel Device Driver. Not this one. If you press the“Tools” button, or the Tools|Tools menu option, you'll get a panel thatlooks like,
So, this brings up the question, what does this panel do? Well, ifyou look at the “Stylus Tools”, which appears at the bottom of everypage, you'll notice that they are the same buttons, just in a verysmall vertical panel. That's because, the purpose of these buttons isfairly central to how you use the tablet with X client applications.You'll find yourself wanting to switch your tablet's behavior from thatof a pen to an airbrush, etc., so often that you'll have the TabletManager running at the same time.
That's a good thing, but, as small as we made the pages, you probablywant more screen space allocated to your drawing program. So, here is thisvery small panel. You bring the “Tools” panel up, minimize the TabletManager main page(s), and you're in business. Of course, if you want toreturn to the main pages, press the “Main App” button. We'll describewhat it means to behave like an Eraser later, when talking about theX Server Driver functions.
2.5 The “Help” Button
Right now, this will present to you the Help|About panel. It's a listing of people to blame for the Tablet Manager. As always, we gratefullyaccept patches.
2.6 The “Quit” Button
It does what you would expect. And no, it doesn't care whetheryou've remembered to save your changes to the tablet, the LinuxKernel Device Driver, or the X Server Device Driver. This isn't a word processor; hopefully your not writing your PhD thesis with the Gaiptek Tablet Manager.
2.7 The “Stylus Tools” Buttons
These buttons are located along the bottom of every page of the mainTablet Manager screens. Similar to the toolbar buttons, these buttons affectis mostly seen in how the tablet currently behaves in conjunction with the XServer Device Driver. E.g., does the stylus behave like a pen, pencil,etc.? We'll describe what that means later. For now, you should notethat these are push buttons: whichever mode your tablet is in, theappropriate button is shown as being depressed.
3. The Linux Kernel Driver Pages
3.1 The Info Page
As it has been awhile since you've last seen it, here is what theInfo page looks like, below. The Info Page describes attributes ofyour tablet, as determined from the Linux Kernel Device Driver.
You might be wondering, why are we displaying all of thisinformation? Well, when things go wrong, the more information you haveat hand, the easier it is to diagnose what happened, and what to do.Such as, what? Well, without giving away a lot of what's described inthe Diagnostics section, we'll just tell you that digital tabletslook a lot like mice and joysticks to other device drivers. And,because of the macro keys along the top of the drawing area, which wesupport, the tablet looks a bit like a keyboard... So, what if one ofthese other drivers get confused? Hence, the Info page.
3.1.2 Size
This shows how big the tablet's physical drawing area is, in eithercoordinates, inches or millimeters. This is the best way to determinewhether there is any communication issues between the tablet and USBsubsystem/Linux Kernel. How is that? Well, if your tablet suddenlyreports that it's drawing area is 100x100 coordinates, you know you arein trouble.
3.1.3 Manufacturer
This is a string representation of the tablet's manufacturer.
3.1.4 Product
This is a string representation of the tablet's model. In additionto telling you if there are any communication issues, looking at thesize of the tablet is also the best way to determine what model oftablet is connected. Why do we say that? Well, the screenshot above isof the author's APT-8000U; several tablet models have been known toshare model identifiers with other Aiptek models. More recent tabletswill return a generic model identifier.
3.1.5 Input Path
We mentioned before that Linux does not assign device driver entryname to your tablet based on the connector, like it does for theRS-232C, or hard disc interface. Instead, it will dole out deviceentries dynamically, based on the order in which device drivers areloaded/initialized during boot up, and/or the availability of entrynames when the tablet is hot-plugged into the system.
What this means is, today your tablet might have /dev/input/event1assigned to it. Tomorrow, it might be /dev/input/event7. If you plug anunplug hot-pluggable USB devices, like your tablet, mice and joysticks,there's more variance.
Also, it does no good to predict where the tablet will be mappedbased on order of device driver modules are loaded, hardware isrecognized, etc. There is movement afoot to speed up the boot cycle ofLinux. What that means is, device drivers that used to wait for oneanother to initialize sequentially no longer do so. Where they can,they'll load and initialize in parallel with each other, which makesdetermining the order that they'll complete (and be assigned a deviceentry) hard to determine.
So, you might like to know the device entry that has been assignedto your tablet. Programs like gpm and the X Server tend to show aninterest in this information. Note that our interface to udevtends to resolve this issue by ensuring that there is a softlinkcalled /dev/input/aiptek, which will point to the device entry wherethe tablet's data is being routed to.
3.1.6 VendorID
This is the manufacturer code, shown in hexadecimal.
3.1.7 ProductID
This is the product code, show in hexadecimal. Note what we saidabout reuse of product codes.
3.1.8 ModelCode
More appropriately, the sub-model ID, in hexadecimal. Also tends tonot be unique among the tablets.
3.1.9 ODMCode
The ODM Code describes the third party company who producedyour tablet for the manufacturer. You will find that this helps isolatewhich manufacturing batch your tablet belongs to.
3.1.10 Firmware Code
The version of the firmware/BIOS installed on your tablet, inhexadecimal.
3.2 The “Settings” Page
That's enough dry information for now. Moving to the Settingspage, we now have controls that map to attributes of the Linux KernelDevice Driver, and the tablet itself.
3.2.1 Pointer Mode Control
This series of buttons allow you to control from which device inputreports will be accepted from. Your tablet comes with both a Stylus anda Mouse which can be used along the drawing surface of the tablet.
If, for example, you specify that you only want input reports fromthe Stylus, that means that all reports from the Mouse will be filteredout. That's useful, if you placed the Mouse too near your drawing area,and you are getting input reports from it.
By default the Linux Kernel Device Driver accepts reports fromeither device.
The information presented by this control is the same as that keptin the pointer_mode file. (Seethe section on the Linux Kernel DeviceDriver.)
3.2.2 Coordinate Mode Control
This series of buttons allow you to control whether the tabletreturns relative coordinate motion reports or absolute coordinatemotion reports. The difference between the two is fairly simple: if thestylus is at location 100,100 on the drawing area, and you move it tothe left 5 coordinates, the stylus moves -5 coordinates along the Xaxis in relative mode, and to 95,100 in absolute mode.
The X Server Driver's absolute/relative setting is kept independentfrom this, the Linux Kernel Device Driver's setting. (How? The X ServerDriver will convert relative coordinate reports from the tablet intoabsolute reports, if needed.)
The information presented by this control is the same as that keptin the coordinate_mode file.(See the section on the Linux KernelDevice Driver.)
3.2.3 Jitter
This is a delay, following the pressing or depressing of a button onthe Stylus or Mouse, during which all input events from the tablet areignored. Especially with respect to the Stylus, when pressing one ofthe buttons, the chances of the tip moving as your hand steadies itselfis fairly high. During that time, the stylus can otherwise sendspurious input reports. This is a text entry control, and acceptspositive numeric values, in milliseconds.
Obviously, to disable the Jitter timer, set it to 0 milliseconds.
The information presented by this control is the same as that keptin the jitter file. (See thesection on the Linux Kernel Device Driver.)
3.2.4 Programmatic Delay
When programming the tablet, there is a delay specified in thecommunications protocol. What we've noticed is that certain tabletsprefer differing length of delays. 400ms and 50ms have been seen asprevalent, and indeed, the Linux Kernel Device Driver attempts todetermine the optimal setting during boot time.
The information presented by this control is the same as that keptin the delay file. (See thesection on the Linux Kernel Device Driver.)
3.3 The “Mapping” Page
The Mapping Page allows you to inspect and set what sequences theStylus buttons and the Mouse buttons send when pressed. By default, theMouse's left button will send the Mouse Left Button sequence whenpressed. But, you can change that so it instead sends the rightbutton's sequence, or the middle button's. Same thing for the Stylus.No, you cannot map the Stylus buttons to send Mouse button sequences!
3.3.1 Stylus Button Mapping
Well, we sort of ruined the surprise above. Except, we should note,both the upper and lower Stylus buttons must be mapped to return somesequence, and no, they cannot both return the same sequence. (Why? Itjust makes good sense.)
These controls correspond to the stylus_lowerand stylus_upper files kept bythe Linux Kernel Device Driver.
3.3.2 Mouse Button Mapping
Aiptek Input Devices Driver Touchpad
Very much the same as the Stylus buttons, except there are three ofthem, and setting/resetting of sequences might be very useful to theleft-handed.
These controls correspond to the mouse_left,mouse_middle and mouse_right files kept by the LinuxKernel Device Driver.
3.4. The “Synthetic” Page
Despite how capable your Aiptek Tablet is, there are some functionsthat it does not provide... Functions we thought it ought to provide... So,we cheat: we've set up the Linux Kernel Device Driver to pretend thetablet has these features.
But, why the pretense? Well, we currently have what is considered athree-dimensional input device (X, Y, and Pressure.) Each of thesesynthetic events are considered a new dimension, and frankly, knowingthe angle that a Stylus is held should affect the shape of the brush,or tip, against the drawing surface...
3.4.1 The “Wheel Event” Control
That's right: your Aiptek Mouse has a Wheel. You just can't see nor feel it.This is a one-time event: you set the wheel amount sider to a valuebetween 0 and 1024, and press the Apply Wheel button. Along with thenext input event read by the Kernel Device Driver, the wheel eventwill be reported. No subsequent wheel events will be reported,until/unless you use the control, again.
Unlike other controls in the Tablet Manager, pressing theApply Wheel button programs the tablet right now. (The other controlswait until you press the Program button or the Tablet|Program menuoption before taking effect.)
This control corresponds to the wheelfile maintained by the Linux Kernel Device Driver.
3.4.2 The “X-Axis Tilt” Control
Imaginary sensors note the angle your hand holds the Stylus againstthe drawing surface, along the X-Axis (left-right.) Unlike the Wheel,X-Axis reports are sent continuously by the Linux Kernel Device Driverwhen this attribute is enabled. Looking at the page above, we have acontrol to indicate whether reports will be sent along with any and alltablet input events. Once enabled, values range between -128 and 127.(-128, Stylus tilts to the left; 127, Stylus tilts to the right.)
This control corresponds to the xtiltfile maintained by the Linux Kernel Device Driver.
3.4.3 The “Y-Axis Tilt” Control
Imaginary sensors note the angle your hand holds the Stylus againstthe drawing surface, along the Y-Axis (rear-front.) Unlike the Wheel,Y-Axis reports are sent continuously by the Linux Kernel Device Driverwhen this attribute is enabled. Looking at the page above, we have acontrol to indicate whether reports will be sent along with any and alltablet input events. Once enabled, values range between -128 and 127.(-128, Stylus tilts to the rear; 127, Stylus tilts to the front of thedrawing area.)
This control corresponds to the ytiltfile maintained by the Linux Kernel Device Driver.
4. The X Server Driver Pages
The X Server Driver tab organizes its windows differently. Basically, theattributes don't 'fit' onto individual pages as well as the Kernel Driver'sattributes: they prefer to be seen together at the same time. So we've used more of a 'tab' motif where sections of the screen change depending on which tabs you've selected. And as you can see, we have tabs on both the left- and right-handed side of the page.
As you recall in section 1, 'WhichTablet is Being Managed', the Linux Kernel Device Driver supportsmultiple Aiptek tablets; we're able to keep track of which tablet iswhich, by presenting the USB connector information along the window'stitlebar.
What that means is that the functions provided by the Tablet Open, Program, and Refresh buttons on the the menubar, that communicatewith the Linux Kernel Device Driver, are also needed for the X ServerInput Device Driver. They have to be distinct from one another,because both sets of controls have to appear on the X Server pages.Sounds hard, right? Let's look at the screenshot,
Yes, there is a lot there, but let's zoom in on the X Server InputDevice Driver's equivalent to the Tablet Open, Program, andRefresh buttons,
So, that Listbox control called X Server Driver is the'Tablet Open' button. It contains the names of the X Server InputDevice Driver device drivers associated with the given tablet.Remember, you can have up to three X Server device driversper tablet, one that manages the Stylus input, one for the Puck, andthe last for the Eraser (or Rubber.) Remember, even though you canname your drivers anything, environments like Gtk have fixed names forthe tablet's device drivers that it is looking for. (If you werewondering why there is a label called Device Mapping, Type,telling you that your X Server Input Device is of type Stylus, well,that's why.) If you were to Tablet Open your other tablet, assumingyou have another, that Listbox will contain different X Server Input Device Driver names.
Input Devices Of Computer
So, those buttons marked Execute and Refresh,along the lower left of the screen are fairly obviously theequivalent to the Program and Refresh buttons along themenubar. No matter which page of the X Server Driver pages you moveto, those controls appear at the same location. They don't program the LinuxKernel Device Driver; they program the X Server Input Device Driver.
4.1 The Common Controls
Well, we cheated, because the X Server Driver, Execute,and Refresh buttons appear on every X Server page.How about the other common controls? Well, you have Measurements,which allows you to specify whether units of measure will be displayedin Coordinates,Inches, or Millimeters. What measurements are those? Look over in the ActiveArea, and you'll see that xMax, et al, can be displayed in coordinates,inches or millimeters. Also, xThreshold and yThreshold, located on the Thresholdssub-page, can as well.
Focusing your attention to the Active Area tabagain, on the right-hand side of the page, you'll notice thecontrol, Use these Parameters. If you cycle through the xTop,xOffset, and xMax tabs, you'llsee that control appears on all three tabs. What do they do? They allow you toselect which set of Active Area parameters to use.
4.2 Left-Hand Side: the “Mapping” Tab Controls
The controls in Device Mapping present highly usableinformation.
The Type label, for instance, describes the type of X ServerInputDriver you are inspecting. As you recall, you can name your X Serverdriverswhat you want (although toolkits like Gtk will conspire to limit yourchoices.) But there is still a possibility that you'll forget that'Pen'refers to your Stylus device driver.
The Physical label describes the device driver from entryfrom whichinput is read from. Recall, from the X ServerInput Driver documentation, that you can give the X Server the nameof a softlink, instead of the actual name of the device driverentry. Well, if you do indeeddo that, the Tablet Manager is aware. So, Physical describeswhere datais read from, and the Logical label describes the name of thesoftlink you gave it.
(Why do we do that? Well, softlinks don't 'move' very well when youplug/unplug the tablet. And, even if they do, the X Server still has anopen file handlereferring to the previous softlink location. So, bottom line, wedisplay thisinformation to remind you of any misdeeds you may have recentlyperformed.)
DebugLevel accepts an integer, and sets the debugLevel thatthe driver usesto log it's messages to the X Server log file. '0' means to display nomessages. This is the same as the 'Option 'DebugLevel' 'num' line inthe X Serverconfiguration file.
HistorySize is analguous to the 'Option 'HistorySize' 'num'option in the X Server configuration file.
ScreenNum is analguous to the 'Option 'ScreenNo' 'num' optionin the X Serverconfiguration file.
4.2.1 Left-Hand Side: the “Booleans” Tab Controls
This page describes a collection of boolean controls for the XServer InputDriver.
Control Name | Option in Configuration File | Explanation |
---|---|---|
Mode | Option'Mode' 'absolute' | Allowsyou to specify whether the tablet will deliverrelative or absolute coordinate reports. |
Cursor | Option'Cursor' 'puck' | Allowsyou to specify whether you want X to display a 'puck'or 'stylus' shaped cursor. |
KeepShape | Option'KeepShape' 'on' | Allowsyou to specify whether the tablet will deliverrelative or absolute coordinate reports. |
InvX | Option'InvX' 'on' | Shouldthe driver invert the incoming X coordinate reports.Effectively swaps left and rightside. |
InvY | Option'InvY' 'off | Shouldthe driver invert the incoming Y coordinate reports.Effectively swaps the front and end of the drawing area. |
AlwaysCore | Option'AlwaysCore' 'on' | Allowsyou to specify whether this input device is consideredthe 'core' input device. |
4.2.2 Left-Hand Side: the “Thresholds” Tab Controls
We use this page to keep controls for the movement thresholds. Whatare these? Well, let's say you move the stylus one coordinate to theright from its previous position. The question is, do you want thedriver to pass that report to the X Server, or assume that any movementless than num coordinates is really your hand shaking, and so it shouldignore it? That minimum required movement is a threshold. We supportthresholds on three axes; since the 'remaining' axes are synthetic(xTilt, yTilt and wheel), there is no reason to filter those reports(as you have to go out of your way to have them reported in the firstplace.)
Now as for the zMin/zMax controls: these specify minimum and maximumvalues that will be passed to the X Server. Notice that thisaccomplishes the same general task, that of filtering input, but isn'tthe same as thresholds: thresholds are concerned with relativemovement, whereas zMin/zMax are concerned with absolute values.
So, where is xMin/xMax, and yMin/yMax? Silly person, those (obviously)control the size of the drawing area, and are thus Active Areaparameters. Look at the right-hand side of the page. We'll explainthose controls presently.
Rather than bore you (and ourselves) with telling you that thexThreshold control affects your xThreshold setting, etc., adnauseum,we'll instead tell you that all these filters can be disabled with avalue of -1.
4.2.3 Left-Hand Side: the “Pressure” Tab Controls
By default, for each pressure reading, from 0 to 511, we'll report avalue that ranges linearly from 0 to 511 to the X Server. But, if youwould like to have the Stylus pressure be reported, with moreCustom Pressure Curve.
First, the Curve Type controlallows you to select what type of curve you would like to use, thegraph control underneath shows the curve, plotted for input values from0 to 511. The X Server Input Driver supportsthree pre-defined curves:the Linear, Soft Log and Hard Log curves. Let's take a lookat each:
4.2.3.1 The Linear Curve |
Well, obviously the Linear Curve is a curve in name only. There isno perturbation of values from read the tablet. E.g., if we read 23from the tablet, we'll report 23 to the X Server.
4.2.3.2 The Soft Log Curve |
This curve models the function, p = z2/512), and offersmore sensitivity to higher tablet pressure reports (e.g., it tends toignore lower-range values.)
4.2.3.3 The Hard Log Curve |
This curve models the function, p = 512 * (z / 512) 1/2.Sensitivity is pronounced with lower value pressure reports, with amore linear slope appearing in the mid-scale values.
4.2.3.4 The Custom Curve |
Now for the new curve type. Rather than try to guess at anothergood perturbation function,we thought we'd allow you to specify your own curve. To do so, we giveyou the matrix of datapoints, from pressure reading of 0 to 511: for eachpoint, you get to go to the 'Report Value' column and enter custom values. You're limitedfor values between 0 and 511, as that's the capacity of the tablet. Sounds likea lot of work, and it is. We make it easier for you by allowing you to usethe curve points of the Linear, Soft Log or Hard Log curves as the starting point.Also, thankfully, we let you save your custom curve out to file, so you can reload it when desired.
4.3 Right-Hand Side: the Active Area Tabs
There are three pages of controls on the right hand side, thesedealing with the Active Area. Why three pages? Well, the Active Areacan be specified using one of three mutuallyexclusive parameter sets. So, not only do we want to know whatyoursettings are, but we want to know which set of setting parameters youwant to use.
But first, why would you want torestrict the Active Area? By default the tablet's entire drawing areais available to you. Well, let's say you are tracing a drawing from apiece of paper smaller than your drawing area. Now, if you bring thestylus outside of the edges of that paper, you might get a movementreport from the tablet. Wouldn't you'd like to filter those reportsout? We thought you would.
4.3.1 The xMax/yMax Page |
You might remember when we were discussing Threshold valuesfor the Pressure coordinate, where we notedthat there is no xMin/xMax or yMin/yMax settings, because those areactually settings for the Active Area. And, herethey are! Except, there is no xMin/yMin. They are assumed to be (0,0),the tablet's origin coordinate, locatedin the upper left hand corner of your tablet.
What's that? You'd like to set xMin and yMin? Well, look at theother two pages of Active Area coordinates, first...
4.3.2 The xTop/xBottom Page |
4.3.3 The xOffset/xSize Page |
You might note that control marked, 'Use these Parameters' is onevery page. Selectingone of the pages' controls activates the text entry controls on thatpage (otherwise, you cannot edit them,and they display values of -1, whose significance we'll explainshortly.)Obviously, selecting one selects one of the three mutually exclusiveset of Active Area parameters.
Once you have selected an Active Area parameter, you'll have toenter values for the two- to four controlson the same page. In case you get confused as to what xMax or ySizerepresents, we put uphopefully-clear diagrams on every page for your reference.
Now, if you don't want to specify an Active Areasetting, that you'd rather use the entire tablet'sdrawing area, what should you do? Well, choose an Active Area parameteranyway. They're mutually exclusive, andthe software doesn't understand that they're all turned off. Then, setall the associatedtext controls to the value of -1. That's it, you now have control ofthe tablet's complete drawing area.Mind you, that's the default setting, anyway...
5. The “Diagnostics” Page
Occassionally, the tablet does not interact well the USB subsystem,or input from the tablet has been diverted from the Linux Kernel DeviceDriver to another device driver (the usual suspects are Mouse orJoystickdrivers.) When these situation happen, you'llneed to try to diagnose the situation, hence this screen. We'lldescribe diagnostics later; it's enoughof a topic for it's own chapter. But for now, the screen:
5.1 “From the Driver” Controls
The Table mapped to Device Driver label displays what driverthe USB subsystem believe has control of the tablet.This is analguous to cat /proc/bus/usb/devices from the commandline, but more convenient.
The Events label displays the number of events theLinux Kernel Device Driver believes that it has processed. This is thesameas looking at the file, /sys/bus/usb/drivers/aiptek/usbConnector/event_count for Linux 2.6.x,or /proc/driver/aiptek/usbConnector/event_count onLinux 2.4.x. Note that these files display an unsigned long integer; assuch, is is susceptable to wrap-around. This shouldn't concern you:you are really looking to see if the counter is incrementing. We shouldpoint out here, though, that the value displayed is static. It doesn'tupdate until and unless you press the Refresh button on thetoolbar.
The Diagnostics label displays the diagnostic message forthe lastmosterror condition the Linux Kernel Device Driver recognized since it haslast been reprogrammed. See The Linux KernelDevice Driver documentationto see what error conditions it can report on.
5.2 Tablet Event Controls
When diagnosing error conditions, sometimes you have to see evidencethat your movements on the tablet are beingtranslated to events. From the command, the evtest diagnostic,written by Vojtech Pavlik fits the bill perfectly.But, this is a GUI tool, so when we press the Start button,we'd like to see,
And so, we do. We're reading events from the Linux Kernel DeviceDriver, not from the X Server, so issues of Window focus do not apply.When you are through looking at the events, press the Stopbutton.
6. The File Commands
One thing we haven't yet discussed is the fact that you can save yourtablets', their Kernel Driver settings, and their X Server Driver settings, into a single flat file. To what end? So you can load them back in. And, when you doso, the tablet, the Kernel driver, and the three X Server Input drivers are allreprogrammed at once. This is fairly handy for people who have their tablets set up 'just right,' and want to be able to maintain those settings, even after reboots.
So, where are the controls? Would you believe, in the menu, as File|Open and File|Save?
I've got the following report while fuzzing the kernel with syzkaller.
On commit e19b205be43d11bff638cad4487008c48d21c103 (4.14-rc2).
It seems that there's no check on the actual type of the endpoint.
usb 1-1: BOGUS urb xfer, pipe 1 != type 3
------------[ cut here ]------------
WARNING: CPU: 0 PID: 24 at drivers/usb/core/urb.c:449
usb_submit_urb+0xf8a/0x11d0
Modules linked in:
CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.14.0-rc2-42660-g24b7bd59eec0 #277
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Workqueue: usb_hub_wq hub_event
task: ffff88006befe300 task.stack: ffff88006bf78000
RIP: 0010:usb_submit_urb+0xf8a/0x11d0 drivers/usb/core/urb.c:448
RSP: 0018:ffff88006bf7e040 EFLAGS: 00010286
RAX: 0000000000000029 RBX: ffff880069c00f00 RCX: 0000000000000000
RDX: 0000000000000029 RSI: ffffffff85a58840 RDI: ffffed000d7efbfa
RBP: ffff88006bf7e140 R08: 1ffff1000d7efaa0 R09: 0000000000000000
R10: ffff88006bf7e168 R11: 0000000000000000 R12: 1ffff1000d7efc0f
R13: 0000000000000003 R14: 0000000000000001 R15: ffff88006978ade0
FS: 0000000000000000(0000) GS:ffff88006c800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f5ad8cf0000 CR3: 000000006aa19000 CR4: 00000000000006f0
Call Trace:
aiptek_open+0xda/0x120 drivers/input/tablet/aiptek.c:850
input_open_device+0x17c/0x250 drivers/input/input.c:603
kbd_connect+0x103/0x150 drivers/tty/vt/keyboard.c:1515
input_attach_handler+0x59a/0x740 drivers/input/input.c:1002
input_register_device+0xce0/0xf90 drivers/input/input.c:2159
aiptek_probe+0x16fd/0x1b90 drivers/input/tablet/aiptek.c:1893
usb_probe_interface+0x35d/0x8e0 drivers/usb/core/driver.c:361
really_probe drivers/base/dd.c:413
driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
__device_attach_driver+0x230/0x290 drivers/base/dd.c:653
bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
__device_attach+0x26e/0x3d0 drivers/base/dd.c:710
device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
device_add+0xd0b/0x1660 drivers/base/core.c:1835
usb_set_configuration+0x104e/0x1870 drivers/usb/core/message.c:1932
generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
really_probe drivers/base/dd.c:413
driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
__device_attach_driver+0x230/0x290 drivers/base/dd.c:653
bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
__device_attach+0x26e/0x3d0 drivers/base/dd.c:710
device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
device_add+0xd0b/0x1660 drivers/base/core.c:1835
usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
hub_port_connect drivers/usb/core/hub.c:4903
hub_port_connect_change drivers/usb/core/hub.c:5009
port_event drivers/usb/core/hub.c:5115
hub_event+0x194d/0x3740 drivers/usb/core/hub.c:5195
process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
worker_thread+0x221/0x1850 kernel/workqueue.c:2253
kthread+0x3a1/0x470 kernel/kthread.c:231
ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
Code: 48 8b 85 30 ff ff ff 48 8d b8 98 00 00 00 e8 4e 92 8b ff 45 89
e8 44 89 f1 4c 89 fa 48 89 c6 48 c7 c7 c0 5a c8 85 e8 f0 4a dd fd <0f>
ff e9 9b f7 ff ff e8 da cb 26 fe e9 80 f7 ff ff e8 70 a1 f4
---[ end trace e8e0a0fb4ff1e35d ]---