Skip to content

Meeting Notes (2020 08 11)

Alex McLain edited this page Aug 16, 2020 · 7 revisions

Meeting Notes

  • Issue #70: Refactor config value casting
    • Jesse is hacking away at this.
  • Select boxes
    • We don't have control of the styling of the options list.
    • To style the options list we would need to hide the default list, construct a new one in HTML, and handle the actions with Javascript.
    • Tailwind has a note in their select menu source code that they're planning to build low-level libraries to make this easier.
  • CI
    • We're checking tests, dialyzer, credo, formatting.
    • GitHub Actions is close to releasing composite steps.
      • #646: Next Steps for Fully Functioning Composite Actions
    • AFK's CI is being prepped for this refactor.
    • What are we doing for CSS/Javascript around CI?
      • Enforcing style: ESLint, prettier
      • Not sure what to use for CSS
      • Prettier will take a lot of configuration because out of the box it doesn't follow the Phoenix Javascript style.
      • How are we testing that the UI does what it's supposed to do?
        • Cypress - Browser automation, similar to Selenium.
        • This might not be worth the effort yet.
        • The LiveView tests are a perfect place to start for now.
  • KiCad / PCB
    • Nobody has started working on KiCad yet.
    • Keyboard PCB Designer Guide
    • Matrix design
      • Put a diode in the matrix for every switch to prevent ghosting.
        • There are also ways in software to prevent ghosting. QMK has it. But we should build it out the right way.
      • How does this relate to the TI LM8330 keypad controller?
        • Can't find a diagram in the datasheet showing the diode in the matrix, but that doesn't mean it's not necessary.
        • We should design the matrix to include the diodes where it's supposed to.
        • We poll to get data out of the matrix IC.
        • The IC has a buffer that stores the key events.
        • The way we've been doing matrix scanning so far, we support pressing all of the keys at once; there is no key limit.
    • The Keybow is using Kailh hot swap sockets. (People have repurposed SIP sockets for keyboard keys, but they're not designed for that.)
    • It would be good to have hot-swap switches on the prototype board.
  • Scan rate
    • Want more than a 1000Hz poll rate to be competitive with other keyboards (it's a marketing thing).
    • We could have more than one scan matrix for the keys if necessary.
    • Can't seem to find the scan time of the TI chip. Might have to get one and measure it.
    • Is "1000Hz polling" the USB polling rate rather than the scan matrix rate?
      • On USB the host controller has to ask for data; the device can't send data unless data is requested.
    • We want to minimize the time a key is pressed to the time a HID event is reported.
      • A 1KHz polling rate is 1 report per millisecond. Nerves should be able to handle this based on what Alex has seen on the oscilloscope.
      • It doesn't prevent the odd hiccup though.
      • We could detect a user's hand near the keyboard by detuning a capacitive touch sensor. The sensor could be the entire keyboard. TI demo
      • Using the web interface or firmware uploading are things that could cause slow-downs.
      • A "gaming mode" switch could tell the keyboard to reduce its background processes.
  • LEDs
    • Find the SPI LEDs the Keybow is using.
      • These LEDs are probably acting as cascaded shift registers, so the data has to be clocked through one LED to the next.
      • For prototyping we would have to populate these in sequence down the chain, because a break in the serial chain will not allow data to flow to downstream LEDs.
    • IS31FL3733 matrix LED driver IC. Used on the Massdrop Ctrl.
      • We should be able to populate an arbitrary number of these for prototyping in any order.
      • Hopefully the matrix scans far faster than we push animation data to it. If not, there is a chance we could get a rolling shutter effect, or other animation glitches.
      • Has PWM for brightness so we could control the brightness of the keyboard separate from the animations. We wouldn't have to edit the animations to change the brightness.
      • We could detect ambient light with a sensor.
  • Hall effect switches

Action Items

  • Learn KiCad

Resources