Mona で CapsLock と LCtrl を入れ替えたい

エディタに Emacs キーバインディングを少しずつ追加しているので Mona で CapsLock と LCtrl を入れ替えたい。
キーボードドライバで keymap を入れ替えれば OK かと思いきや上手くいかない。
Ctrl-a のつもりで CapsLock-a をすると、CapsLock を押しつづけているのにもかかわらず a を down する前に CapsLock の up がやってくる。何度も確かめたが挙動は変わらない。


Linux 上で xev を起動して試してみるとそんな挙動は見られない。QEMU のバグか?と思いぐぐっても見つからない。念のため QEMUソースコード見たら仕様だった。

    case 0x3a: /* caps lock */
        /* SDL does not send the key up event, so we generate it */
        kbd_put_keycode(keycode);
        kbd_put_keycode(keycode | 0x80);
        return;

SDL は CapsLock の up イベントを通知してくれないので down された直後に up も送っちゃうよ」だそうだ。CapsLock を元の用途通りに使うなら確かにこれで問題ないのだが困ったな。
SDL にがんばって欲しいところ。

追記

"-k ja " オプションで起動すると回避できる。理由は調べてない