Skip to content

Instantly share code, notes, and snippets.

@partrita
Last active November 11, 2024 04:56
Show Gist options
  • Save partrita/0ba8918f8e2094c1a7ddd05b4bdbd826 to your computer and use it in GitHub Desktop.
Save partrita/0ba8918f8e2094c1a7ddd05b4bdbd826 to your computer and use it in GitHub Desktop.
A keyboard favor computing
;; Use Capslock key for Hangul input and swap Alt-Ctrl keys for more ergonomic typing
;; Press Left Control + Space + Escape to exit the program
;; Base layout
(defsrc
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet rctl
)
;; Define Hangul key for Windows
(deflocalkeys-win
han 21
)
;; Define Hangul key for Linux (using right Alt)
(deflocalkeys-linux
han 100 ;; alt_r
)
(defvar
;; Define timing variables for tap and hold actions
tap-time 200
hold-time 200
)
(defalias
;; Define layer toggle aliases
nav (layer-toggle nav)
win (layer-switch win)
mac (layer-switch mac)
col (layer-switch col)
;; Create a tap-hold key: tap for space, hold for navigation layer
spl (tap-hold-release $tap-time $hold-time spc @nav)
;; Create a tap-hold key: tap for Hangul, hold for Caps Lock
cap (tap-hold-release $tap-time 2000 han caps)
;; Remap Left Control to work as Alt+Tab in MacOS layout
lctl (multi lctl
(layer-while-held l-lctl)
(on-release release-vkey v-lalt))
;; Define home-row shift keys
f (tap-hold $tap-time $hold-time f lsft)
j (tap-hold $tap-time $hold-time j rsft)
;; Define mouse movement actions with linear acceleration
;; Parameters: interval, ramp-up time, min distance, max distance
ma↑ (movemouse-accel-up 1 1000 1 5)
ma← (movemouse-accel-left 1 1000 1 5)
ma↓ (movemouse-accel-down 1 1000 1 5)
ma→ (movemouse-accel-right 1 1000 1 5)
;; Define mouse wheel actions
;; Parameters: interval, distance (120 units = 1 notch on physical wheel)
mwu (mwheel-up 50 120)
mwd (mwheel-down 50 120)
mwl (mwheel-left 50 120)
mwr (mwheel-right 50 120)
)
;; Define Windows layout
(deflayer win
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
han a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt @spl ralt rmet rctl
)
;; Define MacOS layout
(deflayer mac
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
han a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lalt lmet @lctl @spl ralt rmet rctl
)
;; Define Colemak layout
(deflayer col
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w f p b j l u y ; [ ] \
han a r s t g m n e i o ' ret
lsft z x c d v k h , . / rsft
lalt lmet @lctl @spl ralt rmet rctl
)
;; Define navigation layer (reduces left pinky RSI by using function keys for punctuation)
(deflayer nav
esc bspc - = [ ] \ ' / f9 f10 f11 f12
lrld XX XX XX XX XX XX XX XX XX @col @win @mac _
_ mlft @ma↑ mrgt @mwu XX XX XX XX XX XX XX XX XX
XX @ma← @ma↓ @ma→ @mwd XX left down up rght XX XX _
_ XX XX XX XX XX home pgdn pgup end XX _
_ _ _ _ _ _ _
)
;; Remap Ctrl+Tab to work as Alt+Tab
(defvirtualkeys v-lalt lalt)
(deflayermap (l-lctl)
tab (fork (multi lalt
(on-press press-vkey v-lalt)
(release-key lctl)
tab)
tab
(lalt)))

Introduction

This is my configuration files of these programs.

  • Kanata: A cross-platform software keyboard remapper for Linux, macOS and Windows.
  • Komorebi: Tiling Window Management for Windows.
  • Rectangle Mac: Automatic tiling window manager for Mac.

방향키 문제

주로 텐키리스 키보드를 사용하는데 방향키가 미세하게 다르기도 하고 어떤 경우는 왼쪽 오른쪽 키를 나눠서 Page up, page down을 만들어 놨음. 이게 생각보다 적응하기 힘들기도 하고 방향키의 사용빈도가 높음에도 불구하고 왼손이 자주 이동하기가 불편함. 따라서 Vim 스타일로 Homerow 쪽으로 맵핑을 만들어서 사용하기 시작함.

한영 전환

여러 OS를 동시에 사용하다보면 한영전환키가 모두 달라서 불편한 점이 많음. 특히 리눅스와 맥에서 문제가 심각.

소프트웨어적 해결책

  1. 한영 전환을 별도의 프로그램을 사용해 전환. 한영키를 caplock자리에 매핑
  2. 한영키 사용 대신에 ctrl+space 키 조합으로 사용.

물리적인 해결책

KeyChron B1 pro 키보드 사용

  • Capslock 키를 메크로키로 변경해서 사용(ctrl + space): 한영전환 딜레이를 제거하기 위함.
.shell powershell
# located ~\.config\whkdrc
# Reload whkd configuration
# alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd
alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell
alt + shift + o : komorebic reload-configuration
alt + q : komorebic close
alt + m : komorebic minimize
# Focus windows
alt + h : komorebic focus left
alt + j : komorebic focus down
alt + k : komorebic focus up
alt + l : komorebic focus right
alt + oem_4 : komorebic cycle-focus previous # oem_4 is [
alt + oem_6 : komorebic cycle-focus next # oem_6 is ]
# Move windows
alt + shift + h : komorebic move left
alt + shift + j : komorebic move down
alt + shift + k : komorebic move up
alt + shift + l : komorebic move right
alt + shift + return : komorebic promote
@partrita
Copy link
Author

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