Coder Social home page Coder Social logo

jhelvy / splitkbcompare Goto Github PK

View Code? Open in Web Editor NEW
254.0 12.0 28.0 67.07 MB

An interactive tool for comparing layouts of different split mechanical keyboards

Home Page: https://jhelvy.github.io/splitKbCompare/

License: MIT License

R 93.25% CSS 3.45% HTML 3.31%
split-keyboards keyboard-layouts comparing-layouts shiny keyboards mechanical-keyboard rstats

splitkbcompare's Introduction

License: MIT

Copyright (c) 2020 John Helveston

Overview

This app is an interactive tool for comparing layouts of different split mechanical keyboards built for the community of ergonomic keyboard users. Split keyboards offer an ergonomic solution to many issues that make regular keyboards painful or uncomfortable to use, but finding which keyboard is right for you can be costly and difficult. Most split keyboards come as DIY kits, making it difficult (if not impossible) to compare different keyboard layouts prior to building them. This app offers one solution to this problem.

More comprehensive lists of ergonomic keyboards are available here:

Features

Click one of the "print" buttons to download a printable PDF of the true-to-scale keyboard layouts (8.5" x 11" or A4 sizes).

Filter the keyboard list:

  • Maximum number of keys.
  • Has a number row at the top.
  • Degree of stagger across the key columns.
  • Supports rotary encoders.
  • Wireless.
  • One-piece board or two halves.
  • Availability: DIY and/or pre-built.

Run locally

The app is hosted for free online, but you can also run the app locally on your computer by following these steps:

  1. Install R
  2. Run this code in an R terminal (run 'R', e.g. '/usr/bin/R' or 'Rgui.exe') to install the necessary package dependencies:
install.packages(c(
    "shiny", "DT", "dplyr", "shinythemes", "shinyWidgets", "magick", "readr",
    "RColorBrewer", "markdown", "rmarkdown"
))
  1. Run this in R to launch the app:
shiny::runGitHub('jhelvy/splitKbCompare')

Under the hood

This app was built using the R shiny package. Shiny apps are typically used to display data and create interactive dashboards. This app has a different purpose: to help the community of ergonomic keyboard users and hobbyists compare different keyboards.

The app uses the magick library to overlay images of different keyboard layouts of the user's choosing. The app dynamically changes the colors of each keyboard image in real time to help identify the contours of each different keyboard. To print the image to scale, the overlay image is inserted into a RMarkdown document and converted into a true-to-scale PDF. The app is hosted for free on shinyapps.io, and the open source code is hosted on Github.

Contributing

If you would like to contribute to this package, feel free to fork this repo and send a PR. You can also file an issue and I'll try and get to it when I have time.

Added new keyboards

I am no longer going to keep adding new keyboards to this app. It is a manual process and time-consuming, and I just don't have the time to maintain it. Apologies to the keyboard developers out there. If you want to add a keyboard yourself, the process I have used is to hand-edit the images/overlays.ai file to add the switch plate svg and label, and then re-export all the layers as png files (one for each keyboard). If you have access to Adobe Illustrator and want to do that process, send me a PR and I'll add it.

splitkbcompare's People

Contributors

benroe avatar bleys avatar jhelvy avatar jzl avatar l4u avatar tomsaleeba avatar undefined-landmark avatar weteor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

splitkbcompare's Issues

Add Moonlander

Hey, could you add Moonlander into the comparison site?
ZSA Moonlander
Unfortunately I couldn't find an SVG of the layout but I found this .png from Oryx:
Moonlander.png

Print left/mirror keyboard

Thanks a bunch for this tool - it's super handy!

Could a feature be added to allow printing of the left or mirror image of the right side of keyboard?

I haven't been able to find a working pdf mirror tool otherwise would just use that

Cheers

Ability to see keyboards by themselves (u/ArvidRehberg)

Right now i'm in the position of needing to choose a split keeb to build. I would like a feature that easily allows me to see them one by one, on way to do this (mentioned in reddit DM) would be to add an option to make the checkboxes for the keyboards radio buttons instead. However the slight delay after selecting a keyboard to it being rendered would still make it a bit annoying. So for me the optimal way to do it would be to...

Have another page (perhaps at the bottom of the Keyboards tab) Which just shows all the keyboards and there names below, like small cards. This way you could easily see many keyboards at a time too.

However it's done i would be highly thankful if you decide to implement it.

Add Sofle v2 (and rename Sofle to Sofle v1)?

Hi!

The main difference between the v2 and v1 is, as I understand:

  • The middlefinger column is slightly moved up (increased stagger)
  • The pinkey column and extra pinkey column (on the outside) are lowered, and they are now the same height.
  • The thumb cluster has been moved to the middle/inside, and now the outside-most three thumbkeys are in the same columns as the main keys.
    • Previously, the outside-most thumbkey was between the pinky and ringfinger column; in v2 it is entirely in the ringfinger column.
    • This also means the board is a bit wider.

I think this SVG file from the official Sofle repository is what you need? Note that the encoder isn't 'marked' with an R in the SVG, that's still the same button as v1.

See also this image from Josef Adamcik's blog. Note: I added the "v1", "v2" and red "R" in the image for clarity.

Changes a stagger of columns and position of the bottom row a bit. The whole board was rerouted, shape changed slightly. Below version 1 in yellow, version 2 in blue.

Comparison1_2

Wrong alignment for Atreus

