bochs上のDOS/Vにコピペできるようにする。

bochsで日本語キーボードが使えるようになったが、クリップボードのPaste機能が使えず片手落ち。

keymapに標準で用意されているsdl-pc-us.mapとか適当に指定してペーストすると当然のごとく文字化け。英語圏なスマイルマークなんかいらんし。

106キー設定のゲストに対応したマップファイルを作る。sdl-pc-us.mapを元にして、コメントの#jp106のところだけ変えた。「_」を101キーには存在しない「ろ」キーにマップしているから、世の中に出回っているbochsでは使えなくて、前回パッチしてビルドしたbochs.exe専用。

sdl-pc-jp106.map

# sdl-pc-jp106.map
BX_KEY_9+BX_KEY_SHIFT_L                       ')'        SDLK_RIGHTPAREN   #jp106
BX_KEY_LEFT_BRACKET                           '@'        SDLK_AT           #jp106
BX_KEY_EQUALS                                 '^'        SDLK_CARET        #jp106
BX_KEY_6+BX_KEY_SHIFT_L                       '&'        SDLK_AMPERSAND    #jp106
BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '*'        SDLK_ASTERISK     #jp106
BX_KEY_YEN                                    backslash  SDLK_BACKSLASH    #jp106
BX_KEY_YEN+BX_KEY_SHIFT_L                     '|'        SDLK_bar          #jp106
BX_KEY_ENTER                                  return     SDLK_RETURN       #jp106
BX_KEY_MINUS+BX_KEY_SHIFT_L                   '='        SDLK_EQUALS       #jp106
BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               '+'        SDLK_PLUS         #jp106
BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '~'        SDLK_asciitilde   #jp106
BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '`'        SDLK_BACKQUOTE    #jp106
BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '{'        SDLK_BRACELEFT    #jp106
BX_KEY_RIGHT_BRACKET                          '['        SDLK_LEFTBRACKET  #jp106
BX_KEY_RO+BX_KEY_SHIFT_L                      '_'        SDLK_UNDERSCORE   #jp106
BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '}'        SDLK_BRACERIGHT   #jp106
BX_KEY_BACKSLASH                              ']'        SDLK_RIGHTBRACKET #jp106
BX_KEY_SINGLE_QUOTE                           ':'        SDLK_COLON        #jp106
BX_KEY_7+BX_KEY_SHIFT_L                       apostrophe SDLK_QUOTE        #jp106
BX_KEY_2+BX_KEY_SHIFT_L                       '"'        SDLK_QUOTEDBL     #jp106

BX_KEY_1+BX_KEY_SHIFT_L                       '!'        SDLK_EXCLAIM      #sdl-pc-us.map
BX_KEY_3+BX_KEY_SHIFT_L                       '#'        SDLK_HASH         #sdl-pc-us.map
BX_KEY_4+BX_KEY_SHIFT_L                       '$'        SDLK_DOLLAR       #sdl-pc-us.map
BX_KEY_5+BX_KEY_SHIFT_L                       '%'        SDLK_PERCENT      #sdl-pc-us.map
BX_KEY_8+BX_KEY_SHIFT_L                       '('        SDLK_LEFTPAREN    #sdl-pc-us.map
BX_KEY_COMMA                                  ','        SDLK_COMMA        #sdl-pc-us.map
BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        SDLK_LESS         #sdl-pc-us.map
BX_KEY_MINUS                                  '-'        SDLK_MINUS        #sdl-pc-us.map
BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        SDLK_GREATER      #sdl-pc-us.map
BX_KEY_PERIOD                                 '.'        SDLK_PERIOD       #sdl-pc-us.map
BX_KEY_SEMICOLON                              ';'        SDLK_SEMICOLON    #sdl-pc-us.map
BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        SDLK_QUESTION     #sdl-pc-us.map
BX_KEY_SLASH                                  '/'        SDLK_SLASH        #sdl-pc-us.map

