Skip to content

Instantly share code, notes, and snippets.

@sysraccoon
Created October 21, 2024 18:37
Show Gist options
  • Select an option

  • Save sysraccoon/8a28d59d28c65dafceabb6376d379f46 to your computer and use it in GitHub Desktop.

Select an option

Save sysraccoon/8a28d59d28c65dafceabb6376d379f46 to your computer and use it in GitHub Desktop.
kanata basics
(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 cmp rctl
)
(defvar
tap-timeout 100
hold-timeout 200
tt $tap-timeout
ht $hold-timeout
)
(deftemplate triple-tap-layer-switch (key layer-name)
$key (tap-dance 200 (
$key
(macro $key $key)
(layer-switch $layer-name)
))
)
(deflayermap (default)
caps (tap-hold $tt $ht esc lctl)
a (tap-hold-release $tt $ht a lalt)
s (tap-hold-release $tt $ht s lmet)
d (tap-hold-release $tt $ht d lsft)
f (tap-hold-release $tt $ht f lctl)
j (tap-hold-release $tt $ht j rctl)
k (tap-hold-release $tt $ht k rsft)
l (tap-hold-release $tt $ht l rmet)
; (tap-hold-release $tt $ht ; ralt)
(template-expand triple-tap-layer-switch grv transparent)
spc (tap-hold $tt $ht spc (layer-while-held extended))
)
(deflayermap (transparent)
(template-expand triple-tap-layer-switch grv default)
)
(deflayermap (extended)
u pgdn
o pgup
i up
j left
k down
l rght
h C-left
; C-rght
m C-S-tab ;; previous tab
, C-tab ;; next tab
n home
. end
r C-. ;; paste
t C-i ;; yank/copy
f C-/ ;; undo
b C-b ;; cut
)

Установка на NixOS

Открываем /etc/nixos/configuration.nix и добавляем в него вот такие настройки:

services.kanata = {
  enable = true;
  keyboards = {
    default.config = builtins.readFile ./kanata.kbd;
  };
};

Если вы сразу попробуете пересобрать систему:

sudo nixos-rebuild switch

То получите ошибку, так как сервис канаты настроен так, что предварительно проверяет конфиг на наличие ошибок. Пока повременим с этим и разберёмся что же должно содержаться в файле kanata.kbd.

Установка на Windows

Для установки на Windows переходим на страницу релизов и скачиваем kanata_winIOv2.exe, так как он работает единообразно во всех приложениях и помимо этого выполняет операции над scancod-ами клавиш за счёт чего ведёт себя также как kanata запущенная на linux, таким образом можно написать один конфиг и использовать его на разных системах.

После загрузки файла, переносим его в любое удобное место. Открываем в этой директории powershell и добавляем её же в переменную окружения Path чтобы иметь возможность вызывать исполняемый файл из любого места в системе:

[Environment]::SetEnvironmentVariable( `
  "Path", `
  [Environment]::GetEnvironmentVariable( `
    "Path", `
    [System.EnvironmentVariableTarget]::User `
  ) + ";" + (Get-Location), `
  [System.EnvironmentVariableTarget]::User `
)

В любом месте создаём файл конфигурации (kanata.kbd) куда позже будем добавлять все настройки связанные с канатой.

Теперь можно проверить что всё сделано правильно, перейдя в любую другую директорию запустив следующую команду:

kanata_winiov2.exe --version

Если не получили ошибку, то всё работает как надо.

Можно также добавить канату в автозапуск используя вот такой скрипт:

$StartupPath="HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$ProgramName="Kanata"
$KanataPath=(get-command kanata_winiov2.exe).Path
$KanataConfigPath="$PSScriptRoot\default.kbd"
$StartupCommand="""C:\Windows\system32\conhost.exe"" --headless ""$KanataPath"" --cfg ""$KanataConfigPath"""
Set-ItemProperty -LiteralPath "$StartupPath" -Name "$ProgramName" -Value "$StartupCommand"

В переменную KanataConfigPath стоит подставить полный путь к конфигу или просто положить kanata.kbd рядом с скриптом как сделано в моём случае.

@Hezaki
Copy link

Hezaki commented Jan 23, 2025

Спасибочки

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