JavaScriptを有効にしてください

UbuntuでMagic Keyboard 英数・かなキーが使えない【調査】

 ·  ☕ 4 分で読めます
Photo by Pixabay from Pexels

Photo by Pixabay from Pexels

Magic Keyboardを買った

以前、UbuntuでApple Wireless Keyboardを使うための設定について、記事をかいた。

UbuntuでMacキーボード 英数・かなキーを使う | ひとりごと2.0

そのApple Wireless Keyboardを1年くらい使っていておおむね快適だったのだが、ある日一部のキーが効かなくなってしまった。。
おそらくハード的な故障だと思う。キー下の回路シートが劣化したとかだと予想・・・

で後継機としてMagic Keyboardに買い替えた。
Apple Wireless Keyboardより薄くて軽い。バッテリー搭載で便利。
タッチはかなり浅くてMacbookに近い感じ

ちなみにまたJIS配列です
自分の中で
・左Ctrl キーが小指で押せる
・英数・かなキーでIME切り替えできる
この2点で断然US配列よりJIS配列がいい

なのでまたUbuntuでMagic Keyboardを使おうとした話

結論:英数、かな、\、_の4キー認識しねえ

キーボードの認識自体はGUIから普通にできた。

で次にキー入力のテストをしたところ、
「英数」「かな」「\」「_」この4つのキーを認識しなかった。

Magic Keyboardなんてポピュラーだしググったらすぐ解決策出てくるだろ、と思ったが全然情報がない・・・
なので色々自分で調べてみた。

まずxevを試す

Linuxでキーコードを調べる際必ず使うのがxev
まずはxevで問題のキーを認識してるのか調べる
もし認識しているなら、xmodmapでキーシムにマップすれば使えるはず

→うんともすんともいわず、反応なし

showkey試す

showkey コマンドでカーネルがキーを認識してるか調べる

まず、Ctrl + Alt + F3 でCUIの仮想ターミナルに移動する
Ctrl + Alt + F2で戻れる)

showkey -s で 押されたキーのscancode(キーボードから最初に送られる16進数コード)
showkey -k で押されたキーのkeycode(scancodeに対応してOSが変換する数字のコード)
が表示できる。

→反応なし、カーネルもキーを認識してない

kern.log(カーネルのログ)を確認

カーネルが意図してそのキーを無視している場合、ログにその旨が表示されるらしい。

less +F /var/log/kern.log

この状態で問題のキーを押して見る

→とくにログに出力なし

となると可能性としては以下があるらしい

  • ACPI Event・・・Power on や Sleepイベントを発火させるボタンと認識されている?
  • BIOS “knock sequence” ・・・?(よくわからない)

Macbookに接続すれば普通に認識する

ならMacbookではどのscancodeで認識してるのか調べてみる

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h でkeycodeのマッピングを確認

これだ

/* JIS keyboards only*/
enum {
  kVK_JIS_Yen = 0x5D,
  kVK_JIS_Underscore = 0x5E,
  kVK_JIS_Eisu = 0x66,
  kVK_JIS_Kana = 0x68,
};

!あるgithubレポジトリで同じようなissueが上がってた

Four keys do not work on Japanese keyboard model · Issue #34 · cb22/macbook12-spi-driver · GitHub

macbook用のキーボードdriverのレポジトリのよう
4つのキーを認識しないとのこと

そこでの結論は、
「4つのキーのscancodeが、ドライバーの扱うscancodeの最大値を超えていること」が原因

/* JIS keyboards only*/
enum {
  kVK_JIS_Yen = 0x5D,
  kVK_JIS_Underscore = 0x5E,
  kVK_JIS_Eisu = 0x66,
  kVK_JIS_Kana = 0x68,
};

Ubuntuのキーボードドライバの扱えるscancodeの最大値はわからない

ただ上記4つのキーは、/* JIS keyboards only*/ というコメントからMacにおいてJIS配列の専用の特殊なkeycodeとして用意されていることがわかる
そのため後ろのほうのkeycodeを使えるようにmac独自で拡張して使っていて、その他LinuxなどのOSでは対応していないという可能性が考えられそう。。

解決策あったら教えてほしい

結論として、UbuntuのドライバーがJIS配列のMagic Keyboardに対応しない限り4つのキーは使えないんだと思う。

やっぱそういう意味でも、Apple Wireless Keyboardは名機なのかも・・・
もう1台買っとくか

誰かUbuntuでJIS配列のMagic Keyboardを使う方法があったら教えてほしいです

共有