Генерація символів, які відсутні на стандартній клавіатурі

На цій сторінці описано спосіб створення довільних символів з використанням механізму макросів у програмах Notepad++ і OpenOffice.

UTF-8
Після довгих пошуків ще простою, але функціонально достатньою програмою для обробки текстових файлів, я зупинився на Notepad++ (http://notepad-plus.sourceforge.net/). Ця програма має деякі можливості для розширення функціональності, у тому числі за допомогою макросів. Для тих, хто пише тексти, що містять символи різних кодувань, може бути важливою і можливість створення текстових файлів у форматі UTF-8 або Unicode-16. Такий файл, залишаючись суто текстовим, тобто не містить елементів форматування (крім стандартних: абзац та табулятор), може одночасно використовувати символи різних кодових сторінок, наприклад, кирилицю та умлаути. Причому й ті й ті правильно відображатимуться.

Макроси створюються за допомогою команд у меню «Macro». Процес запису макросу має інтуїтивний характер. Ім'я макросу і факультативно комбінація «гарячих» клавіш відображаються в нижній частині списку команд меню.

Макроси записуються у файл "shortcuts.xml", який можна відредагувати вручну. Структуру макросу найкраще пояснити з прикладу.

Макрос для вставки знака параграфа (номери рядків додані тут):

У рядку (1) можна/потрібно вказати ім'я макросу ( name="" ), як воно буде відображатися в меню, і навіть активувати клавіші, які у комбінації: Ctrl, Alt, Shift. Key="" містить номер знакової клавіші, яка використовується для виклику макросу. При Key="0" комбінація "гарячих" клавіш не призначається і вибір цієї команди може проводитись виключно через меню.

Допустимі номери в Key="" (як мінімум частково) збігаються з десятковими номерами символівв ASCII. Так, номери 48..57 відповідають клавішам з цифрами 0..9; 65..90 – літер A..Z. Вибрана комбінація, однак, не буде активована, якщо така комбінація вже використовується самою програмою. Наприклад, якщо комбінація Ctrl+P закріплена для позиції меню Print, то вставити знак параграфа з її допомогою буде неможливим. Перепризначення «гарячих» клавіш можна зробити в Settings-> Shortcut Mapper. ».

У рядку (2) нас цікавить код символу, що міститься в sParam="§" . В даному випадку це «A7» (шістнадцяткове) або «167» (десяткове), що відповідає кодуванню ISO 8859-1 і Windows знаку параграфа «§». Таким чином, можна вставляти символи з номерами 0..255 (00..FF). Однак, значення символів з номерами 128..255 може залежати від вибраної кодової сторінки; для знака параграфа та деяких інших, це, однак, у більшості випадків значення не має, а ось для кирилиці чи умлаутів зовсім навпаки.

генерація
Notepad++ дозволяє вибирати між різними способами кодування, наприклад, ANSI та UTF-8. ANSI/Windows – класичне кодування з кодовими сторінками, кожен символ кодується одним байтом. UTF-8 використовує в залежності від символу від 1 до 4 байт. ANSI цілком достатньо для відображення символів кирилиці на комп'ютері з українською версією Windows або умлаутів – на комп'ютері з німецькою версією.

Для того, щоб відображати умлаути з української ОС (без додаткового переналаштування) або навпаки, а також для одночасного відображення символів різних алфавітів, необхідно багатобайтове кодування, тобто вставка декількох байт замість одного. У системі UTF-8 символи з номерами 0.127 залишаються однобайтовими, їх коди збігаються з кодами ASCII. Символи, які у ANSI виявляються у другій половині (128..255), кодуються двома байтами.Сюди потрапляє кирилиця та специфічні символи національних європейських алфавітів (німецька, французька, іспанська тощо). Докладніше про UTF-8 можна переглянути, наприклад: http://ua.wikipedia.org/wiki/UTF-8 (рекомендуються також статті на цю тему іншими мовами).

Наприклад, ми хочемо генерувати за допомогою комбінації Alt+C знак французького алфавіту "ç" (ц седиль рядкова). У рядку (1) ми вказуємо відображене ім'я макросу, ставимо Alt="yes" і номер клавіші Key="67" . Не забуваймо відключити комбінацію Alt+C, якщо вона вже використовується програмою. Далі ми шукаємо за таблицями опис потрібного знака та знаходимо наступне: