いいものをつくろう

CTOの日記

env

karabinerにfnキーを割り当てたいが 無理だったのでHammerspoonにいきついた話

更新日:

前提条件として

私は barrocoという 分離キーボードを使っています

ある日突然、 左半分が 動かなくなりました

usbケーブルがダメになったと見ています

 

そこでkarabinerでマッピングできたら便利だとおもいまして

左手のすぺーすにfunction key(fn)ファンクションキーを 割り当てたいのです

 

できたものの左の modifier keyと右手用の キーコードの組み合わせができまsん

 

"simple_modifications": [
                        {
                            "from": {
                                "key_code": "caps_lock"
                            },
                            "to": {
                                "key_code": "left_control"
                            }
                        },
                        {
                            "from": {
                                "key_code": "d",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "down_arrow"
                            }
                        },
                        {
                            "from": {
                                "key_code": "e",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "up_arrow"
                            }
                        },
                        {
                            "from": {
                                "key_code": "f",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "right_arrow"
                            }
                        },
                        {
                            "from": {
                                "key_code": "g",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "return_or_enter"
                            }
                        },
                        {
                            "from": {
                                "key_code": "i",
                                "modifiers": {
                                    "mandatory": [
                                        "left_gui"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "up_arrow"
                            }
                        },
                        {
                            "from": {
                                "key_code": "left_command"
                            },
                            "to": {
                                "key_code": "left_option"
                            }
                        },
                        {
                            "from": {
                                "key_code": "left_control"
                            },
                            "to": {
                                "key_code": "caps_lock"
                            }
                        },
                        {
                            "from": {
                                "key_code": "left_option"
                            },
                            "to": {
                                "key_code": "left_command"
                            }
                        },
                        {
                            "from": {
                                "key_code": "s",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "left_arrow"
                            }
                        },
                        {
                            "from": {
                                "key_code": "spacebar"
                            },
                            "to": {
                                "key_code": "fn"
                            }
                        },
                        {
                            "from": {
                                "key_code": "t",
                                "modifiers": {
                                    "mandatory": [
                                        "fn"
                                    ],
                                    "optional": [
                                        "any"
                                    ]
                                }
                            },
                            "to": {
                                "key_code": "delete_or_backspace"
                            }
                        }
                    ]

 

まず、fnにはキーコードがありません、ハードウェアレベルです

なのでos自体キーが押されたことしりません

karabinerの fnは擬似的なものです。 それでも、 分離キーボードでなければ

動作するでしょう

さらにいえば、 分離キーボードでも両端が正常な状態で繋がっていれば問題ないでしょう。

 

とは言ったものの、新しいusbケーブルが届くまで私はこの状態で過ごさなければならないのか!?いや、タイプしづらい。。一刻も早く、あとちょっとこのmistelのハードウェアのバインドに頼りっぱなしなのが復元に時間がかかりそうで

いやだったんですよ。なのでkarabinerとかソフトウェアのアプローチでなんとかならないものかなー

と常々思っていたのでちょうどいい機会です!

 

ということで色々ググってみたんですが、hammerspoonが試してみる価値あるんじゃないかと!?

そしたら、見事うまいくと動きました。

まだ、これ完全ではない部分がkaraniberとhammerspoonの二つ使っているとう点と

karabinerのほうでspace -> fnというバインドで使いたかったのですが、それではうごかなっかったので、不本意ながらspace -> right_controlとう設定で矢印キーをctrlとのバインドで実現しております。

 

詳細はこちらの記事で Hammerspoonでキーバインドに挑戦

詳しく書いてありますが、とくもかくにの

やりたいことは実現できました

 

1日ぶりに、このバインディングに戻ったのですが、対プングのスピードが雲泥の差ですw もはや、こんなにも手が馴染んでいたとは。

以上です

-env

Copyright© CTOの日記 , 2020 All Rights Reserved.