QEMU上で'_'(アンダーバー)を入力できない問題の解決法(debian packageへのコード修正・再ビルド)

少し早いですが、本記事はDebian/Ubuntu Advent Calendar 2017の12/7(木)の記事として書いてみたものです。


qemu-system-x86_64(qemu-system-x86パッケージ、バージョン:1:2.1+dfsg-12+deb8u6)を使用していて、ゲスト上で'_'(アンダーバー)を入力できないという問題がありました。


ソースコードの修正が必要で、以下の記事等で修正方法が紹介されています。


Debianパッケージのソースコードを取得して、ソースコード修正し、debパッケージ再生成を行ってみましたので、
この記事ではその手順をまとめておきます。

手順1. パッケージのビルドに必要なパッケージをインストール

$ sudo apt-get build-dep qemu-system-x86

手順2. qemu-system-x86パッケージのソースコードを取得

$ apt-get source qemu-system-x86

ソースコードダウンロードにより"qemu-2.1+dfsg"というディレクトリが作られているとします。

手順3. ソースコード修正

qemu-2.1+dfsg/ui/x_keymap.c を以下のように修正

--- a/ui/x_keymap.c     2013-08-09 07:40:09.530318381 +0900
+++ b/ui/x_keymap.c     2013-08-09 07:38:27.310309931 +0900
@@ -94,7 +94,7 @@
  */

 static const uint8_t evdev_keycode_to_pc_keycode[61] = {
-    0,         /*  97 EVDEV - RO   ("Internet" Keyboards) */
+    0x73,      /*  97 EVDEV - RO   ("Internet" Keyboards) */
     0,         /*  98 EVDEV - KATA (Katakana) */
     0,         /*  99 EVDEV - HIRA (Hiragana) */
     0x79,      /* 100 EVDEV - HENK (Henkan) */

手順4. debパッケージ再生成

$ cd qemu-2.1+dfsg
$ dpkg-buildpackage -rfakeroot -uc -b