Skip to content

Adding keyboard - Keynet#26022

Open
ArthurFrangyan wants to merge 21 commits intoqmk:masterfrom
ArthurFrangyan:keyboard-keynet
Open

Adding keyboard - Keynet#26022
ArthurFrangyan wants to merge 21 commits intoqmk:masterfrom
ArthurFrangyan:keyboard-keynet

Conversation

@ArthurFrangyan
Copy link

@ArthurFrangyan ArthurFrangyan commented Feb 15, 2026

Description

I've created a split keyboard, ortholinear (column-staggered) keyboard powered by an Atmega32u4 microcontroller. It uses the Caterina bootloader and features support for rotary encoders, mouse keys, and NKRO. The firmware is configured for a split matrix layout with a custom hand-swap configuration.

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout (addition or update)
  • Documentation

Issues Fixed or Closed by This PR

Checklist

  • My code follows the code style of this project: C, Python
  • I have read the PR Checklist document and have made the appropriate changes.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have tested the changes and verified that they work and don't break anything (as well as I can manage).

Copy link
Contributor

@lesshonor lesshonor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Among other issues, please note the PR checklist:

  • default keymaps should be "pristine"

As these are not the only two problems, it is worth reading the aforementioned PR checklist, reviewing the code of other split keyboards in the QMK repository which also use Pro Micros (e.g. the Sweep—just off the dome), and testing your flash commands on actual hardware.

@waffle87 waffle87 added the pr_checklist_pending Needs changes as per the PR checklist label Feb 15, 2026
@zvecr
Copy link
Member

zvecr commented Feb 24, 2026

This also needs to be relocated to the keyboards/handwired/ folder.

Copy link
Contributor

@lesshonor lesshonor Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not a collaborator, but as it stands I don't think the code in this keymap will be considered acceptable for inclusion within the main QMK repository.

}
}

void normolizeMatrix(uint8_t* row, uint8_t* col)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain the thought process behind manually manipulating the row and column values of the keypress within process_record_user()?

Copy link
Author

@ArthurFrangyan ArthurFrangyan Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll start with the meaning of SET keycode and to understand this we have to look at (A,S,D,F) keys in which I added tap-hold functionality accordingly when held (Win, Alt, Ctrl, Shift), and this gives ability to press almost any combination without issue and exceptions are for example (Shift+F, Shift+G, Ctrl+D, Ctrl+C,). SET key comes to solve this problem by adding layer on it and functionality of this you can see in image

SET

Of course the first thing what I did was to add SET as a layer and you can see in previous commits in the comment I've implemented as a layer but with only as a layer it wasn't working stable and by that I decided to implement manually.
With normalizeMatrix() function I tried to align matrix virtually because in hardware it is not implemented optimal for procedure and also code will be tight to hardware which is not good. So with this function I tried to optimize code and in the same time separate hardware from code. But there is an issue with this, this function related to rev1 and it should be there but I couldn't find way to bind with rev1.

@ArthurFrangyan
Copy link
Author

I have a question, this version of "default" keymap can it be considered as pristine or should I change it to previous version?

Comment on lines +115 to +132
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tri layer feature enables this.
https://docs.qmk.fm/features/tri_layer

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you could convert this to a keymap.json file, and support both the encoder map and the custom macro (for double 0).

Comment on lines +270 to +276
case QWERTY:
if (record->event.pressed) {
_PAD_index = _NUMPAD;
set_single_persistent_default_layer(_QWERTY);
layer_clear();
}
return false;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't needed, as you only have the one layer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

keyboard keymap pr_checklist_pending Needs changes as per the PR checklist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants