<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">I tried all numbers from 0 to 7, all
      the other numbers give, surprisingly, "Power Button ready" and
      otherwise the same results.<br>
      <br>
      Am 22/12/13 13:38, schrieb Julien Saint-Martin:<br>
    </div>
    <blockquote
cite="mid:CAF8ijLXefKEuLq+TbU3Nc4Eco=j0vmce2KxnG_s6qprSKFuR9A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>Hi Manuel,<br>
                  <br>
                  You're welcome and I think you are close to success
                  :-) "Sleep Button ready" means ChucK succeeds to open
                  a device. But it don't looks like to be the right one.<br>
                </div>
                <br>
              </div>
              On my side I tested your code replacing 5 by 0 in the
              line:<br>
              if(!hid.openKeyboard(0)) me.exit();<br>
              <br>
            </div>
            It works for me. Can you try the same thing? Maybe argument
            of openKeyboard is not related to the event number in your
            system.<br>
            <br>
          </div>
          Cheers,<br>
        </div>
        Julien<br>
        <div>
          <div>
            <div>
              <div><br>
                <div><br>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">2013/12/22 Manuel Bärenz <span
            dir="ltr"><<a moz-do-not-send="true"
              href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000">
              <div>Thanks a lot Julien,<br>
                <br>
                I'm still trying to set up the keyboard events. I found
                /dev/input/by-path/, which contains symlinks to
                /dev/input with sensible names. I guess this is what you
                meant. One of them is called
                "platform-i8042-serio-0-event-kbd", I assume that is the
                keyboard. It links to /dev/input/event5, so I granted
                access rights to the device to everyone and wrote the
                following little script:<br>
                <br>
                Hid hid;<br>
                HidMsg msg;<br>
                if(!hid.openKeyboard(5)) me.exit();<br>
                <<< <a moz-do-not-send="true"
                  href="http://hid.name" target="_blank">hid.name</a>(),
                "ready">>>;<br>
                while(true)<br>
                {<br>
                  hid => now;<br>
                  <<< "received event" >>>;<br>
                  while(hid.recv(msg))<br>
                  {<br>
                    <<< msg.ascii, " was used" >>>;<br>
                  }<br>
                }<br>
                <br>
                The output of it is, surprisingly, "Sleep Button ready",
                and it never comes to the point of "received event". Any
                ideas?<br>
                <br>
                Best, Manuel<br>
                Am 06/12/13 09:57, schrieb Julien Saint-Martin:<br>
              </div>
              <div>
                <div class="h5">
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>
                          <div>
                            <div>
                              <div>
                                <div>
                                  <div>
                                    <div>
                                      <div>
                                        <div>Hi Manuel and <span
                                            name="Moisés Gabriel Cachay
                                            Tello">Moisés</span>,<br>
                                          <br>
                                        </div>
                                        Sorry for confusion I checked my
                                        code and I use Hid event not
                                        KBHit.<br>
                                        <br>
                                      </div>
                                      I work on linux too (Debian). And
                                      I have to modify a little my linux
                                      config to use KeyBoard in Chuck.<br>
                                    </div>
                                    On linux distrubutions I tried,
                                    Chuck didn't receives Kb event by
                                    default. But fortunately there is a
                                    work around.<br>
                                  </div>
                                  I am not on my linux PC now  so maybe
                                  the following is not exactly right:<br>
                                </div>
                                Go to directory /dev/input and find
                                which event corresponds to your keyboard
                                (there is a directory with links name of
                                hid but I didn't remember the name) .
                                For me it is usually event0. <br>
                              </div>
                              Then modify access rights to this event to
                              give read access to everyone.<br>
                            </div>
                            After that your chuck may catch keyboard
                            events.<br>
                            <br>
                          </div>
                          Once ok, Chuck works great on linux and you
                          can use fantastic Jack server to connect it
                          directly to other sound tools. So I encourage
                          you to don't give up with linux :-)<br>
                          <br>
                        </div>
                        have fun,<br>
                      </div>
                      Julien<br>
                      <div>
                        <div>
                          <div>
                            <div>
                              <div>
                                <div>
                                  <div><br>
                                    <div>
                                      <div><br>
                                        <br>
                                        <br>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                    <div class="gmail_extra"><br>
                      <br>
                      <div class="gmail_quote">2013/12/5 Moisés Gabriel
                        Cachay Tello <span dir="ltr"><<a
                            moz-do-not-send="true"
                            href="mailto:xpktro@gmail.com"
                            target="_blank">xpktro@gmail.com</a>></span><br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <div dir="ltr">I got some problems with the
                            linux builds also, and my final solution was
                            using wine and the windows version of
                            miniAudicle (the windows ChucK standalone
                            also would work) and everythings just goes
                            fine, In fact I wrote and tested the above
                            code with it :)<br>
                          </div>
                          <div>
                            <div>
                              <div class="gmail_extra"><br>
                                <br>
                                <div class="gmail_quote">2013/12/5
                                  Manuel Bärenz <span dir="ltr"><<a
                                      moz-do-not-send="true"
                                      href="mailto:manuel@enigmage.de"
                                      target="_blank">manuel@enigmage.de</a>></span><br>
                                  <blockquote class="gmail_quote"
                                    style="margin:0 0 0
                                    .8ex;border-left:1px #ccc
                                    solid;padding-left:1ex">
                                    <div bgcolor="#FFFFFF"
                                      text="#000000">
                                      <div>Hey Moisés,<br>
                                        <br>
                                        Thanks again for this more
                                        sophisticated example. I'm
                                        having problems with HIDs, I
                                        constantly get this error:<br>
                                        <p