BX_KEY_0                                      '0'        SDLK_0
BX_KEY_1                                      '1'        SDLK_1
BX_KEY_2                                      '2'        SDLK_2
BX_KEY_3                                      '3'        SDLK_3
BX_KEY_4                                      '4'        SDLK_4
BX_KEY_5                                      '5'        SDLK_5
BX_KEY_6                                      '6'        SDLK_6
BX_KEY_7                                      '7'        SDLK_7
BX_KEY_8                                      '8'        SDLK_8
BX_KEY_9                                      '9'        SDLK_9
BX_KEY_A+BX_KEY_SHIFT_L                       'A'        SDLK_a
BX_KEY_A                                      'a'        SDLK_a
BX_KEY_B+BX_KEY_SHIFT_L                       'B'        SDLK_b
BX_KEY_B                                      'b'        SDLK_b
BX_KEY_C+BX_KEY_SHIFT_L                       'C'        SDLK_c
BX_KEY_C                                      'c'        SDLK_c
BX_KEY_D+BX_KEY_SHIFT_L                       'D'        SDLK_d
BX_KEY_D                                      'd'        SDLK_d
BX_KEY_E+BX_KEY_SHIFT_L                       'E'        SDLK_e
BX_KEY_E                                      'e'        SDLK_e
BX_KEY_F+BX_KEY_SHIFT_L                       'F'        SDLK_f
BX_KEY_F                                      'f'        SDLK_f
BX_KEY_G+BX_KEY_SHIFT_L                       'G'        SDLK_g
BX_KEY_G                                      'g'        SDLK_g
BX_KEY_H+BX_KEY_SHIFT_L                       'H'        SDLK_h
BX_KEY_H                                      'h'        SDLK_h
BX_KEY_I+BX_KEY_SHIFT_L                       'I'        SDLK_i
BX_KEY_I                                      'i'        SDLK_i
BX_KEY_J+BX_KEY_SHIFT_L                       'J'        SDLK_j
BX_KEY_J                                      'j'        SDLK_j
BX_KEY_K+BX_KEY_SHIFT_L                       'K'        SDLK_k
BX_KEY_K                                      'k'        SDLK_k
BX_KEY_L+BX_KEY_SHIFT_L                       'L'        SDLK_l
BX_KEY_L                                      'l'        SDLK_l
BX_KEY_M+BX_KEY_SHIFT_L                       'M'        SDLK_m
BX_KEY_M                                      'm'        SDLK_m
BX_KEY_N+BX_KEY_SHIFT_L                       'N'        SDLK_n
BX_KEY_N                                      'n'        SDLK_n
BX_KEY_O+BX_KEY_SHIFT_L                       'O'        SDLK_o
BX_KEY_O                                      'o'        SDLK_o
BX_KEY_P+BX_KEY_SHIFT_L                       'P'        SDLK_p
BX_KEY_P                                      'p'        SDLK_p
BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        SDLK_q
BX_KEY_Q                                      'q'        SDLK_q
BX_KEY_R+BX_KEY_SHIFT_L                       'R'        SDLK_r
BX_KEY_R                                      'r'        SDLK_r
BX_KEY_S+BX_KEY_SHIFT_L                       'S'        SDLK_s
BX_KEY_S                                      's'        SDLK_s
BX_KEY_T+BX_KEY_SHIFT_L                       'T'        SDLK_t
BX_KEY_T                                      't'        SDLK_t
BX_KEY_U+BX_KEY_SHIFT_L                       'U'        SDLK_u
BX_KEY_U                                      'u'        SDLK_u
BX_KEY_V+BX_KEY_SHIFT_L                       'V'        SDLK_v
BX_KEY_V                                      'v'        SDLK_v
BX_KEY_W+BX_KEY_SHIFT_L                       'W'        SDLK_w
BX_KEY_W                                      'w'        SDLK_w
BX_KEY_X+BX_KEY_SHIFT_L                       'X'        SDLK_x
BX_KEY_X                                      'x'        SDLK_x
BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        SDLK_y
BX_KEY_Y                                      'y'        SDLK_y
BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        SDLK_z
BX_KEY_Z                                      'z'        SDLK_z
BX_KEY_SPACE                                  space      SDLK_SPACE
BX_KEY_TAB                                    tab        SDLK_TAB

keymapに指定したら、日本語キー設定されたDOS/Vを起動してテキストをコピペしてみる。

keyboard: … , keymap=”.\sdl-pc-jp106.map”, …

Paste機能はテキストからキーストロークを生成するだけなので全角文字やカタカナは入らなくて、ASCII文字限定だけど入力がちょっと楽になった。


PC DOS J6.3/Vの日本語モードでCHEV USした英語環境では「~」が入力できない。この環境では「~」の入力がShift+^からShift+0に変わるため。PCDOS 2000JのCHEV USでは問題なし。OADG準拠の106キー配列ではASCIIコードが同一(7EH)なのに、チルダオーバーバーの入力の扱いが別になっていて、キー刻印も異なる。PC DOS J6.3/Vの日本語環境ではこれに厳格に従っている。

半角のチルダ「~」が Shift + 0 で、英語表示のみ。
半角の上バー「 ̄」が Shift + ^ で、日本語表示のみ。

最近は109Aキーボードが普通で、0キーの英字シフト面にある「~」が刻印されてない。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中