Eggplant Functionalで非英語のキーボードをどのように使用しますか?
英語以外の言語で作業しているユーザーは、Eggplant Functionalにタイプさせたすべての文字がSUTに再現されない場合があります。タイプされる文字とされない文字は、Remote Desktop Protocol(RDP)またはVirtual Network Computing(VNC)経由で接続しているか、または対象のVNCサーバーによって異なります。以下のようにこの問題に対処するためのいくつかの方法があります:
ここで説明したテクニックを組み合わせると最も効果的な場合があるかもしれません。ここで説明されていない状況が見つかった場合は、Eggplantサポートに連絡してください。私たちは喜んで答えを見つけるお手伝いをします。
バージョン16では、Eggplant Functionalは、SUTへのRDP接続で非米国英語のキーボードを使用するサポートを追加しました。詳細はEggplant Functional Support for Non-US English Keyboardsを参照してください。
RealVNC Server
非英語のキーボードのユーザーにとって最も簡単な方法は、RealVNC Serverを使 用してVNC経由で接続することです。RealVNCは、フレンチ、ドイツ語、スウェーデン語などの言語に共通のユニコード文字を含む、TypeText
コマンドを使用して送信するほとんどの文字を自動的に生成します。元のキーボードで入力するために修飾キーが必要な文字(これには一部の言語で"@"記号が含まれる)は、この方法では直接入力できず、以下のTranslate Function()で説明されているワークアラウンドが必要となります。
Translate() Function
RDP接続のみを使用できる場合は、現在、非英語(つまり、非ASCII)文字を入力するためのワークアラウンドを使用する必要があります。SUTに表示するために必要な文字に、タイプしたい文字を置き換えるtranslate function()
を作成しました。以下に示すtranslate()関数の例は、ドイツのキーボードで動作するように設計されています:
ドイツのキーボード向けのTranslate function()の例
function translate myString
put (Ä:>,Ö:":", Ü:"{", Y:"Z", Z:"Y") into utranslations
put keys(utranslations) into utransChars
put ("ß":"-", "?":"_","-":"/") into translations
put keys(translations) into transChars
repeat with each character of myString by reference
if it is in utransChars considering case then
put utranslations.(it) into it
else if it is in transChars considering case then
put translations.(it) into it
end if
end repeat
return myString
end translate
この関数は高度なSenseTalk構文を使用しています。しかし、ドイツのキーボード設定を使用している場合は、スクリプトにプラグインしてそのまま使用すれば動作するはずです。この関数は、次のようにtypeTextコマンドに挿入して使用します:
typetext translate("welche Straße?")
このコールと上記の関数をスクリプトに入れてSUTに対して実行すると、次のようにタイプされるはずです:
welche Straße?
しかし、typeText
コマンドが実際に送信するのは次のような内容です:
welche Stra-e_
テキストは、SUTに送信される前にtranslate function()を通過し、変換された文字列がtypeText
コマンドに返されます。
同様に、もしあなたが以下のように入力すると:
typetext translate("-5")
Eggplant Functionalは以下の内容を送信します:
/5
これにより、SUT上に希望の"-5"が入力されます。
以下は、さらに多くの文字変換が必要なノルウェー語に編集した同じ関数です:
ノルウェーのキーボード向けのTranslate function()の例
function translate myString
put (Å:"{", Æ:>, Ø:":") into utranslations
put keys(utranslations) into utransChars
put ("\"":"@", "&":"^", "'":"\", "(":"<em x-id="3">", ")":"(", "+":"-", "-":"/", "/":"&", "=":")", "?":"_", "\\":"=", å:"[", "|":"`","¤":"$", "§":"~", æ:"'", ø:";","</em>":"|", ":":">", ";":"
put keys(translations) into transChars
repeat with each character of myString by reference
if it is in utransChars considering case then
put utranslations.(it) into it
else if it is in transChars considering case then
put translations.(it) into it
end if
end repeat
return myString
end translate
ノルウェーのtranslate()関数がどのように動作するかのデモです:
typetext translate("Havørna på Håøya er et spektakulært syn")
実際にはこれを送信します:
Hav;rna p[ H[;ya er et spektakul'rt syn
translate()関数はスクリプトコマンドでしか使用できず、ライブタイピングには助けにならず、typeTextコマンドを生成する際に呼び出すことはできません。依然として希望の文字を使用してコマンドを生成することは可能ですが、生成されたコマンドが実行される際に一部の文字が間違ったものをタイプします。生成されたスクリプトを編集して、translate()関数への呼び出しを含める必要があります。
前述のとおり、上記のコードでは"@"記号はタイプされません。多くのキーボードでは、"@"はAltGrと組み合わせた何らかのキーによって生成されます。これはRDP接続を通じてEggplant Functionalでタイプすることはできませんが、RealVNCを使用してVNC接続を通じて"@"記号を直接タイプすることが可能です。以下で説明する解決策を用いれば、translate function()を使用せずに"@"記号や他の任意の文字を送信することも可能で、RDPまたはVNCのいずれを使用している場合でも適用可能です。
Use remoteClipboard
別の選択肢として、あなたがタイプしたいテキストをSUTのクリップボードに入れて、remoteClipboardを使用して値をあなたが望む場所に貼り付けることもできます。以下にその例を示します:
SUTにテキストを配置するためのremoteClipboardの例
Set the remoteClipboard to "someone@somewhere.de"
click "where you want to type"
typeText controlKey, "v" // paste the string
上記の手順を実行する代わりにtypeText
を呼び出すことができるコマンドとしてこのように書くことができます:
click "where you want to type"
pasteText "someone@somewhere.de"
on pasteText string1
set the remoteClipboard to string1
typeText controlKey, "v" // paste the string
end pasteText