Hack keyboard use Karabiner, and maintain my karabiner config with Goku.
Head over to nikitavoloboev's personal wiki to learn more about karabiner and goku.
Here are some settings (outdated, click to see)
Type | From | To | Comment | Favorite | Todo |
---|---|---|---|---|---|
layer | space+any | shift+any | use the most strongest finger | yes! | |
layer | v/m+any | control+any | use the second strongest finger | yes! | |
layer | s+h/j/k/l | arrow keys | yes! | ||
layer | s+d/f | copy/paste | |||
layer | d+j/k | cmd+shift+]/cmd+shift+[ in chrome; ctrl+tab/ctrl+shift+tab in wps | switch tabs in most apps | yes | |
layer | d+m | maximiz window | remap Rectangle | ||
layer | d+f/s | clicking(like vimium-f)/scrolling | remap Homerow | ||
layer | f+j/k | delete/return | so easy to delete | yes! | |
layer | w+any | launch application | w+j -> open chrome when not in chrome; w+j -> cmd+` when already in chrome | yes! | |
layer | o+any | open website | o+f -> create new tab of chrome | ||
layer | a+h/j/k/l/v/b/n | mouse navigation/click | during navigation: hold f to slow down, hold s to scroll | avoid pinky problem | |
layer | a+i/o | zoom in/out | |||
layer | t+any | toggle setting/information | t+d -> toggle dark mode | ||
layer | g+h/j/k/l | home/page_down/page_up/end | |||
layer | x+h/j/k/l | shift+arrow | vi visual mode | ||
layer | r+h/j/k/l | scrolling | |||
simultaneous keys | j+k | esc | yes | ||
simultaneous keys | m+k | translate | remap Easydict | left hand mode with mouse | |
modifier alone | left cmd | cmd+tab | so easy to switch previous app | yes! | |
modifier alone | right cmd | mouse center click to active app, then maximize window | use it a lot when vimium/ideavim lose focus in chrome/IntelliJ | yes | |
modifier alone | left option | tmux prefix | yes | ||
modifier alone | right option | translate in chrome/IntelliJ/Others | remap immersive-translate/Translation/Easydict | yes | |
modifier alone | left shift | switch english/chinese input | by Rime (nothing to do with goku) | avoid pinky problem | |
modifier alone | right shift | caps_lock | turn on caps_lock to enter vi mode (in process) | more vi binding | |
modifier alone | fn | copy | |||
modifier alone | left control | paste | |||
other | caps_lock | esc(pressed alone)/control(as modifier) | use j+k and v/m+any instead |
||
mouse | right click | copy word(double right click)/selected(hold right click) | |||
mouse | option/command + left click | copy word/selected | |||
mouse | middle click | paste(hold middle click to overwrite) | |||
trackpad | s/d + finger on trackpad | copy word/selected | easy to accidentally trigger | ||
trackpad | f + finger on trackpad | paste(hold f to overwrite) | easy to accidentally trigger | ||
trackpad | h/j/k/l + finger on trackpad | arrow keys(one finger), home/page_down/page_up/end(two fingers) | easy to accidentally trigger |
Using Glove80 keyboard.
Using WhatPulse to track keyboard input.
TODO:
- Try Glove80 Layout Editor.
- Try ZMK or QMK.
My neovim config powered by LazyVim.
TODO:
- Try NvChad, LazyVim, Kickstart, AstroNvim by Lazyman.
- Find out a set of keybindings that can be used everywhere, equivalent mapping configurations for other VIM integrations:
- IDE
- File manager
- Terminal: Vifm or Yazi
- Neovim: neo-tree.nvim or telescope-file-browser.nvim
- VSCode: Built-in Explorer view
- IdeaVim: NERDTree
- Others
Tips:
-
Remap
esc
.- For all keyboard (mainly for Apple Internal Keyboard): remap
jk
toesc
by karabiner. - For Glove80 specifically: remap one of the thumb keys to
esc
by karabiner. - In vim(s):
inoremap jj <esc>
orinoremap jk <esc>
.
- For all keyboard (mainly for Apple Internal Keyboard): remap
-
Turn up
Key repeat rate
and turn downDelay until repeat
inSystem Settings
->Keyboard
.See .macos.
-
When leaving insert mode, auto switch to English input source (if necessary).
- By Rime's vim_mode app option, see squirrel.custom.yaml.
-
Remap
shift
(optional).-
For all keyboard: remap
space
toshift
by karabiner.Don't worry, the original tap and hold (repeat) functions of
space
are retained.
-
TODO:
- Migrate to vscode-neovim.
Using Emacs Plus.
TODO:
- Try fish.
TODO:
- Try Yazi.
My rime config for Chinese input based on rime-ice and powered by TigerCode.
Using KeyboardHolder to keep Squirrel as the only input source on macOS, instead of ABC.
And using ShowyEdge to notice when input source automatically changes to ABC.
Using emacs-rime in Doom Emacs.
TODO:
- Try AeroSpace.
Using zathura-pdf-poppler plugin.
Fix zathura auto focus on open problem by using yabai.