K 0ccfb8fad0 | 2 years ago | |
---|---|---|
.. | ||
features | 2 years ago | |
private | 2 years ago | |
config.h | 2 years ago | |
karabiner_example.json | 2 years ago | |
kevkevco.gitignore | 2 years ago | |
keycodes.h | 2 years ago | |
keymap.c | 2 years ago | |
keymap_template.c | 2 years ago | |
layers.h | 2 years ago | |
process_records.c | 2 years ago | |
process_records.h | 2 years ago | |
readme.md | 2 years ago | |
rules.mk | 2 years ago | |
tap_dances.c | 2 years ago | |
tap_dances.h | 2 years ago |
Tested with a Kinesis Advantage2, kinT (stapelberg) keyboard controller built with a Teensy 3.6 microcontroller and a USA system layout.
This keymap is created to address my tendonitis/tennis elbow symptoms as well as enhance the ease and convenience of coding and generally using my MacBook. As such, I want to provide a bit of the setup that I've created for myself beyond my QMK keymap that has helped. Feel free to reach out to me for more details.
Sometimes it is more convenient for me to use my keyboard wirelessly, for example in my lap. For that purpose I used industrial strength velcro to temporarily attach a slim portable battery ~10,000mAh to the back of the keyboard. Mostly for aesthetics I had the native USB cord replaced with a shorter cord (that avoids having extra slack) that plugs into the BT500 which then plugs into the portable battery. There is a few inches of give and take in the cord to slide through the hole in the back of the board that was plugged using a rubber piece that upgradekeyboards.com found. Note: The Apple Fn key doesn't seem to work using BT500 Bluetooth adapter.
Great MacOS software to customize the use of most mouses. You can import and export default profiles. I use this to swap the trackballs I use between my left and right hand but reflect the button assignments
I use this wonderful app to manage my windows. I highly recommend it.
This application is what I use to flash my keyboard.
Included in this keymap is keycode KC_APFN
, which emulates the native Apple Fn key. It is created using this Apple Fn patch. If you do not want to use this keycode, simply remove KC_APFN
from the "keymap.c" file and remove APPLE_FN_ENABLE = yes
from the "rules.mk" file.
Please see the link and comment thread for more detailed instructions than the following summary:
This patch adds support for the Apple Fn key, which unlike most keyboards with Fn keys, is actually sent over the wire. It works by repurposing the reserved byte in the keyboard report to represent the KeyboardFn
usage of the AppleVendor Top Case
usage page. When the Fn key is pressed, the value of this byte becomes 1
.
To apply this patch, download the below file, cd
to your qmk_firmware
repository in your preferred terminal, and run git apply /path/to/applefn.patch
. Then, add the KC_APPLE_FN
(or KC_APFN
for short) keycode to your keymap.
There are a couple of caveats to this implementation that are important to be aware of. Firstly, it is not compatible with NKRO, as QMK's NKRO report format has no reserved byte - it is part of the 6KRO report for compatibility with the HID boot protocol. Thus you must set NKRO_ENABLE = no
in your keymap's rules.mk
.
You will also need to redefine the USB Vendor and Product IDs in your keymap's config.h
to that of a genuine Apple keyboard* in order for macOS to recognise the Fn key:
#undef VENDOR_ID
#define VENDOR_ID 0x05AC
#undef PRODUCT_ID
#define PRODUCT_ID <pid>
Any IDs from this list should work: https://usb-ids.gowdy.us/read/UD/05ac
This is the primary reason this patch has not been integrated into upstream QMK - Apple would probably not be too happy about others using their vendor ID, and a feature that relies on the VID/PID pair being set to a specific value is not particularly ideal anyway.
See https://github.com/qmk/qmk_firmware/issues/2179 for a little more info and discussion.
* It appears that the functionality of certain F keys can differ depending on the PID, likely because they have evolved over time on real Apple keyboards.
Are inspired by this article.
Enable Select Word Macro from https://getreuer.info/posts/keyboards/select-word/index.html
credit: [replicaJunction](906108fb48/users/replicaJunction (capsword-and-numword)
and Drashna
The concept here is simple: more often than you'd think, you need to type a single word in ALL CAPS. An easy example for me, as a programmer, is a constant value; in most programming languages, constants are typed in all caps by convention.
You typically have a few choices, but each one comes with a drawback. Here are the options I'm aware of:
The solution to this problem is CAPSWORD. When enabled, it activates Caps Lock and begins running an additional callback on each keypress. If the keypress is an alphanumeric key or one of a specific few symbols (such as the underscore), nothing happens. Otherwise, before processing the keypress, Caps Lock is disabled again.
NUMWORD is a similar concept, but has a slightly more elaborate implementation. There's a bit of extra logic in the NUMWORD code that allows the keycode to act as a tap/hold key as well. Tapping enables NUMWORD while number keys are in use, while holding the key enables a number layer for the duration of the key hold and disables it again afterwards.
Note: The implementation of NUMWORD requires that the keyboard's layer definitions be accessible in a header file.
In order to get fast repeating hold function, as if holding down a key on a normal keyboard, on space, enter, delete, forward delete in default layout. Tap and release within tapping term and then immediately trigger same key with a hold right after. This works because I have opted not to use: https://docs.qmk.fm/#/tap_hold?id=tapping-force-hold
https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac I created two specifically for QMK: Program and Reboot in the Teensy program for quick flashing.