some time ago i have wrote a bit about keyboards
#^https://hubzilla.dark-alexandr.net/display/b64.aHR0cHM6Ly9odWJ6aWxsYS5kYXJrLWFsZXhhbmRyLm5ldC9pdGVtL2EwNzFmMDFiLTNmYTEtNGUzMS1hNTRkLTc0NGU4NmZhMjBiOQso, i have near perfect #
wasd v3 keyboard with cherry mx green switches and nice pleasant pbt keycaps, only thing it lacks is opensource firmware and ability to program it from pc (it does have integrated method to program layouts and macrosses, but it is limited to keycodes available on keyboard itself, i have talked a bit with their tech support, and most probably they will not implement advanced programming in near future) also, i am using it already for some time, and erase plastic case a bit with my fingers, it started to wearing, you can see glossy shining under space button, it also does not feel nice to put finger where, and as we all know, humans are shitty greedy creatures which always want more ....
this time i decided to make myself present for new year, buy best available keyboard for my needs which currently exists in the world. I am dropped idea of buying shit from large vendors like shittech and company immediately, as they all currently have no quality at all in their so called "products" and funniest thing - more expensive and "top" items have lowest possible quality, so, nah this shit, shittech (лохитеч/лохотех on russian) can burn in hell using their shit as fuel, and i do not want to risk another ~$300-$500 just to learn what things get worsen, so i decided to buy from chinese friends, one more reason to not buy from "big" vendors - they do not have anything what suffice my needs and also does not support opensource software/firmware for sure.
what i want:
1. durable, high weight metal case
2. preferable default layout or as close as possible to it
3. ability to program non-default keycodes into layouts/macrosses
4. preferable opensource firmware (i am targeted at qmk, but at a time of investigating i have near zero knowledge what is qmk really is)
unfortunately very few keyboards in metal case is available, and very few metal cases for keyboards available also, most of it is ... let's call it special purpose devices, so, no default layout of course (
i am able to find 3 acceptable keyboards.
1. x-bows ranger k6 - ansi tkl (tkl - ten key less - no numpad).layout: - default ansi layout without numpad keyboard.
case: - aluminum one piece tube
pcb: - cherry switches hotswap, soldered rgb diodes for each key, Weltrend WT59F164 controller (i did not know this during review, unfortunately)
firmware - proprietary, closed source (currently have no support from open source firmwares, see:
#^https://github.com/qmk/qmk_firmware/issues/11325)
software: - many keyboard features implemented in software (available only for shitos (windows playstation)), software quality is far from usable, it constantly eating a lot of cpu, to recognize keyboard it must be repluged after software gui is launched, e.t.c., e.t.c.
price: ~$160 (
#^https://aliexpress.ru/item/4000874401110.html?spm=a2g0o.productlist.0.0.75a532ef84yiqD&algo_pvid=6430b693-2dc0-42bb-900c-9f96f9d6fb1b&algo_expid=6430b693-2dc0-42bb-900c-9f96f9d6fb1b-3&btsid=0b8b036d16135466096442838ef4da&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_&sku_id=10000010059490671 )
package: keyboard selling with small bag, without switches and keycaps
features: keyboard have 4 programmable layouts, one of which only works with shitos driver, without driver this layout hardcoded to default ansi, 3 additional layouts store persistent state into controller memory, so they available without driver.
doing any programming only possible via software in shitos.
conclusion: despite what i am very disappointed with software and inability to use opensource firmware, it's overall very good keyboard, i will probably use it on shitos playstation gaming console, maybe in future i will port qmk to it...
2. ymdk melody96 - ansi/iso non-default layoutlayout: - in this keyboard designers attempt to place fullsize (including numpad) layout into smaller case ( a bit larger than tkl size case), it's result in slightly non-default layout, but usable
case: - it does support few cases, but since i am interested in durable metal case, my choice is - 3 parts aluminum case with separate backplate, switches plate and upper case part
pcb: - cherry switches hotswap, soldered rgb diodes at pcb bottom (it's usable only in case with half-transparent acrylic backplate, which is not my thing), reset button which switching controller into boot (flashing) mode, atmega32u4 compatible controller
firmware: - qmk as native firmware:
#^https://qmk.fm/software: - no, not required
price: ~$200 (
#^https://aliexpress.ru/item/1005001831581291.html?spm=a2g0o.productlist.0.0.6c881464PUSbsR&algo_pvid=f87c96ec-5871-452b-87fa-1799548d4954&algo_expid=f87c96ec-5871-452b-87fa-1799548d4954-6&btsid=0b8b035616135468257053744eb315&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_&sku_id=12000017796486980)
package: keyboard selling without switches and keycaps
features: it will take some time to get used to compressed layout, also this make it inconvenient to work on default layout if i need to, so take layout as negative feature.
to be honest i am also little disappointed in case design, fittings look unreliable, i am also used layer of thin sealant to make sure pcb will not fall on backplate when fittings get loose
keyboard does support most of qmk features available for keyboards and it is a lot, qmk have web frontend for inexperienced users to generate firmware (but of-course this keyboard is not for inexperienced users, so i will not explain it more), for programmers it's very nice, it allow to write software for keyboard in C directly, look at my test code for example:
#include QMK_KEYBOARD_H
#define default_layer 0
#define fn_layer 15
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[default_layer] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PMNS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(fn_layer), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[fn_layer] = LAYOUT(
TO(default_layer), TO(1), TO(2), TO(3), TO(3), TO(4), TO(5), TO(6), TO(7), TO(8), TO(9), TO(10), TO(11), TO(12), TO(13), TO(14), KC_NO, KC_NO, KC_MUTE,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_MSTP, KC_VOLD,
KC_NO, KC_NO, KC_WH_U, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MNXT, KC_VOLU,
KC_NO, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU,
KC_NO, KC_NO, KC_NO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI, RGB_MOD, KC_NO, KC_NO, KC_NO,
RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, RGB_VAD, RGB_TOG, KC_NO, KC_NO, KC_NO ),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode)
{
default:
break;
}
return true;
}
for more advanced things qmk have api to do most stuff, program macrosses e.t.c., i dropped additional layers in example above, as qmk programming is not main topic of this post, you can learn more on official website
#^https://qmk.fm/conclusion: most probably i will use melody96 as my main working keyboard, for now i am sometime missing at some keys on this compressed layout, but i hope i will get used to it soon, qmk does allow me to do everything i need from keyboard.
3. id75 (idobo75) - ortholinear 5x15 layout
layout - ortholinear 5x15 layout
case: aluminum two parts with acrylic plate attached to backplate
pcb - cherry switches hotswap, soldered rgb diodes at pcb bottom, reset button which switching controller into boot (flashing) mode, atmega32u4 compatible controller
firmware - qmk as native firmware:
#^https://qmk.fm/software - no, not required
price: ~$100 (
#^https://aliexpress.ru/item/4000311498726.html?spm=a2g0o.productlist.0.0.762c2beehcJA5P&algo_pvid=c0f35677-3230-4fba-9aed-948254eccabc&algo_expid=c0f35677-3230-4fba-9aed-948254eccabc-0&btsid=0b8b036316135483975447747ecfd2&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_&sku_id=10000001290207378 )
package: keyboard selling without switches and keycaps
feature: i am very unfamiliar with this layout, or more precisely with layout absence, it's just 5x15 key rows, surprisingly i am able to use blind typing on this keyboard immediately, of course with some misses and relatively slow speed, but still, i feared what i will not able to do anything at all....
as for other features, it is also qmk so we have most qmk features for keyboards.
one thing i liked very much about this keyboard - it have tight, very ease to assemble case in which acrylic plate for backpate doing same thing as sealant which i added into melody96 case, but additionally it's half transparent, so backside diodes on pcb actually can be seen, this acrylic plate shut tight pcb from the back, also front part of case used as switch fitting plate, have massive stabs as part of it so pcb can be screwed with long reliable screws, so assembled it looks and feel very reliable (which i can't say about melody96)
conclusion: i am not sure if i will use this keyboard as main working board (most probably no), but as it do not take much space on desktop it will be used at least for additional hotkeys, also most probably i will take it with me in travels, and will use it for accessing "terminals" which require physical keyboard connection without disconnecting my main working keyboard
#
hardware #
kink #
keyboard #
keyboards #
cherry_mx #
programming #
c_language