2022-05-06 20:32:48 -07:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
|
|
<meta name="author" content="map[name:Tony Grosinger]">
|
|
|
|
<meta name="description" content="Started experimenting with custom keyboard design and fabrication. See the designs here.
|
|
|
|
" />
|
|
|
|
<meta name="keywords" content="" />
|
|
|
|
<meta name="robots" content="noodp" />
|
|
|
|
<meta name="theme-color" content="" />
|
|
|
|
<link rel="canonical" href="https://grosinger.net/timeline/custom_keyboards/" />
|
|
|
|
|
|
|
|
|
|
|
|
<title>
|
|
|
|
|
|
|
|
Custom Keyboards :: Tony Grosinger
|
|
|
|
|
|
|
|
</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.2.1/css/flag-icon.min.css" rel="stylesheet"
|
|
|
|
type="text/css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="/main.b3f49e43ec78d45503e5344e4d084baa38219554bb6e52609339db36ed36d14c.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
|
|
<link rel="manifest" href="/site.webmanifest">
|
|
|
|
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#252627">
|
|
|
|
<link rel="shortcut icon" href="/favicon.ico">
|
|
|
|
<meta name="msapplication-TileColor" content="#252627">
|
|
|
|
<meta name="theme-color" content="#252627">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta itemprop="name" content="Custom Keyboards">
|
|
|
|
<meta itemprop="description" content="Started experimenting with custom keyboard design and fabrication. See the
|
|
|
|
designs here."><meta itemprop="datePublished" content="2022-05-01T00:00:00+00:00" />
|
|
|
|
<meta itemprop="dateModified" content="2022-05-01T00:00:00+00:00" />
|
|
|
|
<meta itemprop="wordCount" content="187">
|
|
|
|
<meta itemprop="keywords" content="" />
|
|
|
|
<meta name="twitter:card" content="summary"/>
|
|
|
|
<meta name="twitter:title" content="Custom Keyboards"/>
|
|
|
|
<meta name="twitter:description" content="Started experimenting with custom keyboard design and fabrication. See the
|
|
|
|
designs here."/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta property="article:published_time" content="2022-05-01 00:00:00 +0000 UTC" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body class="dark-theme">
|
|
|
|
<div class="container">
|
|
|
|
<header class="header">
|
|
|
|
<span class="header__inner">
|
|
|
|
<a href="/" style="text-decoration: none;">
|
|
|
|
<div class="logo">
|
|
|
|
|
|
|
|
<span class="logo__mark">Tony Grosinger</span>
|
|
|
|
<span class="logo__text"></span>
|
|
|
|
<span class="logo__cursor" style=
|
|
|
|
"visibility:hidden;
|
|
|
|
|
|
|
|
">
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="header__right">
|
|
|
|
|
|
|
|
<span class="theme-toggle unselectable"><svg class="theme-toggler" width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
|
|
<path d="M22 41C32.4934 41 41 32.4934 41 22C41 11.5066 32.4934 3 22
|
|
|
|
3C11.5066 3 3 11.5066 3 22C3 32.4934 11.5066 41 22 41ZM7 22C7
|
|
|
|
13.7157 13.7157 7 22 7V37C13.7157 37 7 30.2843 7 22Z"/>
|
|
|
|
</svg>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
|
|
<main class="post">
|
|
|
|
|
|
|
|
<div class="post-info">
|
|
|
|
<p>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-clock">
|
|
|
|
<circle cx="12" cy="12" r="10"></circle>
|
|
|
|
<polyline points="12 6 12 12 16 14"></polyline>
|
|
|
|
</svg>
|
|
|
|
One minute
|
|
|
|
|
|
|
|
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<article>
|
|
|
|
<h1 class="post-title">
|
|
|
|
<a href="https://grosinger.net/timeline/custom_keyboards/">Custom Keyboards</a>
|
|
|
|
</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="post-content">
|
|
|
|
<p>Started experimenting with custom keyboard design and fabrication. See <a href="https://git.sr.ht/~tgrosinger/keyboards">the
|
|
|
|
designs here</a>.</p>
|
|
|
|
<p>For the last several years I have been using the
|
|
|
|
<a href="https://www.gboards.ca/product/gergoplex">GergoPlex</a> keyboard. I love the
|
|
|
|
ultra-thin profile, and the perfect balance it achieves with having just the
|
|
|
|
right number of keys. That being said, there are a couple of changes I’ve wanted
|
|
|
|
to make.</p>
|
|
|
|
<p>My first new keyboard,
|
|
|
|
<a href="https://git.sr.ht/~tgrosinger/keyboards/tree/main/item/chrysemys">Chrysemys</a>,
|
|
|
|
is very heavily inspired by the GergoPlex, however it is a single piece rather
|
|
|
|
than two half boards connected with a cable. I have also moved the thumb keys
|
|
|
|
out towards the center a bit, added Bluetooth connectivity, and used even
|
2022-12-06 18:36:55 -08:00
|
|
|
thinner switches. This board is an experiment, and has allowed me to learn a
|
2022-05-06 20:32:48 -07:00
|
|
|
tremendous amount about designing circuits and keyboards specifically. I imagine
|
|
|
|
there will be many more custom keyboards in my future.</p>
|
2022-12-06 18:36:55 -08:00
|
|
|
<p>Some ideas I want to experiment with:</p>
|
2022-05-06 20:32:48 -07:00
|
|
|
<ul>
|
|
|
|
<li>Adding an optical encoder and roller bearings to support a track ball.</li>
|
|
|
|
<li>Adding a salvaged TrackPoint under the right hand index finger (obviously not on the same keyboard as the trackball).</li>
|
|
|
|
<li>Integrate the MCU into the board, rather than using a separate socketed board.</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</article>
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
|
|
|
|
<div class="post-info">
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text">
|
|
|
|
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
|
|
|
|
<polyline points="14 2 14 8 20 8"></polyline>
|
|
|
|
<line x1="16" y1="13" x2="8" y2="13"></line>
|
|
|
|
<line x1="16" y1="17" x2="8" y2="17"></line>
|
|
|
|
<polyline points="10 9 9 9 8 9"></polyline>
|
|
|
|
</svg>
|
|
|
|
187 Words
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-calendar">
|
|
|
|
<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect>
|
|
|
|
<line x1="16" y1="2" x2="16" y2="6"></line>
|
|
|
|
<line x1="8" y1="2" x2="8" y2="6"></line>
|
|
|
|
<line x1="3" y1="10" x2="21" y2="10"></line>
|
|
|
|
</svg>
|
|
|
|
2022-04-30 17:00 -0700
|
|
|
|
</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<footer class="footer">
|
|
|
|
<div class="footer__inner">
|
|
|
|
<div class="footer__content">
|
2023-08-10 14:19:48 -07:00
|
|
|
<span>© 2023</span>
|
2022-05-06 20:32:48 -07:00
|
|
|
|
|
|
|
<span><a href="https://grosinger.net/">Tony Grosinger</a></span>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</footer>
|
|
|
|
<script type="text/javascript">
|
|
|
|
$(function(){
|
|
|
|
|
|
|
|
window.sr = ScrollReveal();
|
|
|
|
|
|
|
|
if ($(window).width() < 768) {
|
|
|
|
|
|
|
|
if ($('.timeline-content').hasClass('js--fadeInLeft')) {
|
|
|
|
$('.timeline-content').removeClass('js--fadeInLeft').addClass('js--fadeInRight');
|
|
|
|
}
|
|
|
|
|
|
|
|
sr.reveal('.js--fadeInRight', {
|
|
|
|
origin: 'right',
|
|
|
|
distance: '300px',
|
|
|
|
easing: 'ease-in-out',
|
|
|
|
duration: 800,
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sr.reveal('.js--fadeInLeft', {
|
|
|
|
origin: 'left',
|
|
|
|
distance: '300px',
|
|
|
|
easing: 'ease-in-out',
|
|
|
|
duration: 800,
|
|
|
|
});
|
|
|
|
|
|
|
|
sr.reveal('.js--fadeInRight', {
|
|
|
|
origin: 'right',
|
|
|
|
distance: '300px',
|
|
|
|
easing: 'ease-in-out',
|
|
|
|
duration: 800,
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sr.reveal('.js--fadeInLeft', {
|
|
|
|
origin: 'left',
|
|
|
|
distance: '300px',
|
|
|
|
easing: 'ease-in-out',
|
|
|
|
duration: 800,
|
|
|
|
});
|
|
|
|
|
|
|
|
sr.reveal('.js--fadeInRight', {
|
|
|
|
origin: 'right',
|
|
|
|
distance: '300px',
|
|
|
|
easing: 'ease-in-out',
|
|
|
|
duration: 800,
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="/bundle.min.01197697ee8afb53b4ecb6cc3c7cf18102750ec7b92dcc6cad336c6cde291ed8e3d5b00d93a2570d61b061abace0f9a303eeffdbc939b3e305cd5d754caa868b.js" integrity="sha512-ARl2l+6K+1O07LbMPHzxgQJ1Dse5LcxsrTNsbN4pHtjj1bANk6JXDWGwYaus4PmjA+7/28k5s+MFzV11TKqGiw=="></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|