Mac OS Xアプリで ー(半角の¥,\,|), ろ(半角の_) のキーを押下しても正しく入力されない

概要: DelphiまたはC++Builderで作成したMac OS XアプリでTEditやTMemoに日本語キーボードから文字を入力する際、ー(半角の¥,\,|), ろ(半角の_)のキーを押下しても正しく入力されず、無効な文字が表示されることがあります。

対象製品 : Delphi, C++Builder

対象バージョン: XE6

DelphiまたはC++Builderで作成したMac OS XアプリでTEditやTMemoに日本語キーボードから文字を入力する際、ー(半角の¥,\,|), ろ(半角の_)のキーを押下しても正しく入力されず、無効な文字が表示されることがあります。

問題を解消するには、メインフォームのOnCreateイベントなどを使用して、特定のキーマッピングを追加するコードを実行してください。

  • Delphiのコード例
procedure TForm1.FormCreate(Sender: TObject);
var
  PlatformKey, VirtualKey: Word;
  KeyKind: TKeyKind;
begin
{$IF defined(MACOS) and NOT defined(IOS)}
  PlatformKey := 93;
  VirtualKey := vkBackslash;
  KeyKind := TKeyKind.Usual;
  RegisterKeyMapping(PlatformKey, VirtualKey, KeyKind);
  PlatformKey := 94;
  VirtualKey := vkMinus;
  KeyKind := TKeyKind.Usual;
  RegisterKeyMapping(PlatformKey, VirtualKey, KeyKind);
{$ENDIF}
end;

  • C++Builderのコード例
void __fastcall TForm1::FormCreate(TObject *Sender)
{
#if defined(__MACH__) && defined(__APPLE__) && !defined(__arm__)
  Word PlatformKey, VirtualKey;
  TKeyKind KeyKind;
  PlatformKey = 93;
  VirtualKey = vkBackslash;
  KeyKind = TKeyKind::Usual;
  RegisterKeyMapping(PlatformKey, VirtualKey, KeyKind);
  PlatformKey = 94;
  VirtualKey = vkMinus;
  KeyKind = TKeyKind::Usual;
  RegisterKeyMapping(PlatformKey, VirtualKey, KeyKind);
#endif
}