Nice project! I believe the 'J' key on the Atreus should be one row further up. In other words, the Atreus does not have a number row but a "modifier/esc/enter/etc" bottom row.

Add Pluckey

Hi, it'd be awesome if you could add my keyboard when you get the chance:

I started working on opening a MR but saw in the meantime that you added an issue template. So here's my current effort:

pluckey,64,68,pluckey,1,1,0,5,Moderate,0,1,0,0,1,0,https://github.com/floookay/pluckey,NA

Unfortunately I wasn't able to open the overlay file correctly on my system.

Thanks!

filter by row count (with one criteria)

As I saw in another comment, ways to broadly filter the list would be helpful.

I assume this was your goal in filtering with/without number row. But with programmable and blank keys, it's a bit subjective since a 4x6 may or may not be intended or used with a numpad.

A row count CAN avoid the complexity of thumb keys and corner key tweaks. It also isn't impacted by row staggering and the many accompanying odd key widths. In order to keep the number clean and non-subjective, the count could be based on the upper outside corner, except in by one column and down by one row. It sounds finicky but it's fairly simple and avoids almost all issues.

Currently there's only one that I would break the rule on. I'd give Xenon a 3.5 for row count. You could use an asterisk for occasional oddities that may not quite fit the rule, or have an "other" category, or leave it blank (if you're okay with the dreaded null value).

Otherwise, if you like it, I did the legwork already:

Name BasicRowCount
Absolem 3
Arch 36 3
Atreus 4
Claw44 3
Corne 3
DracuLad 3
Dygma Raise 5
Elephant 42 3
Ergodash 1 5
Ergodash 2 5
Ergodox 5
Ergoslab 5
Ergotravel 4
Ferris 3
Georgi 2
Gergo 3
Gergoplex 3
Ginny 1
Interphase 5
Iris 4
Keyboardio Model01 4
Keyseebee 3
Kyria 3
Lily58 4
Microdox 3
Minidox 3
Mitosis 3
Moonlander 5
Nyquist 5
Quefrency R1 5
Quefrency R2 5
Redox 5
Reviung 39 3
Reviung 41 3
Sinc 6
Sofle 4
Sol2 5
Squiggle 3
Torn 3
Viterbi 5
Xenon 3.5
Zen 2 5
Zygomorph 5

Thanks again for this super cool tool!

Praise 🎉

Do you find this package useful? Got any cool examples of how you've used it? Let me know by posting a comment here 😁!

add a filter/column for row staggering

There are currently four keyboards on the list with row staggering and it would be great to filter by this very important data point.

Sinc
Quefrency R1
Quefrency R2
Dygma Raise

Thanks so much for this incredibly helpful tool. I've been using a Kinesis Freestyle for several years. I've been going down the keyboard rabbit hole for a couple weeks figuring out my next step. Seeing direct scaled comparisons in your awesome tool helped me narrow way down to 2-4 choices (likely an Ergodash or Redox, although the simplicity of Nyquist is appealing).

I literally joined GitHub to make this suggestion. (Been meaning to join for a while , of course.)

Thanks again!

A4 paper options

When saving as a PDF file to print it later, there's no option to use A4 paper (which is what the majority of Europe is using).

I think one can workaround the limitation with pdfjam:

pdfjam --suffix converted --scale 1.0 --landscape --paper a4paper splitKbComparison1.pdf

But I'm not sure if it is scaled correctly after the conversion. I had to adjust the scale parameter slightly (to 1.02) to get approximately the right scale. I don't know if it's an issue with my printer or just the consequence of conversion.

UHKB appears while filtering for no row stagger

The Ultimate Hacking Keyboard, which has row stagger, incorrectly appears with the following filters:

  • Max number of keys: 70
  • Max number of rows: 6
  • Column stagger: All
  • Has row stagger: No
  • Rotary encoder support: All
  • Wireless: All
  • One-piece board?: Two halves
  • Availability: DIY

Add ergodash mini

Its the ergodash without the top row. But adding it would make visualisation og smaller split board together.

Boardsource’s Rhymestone and Microdox

Many thanks for helping me choose my keeb!

Please can you add Boardsource’s Rhymestone and Microdox (https://boardsource.xyz/)

Maybe they can give you their own vector graphics?

Finally, would it be possible to also filter by category (e.g. style/manufacturer) since the list is quite long?

More split staggered designs?

I don't have vector graphics for any of these, but it would be nice to have the following split-staggered keyboards included:

Ultimate Hacking KeyBoard: https://ultimatehackingkeyboard.com/
Matias Ergo Pro: https://matias.ca/ergopro/pc/
Kinesis Freestyle Edge: https://gaming.kinesis-ergo.com/edge/
Quefrency: https://keeb.io/products/quefrency-60-65-split-staggered-keyboard
Sinc: https://keeb.io/collections/split-keyboard-parts/products/sinc-split-staggered-75-keyboard

Thanks for the great tool!

Hey there, could we add the Ferris to your comparison app?

The Ferris is a 34 keys split keyboard I designed, with a layout similar to the Kyria's; but much tinier with a lot less keys. It is open-source and all the kicad files are available here: https://github.com/pierrechevalier83/ferris/.

Would it be possible to add it to your app so people can easily do side-by-side comparisons with other keyboards?

I uploaded an svg file with the edge cuts and the switches positions here hoping it makes it a bit easier 😄

Link to keyboards

This tool can lead to discover new keyboards. It'll be great to be able to go to the description of a keyboard directly from the interface.

I can do it if you're interested.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.