HHKBをHHKモードでWindowsでもLinuxでも使う

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

環境

ホストOS
Ubuntu 14.04
ゲストOS
Windows 7
VM PF
Virtualbox

要件

  • Windows側
    • CapsLockを使いたくない
      • HHK モードが理想
        • DIP SW 1: OFF, 2:OFF としたい
    • Windowsキーを使いたい
      • Lite 拡張モードにせざるを得ない
        • DIP SW 1: ON, 2: OFF
    • DeleteよりもBackSpaceを使う
      • DIP SW 3:ON
    • 左手でもFnキーが欲しい
      • DIP SW 4:ON
    • AltキーはSpaceの両隣
      • DIP SW 5:ON
    • Wakeupは無効
      • DIP SW 6:OFF
  • Linux側
    • 右Alt(◇と入れ替えたキー,以降は「新右◇」と表記)をxmonadのショートカットキーの起点にしたい
      • Lite 拡張モードの場合,新右◇はSuper_Rなので,mod4あたりを設定に使えば良かった.HHKモードの場合,新右◇はHenkan_Modeであり,modキーに割り当てられていない.

課題

  • HHKモードでWindowsキーを使いたい
  • HHKモードで新右◇をSuper_Rの代用にしたい

対策

キーマップの変更 in Windows
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout へ Scancode Map を設定する.
他に設定がない場合,

0x00000000
0x00000000
0x02000000
0x5ce07900
0x00000000

とする.
ちなみに,0x79=変換キー,0xe05c=右Windowsキー

xmodmap in Linux
xmodmapを設定した上で,xmodmapでロード.

add Mod4 = Henkcan
xmodmap ~/.Xmodmap

補足

両方設定していても,VM上で正しくWindowsキーとして動作する.

追記(2017/1/24)

remminaで接続した先のWindowsに対して,上の設定ではWindowsキーとしての動作をさせられなかったので別の手段を適用してみた.
この場合,上で行なった設定は不要になるので注意.

この辺を参照のこと.
xkbでキーバインドを変更する – Happy My Life
Ubuntu 15.04: キーボードのカスタマイズ設定 - 児童小銃
要点としては,キーが何になっているのかは xev で確認.
henkan_mode はsetxkbmap上は<HENK>.

キーマップの出力
$ setxkbmap -print > ~/.xkb/keymap/mykbd
キーの置き換え設定の記述
partial modifier_keys
xkb_symbols "HenkSuper" {
    replace key <HENK> {[ Super_L ]};
};
キーマップの修正
~/.xkb/keymap/mykbd の xkb_symbolsの項目のの最後に”+kbd_swap(HenkSuper)”を追加する
キーマップの適用
以下を,X起動時のどこかでやれば良い.

xkbcomp -I${HOME}/.xkb ${HOME}/.xkb/keymap/mykbd $DISPLAY

私の場合,xmonadを使っているので,xmonad.hsのstartupHookで

spawn "xkbcomp -I${HOME}/.xkb ${HOME}/.xkb/keymap/mykbd $DISPLAY; xmodmap ~/.Xmodmap

としてみた.
後ろにxmodmapをつけているのは,xkbcompの実行後にxmodmapがデフォルトに戻ってしまって,xmonadのmodキーの設定が外れてしまうため.

結果

ダメだった.
remminaには,相変わらず何も送信できてないっぽい.
他にremminaの設定でRDPのキーボードレイアウトのタブのuse client keyboard mappingをオン/オフ変えてもダメ.
Super_LとSuper_Rと変えてもダメ.
あんまし意味なかった.

追記(2017/2/24)

rdesktopなら,xkb の方の設定でスタートメニューを開くことができた.
.Xmodmapの方は試してないので不明.

rdesktop -g 2560x1440 -a 32 -z -u $(id -un) -p $(cat /path/to/passwordfile) HOSTADDR