style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">HidIn:


                                          couldn't open keyboard 0...<br>
                                          I get the error for all values
                                          from 0 to 5. I'm using Gentoo
                                          Linux. For tonight's
                                          presentation, I'm going to
                                          stick with KBHit probably.<br>
                                        </p>
                                        <p
style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><br>
                                          Best, Manuel<br>
                                        </p>
                                        <br>
                                        <br>
                                        Am 05/12/13 17:43, schrieb
                                        Moisés Gabriel Cachay Tello:<br>
                                      </div>
                                      <div>
                                        <div>
                                          <blockquote type="cite">
                                            <div dir="ltr">Hi, I'm a
                                              coursera's ChucK course
                                              student, in the lectures,
                                              Ge used HIDs to handle
                                              keyboard input, so this
                                              snippet should help (I'm
                                              commenting the code for
                                              clarity).<br>
                                              <br>
                                              // HID stands for
                                              human-interface-device,
                                              also this is an event,<br>
                                              // see below for more info<br>
                                              Hid hid;<br>
                                              <br>
                                              // This is a message, this
                                              will hold the event's
                                              (keypress) information.<br>
                                              HidMsg msg;<br>
                                              <br>
                                              // We should define a
                                              device number since we
                                              would have multiple
                                              keyboards <br>
                                              // attached to our
                                              computer, 0 would do on
                                              most cases but you can try
                                              1, or 2 <br>
                                              // if that doesn't work.<br>
                                              0 => int device_number;<br>
                                              <br>
                                              // We check if the device
                                              attach with ChucK was
                                              successful, otherwise the
                                              program <br>
                                              // would end inmediately<br>
                                              if(!hid.openKeyboard(device_number))

                                              me.exit();<br>
                                              <br>
                                              <<<"Keyboard:", <a
                                                moz-do-not-send="true"
                                                href="http://hid.name"
                                                target="_blank">hid.name</a>(),

                                              " ready!">>>;<br>
                                              <br>
                                              // We setup a simple sound
                                              chain for demonstration
                                              pruposes only<br>
                                              BeeThree organ => JCRev
                                              rev => dac;<br>
                                              .05 => rev.mix;<br>
                                              <br>
                                              // And repeat forever, see
                                              how the keyboard input is
                                              something that would
                                              happen <br>
                                              // *forever*, a keypress
                                              can occur anytime so we
                                              need to stay alert until a
                                              new <br>
                                              // event comes in<br>
                                              while(true) {<br>
                                                  // Events are things
                                              that happens sometime, in
                                              ChucK this mains basically
                                              <br>
                                                  // hold ourselves
                                              until the event appears
                                              (thats why we wain for the
                                              event <br>
                                                  // ChucKing it to now)<br>
                                                  hid => now;<br>
                                              <br>
                                                  // When our wait
                                              finishes: check all the
                                              messages that came from
                                              the keyboard<br>
                                                  // using the recv
                                              function, and passing msg
                                              as the holder of the
                                              information<br>
                                                  while(hid.recv(msg)) {<br>
                                              <br>
                                                      // we check if the
                                              message is a buttondown
                                              message, in that case:<br>
                                                     
                                              if(msg.isButtonDown()) {<br>
                                                          // We show the
                                              ascii value of the key
                                              pressed<br>
                                                          <<<
                                              "Button down:", msg.ascii
                                              >>>;<br>
                                              <br>
                                                          // and make
                                              our generator sound, see
                                              how we check if the<br>
                                                          // frequency
                                              too much high we simply
                                              discard this message<br>
                                                          msg.ascii
                                              => Std.mtof => float
                                              freq;<br>
                                                          if(freq >
                                              20000) continue;<br>
                                              <br>
                                                          freq =>
                                              organ.freq;<br>
                                                          1 =>
                                              organ.noteOn;<br>
                                              <br>
                                                          // this will
                                              make sure the sound will
                                              keep for a minimum amount
                                              of <br>
                                                          // time,
                                              otherwise, concurrent
                                              events may stop before
                                              even commencing<br>
                                                          80::ms =>
                                              now;<br>
                                                      } else {<br>
                                                          // If we're
                                              not in a buttondown event,
                                              just assume it's a key has
                                              been<br>
                                                          // left out
                                              and shut down the sound.<br>
                                                          <<<
                                              "Button up:", msg.ascii
                                              >>>;<br>
                                                          1 =>
                                              organ.noteOff;<br>
                                                      }<br>
                                                  }<br>
                                              <br>
                                              }<br>
                                              <br>
                                            </div>
                                            <div class="gmail_extra"><br>
                                              <br>
                                              <div class="gmail_quote">2013/12/5

                                                Manuel Bärenz <span
                                                  dir="ltr"><<a
                                                    moz-do-not-send="true"
href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
                                                <blockquote
                                                  class="gmail_quote"
                                                  style="margin:0 0 0
                                                  .8ex;border-left:1px
                                                  #ccc
                                                  solid;padding-left:1ex">
                                                  <div bgcolor="#FFFFFF"
                                                    text="#000000">
                                                    <div>Hi Julien,<br>
                                                      <br>
                                                      No, this is not
                                                      the case. KBHits
                                                      are only key down
                                                      events. I tried to
                                                      include several kb
                                                      => now, but it
                                                      didn't help.<br>
                                                      See also this
                                                      example here:<br>
                                                      <a
                                                        moz-do-not-send="true"
href="http://chuck.cs.princeton.edu/doc/examples/event/kb2.ck"
                                                        target="_blank">http://chuck.cs.princeton.edu/doc/examples/event/kb2.ck</a><br>
                                                      Apparently, the
                                                      solution is
                                                      emptying the event
                                                      queue by calling
                                                      kb.getchar() until
                                                      kb.more() returns
                                                      false:
                                                      <div><br>
                                                        <br>
                                                        KBHit kb;<br>
                                                        <br>
                                                        me.sourceDir() +
                                                        "/bum.wav" =>
                                                        string filename;<br>
                                                        <br>
                                                        adc => WvOut
                                                        b =>
                                                        blackhole;<br>
                                                        filename =>
                                                        b.wavFilename;<br>
                                                        kb => now;<br>
                                                      </div>
                                                      while(kb.more())
                                                      kb.getchar();
                                                      <div><br>
                                                        b.closeFile();<br>
                                                        <br>
                                                        SndBuf buf =>
                                                        dac;<br>
                                                        filename =>
                                                        buf.read;<br>
                                                        kb => now;<br>
                                                        <br>
                                                      </div>
                                                      The important line
                                                      is
                                                      "while(kb.more())
                                                      kb.getchar();",
                                                      apparently. So I
                                                      guess kb =>
                                                      now; doesn't wait
                                                      at all if there
                                                      are still
                                                      unprocessed keys
                                                      in the queue.<br>
                                                      <br>
                                                      Best, Manuel<br>
                                                      <br>
                                                      Am 05/12/13 12:18,
                                                      schrieb Julien
                                                      Saint-Martin:<br>
                                                    </div>
                                                    <div>
                                                      <div>
                                                        <blockquote
                                                          type="cite">
                                                          <div dir="ltr">
                                                          <div>
                                                          <div>
                                                          <div>
                                                          <div>Hi
                                                          Manuel,<br>
                                                          <br>
                                                          </div>
                                                          Maybe your
                                                          problem is as
                                                          follow:<br>
                                                          For each key
                                                          press there is
                                                          two kb events:
                                                          key down and
                                                          key up.<br>
                                                          <br>
                                                          </div>
                                                          A simple
                                                          solution maybe
                                                          to write "kb
                                                          => now;"
                                                          twice.<br>
                                                          <br>
                                                          </div>
                                                          Cheers,<br>
                                                          </div>
                                                          Julien<br>
                                                          <div>
                                                          <div><br>
                                                          <br>
                                                          <div><br>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          <div
                                                          class="gmail_extra"><br>
                                                          <br>
                                                          <div
                                                          class="gmail_quote">2013/12/5

                                                          Manuel Bärenz
                                                          <span
                                                          dir="ltr"><<a
moz-do-not-send="true" href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
                                                          <blockquote
                                                          class="gmail_quote"
                                                          style="margin:0
                                                          0 0
                                                          .8ex;border-left:1px
                                                          #ccc
                                                          solid;padding-left:1ex">Hello

                                                          again,<br>
                                                          <br>
                                                          I also wanted
                                                          to demonstrate
                                                          a simple
                                                          sequencer
                                                          prototype that
                                                          lets me<br>
                                                          record a file
                                                          and then plays
                                                          it back to me.
                                                          I've come this
                                                          far:<br>
                                                          <br>
                                                          KBHit kb;<br>
                                                          <br>
                                                          me.sourceDir()
                                                          + "/bum.wav"
                                                          => string
                                                          filename;<br>
                                                          <br>
                                                          adc =>
                                                          WvOut b =>
                                                          blackhole;<br>
                                                          filename =>
                                                          b.wavFilename;<br>
                                                          kb => now;<br>
                                                          b.closeFile();<br>
                                                          <br>
                                                          SndBuf buf
                                                          => dac;<br>
                                                          filename =>
                                                          buf.read;<br>
                                                          kb => now;<br>
                                                          <br>
                                                          But strangely,
                                                          the program
                                                          doesn't wait
                                                          for the second
                                                          kb event, but<br>
                                                          exits directly
                                                          after the
                                                          first key that
                                                          I hit. Any
                                                          ideas what I'm
                                                          doing<br>
                                                          wrong?<br>
                                                          <br>
                                                          Best, Manuel<br>
_______________________________________________<br>
                                                          chuck-users
                                                          mailing list<br>
                                                          <a
                                                          moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
                                                          <a
                                                          moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
                                                          target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
                                                          </blockquote>
                                                          </div>
                                                          <br>
                                                          </div>
                                                          <br>
                                                          <fieldset></fieldset>
                                                          <br>
                                                          <pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
                                                        </blockquote>
                                                      </div>
                                                    </div>
                                                  </div>
                                                  <br>
_______________________________________________<br>
                                                  chuck-users mailing
                                                  list<br>
                                                  <a
                                                    moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
                                                  <a
                                                    moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
                                                    target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
                                                  <br>
                                                </blockquote>
                                              </div>
                                              <br>
                                              <br clear="all">
                                              <br>
                                              -- <br>
                                              -Moisés </div>
                                            <br>
                                            <fieldset></fieldset>
                                            <br>
                                            <pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
                                          </blockquote>
                                        </div>
                                      </div>
                                    </div>
                                    <br>
_______________________________________________<br>
                                    chuck-users mailing list<br>
                                    <a moz-do-not-send="true"
                                      href="mailto:chuck-users@lists.cs.princeton.edu"
                                      target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
                                    <a moz-do-not-send="true"
                                      href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
                                      target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
                                    <br>
                                  </blockquote>
                                </div>
                                <br>
                                <br clear="all">
                                <br>
                                -- <br>
                                -Moisés </div>
                            </div>
                          </div>
                          <br>
_______________________________________________<br>
                          chuck-users mailing list<br>
                          <a moz-do-not-send="true"
                            href="mailto:chuck-users@lists.cs.princeton.edu"
                            target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
                          <a moz-do-not-send="true"
                            href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
                            target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
                          <br>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                    <br>
                    <fieldset></fieldset>
                    <br>
                    <pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
                  </blockquote>
                </div>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            chuck-users mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
            <a moz-do-not-send="true"
              href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
              target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
chuck-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a>
<a class="moz-txt-link-freetext" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
    </blockquote>
  </body>
</html>