デフォルトでfnキー(ハイパーシフト)とのコンビネーションが割り当てられているキーは,Synapseで機能を変更することはできません.
しかし,そういうキーが多いので,希望の機能割り当て実現での障害になっています.当方もカーソルキーの割り当てを1段下げたくて,方法を探しました.
ここで,Synapseの定義ファイルを書き換えてこれを実現する方法をまとめます.
なお,この方法はこちらのwebを参考に当方が情報をまとめたもので,オフィシャルなものではありません.不具合が発生したり,今後対策されてしまう可能性もお含み下さい.
(追記)Microsoft純正のPowerToysというソフトを使うと,こんなことしなくても(ある程度)同様のことができますね.このソフトはPreview(バージョンがまだ1に到達していない)ですが,キーのScancodeに対して任意のKeycodeを割り当てられるKeyboard Managerという機能があります.
たとえばfn+.キーにカーソル右を割り当てたければ,Huntsman miniがfn+.でinsを出力するので,PowerToysでinsにRight(カーソル右)を割り当てれば,同様のことができます.
たぶんバックライト調整など(fn+Gなど)を上書きしたいときは,本ページの方法が必要になるのだと思います.
This page explains how we assing a hypershift function to a key that has a default hypershift function. Please note the procedure is unofficial, no guarantee. Please consider your own risk if you try.
ここではfn+Kキーにカーソル上(Up)を割り当てる操作を例に説明します.
fn+Kキーにはデフォルトでカーソル下(Down)が割り当てられていて,Synapseでは変更できないと言われてしまいます.
そこでプロファイルを一旦エクスポートし,そのファイルを書き換えて再びインポートすることで,割り当てを変更します.
I. 準備
- Synapseで新しいプロファイルを作成する.
- そのプロファイルをエクスポートする.
- エクスポートしたファイルは.synapse3という拡張子だが,これを.zipに書き換える.実はZIPファイルなのです.
- ZIPファイルを開きFeaturesフォルダを開く.
- 中にUUID名のフォルダがあるので開く.
- 5つのUUID名のxmlファイルがあるので,762555eb...というxmlファイルを作業用フォルダにコピーする.
II. 書き換え
- 次節の表1から目的とするキーのHID_Idを確認する.Kの場合は14.
- 先ほどのxmlファイルをエディタで開く.<Mapping>~</Mapping>に各キーの割り当てが定義されている.<HID_Id>が4から順番に標準状態でのキー設定が書かれていて,一巡すると今度は<IsHyperShift>true</IsHypserShift>が先頭に書かれたハイパーシフトでの定義が書かれている.
- ハイパーシフト定義のあるHID_Idが14の項目を探し出す.
- 下図青枠のように記載を変更する.具体的には次の3項目を変更する.
- 先頭に<IsDefault>false</IsDefault>を挿入.
- <KeyAssignment>~</KeyAssignment>の間を変更する.ここでScancode=72はUp,そのKeycode=38である(表2).
- </KeyAssignment>の次行に<UIMappingType>Navigation</UIMappingType>を挿入する.
- ファイルをセーブし,ZIPファイルの元のフォルダに戻す(上書きする).
- ZIPファイルの拡張子を.synapse3に戻す.
III. インポート
- (任意)先ほど作ったプロファイルを一旦消去する.※消去しなくても大丈夫だが,どうせ元のプロファイルは使わないので.
- Synapseのインポートで先ほど書き換えた.synapse3ファイルを指定し,お目当てのプロファイルをインポートする.
- Synaposeの画面上でキーの書き換えがなされていることを確認する.相変わらず「割り当てできません」と言われるが,該当キーはユーザーによる変更がなされているオレンジ色に変わっていて,実際に機能も書き換えられている(はず).
- 念のためPCを再起動する.
スキャンコード・キーコード
HID_IdというのがHmmでの物理キーを指定しているような気がしております(教えて偉い人).なぜか4から始まります.
ScancodeってのがキーボードからPCへ伝えられる入力だと思います.KeycodeがそのScancodeに応じて実際に現れる文字コードなんでしょうたぶん.
バックスラッシュ(\)は2つのHID_Idが同じKeycodeを指してますね.逆に,物理的に同じキーのはずのESCと`は別のHID_Idになってます.
HyperShiftのところもおおよそ同じようなScancodeが書いてあるのですが,一部違っています.かといって(デフォルトの場合)そのScancodeが入力されている様子もないのです.デフォルトだとfnキー押下時の動作は別なんでしょうかね.
HID_Id | Scancode | Keycode | HID_Id | Scancode | Keycode | |
---|---|---|---|---|---|---|
4 | 30 | A | 35 | 7 | 6 | |
5 | 48 | B | 36 | 8 | 7 | |
6 | 46 | C | 37 | 9 | 8 | |
7 | 32 | D | 38 | 10 | 9 | |
8 | 18 | E | 39 | 11 | 0 | |
9 | 33 | F | 40 | 28 | Enter | |
10 | 34 | G | 41 | 1 | Esc | |
11 | 35 | H | 42 | 14 | Backspace | |
12 | 23 | I | 43 | 15 | Tab | |
13 | 36 | J | 44 | 57 | space | |
14 | 37 | K | 45 | 12 | - | |
15 | 38 | L | 46 | 13 | = | |
16 | 50 | M | 47 | 26 | [ | |
17 | 49 | N | 48 | 27 | ] | |
18 | 24 | O | 49 | 43 | \ | |
19 | 25 | P | 50 | 43 | \ | |
20 | 16 | Q | 51 | 39 | ; | |
21 | 19 | R | 52 | 40 | ' | |
22 | 31 | S | 53 | 41 | ` | |
23 | 20 | T | 54 | 51 | , | |
24 | 22 | U | 55 | 52 | . | |
25 | 47 | V | 56 | 53 | / | |
26 | 17 | W | 57 | 58 | CapsLock | |
27 | 45 | X | 100 | 86 | ||
28 | 21 | Y | 101 | 93 | ||
29 | 44 | Z | 224 | 29 | LCtrl | |
30 | 2 | 1 | 225 | 42 | LShift | |
31 | 3 | 2 | 226 | 56 | LAlt | |
32 | 4 | 3 | 228 | 29 | LCtrl | |
33 | 5 | 4 | 229 | 54 | RShift | |
34 | 6 | 5 | 230 | 56 | LAlt |
Scancode | Key | Function | Keycode |
---|---|---|---|
59 | F1 | 112 | |
60 | F2 | 113 | |
61 | F3 | 114 | |
62 | F4 | 115 | |
63 | F5 | 116 | |
64 | F6 | 117 | |
65 | F7 | 118 | |
66 | F8 | 119 | |
67 | F9 | 120 | |
68 | F10 | 121 | |
69 | NumLock | 144 | |
70 | ScrollLock | 145 | |
71 | KP-7 | Home | 36 |
72 | KP-8 | Up | 38 |
73 | KP-9 | PgUp | 33 |
75 | KP-4 | Left | 37 |
76 | KP-5 | ||
77 | KP-6 | Right | 39 |
79 | KP-1 | End | 35 |
80 | KP-2 | Down | 40 |
81 | KP-3 | PgDn | 34 |
82 | KP-0 | Insert | 45 |
83 | KP-. | Delete | 46 |