<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Trebuchet MS";
        panose-1:2 11 6 3 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Trebuchet MS","sans-serif";
        font-variant:normal !important;
        color:windowtext;
        text-transform:none;
        position:relative;
        top:0pt;
        mso-text-raise:0pt;
        letter-spacing:0pt;
        text-shadow:none;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;
        vertical-align:baseline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE-CH link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'>Hi Peter<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'><o:p> </o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'>In the original code of Input.Mod in Native Oberon “Alpha” there is a procedure AddMouse* to add a procedure of type “PollMouse” to the MousePoller chain.<o:p></o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span lang=EN-US style='font-size:11.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span lang=EN-US style='font-size:11.0pt;font-family:"Courier New"'>PROCEDURE AddMouse*(poll: PollMouse);     (** non-portable *)<o:p></o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span lang=EN-US style='font-size:11.0pt;font-family:"Courier New"'>VAR n: MousePoller;<o:p></o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span lang=EN-US style='font-size:11.0pt;font-family:"Courier New"'>BEGIN<o:p></o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span lang=EN-US style='font-size:11.0pt;font-family:"Courier New"'>     NEW(n); n.poll := poll; n.next := mouse; mouse := n<o:p></o:p></span></font></p><p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:11.0pt;font-family:"Courier New"'>END AddMouse;<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'><o:p> </o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'>br<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'>Jörg<o:p></o:p></span></font></p><p class=MsoNormal><font size=2 face="Trebuchet MS"><span lang=EN-US style='font-size:11.0pt;font-family:"Trebuchet MS","sans-serif"'><o:p> </o:p></span></font></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><font size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";font-weight:bold'>From:</span></font></b><font size=2 face=Tahoma><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Oberon [mailto:oberon-bounces@lists.inf.ethz.ch] <b><span style='font-weight:bold'>On Behalf Of </span></b>Jan de Kruyf<br><b><span style='font-weight:bold'>Sent:</span></b> Mittwoch, 28. Oktober 2015 10:37<br><b><span style='font-weight:bold'>To:</span></b> ETH Oberon and related systems<br><b><span style='font-weight:bold'>Subject:</span></b> Re: [Oberon] Mice in Native Oberon.<o:p></o:p></span></font></p></div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>hallo,<o:p></o:p></span></font></p><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>trying to get beck into things. . .<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>In answer to your observation:<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>In Linux my laptop also sums the pad and the mouse. So I guess it is standard behaviour<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>and when you want to select mouse only for instance, you switch the pad off in the bios.<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>j.<o:p></o:p></span></font></p></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p></div></div><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p><div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>On Tue, Oct 20, 2015 at 9:42 PM, <<a href="mailto:peter@easthope.ca" target="_blank">peter@easthope.ca</a>> wrote:<o:p></o:p></span></font></p><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>In Native Oberon,<br>====<br>MODULE Input;<br>        ...<br>TYPE<br>        PollMouse* = PROCEDURE (VAR keys: SET; VAR dx, dy, dz: INTEGER): BOOLEAN;       (** non-portable *)<br>        ...<br>        MousePoller = POINTER TO RECORD<br>                poll: PollMouse;<br>                next: MousePoller<br>        END;<br>                ...<br>VAR<br>                ...<br>        mouse: MousePoller;<br>====<br>Good!  mouse.next can point to a second mouse and etc.  That allows a list of mice.<br><br>Further on,<br>====<br>PROCEDURE Mouse*(VAR keys: SET; VAR x, y: INTEGER);<br>        ...<br>                REPEAT  (* get all available mouse events, or until keys change *)<br>                        p := mouse; rawkeys := {}; ok := FALSE;<br>                        WHILE p # NIL DO        (* poll all mice and sum keys and movements *)<br>                                IF p.poll(mousekeys, dx, dy, dz) THEN<br>                                        (* Assimilate mouse button information and X,Y coordinate information. *)<br>                                END;<br>                                p := p.next<br>                        END<br>                UNTIL ~ok OR (rawkeys # lastkeys);<br>====<br><br>Observation<br>REPEAT .. UNTIL steps through the list of mice, assimilating<br>information from each.  When more than one mouse is present, the<br>input from each is equivalent to another.  Multiple mice simply allows<br>redundancy.  In the sources, I've seen nothing to add a second mouse to<br>the list.<br><br>Conclusion<br>Input was built to allow multiple mice but the code to configure and use<br>multiple mice wasn't developed.<br><br>Correct?  Erroneous?  Comments?<br><br>Thanks,                       ... Peter E.<br><font color="#888888"><span style='color:#888888'><br><span class=hoenzb>--</span><br><span class=hoenzb>123456789 123456789 123456789 123456789 123456789 123456789 123456789 12</span><br><span class=hoenzb>Tel <a href="tel:%2B1%20360%20639%200202">+1 360 639 0202</a> or  <a href="tel:%2B1%20604%20822%207107">+1 604 822 7107</a></span><br><span class=hoenzb><a href="http://easthope.ca/Peter.html" target="_blank">http://easthope.ca/Peter.html</a> Bcc: peter at easthope. ca</span><br><br><span class=hoenzb>--</span><br><span class=hoenzb><a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems</span><br><span class=hoenzb><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a></span></span></font><o:p></o:p></span></font></p></div><p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p></div></div></body></html>