All About ACS: IBM i Access Client Solutions 1.1.8.4 の5250で円記号とバックスラッシュを使い分ける

# IBM i Access Client Solutions 1.1.8.4 で円記号とバックスラッシュを使い分ける
[IBM i Access Client Solutions 1.1.8.4 利用可能](https://qiita.com/6onoda/items/da7ebe142204142b55a7) にも書きましたが、ACS 1.1.8.4 では日本語の5250セッション円記号とバックスラッシュを使い分けることができるようになりました。

Access for Windows の PC5250 や Personal Communications では「ansi 5c」をキーにアサインすることでバックスラッシュを入力することができました。
しかし、ACSの日本語セッションでは円記号とバックスラッシュのどちらを入力しても円記号に片寄するのがこれまでの仕様でした。
1.1.8.4 では日本語セッションでも使い分けができるようになったのですが、いろいろな設定が必要です。
ここでは、その設定をご紹介します。

**2021-02-26 追記 当拡張によりデフォルトでは円を入力しようとするとバックスラッシュが入ります**
「[IBM i Access Client Solutions 1.1.8.4 以降の 5250 で円が期待通りに入力できない](https://qiita.com/6onoda/items/7633f5811cb656e60dee)」を確認ください。

**2021-10-25 追記**
「PlemolJPConsole」を使うと、円記号・バックスラッシュ・半角カナが共存できそうです。
「[IBM i Access Client Solutions 5250で使える円記号とバックスラッシュの区別がつく日本語等倍フォント](https://qiita.com/6onoda/items/02e8e0c1aa8168bf2c83)」をご覧ください。

## キーマッピングの設定
「編集」→「設定」→「キーボード」で円記号とバックスラッシュに別々のキーを割り当てます。
下記の例では、通常入力で円記号が、Ctrlとの同時押しでバックスラッシを入力するように設定しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/cb2b9bb6-b5a6-fa7f-6740-2cb2da1fc0fd.png)

## Javaでは「円記号(BackSpaceの隣)」と「バックスラッシュ(Shiftの隣の「ろ」のキー)」は区別されない
日本語キーボードには「円記号(BackSpaceの隣)」と「バックスラッシュ(Shiftの隣の「ろ」のキー)」が別々に存在しますが、どちらのキーを押してもJavaに送信されるKey Eventは同じ値です。
そのため、これらのキーの使い分けで、円入力・バックスラッシュ入力を区別することはできません。

PcommやAccess for Windowsでは低レベル/Nativeのレベルでキーボードにアクセスしてていたため、そのため、キー毎に使い分けができました。
逆にPCOMMやAccess for Windowsが知らないキーボード、例えばPC9801キーボードだと5250を動かせませんでした。
Java上で動作するACSではJavaが物理インターフェースを抽象化するため、さまざまな環境で動かせる一方、すべてのキーが使い分けられるわけではないのです。

## 円記号とバックスラッシュが区別できるフォントを選択
ACSやJavaアプリケーションであり、Javaの文字コードはUNICODEです。
UNICODEではバックスラッシュにU+005C、円記号にU+00A5と別々の文字コードが割り振られています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/2dd4a348-3d70-ecf8-bdc7-6c80ebf9e640.png)

ACSではUNICODEの規格に従い、U+005Cを使ってバックスラッシュを、U+00A5を使って円記号を表示しようとします。
ただし、実際にどのような字形で表示されるかは、表示用に選択したフォントに依存します。
一方、日本語Windowsに標準搭載されているフォントは、UNICODEの標準と異なり、バックスラッシュが表示されるべきU+005Cにも円記号の字形が登録されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/2d4b808e-6b22-fdd6-3f84-620b73661ede.png)


そのため、ACSで別々の文字コードを利用して表示しようとしているにも関わらず、いずれも円記号で表示されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/6addeaeb-71f5-9a36-631e-fbd7539b6c16.png)

Windows標準のもので何とか出せないか調べたところ、中国語用のフォントである「SimSun」や「NSimSun」なら区別がつくことが分かりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/5e3f85f3-b751-28ac-22d2-2c71daec999e.png)

ただ、中国語用のフォントなので、CJK統合された漢字が中国語の文字として表示されてしまうのは愛嬌としても、半角カナが表示されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/1b916dd2-a637-bd15-4652-bfcfa326ab28.png)

しかし、一時的に円記号とバックスラッシュの区別を付けたい場合の緊急避難程度には使えるのではないでしょうか。

常時区別が必要で半角カナとの共存も必要という方は、お好みのフォントをご自身の責任で導入していただくか。
ただし、「[All About ACS: IBM i Access Client Solutions 5250で画面レイアウトが崩れる](
[https://qiita.com/6onoda/items/fd8c42ec3088c4ef105d)」に書いたように、フォントによっては5250のレイアウトが崩れる、文字が重なるなどが発生します。
このレイアウトの崩れはACS側では対応できないと言われてしまっています。

いいフォントをご存知の方はコメントを残していただければと思います。

***
2020-04-24 作成
2020-04-25 中国語フォントでは半角カナが表示できないことを記載
2021-02-26 「[IBM i Access Client Solutions 1.1.8.4 以降の 5250 で円が期待通りに入力できない](https://qiita.com/6onoda/items/7633f5811cb656e60dee)」へのリンクを記載
2021-10-25 [IBM i Access Client Solutions 5250で使える円記号とバックスラッシュの区別がつく日本語等倍フォント](https://qiita.com/6onoda/items/02e8e0c1aa8168bf2c83)」の情報を追記

***
「All About ACS」では IBM i に対する新しいクライアント「IBM i Access Client Solutions」の情報をいろいろ提供していきます。
[記事一覧はこちら](http://qiita.com/6onoda/items/2dc925586d8d3b8644f2)で確認いたけます。

許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。
***