親指シフト(Nicola)入力を使いたい (Kanata/ Kubuntu26.04)
ずっとoyainputにお世話になってきたのですが、systemdのサービスにしてユーザ切り替えをすると、どうしても複数起動になってしまい、うまく動作しないのだ。
そこで、色々調べてたらkanataで、同時打鍵を判定できることが判明!!
[無変換]を[Ctlr]にするだけでは勿体ない!
がんばって、kanataで親指シフトを実現することに・・・
今回のものはIMEの切り替えを[半角/全角]キーと[カタカナ/ひらがな]キーに割り当ててあることが前提になってるよ。
後、この方式だと、oyainputの様にIMEの状態を見ているわけではないので、モードがズレてしまうことが多々あると思う。
そこで、IMEの切り替えキーをダブルタップするとモードを反転するので、何回かやっていれば正しいモードになるのでがんばれ(笑)
/etc/kanata/config.kbd(defcfg linux-dev /dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd process-unmapped-keys yes ) (defsrc esc ;; Escキー grv ;; 半角/全角キー kana ;; かなキー spc ;; スペースキー (親指左シフト) henkan ;; 変換キー (親指右シフト) muhenkan ;; 無変換 (左Ctrl or 特殊レイヤー) lctl rctl lalt ralt lmet rmet lsft rsft 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p a s d f g h j k l scln ' z x c v b n m , . / ) (defalias lctl-base (multi lctl (layer-toggle base)) rctl-base (multi rctl (layer-toggle base)) lalt-base (multi lalt (layer-toggle base)) ralt-base (multi ralt (layer-toggle base)) lmet-base (multi lmet (layer-toggle base)) rmet-base (multi rmet (layer-toggle base)) lsft-base (multi lsft (layer-toggle base)) rsft-base (multi rsft (layer-toggle base)) ;; [ESC]長押し”シャットダウン”ボタン ;; (Plasmaで[ショートカット|セッション管理|シャットダウン]を Meta+Ctrl+Alt+Shift+BS に設定しておく) esc-shutdown (tap-hold 200 500 esc (macro M-C-A-S-bspc)) ;; [半角/全角]で IMEのON/OFF と kanataのモード切替を同期 (同期がズレた時は[IME:OFF]で2回タップ) toggle-ime (switch ((layer base)) (layer-switch nicola) break ((layer nicola)) (layer-switch base) break () XX break ) ;;ime-onoff (tap-dance 200 ((multi grv @toggle-ime) lrld)) ;; 2回タップでリロード ime-onoff (tap-dance 200 ((multi grv @toggle-ime) @toggle-ime)) ;; 2回タップでモード逆転 ;; [無変換]の多機能化 ;; 1回目(タップ&長押し) = [左Ctrl] ;; 2回目長押し = 特殊レイヤーへ切り替え muhen-ctrl (tap-dance 200 (@lctl-base (layer-toggle muhen-layer))) ;; [変換]の多機能化 ;; 単押し(Tap) = [変換] ;; 長押し(Hold) = カーソルレイヤーへ切り替え henkan-cursor (tap-hold 200 200 henkan (layer-toggle cursor-layer)) ) ;; ========================================== ;; 1. ベースレイヤー(IME:OFF時) ;; ========================================== (deflayer base @esc-shutdown ;; Escキー @ime-onoff ;; 半角/全角キー (親指シフトレイヤーへ切替) @ime-onoff ;; かなキー (親指シフトレイヤーへ切替) spc ;; スペースキー (親指左シフト用) @henkan-cursor ;; 変換キー (親指右シフト用) @muhen-ctrl ;; 無変換キー (左Ctrl or 無変換レイヤー) lctl rctl lalt ralt lmet rmet lsft rsft 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p a s d f g h j k l scln ' z x c v b n m , . / ) ;; ========================================== ;; 2. 親指シフトモードレイヤー(IME:ON時) ;; ========================================== (deflayer nicola @esc-shutdown ;; Escキー @ime-onoff ;; 半角/全角キー(ベースレイヤーへ切替) @ime-onoff ;; かなキー (ベースレイヤーへ切替) (chord nicola-chords l-ncl') ;; 親指左シフト(スペースキー) (chord nicola-chords r-ncl') ;; 親指右シフト(変換キー) @muhen-ctrl ;; 無変換キー(左Ctrl or 無変換レイヤー) @lctl-base @rctl-base @lalt-base @ralt-base @lmet-base @rmet-base @lsft-base @rsft-base (chord nicola-chords 1') (chord nicola-chords 2') (chord nicola-chords 3') (chord nicola-chords 4') (chord nicola-chords 5') (chord nicola-chords 6') (chord nicola-chords 7') (chord nicola-chords 8') (chord nicola-chords 9') (chord nicola-chords 0') (chord nicola-chords -') (chord nicola-chords =') (chord nicola-chords q') (chord nicola-chords w') (chord nicola-chords e') (chord nicola-chords r') (chord nicola-chords t') (chord nicola-chords y') (chord nicola-chords u') (chord nicola-chords i') (chord nicola-chords o') (chord nicola-chords p') (chord nicola-chords a') (chord nicola-chords s') (chord nicola-chords d') (chord nicola-chords f') (chord nicola-chords g') (chord nicola-chords h') (chord nicola-chords j') (chord nicola-chords k') (chord nicola-chords l') (chord nicola-chords scln') (chord nicola-chords quote') (chord nicola-chords z') (chord nicola-chords x') (chord nicola-chords c') (chord nicola-chords v') (chord nicola-chords b') (chord nicola-chords n') (chord nicola-chords m') (chord nicola-chords comma') (chord nicola-chords dot') (chord nicola-chords slash') ) ;; ========================================== ;; 3. 無変換レイヤー(特殊Ctrl動作) ;; ========================================== (deflayer muhen-layer esc grv kana spc henkan @muhen-ctrl lctl rctl C-lalt C-ralt C-lmet C-rmet C-lsft C-rsft C-1 C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 C-0 C-- C-= C-q C-w end C-r C-t C-y (macro S-home del) C-i C-o C-p home C-s (unmod del) C-f C-g bspc enter (macro S-end del) C-l C-scln C-' C-z C-x C-c C-v C-b C-n C-m C-, C-. C-/ ) ;; ========================================== ;; 4. カーソルレイヤー ;; ========================================== (deflayer cursor-layer esc grv kana spc henkan @muhen-ctrl lctl rctl lalt ralt lmet rmet lsft rsft ;;1 2 3 4 5 6 7 8 9 0 - = _ _ _ _ _ _ _ _ _ _ _ _ ;;q w e r t y u i o p _ _ _ _ _ _ _ _ _ _ ;;a s d f g h j k l scln ' _ _ _ pgdn _ left down up right _ _ ;;z x c v b n m , . / _ _ _ _ pgup _ _ _ _ _ ) ;; ========================================== ;; 【定義】親指シフト時の同時打鍵ルール ;; ========================================== (defchords nicola-chords 100 (l-ncl') spc (r-ncl') @henkan-cursor ;; 親指シフト配列(単独押し) (1') 1 (2') 2 (3') 3 (4') 4 (5') 5 (6') 6 (7') 7 (8') 8 (9') 9 (0') 0 (-') - (=') = (q') . (w') (macro k a) (e') (macro t a) (r') (macro k o) (t') (macro s a) (y') (macro r a) (u') (macro t i) (i') (macro k u) (o') (macro t u) (p') , (a') u (s') (macro s h i) (d') (macro t e) (f') (macro k e) (g') (macro s e) (h') (macro h a) (j') (macro t o) (k') (macro k i) (l') i (scln') (macro n n) (quote') ' (z') . (x') (macro h i) (c') (macro s u) (v') (macro f u) (b') (macro h e) (n') (macro m e) (m') (macro s o) (comma') (macro n e) (dot') (macro h o) (slash') / ;; 親指シフト上段配列(同時押し) (r-ncl' 1') S-/ (r-ncl' 2') (macro / f9) (r-ncl' 3') S-= (r-ncl' 4') ] (r-ncl' 5') \ (l-ncl' 6') (macro ] f9) (l-ncl' 7') (macro \ f9) (l-ncl' 8') S-8 (l-ncl' 9') S-9 (l-ncl' 0') XX (l-ncl' -') XX (l-ncl' =') XX (l-ncl' q') (macro l a) (l-ncl' w') e (l-ncl' e') (macro r i) (l-ncl' r') (macro l y a) (l-ncl' t') (macro r e) (r-ncl' y') (macro y o) (r-ncl' u') (macro n i) (r-ncl' i') (macro r u) (r-ncl' o') (macro m a) (r-ncl' p') (macro l e) (l-ncl' a') (macro w o) (l-ncl' s') a (l-ncl' d') (macro n a) (l-ncl' f') (macro l y u) (l-ncl' g') (macro m o) (r-ncl' h') (macro m i) (r-ncl' j') o (r-ncl' k') (macro n o) (r-ncl' l') (macro l y o) (r-ncl' scln') (macro l t u) (r-ncl' quote') XX (l-ncl' z') (macro l u) (l-ncl' x') - (l-ncl' c') (macro r o) (l-ncl' v') (macro y a) (l-ncl' b') (macro l i) (r-ncl' n') (macro n u) (r-ncl' m') (macro y u) (r-ncl' comma') (macro m u) (r-ncl' dot') (macro w a) (r-ncl' slash') (macro l o) ;; 親指シフト濁点・半濁点配列(同時押し) (l-ncl' 1') S-/ (l-ncl' 2') (macro / f9) (l-ncl' 3') S-= (l-ncl' 4') ] (l-ncl' 5') \ (r-ncl' 6') (macro ] f9) (r-ncl' 7') (macro \ f9) (r-ncl' 8') S-8 (r-ncl' 9') S-9 (r-ncl' 0') XX (r-ncl' -') XX (r-ncl' =') XX (r-ncl' q') XX (r-ncl' w') (macro g a) (r-ncl' e') (macro d a) (r-ncl' r') (macro g o) (r-ncl' t') (macro z a) (l-ncl' y') (macro p a) (l-ncl' u') (macro d i) (l-ncl' i') (macro g u) (l-ncl' o') (macro d u) (l-ncl' p') (macro p i) (r-ncl' a') (macro v u) (r-ncl' s') (macro z i) (r-ncl' d') (macro d e) (r-ncl' f') (macro g e) (r-ncl' g') (macro z e) (l-ncl' h') (macro b a) (l-ncl' j') (macro d o) (l-ncl' k') (macro g i) (l-ncl' l') (macro p o) (l-ncl' scln') scln (l-ncl' quote') scln (r-ncl' z') XX (r-ncl' x') (macro b i) (r-ncl' c') (macro z u) (r-ncl' v') (macro b u) (r-ncl' b') (macro b e) (l-ncl' n') (macro p u) (l-ncl' m') (macro z o) (l-ncl' comma') (macro p e) (l-ncl' dot') (macro b o) (l-ncl' slash') . )
まあ、[無変換]キーを[Ctrl]にしたり、[変換]キーをVi風カーソル移動にするとか余計なこともやってるが、いい感じで動いてる。
ただ、キーボードの一番上の配列では親指シフトとの入力で変換キー(F9)まで押してしまうので、記号の入力時に誤変換が起きるよ。
何言ってるかわからないと思うが、やってみればわかる(笑)。なので記号は普通の[Shift]で入力しよう!
なんとか、動いてます。めでたしめでたし。。。
ふんどしの持ち主
- 私
コメント
コメントを投稿