Keychron Dye-Sub PBT Full Keycap Set - Love - Keychron | DirectTech
Secure SSL Payment
Free Shipping over R3,450
14-Day Returns
Expert Support
Keychron

Keychron Dye-Sub PBT Full Keycap Set - Love

SKU: JM-82
R 349.00
Only 1 left!
Only 1 left in stock - order soon!

The Keychron JM-82 Keycaps are engineered with durable PBT material. These keycap sets feature dye-sublimated technology that ensures the legends are beautifully printed on the keycaps, while the legends will not shine or wear out for decades. And it's fully compatible with MX mechanical switches....

Free shipping over R 3 450.00
Secure checkout
14-day returns
Expert support

Frequently Bought Together

The Keychron JM-82 Keycaps are engineered with durable PBT material. These keycap sets feature dye-sublimated technology that ensures the legends are beautifully printed on the keycaps, while the legends will not shine or wear out for decades. And it's fully compatible with MX mechanical switches. With its ultra-durable dye-sublimated legends on the PBT plastic, these keycaps will never shine or wear out with these legends that can last a lifetime. The Dye-Sub PBT construction even provides superior durability and feel. When it’s time to add a new top outfit to your mechanical keyboard, this dye-sub PBT keycap set with a unique style is a great way to add some vibe to your favourite keyboard.

FEATURES:

  • Complete Keycap Set
  • Ergonomic Design
  • Premium PBT Materials for durability
  • MX-compatible switches
  • Designed for Keychron Q1/Q1 Pro/Q1 Max/V1/V1 Max/K2/K2 Pro Keyboard

SPECIFICATIONS:

  • Material: PBT
  • Thickness: 1.6mm
  • Legend: Dye-sublimated, backlight does not shine through
  • Stem: MX style
  • Compatible Keychron keyboards: V1, V1 Max, V2, V2 Max, Q1, Q1 Pro, Q1 Max, 81 Pro, Q2, Q2 Pro, Q2 Max, K2, K2 Pro ANSI layouts.
  • Profile: OEM

WHAT’S IN THE BOX:

  • Keychron JM-82 Love Keycap Set - Blue, White, Red x1

Please note the keyboards depicted in the images are not included with this keycap set.

Brand Keychron
Colour -
Form Factor -
Interface -
Capacity -
Memory Capacity -
Screen Size -
Resolution -
Refresh Rate -
Cpu -
Cpu Socket -
Warranty 12 Months
0.0
0 reviews
Login to Review

No reviews yet. Be the first to review this product!

Related Products

// Share product with fallback // 2026-05-22: rewritten. Old version had three bugs: // 1) Copy Link button used `this.textContent='Copied!'` which destroyed the // icon (textContent replaces everything). After clicking, the link icon // disappeared. // 2) Inline onclick handlers had nested \x27-escaped strings interpolating // `url` directly — if the URL contained a single quote the JS broke. // 3) Close button used `this.closest('div[style]').parentElement.remove()` // — fragile, depends on no inline style elsewhere in the DOM tree. // New version: build with DOM nodes, attach proper event listeners, keep the // icon, gracefully handle clipboard failure, use a held reference to close. function shareProduct() { var title = document.querySelector('.product-title').textContent; var url = window.location.href; if (navigator.share) { navigator.share({ title: title, url: url }).catch(function() {}); return; } // Fallback: show share options modal var modal = document.createElement('div'); modal.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.6);z-index:9999;display:flex;align-items:center;justify-content:center;padding:1rem;'; var encoded = encodeURIComponent(url); var encodedTitle = encodeURIComponent(title); var content = document.createElement('div'); content.style.cssText = 'background:#fff;border-radius:12px;padding:24px;max-width:360px;width:100%;text-align:center;'; content.innerHTML = '

Share this product

' + '
' + ' Facebook' + ' WhatsApp' + ' Email' + '
' + '' + '
'; modal.appendChild(content); function closeModal() { if (modal.parentNode) modal.parentNode.removeChild(modal); } modal.addEventListener('click', function(e) { if (e.target === modal) closeModal(); }); content.querySelector('[data-action="close-modal"]').addEventListener('click', closeModal); var copyBtn = content.querySelector('[data-action="copy-link"]'); var copyLabel = copyBtn.querySelector('.btn-label'); copyBtn.addEventListener('click', function() { function flashLabel(text) { var prev = copyLabel.textContent; copyLabel.textContent = text; setTimeout(function() { copyLabel.textContent = prev; }, 1800); } if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(url) .then(function() { flashLabel('Copied!'); }) .catch(function() { flashLabel('Press Ctrl+C'); }); } else { // Legacy browser fallback — execCommand still works on http: contexts var ta = document.createElement('textarea'); ta.value = url; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); try { document.execCommand('copy'); flashLabel('Copied!'); } catch (e) { flashLabel('Press Ctrl+C'); } document.body.removeChild(ta); } }); document.body.appendChild(modal); }
Chat with us!