ダイアクリティカル付きアルファベットを入力するためのサクラエディタ用マクロ
サクラエディタで「ダイアクリティカルマーク(発音区別符号)」の付いたアルファベットを入力するための、補助マクロを作成してみました。フランス語、ドイツ語、スペイン語などの入力にお役立てください。
マクロを実行すると、直前の文字をダイアクリティカル付きの文字に置き換えます。
文字を選択した状態でマクロを実行した場合は、選択中の文字をダイアクリティカル付きの文字に置き換えます。
右クリックメニューに登録しておく想定ですが、必要に応じてショートカットキーを割り当ててください。未割り当ての組み合わせがあまり多くないので、使用頻度の少ないメニューのショートカットキーを解除してから割り当てたほうがよいかもしれません。
動作確認は Windows11 + サクラエディタ 2.4.2.6296 で行いました。
エスツェット ß の入力はこの次の記事で取り上げます。
注意
使用するフォントによって、一部の文字が表示できないことがあります。
「MS ゴシック」「MS 明朝」等のフォントで H + ウムラウト や E + セディーユ など一部の組み合わせが表示に失敗します。その場合は表示フォントを「メイリオ」に変えてお試しください。
登録方法
- この記事の末尾にある「アクサングラーブ.jse」「アクサンテギュ.jse」「ウムラウト.jse」「サーカムフレックス.jse」「セディーユ.jse」「チルダ.jse」を自分のPCに保存します。文字コードはUTF-8を指定してください。
- サクラエディタのメニューから「設定」-「共通設定...」を実行、共通設定ダイアログで「マクロ」タブを開きます。
- 空いている番号のところにマクロを登録します。どの番号にどのマクロを登録してもOKです。マクロの名称(任意に設定可能)と1.で保存したファイル名を入力して、「設定」ボタンで確定します。
- 引き続き、今登録したマクロを右クリックメニューに登録します。共通設定ダイアログで「カスタムメニュー」タブを選択します。
- 3.で登録したマクロは種別=外部マクロで選択できます。左側のリストからマクロを選択して、「→(A)」ボタンで右クリックメニューに追加します。
必要に応じて「↑(U)」「↓(O)」で順番を入れ替えます。
ソース
アクサングラーブ.jse
//
// サクラエディタ用マクロ
// 選択文字列にアクサングラーブ Ààを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%A4%E3%83%B4%E3%83%BB%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%B3%E3%83%88
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_AccentGrave(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_AccentGrave(s1) {
var s2 = s1;
s2 = s2.replace(/A/g, '\u00C0').replace(/a/g, '\u00E0'); //Àà
s2 = s2.replace(/E/g, '\u00C8').replace(/e/g, '\u00E8'); //Èè
s2 = s2.replace(/I/g, '\u00CC').replace(/i/g, '\u00EC'); //Ìì
s2 = s2.replace(/N/g, '\u01F8').replace(/n/g, '\u01F9'); //Ǹǹ
s2 = s2.replace(/O/g, '\u00D2').replace(/o/g, '\u00F2'); //Òò
s2 = s2.replace(/U/g, '\u00D9').replace(/u/g, '\u00F9'); //Ùù
s2 = s2.replace(/W/g, '\u1E80').replace(/w/g, '\u1E81'); //Ẁẁ
s2 = s2.replace(/Y/g, '\u1EF2').replace(/y/g, '\u1EF3'); //Ỳỳ
return s2;
}
アクサンテギュ.jse
//
// サクラエディタ用マクロ
// 選択文字列にアクサンテギュ Ééを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AD%E3%83%A5%E3%83%BC%E3%83%88%E3%83%BB%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%B3%E3%83%88
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_AccentAigu(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_AccentAigu(s1) {
var s2 = s1;
s2 = s2.replace(/A/g, '\u00C1').replace(/a/g, '\u00E1'); //Áá
s2 = s2.replace(/C/g, '\u0106').replace(/c/g, '\u0107'); //Ćć
s2 = s2.replace(/E/g, '\u00C9').replace(/e/g, '\u00E9'); //Éé
s2 = s2.replace(/I/g, '\u00CD').replace(/i/g, '\u00ED'); //Íí
s2 = s2.replace(/L/g, '\u0139').replace(/l/g, '\u013A'); //Ĺĺ
s2 = s2.replace(/M/g, '\u1E3E').replace(/m/g, '\u1E3F'); //Ḿḿ
s2 = s2.replace(/N/g, '\u0143').replace(/n/g, '\u0144'); //Ńń
s2 = s2.replace(/O/g, '\u00D3').replace(/o/g, '\u00F3'); //Óó
s2 = s2.replace(/R/g, '\u0154').replace(/r/g, '\u0155'); //Ŕŕ
s2 = s2.replace(/S/g, '\u015A').replace(/s/g, '\u015B'); //Śś
s2 = s2.replace(/U/g, '\u00DA').replace(/u/g, '\u00FA'); //Úú
s2 = s2.replace(/W/g, '\u1E82').replace(/w/g, '\u1E83'); //Ẃẃ
s2 = s2.replace(/Y/g, '\u00DD').replace(/y/g, '\u00FD'); //Ýý
s2 = s2.replace(/Z/g, '\u0179').replace(/z/g, '\u017A'); //Źź
//以下、フォントによっては表示できないので注意
s2 = s2.replace(/G/g, '\u01F4').replace(/g/g, '\u01F5');
s2 = s2.replace(/K/g, '\u1E30').replace(/k/g, '\u1E31');
s2 = s2.replace(/P/g, '\u1E54').replace(/p/g, '\u1E55');
return s2;
}
ウムラウト.jse
//
// サクラエディタ用マクロ
// 選択文字列にトレマ/ウムラウト Üüを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AC%E3%83%9E
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_Umlaut(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_Umlaut(s1) {
var s2 = s1;
s2 = s2.replace(/A/g, '\u00C4').replace(/a/g, '\u00E4'); //Ää
s2 = s2.replace(/E/g, '\u00CB').replace(/e/g, '\u00EB'); //Ëë
s2 = s2.replace(/I/g, '\u00CF').replace(/i/g, '\u00EF'); //Ïï
s2 = s2.replace(/O/g, '\u00D6').replace(/o/g, '\u00F6'); //Öö
s2 = s2.replace(/U/g, '\u00DC').replace(/u/g, '\u00FC'); //Üü
s2 = s2.replace(/W/g, '\u1E84').replace(/w/g, '\u1E85'); //Ẅẅ
s2 = s2.replace(/X/g, '\u1E8C').replace(/x/g, '\u1E8D'); //Ẍẍ
s2 = s2.replace(/Y/g, '\u0178').replace(/y/g, '\u00FF'); //Ÿÿ
//以下、フォントによっては表示できないので注意
s2 = s2.replace('H', '\u1E26').replace('h', '\u1E27');
return s2;
}
サーカムフレックス.jse
//
// サクラエディタ用マクロ
// 選択文字列にサーカムフレックス Ôôを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%BC%E3%82%AB%E3%83%A0%E3%83%95%E3%83%AC%E3%83%83%E3%82%AF%E3%82%B9
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_Circumflex(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_Circumflex(s1) {
var s2 = s1;
s2 = s2.replace(/A/g, '\u00C2').replace(/a/g, '\u00E2'); //Ââ
s2 = s2.replace(/C/g, '\u0108').replace(/c/g, '\u0109'); //Ĉĉ
s2 = s2.replace(/E/g, '\u00CA').replace(/e/g, '\u00EA'); //Êê
s2 = s2.replace(/G/g, '\u011C').replace(/g/g, '\u011D'); //Ĝĝ
s2 = s2.replace(/H/g, '\u0124').replace(/h/g, '\u0125'); //Ĥĥ
s2 = s2.replace(/I/g, '\u00CE').replace(/i/g, '\u00EE'); //Îî
s2 = s2.replace(/O/g, '\u00D4').replace(/o/g, '\u00F4'); //Ôô
s2 = s2.replace(/S/g, '\u015C').replace(/s/g, '\u015D'); //Ŝŝ
s2 = s2.replace(/U/g, '\u00DB').replace(/u/g, '\u00FB'); //Ûû
s2 = s2.replace(/W/g, '\u0174').replace(/w/g, '\u0175'); //Ŵŵ
s2 = s2.replace(/Y/g, '\u0176').replace(/y/g, '\u0177'); //Ŷŷ
s2 = s2.replace(/Z/g, '\u1E90').replace(/z/g, '\u1E91'); //Ẑẑ
return s2;
}
セディーユ.jse
//
// サクラエディタ用マクロ
// 選択文字列にセディーユ Ççを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%87%E3%82%A3%E3%83%BC%E3%83%A6
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_Cedilla(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_Cedilla(s1) {
var s2 = s1;
s2 = s2.replace(/C/g, '\u00C7').replace(/c/g, '\u00E7'); //Çç
s2 = s2.replace(/H/g, '\u1E28').replace(/h/g, '\u1E29'); //Ḩḩ
s2 = s2.replace(/S/g, '\u015E').replace(/s/g, '\u015F'); //Şş
s2 = s2.replace(/T/g, '\u0162').replace(/t/g, '\u0163'); //Ţţ
//以下、フォントによっては表示できないので注意
s2 = s2.replace(/E/g, '\u0228').replace(/e/g, '\u0229');
return s2;
}
チルダ.jse
//
// サクラエディタ用マクロ
// 選択文字列にチルダ Ññを付与する
// Copyright (C) 2025 stonee
//
// 参考:
// https://ja.wikipedia.org/wiki/%E3%83%81%E3%83%AB%E3%83%80
//
Editor.AddRefUndoBuffer();
AddDia();
Editor.SetUndoBuffer();
function AddDia() {
var isSelected = Editor.IsTextSelected();
if (isSelected == 2) { //矩形選択中は何もしない
return;
} else if (isSelected == 0) { //選択幅 = 0
Editor.Left_Sel(); //直前の1文字を選択
if (Editor.IsTextSelected() == 0) { //今いる位置は文書の先頭
return;
}
}
var s1 = Editor.GetSelectedString(0);
var s2 = AddDia_Tilde(s1);
if (s1 == s2) { //文字列に変化なし
Editor.Right();
return;
}
Editor.InsText(s2); //文字を置き換え
}
function AddDia_Tilde(s1) {
var s2 = s1;
s2 = s2.replace(/A/g, '\u00C3').replace(/a/g, '\u00E3'); //Ãã
s2 = s2.replace(/E/g, '\u1EBC').replace(/e/g, '\u1EBD'); //Ẽẽ
s2 = s2.replace(/I/g, '\u0128').replace(/i/g, '\u0129'); //Ĩĩ
s2 = s2.replace(/N/g, '\u00D1').replace(/n/g, '\u00F1'); //Ññ
s2 = s2.replace(/O/g, '\u00D5').replace(/o/g, '\u00F5'); //Õõ
s2 = s2.replace(/U/g, '\u0168').replace(/u/g, '\u0169'); //Ũũ
s2 = s2.replace(/Y/g, '\u1EF8').replace(/y/g, '\u1EF9'); //Ỹỹ
//以下、フォントによっては表示できないので注意
s2 = s2.replace(/V/g, '\u1E7C').replace(/v/g, '\u1E7D');
return s2;
}


