Comment Implémenter le Multitouch

5 February 2010 par gillio_r

L'utilisation de surfaces multitouch comme dispositifs d'entrée change beaucoup l'interaction entre homme et ordinateur.

Nous verrons dans cet article les différentes solutions pour implémenter des applications destinées à marcher sur une surface multitouch, les avantages et faiblesses de chacune, et leur fonctionnement.

Driver et parallèle avec cartes son.

Le rôle du driver est de transformer les signaux reçus par le dispositif d'entrée (matériel) en données informatiquement compréhensibles. De plus, comme une surface multitouch est un dispositif d'entrée, il n'est pas idéal de faire du polling sur celui-ci pour obtenir son état, puis l'interpréter. Il est bien plus judicieux de recevoir une séquence d'évènements (events) symbolisant les entrées et changements d'état du dispositif.

Si l'on désire utiliser les surfaces multitouch hors expérimentations, et à une échelle plus grande que l'actuelle, il est capital d'arriver à créer une API unique permettant d'accéder au hardware, indépendamment du hardware en question. En effet, l'erreur à éviter est de créer pour chaque application une interface pour chacune des surfaces multitouch existantes.

Cette erreur avait été faite à l'époque de DOS avec les cartes son: pour avoir du son, il n'existait pas d'interface unique pour accéder au hardware, et il fallait traiter séparément chacune des cartes son disponibles sur le marché. L'approche était valide tant que ce marché était réduit aux cinq cartes son de Creative (Sound Blaster 16/32/etc), mais est totalement impossible à gérer 2 ans plus tard, ce qui a conduit à la création de OSS sous tous les systèmes UNIX, puis ALSA sous GNU/Linux pour remplacer OSS, et DirectSound sous Windows (aujourd'hui DirectX Audio).

Il est donc essentiel de définir une API unifiée pour accéder au hardware, ainsi qu'un protocole pour recevoir des événements d'une surface Multitouch depuis n'importe quelle application, en suivant le modèle de ALSA/DirectX Audio: une couche contenant le driver proprement dit, pour chacune des surfaces multitouch existantes, et une autre pour proposer une API unifiée aux applications.

On peut noter que faire un driver est beaucoup moins simple qu'il n'y parait dans le cas des dispositifs multitouch, car les fonctionnalités d'une surface Multitouch à l'autre varient énormément.

Ceci dépend beaucoup du matériel (optique, par conductivité, autres...) et des capacités de celui-ci (peut-on connaître la position entière de la main, juste la position de chacun des blobs, quel est le nombre maximum de blobs à un instant donné, sait-on faire la différence entre un stylet et un doigt ? Peut-on détecter une main qui ne touche pas la table ? Et les angles en ses doigts ? Etc...).

L'idéal aurait été de fixer un standard permettant de gérer un maximum de capacités du point de vue des surfaces Multitouch, quitte à ne s'en servir qu'en partie dans un premier temps, mais permettant ainsi d'aller plus facilement plus loin au fur et à mesure que le hardware évolue. On évite ainsi de devoir, au choix, perdre la rétrocompatibilité de toutes les anciennes applications, ou bien devoir rajouter et maintenir un support aux anciennes versions du standard au fur et à mesure des évolutions de ce dernier (comme ça a été le cas lors du remplacement de OSS par ALSA, avec la création du plug-in ALSA “alsa-oss” qui fournit la rétrocompatibilité).

Aujourd'hui, différents standards sont disponibles pour utiliser les surfaces multitouch:

  • TUIO 1.0 et 1.1 (trop limité, mais le plus utilisé de tous)
  • Windows Seven
  • Autres (standards propriétaires)

On remarquera enfin que pour les dispositifs optiques, c'est la responsabilité du driver que de traiter et comprendre l'image de la caméra pour en sortir des informations valides. On se retrouve donc avec des drivers qui peuvent se révéler particulièrement lourds à l'exécution, et qui dépendent eux-mêmes d'autres drivers également lourds (driver USB, driver de Webcam...).

Fonctionnement surface multitouch, simple
Fonctionnement surface multitouch, simple

Quel doit être le rôle de la table Multitouch?

Deux approches possibles

On a deux approches possibles : rajouter uniquement un dispositif d'entrée qui est un touchpad/écran tactile multitouch, et limiter son utilisation aux applications compatibles, ou bien considérer que l'écran tactile doit remplacer les dispositifs d'entrée traditionnels (clavier, souris).

Avec la deuxième solution on perd toute notion de fenêtre/textbox/bouton actif, car ces concepts sont très liés aux dispositifs d'entrée/sortie traditionnels : le principe du multitouch implique qu'on puisse par exemple, déplacer deux fenêtres simultanément, laquelle des deux est active ?

Le meilleur compromis actuel, car on ne peut raisonnablement pas reprendre de zéro tout ce qui tourne autour des interfaces graphiques que nous utilisons, est de considérer l'écran tactile comme un périphérique d'entrée parmi d'autres. Les applications compatibles peuvent alors s'en servir, et les applications qui ne le sont pas continuent à utiliser les dispositifs d'entrée/sortie traditionnels.

Legacy

Si l'on désire se débarrasser de la souris et du clavier pour réaliser une interface uniquement basée sur une dalle tactile, on doit alors émuler souris et clavier à partir de la surface (de même que OSS est émulé avec ALSA, pour reprendre l'exemple de l'introduction).

Autant émuler un clavier semble évident, car le principe du “clavier virtuel” n'a rien de nouveau.

Émuler une souris est par contre beaucoup plus problématique. Les restrictions que cela apporte sont très lourdes.

  • La précision d'un doigt sur la surface est insuffisante pour émuler un pointeur de souris (précis au pixel près).
  • On ne peut décider quel comportement adapter quand plusieurs objets/doigts/stylets touchent la surface simultanément.
  • Comment émule-t'on un clic, clic droit, roulette de souris, et ainsi de suite ?

La moins pire solution consiste à disposer d'une table capable de reconnaître un stylet particulier (de le différencier des autres blobs présents), et les différents boutons de la souris peuvent être simulés par des gestes avec l'autre main.

On y perd cependant en précision, et cela demande une surface possédant des capacités avancées par rapport à ce qui est généralement disponible.

Enfin, si l'on se base sur des gestes, l'utilisation de la table demandera un apprentissage, ce qui est contraire à l'idée de base (réaliser des interfaces très ergonomiques).

Dans quel domaine utiliser le multitouch?

  • Conception 3D: contrôler les trois axes de translation et de rotation est peu commode avec une souris et un clavier.
  • Jeux à plusieurs (jeux de société...).
  • Dessin.
  • Organisation de graphes.
  • Consultation de plans, d'images: le multitouch permet de créer une interface naturelle (qui se rapproche de ce qui était fait avec les versions papier).

Implémentation

Périphérique d'I/O sous UNIX

Dans l'idéal, tous les dispositifs d'entrées et de sorties sont gérés au niveau du serveur X sous UNIX. On entend par dispositifs d'entrées/sorties tous ceux qui donnent de l'information ou la recueillent de la part de l'opérateur, c'est à dire, wacom, souris, clavier, écran, webcams.

Continuons notre parallèle entre son et surface tactile:

À l'envers de toute logique, X Server ne propose rien pour gérer le son: les applications se connectent directement à ALSA ou OSS. C'est étonnant dans le sens où le but avoué d'utiliser un X Server est de centraliser toutes les interactions avec l'opérateur, et ainsi de pouvoir prendre le contrôle de la machine, ou simplement d'une seule application graphique à travers une interface réseau. Voir “Remote X11” et “XDMCP” pour approfondir ce sujet.

Pour utiliser une application à distance, en se connectant au serveur X de la machine distante, on arrive donc à la voir, et celle-ci reçoit bien les événements de souris, clavier de la machine cliente, par contre, le son de l'application reste sur la machine distante, à moins qu'on utilise une solution tierce pour le rapatrier sur le client (Esd/arts/PulseAudio...), mais qui pose alors des problèmes de synchronisation entre son et image, cause une duplication de fonctionnalités (gestion du transport des données en double), et enfin, oblige l'utilisateur à se connecter à deux services où un seul devrait suffire.

Ce défaut de conception possède une solution en développement depuis 2008: “Audio Extention for the X Window System” (cf références en fin de document).

On se retrouve exactement avec la même situation pour les surfaces tactiles, qui sont actuellement gérées de la même façon que le son: sans passer par X Server.

La solution est ici aussi en développement, avec la création de MPX. Par contre rien en cours à la connaissance de l'auteur pour ce qui est de développer une extension à X Server traditionnel pour intégrer la gestion des surfaces Multitouch (est-ce possible?)

Comment définir un protocole pour gérer les Events

On a deux approches possibles pour ce qui est de la responsabilité du protocole:

  • Faut-il un protocole qui décrit exactement l'état des entrées sur la table?
  • Faut-il un protocole qui fait des interprétations? (comprendre un geste et envoyer un event d'agrandissement, de rotation, de drag&drop, etc).

Le meilleur choix et de représenter l'état de la table, puis de réaliser des bibliothèques qui proposent aux applications d'interpréter certaines configurations comme un geste.

Pour ce qui est de la définition du protocole,

  • Prendre en compte que l'on puisse utiliser une table avec les doigts, ou avec 1+ stylet
  • Prendre en compte que certaines tables sont multiusers, et donc capables de détecter a qui appartient un blob (ou une main...).
  • Prendre en compte que l'on peut avoir du hardware qui se limite à détecter des blobs (le cas le plus fréquent en fait), mais d'autres qui vont détecter des mains, différencier main droite et main gauche, et stylet.
  • Pour la détection de mains, prendre en compte les angles entre chaque doigt pour les gestes
  • Pour les stylets reconnaître différents stylets (utile si on veut faire un blackboard virtuel, et qu'on aura un stylet noir, un stylet bleu, un rouge, ou bien une application 3d, avec un stylet de rotation, un autre de translation... les possibilités sont infinies)

Le groupe de travail travaillant sur MPX a été très loin pour ce qui est de la réflexion sur comment gérer et représenter les entrées de l'opérateur vis à vis d'une surface multitouch. De même pour TUIO avec la nouvelle version de leur protocole.

Cf Références en fin d'article:

  • 4ème et 5ème liens dans la catégorie MPX
  • Spécifications TUIO 2.0 sur tuio.org

Protocoles existants

TUIO 1, et 1.1

Basés sur OSC, et utilise un socket UDP pour communiquer avec les applications voulant s'en servir, la version 1.1 est rétrocompatible avec la version 1.0.

On peut trouver étonnant le fait d'utiliser un socket réseau dans ce cas la, mais le choix a été fait car les développeurs qui ont réalisé les implémentations de référence de TUIO ont réalisé un produit très portable, sans vouloir s'embarrasser de devoir faire varier l'implémentation d'un OS à l'autre. Ce problème est d'ailleurs déjà mentionné dans le point III.1.

Autre faille de conception de TUIO, il est parfait pour décrire les tables de type FTIR, qui ne détectent que l'emplacement de doigts qui touchent la table, et qui sont incapables de différencier un doigt d'un objet (téléphone, feuille de papier, paume de la main, stylet), ou différents doigts entre eux.

Ce protocole est le plus utilisé, mais aussi le plus "deprecated".

Sa deuxième version, dont les spécifications techniques sont prêtes, mais les implémentations de référence en cours de création sont donc plus que justifiées.

Windows Seven

Windows 7 propose son propre protocole pour communiquer avec du hardware multitouch, ainsi que les bibliothèques qui vont avec pour construire des applications utilisant ces fonctionnalités. Un accent a été mis sur la rétrocompatibilité, avec l'émulation d'une souris par la table tactile pour les applications non compatibles.

Il existe un serveur TUIO qui se base sur les events de Vista, afin de pouvoir faire marcher des applications utilisant un client TUIO sur, par exemple, un tablet PC sous Vista.

Cf Références en fin d'article:

  • Liste de serveurs TUIO sur tuio.org
  • MSDN

Protocoles propriétaires

On trouve certaines entreprises qui proposent des solutions capables de traiter beaucoup plus que les possibilités de TUIO 1.1, mais qui ne sont clairement pas implémentées sur Windows 7 (angle entre les doigts reconnaissance de marqueurs...).

Il est fort probable qu'ils aient utilisé un protocole complètement propriétaire, ou pire, n'aient pas établi de couche entre le driver du hardware utilisé, et les applications multitouch qu'ils proposent.

Cf Références en fin d'article:

  • multitouch.fi

Protocole à venir: TUIO 2

Propose toutes les capacités qu'on peut attendre pour l'instant. Peut traiter des events sur des mains qui ne touchent pas la table, des stylets, différents utilisateurs, et ainsi de suite.

Cf Références en fin d'article:

  • Spécifications TUIO 2.0 sur tuio.org

Protocoles à venir: avec MPX

MPX est une version modifiée de X Server, afin de pouvoir gérer les surfaces multitouch.

La création de MPX va beaucoup plus loin que la définition d'un standard pour utiliser une surface Multitouch comme dispositif d'entrée, mais la contient.

Cf Références en fin d'article:

  • X11 Input Extension Protocol Specification
  • Redefining Input in X
Fonctionnement surface multitouch avec XServer
Fonctionnement surface multitouch avec XServer

Sources:

La même problématique, avec les cartes son.

Utile pour comprendre la responsabilité d'une API unifiée, le rôle du driver, de son lien avec XServer...

http://en.wikipedia.org/wiki/Open_Sound_System

http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture

http://www.alsa-project.org

http://www.agnula.info/documentation/dp_tutorials/alsa_jack_ladspa/images/JACK-Diagram.html

http://www.chaoticmind.net/~hcb/murx/xaudio/index.html

Multipoint X Server

http://www.x.org/wiki/Development/Documentation/MPX

http://en.wikipedia.org/wiki/MPX

Driver Xorg/MPX convertissant un flux TUIO en flux d'events d'input MPX

http://socghop.appspot.com/student_project/show/google/gsoc2009/nuigroup/t124022895795

X11 Input Extension Protocol Specification: http://www.x.org/docs/Xi/port.pdf

Redefining Input in X: http://mirror.linux.org.au/pub/linux.conf.au/2008/slides/088-redefining_input_in_X.pdf

http://grafitiproject.files.wordpress.com/2008/12/grafiti.pdf

http://code.google.com/p/sparsh-ui/

Autres

http://nuigroup.com/forums/viewthread/4832/

http://nuigroup.com/forums/viewthread/4975/

http://blogs.msdn.com/e7/archive/2009/03/25/touching-windows-7.aspx

http://multitouch.fi/why-multitouch

http://tuio.org

Tags: , , ,

Laisser un commentaire


  • molle pack assembly instructions
  • polycom user manual
  • paper claw instructions
  • infant massage instructions
  • 1040 c instructions
  • above ground pool closing instructions
  • rice maker instructions
  • motorola ht1250 user manual
  • advance watch instructions
  • yugioh instructions
  • 990 tax form instructions
  • delta shower faucet repair instructions
  • sissy masturbation instruction
  • radio shack 3 in 1 remote instructions
  • marshmallow shooter instructions
  • sharp carousel microwave instructions
  • kenmore manual
  • div instruction
  • welding instructions
  • russian spiral beading instructions
  • instructional strategies for physical education
  • mindstorm robot instructions
  • instructional tubes
  • i-765 form instruction
  • instruction manuals for cameras
  • toshiba laptop user manuals
  • instruction for 1040x
  • call forwarding instructions
  • docubind p100 instructions
  • lpc2148 user manual
  • candyland game instructions
  • native american flute instruction
  • 2008 form 990 instructions
  • origami cardinal instructions
  • viagra instructions for use
  • ralph tyler basic principles of curriculum and instruction
  • ntvdm cpu has encountered an illegal instruction
  • pa-40 instructions
  • garage door opener programming instructions
  • methods of group exercise instruction
  • irs form 8621 instructions
  • origami instructions for kids
  • us bank wire transfer instructions
  • ept test instructions
  • 1911 disassembly instructions
  • hotpoint dishwasher instructions
  • risk lord of the rings instructions
  • moss out instructions
  • water softener installation instructions
  • metacognitive instruction
  • hp officejet j4580 manual
  • stouffer s french bread pizza cooking instructions
  • pa tax return instructions
  • energizer battery charger instructions
  • web design instruction
  • what is instructional design
  • swimp3 instructions
  • azo instructions
  • origami hexagon box instructions
  • instructional oral sex videos
  • safety instructions
  • zune manual
  • super colon cleanse instructions
  • motorola mts 2000 user manual
  • hulled barley cooking instructions
  • texas margin tax instructions
  • user manual example
  • gambling instruction
  • intarsia knitting instructions
  • opnav instruction 6000.1c
  • sharp atomic clock instructions spc364
  • new york state tax return instructions
  • dod instruction 1000.13
  • adobe photoshop instructions
  • instructional dvd
  • direct instruction special education
  • shut the box game instructions
  • origami deer instructions
  • origami rhino instructions
  • casio pathfinder 2632 manual
  • instructions for form w 2
  • free singer sewing machine manuals
  • sba form 413 instructions
  • motorola bluetooth user manual
  • logic pro user manual
  • instructions for 24 hour urine collection
  • schedule ssa instructions
  • down comforter washing instructions
  • stroking instructions
  • directv slimline dish installation instructions
  • bowling instructions for beginners
  • honda user manual
  • tassimo instructions
  • hossfeld bender instructions
  • facial instruction
  • epson workforce 610 user manual
  • fdic call report instructions
  • article on differentiated instruction
  • woodworking instruction
  • radio shack user manuals
  • instructions for form 8582
  • paper lantern instructions
  • evenflo car seat instruction manual
  • white basmati rice cooking instructions
  • disney uno instructions
  • user instructions
  • javma instructions for authors
  • instructional strategies for phonics
  • md form 500 instructions
  • tig welding instructions
  • pottery barn crib assembly instructions
  • tai chi instructional videos
  • radio installation instructions
  • lego 7676 instructions
  • instructional design software programs
  • form i-129f instructions
  • linksys wireless-g router instructions
  • washing machine instructions
  • thumler s tumbler instructions
  • reese friction sway control instructions
  • tooth extraction care instructions
  • instructions how to make paper airplanes
  • combitube instructions
  • i touch manual
  • wire wrapping instructions
  • hp photosmart instructions
  • lego gun building instructions
  • thomas train set instructions
  • monistat 3 instructions
  • rug braiding instructions
  • monopoly junior dig n dinos instructions
  • instructions for n-400
  • little tikes car bed assembly instructions
  • sony exmor r manual
  • sex instructionals
  • federal circuit jury instructions
  • form 8398 instructions
  • pops-a-dent instructions
  • instructional design - chicago
  • cubing differentiated instruction
  • ge universal remote control instructions
  • iolite vaporizer instructions
  • hogwarts castle lego instructions
  • west bend stir crazy popcorn popper instructions
  • shl instruction
  • ipod touch manual 4th generation
  • instructional practices in teaching
  • aztek airbrush instructions
  • trampoline instructions
  • improving instruction
  • journal of bacteriology instructions to authors
  • s corp instructions
  • steelcase 9000 assembly instructions
  • navy harp duty instruction
  • clock instructions
  • from 1040 instructions
  • ab swing instructions
  • elfa instructions
  • no sew tutu instructions
  • instructions for farkle
  • direct tv remote programming instructions
  • star wars transformers instructions
  • sony cybershot n50 manual
  • kettlebell instruction
  • mustang convertible top installation instructions
  • schedule b instruction
  • rice instructions
  • instructional design basics
  • instructions to build a chicken coop
  • instructions for irs form 6251
  • water bath canning instructions
  • camera instructions
  • selena jerk off instructions
  • youth baseball instruction
  • wilton instructions
  • garmin instruction manual
  • lycoming service instructions
  • altistart 48 user manual
  • samsung camera instructions
  • tying a bow tie instructions
  • heatilator gas fireplace instructions
  • massachusetts income tax instructions
  • annoy a tron instructions
  • breast pump instructions
  • brookstone grill alert instructions
  • r4 instructions
  • spyderco knife sharpener instructions
  • uscis i-765 instructions
  • logitech user manual
  • balloon hat instructions
  • avery dark t-shirt transfer instructions
  • irs 1023 instructions
  • 2010 toyota prius owners manual
  • aqua glass shower installation instructions
  • personal property consignment instruction guide
  • manual transmission gears
  • diving instruction
  • pennsylvania inheritance tax return instructions
  • pga golf instruction
  • nih final progress report instructions
  • allure flooring instructions
  • safety pin christmas tree instructions
  • instructions for form 1023
  • ste user manual
  • ny state it-201 instructions
  • weapons of math instruction
  • plos pathogens instructions to authors
  • roomba instructions
  • free hairbow instructions
  • oral sex instruction
  • anderson patio door installation instructions
  • tassimo coffee maker instructions
  • rose petal cottage assembly instructions
  • visual boy advance instructions
  • chicken dance instructions
  • well chlorination instructions
  • origami fortune cookie instructions
  • innotek instructions
  • shake n bake chicken instructions
  • wd my passport instructions
  • jack lalanne power juicer instructions
  • manual tube benders
  • how to differentiate instruction in mixed ability classrooms
  • fry 9c instructions
  • instruction sets
  • instructional design competencies
  • cast on knitting instructions
  • degrees in instructional design
  • blackberry storm user manual
  • capri sun wallet instructions
  • pa rct-101 instructions
  • rohn tower installation instructions
  • baked potato instructions
  • how do i differentiate instruction
  • software user manual template
  • ipod mini battery replacement instructions
  • motorcycle instruction permit colorado
  • msd 6al instructions
  • make your own lego instructions
  • python user manual
  • dance step instructions
  • driving instruction rochester ny
  • georgia state tax instructions
  • sony user manual
  • form 8880 instructions
  • ftp instructions
  • access instructions
  • microsoft excel instructions
  • newborn discharge instructions
  • golf instruction putting
  • lokar shifter instructions
  • ga form 600s instructions
  • casio manuals
  • form wh-347 instructions
  • irs form 8814 instructions
  • folding instructions for paper airplanes
  • 9th circuit model jury instructions
  • moen kitchen faucet repair instructions
  • 2009 form 5500 instructions
  • ge microwave instruction manual
  • instructions how to make a diaper cake
  • rit dying instructions
  • nikon d100 user manual
  • brothers sewing machine manual
  • shower installation instructions
  • logitech mouse instructions
  • suntrust wire instructions
  • form u4 instructions
  • sportline heart rate watch manual
  • hypercom t7 plus user manual
  • oral sex instruction videos
  • form 1099 general instructions
  • 1099 miscellaneous instructions
  • ruffler foot instructions
  • orgami instructions
  • tax instruction booklet
  • packing instruction 650
  • form 712 instructions
  • evenflo pack n play instructions
  • cake decorating instructions
  • basket weaving instructions
  • dermabond wound care instructions
  • sock animals instructions
  • math differentiated instruction
  • decoupage instructions
  • aha cpr instructions
  • singer industrial sewing machine manuals
  • instructions for dd form 1172
  • wisconsin department public instruction
  • paracord braiding instructions
  • ct 1040 instructions
  • faxing instructions
  • ohio state income tax instructions
  • touchpad instructions
  • sporting clays instruction
  • mitsubishi mr slim user manual
  • epson printer instructions
  • guided masturbation instruction
  • oster blender instructions
  • instruction booklets
  • crochet loop stitch instructions
  • zutter bind it all instructions
  • golf instruction for women
  • wanking instructions
  • e6b instructions
  • cell phone user manuals
  • what is phonics instruction
  • washington state office of superintendent of public instruction
  • irs form 8801 instructions
  • taboo instructions
  • waterfall card instructions
  • i 134 instructions
  • form 8038 instructions
  • spud gun instructions
  • ipod touch user manual
  • direct vs indirect instruction
  • indoor palm tree care instructions
  • instructional resource teacher
  • 100s instructions
  • rag quilting instructions
  • irs form 6198 instructions
  • wonder wash instructions
  • camcorder manuals
  • tai chi instructions
  • german language instruction
  • lego car instructions
  • msd 7531 instructions
  • abortion aftercare instructions
  • irs w-8ben instructions
  • chain mail instructions
  • bowflex assembly instructions
  • instruction 1120
  • teeth whitening instructions
  • zip-line instructions
  • lawn mower manual
  • diaper genie instruction manual
  • apple iphone instruction manual
  • u s passport instructions
  • dod instruction 1332.38
  • 3d snowflake instructions
  • amoxicillin 500 mg dosage instructions
  • instructions on how to insert a tampon
  • dog grooming instructions
  • differentiated instruction lesson plan template
  • ipod nano instruction booklet
  • paper pinwheel instructions
  • form w 8ben instructions
  • brother fax 575 instructions
  • nucc instruction manual
  • fetch instruction
  • origami polyhedra instructions
  • 1045 instructions
  • hasbro game instructions
  • telephone instructions
  • writing user manual
  • droid eris user manual
  • federal income tax 1040ez instructions
  • butterfly loom instructions
  • uno spin instruction manual
  • maryland form 503 instructions
  • zojirushi instructions
  • instructional design for online learning
  • hair clip instructions
  • samsung cell phone instructions
  • robocopy instructions
  • motorola bluetooth instructions
  • instructional fair
  • macrame bracelets instructions
  • crest white strips instructions
  • pa 40 instructions
  • verizon call block instructions
  • mason bee house instructions
  • explicit instruction definition
  • form 941x instructions
  • origami crane folding instructions
  • general instruction of the roman missal
  • topsy turvy instructions
  • canon powershot sx30 manual
  • form 5498 instructions
  • linksys wireless router instructions
  • instruction targeted for tabe success
  • kill a watt instructions
  • blue bowl instructions
  • instruction sex
  • driving instructions and map
  • navy instructions
  • chicago flight instruction
  • creation instruction association
  • nec user manual
  • bingo game instructions
  • wisconsin superintendent of public instruction
  • optimal optimus instructions
  • drumbone instructions
  • stauer atomic watch instructions
  • arizona 140ez instructions
  • form u-4 instructions
  • talking watch instructions
  • douche instructions
  • hypercom t7plus manual
  • blender user manual pdf
  • wisconsin schedule h instructions
  • instructions for knitting a hat
  • instructional design elearning
  • anal instruction
  • texas pattern jury instructions
  • liquid nails instructions
  • coralife protein skimmer instructions
  • private music instruction
  • the instruction at referenced memory at the memory could not be written
  • tomtom xl manual
  • paternity leave navy instruction
  • irs forms instructions
  • mirro pressure canner instruction manual
  • transcendental meditation instructions
  • room essentials assembly instructions
  • dynamic instructional design model
  • workout instructions
  • best sex instruction
  • edge finder instructions
  • volleyball scorebook instructions
  • mature jerk off instructions
  • it 201 tax form instructions
  • origami scorpion instructions
  • tv ears instructions
  • instructions for tax form 1040
  • instructions for clue
  • jewelry making instructions
  • occ call report instructions
  • sch a instructions
  • breast bondage instructions
  • canon powershot sd890 is manual
  • federal jury practice and instructions
  • irs form 1116 instructions
  • instructional technology resources
  • ikea bed instructions
  • medrol dosepak instructions
  • crossbow instructions
  • theme-based instruction
  • armitron wr330 instructions
  • glock 22 instruction manual
  • federal income tax form 1040 instructions
  • 1065 k 1 instructions
  • curriculum and instruction degree
  • xslt processing instruction
  • cigar box purses instructions
  • ihome alarm clock instructions
  • rowenta iron self cleaning instructions
  • classroom instruction videos
  • vibrator instructions
  • differentiating instruction for students with learning disabilities
  • craftlace instructions
  • tissot t-touch instructions
  • origami squid instructions
  • mac user manual
  • instructional guide template
  • wisconsin form 4 instructions
  • mr coffee coffee maker cleaning instructions
  • sse instruction
  • fly tying patterns instructions
  • timex triathlon watch instructions
  • memorandum of instruction format
  • belkin n wireless router user manual
  • softball hitting instructions
  • dd form 1348-1a instructions
  • instructions 1040a
  • leupold scope mounting instructions
  • bra measurement instructions
  • brother p touch 1180 instructions
  • tie dye instructions for kids
  • jiu-jitsu instructional videos
  • paper tole instructions
  • disadvantages of direct instruction
  • concept oriented reading instruction
  • viking knit instructions
  • nec aspire user manual
  • curriculum instruction degree
  • research-based math instruction
  • energizer rechargeable batteries instructions
  • tomtom go 720 manual
  • ge universal remote instructions
  • worm factory instruction manual
  • brighthouse remote instructions
  • slingbox pro hd user manual
  • scotch tl901 thermal laminator instructions
  • bean bag toss instructions
  • singer sewing machine repair manual
  • lg air conditioner user manual
  • instructional strategies for autism
  • computer managed instruction
  • form w-2c instructions
  • process instructions
  • stanley 45 instructions
  • managing small group instruction
  • hitting instruction
  • types of classroom instruction
  • theories of instruction
  • moneygram instructions
  • washington state office of the superintendent of public instruction
  • munchkin sterilizer instructions
  • instructions schedule k 1