Tags
Aucun tag

Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-ccocoa誰得qtrubypythonwindowsphpgamebathyscaphegui翻訳comegattwitterframeworkbtronvb.net計画中(planning stage)testdomarduinodirectxpreviewerゲームエンジン

最近の作業部屋活動履歴

2020-11-11
2020-11-01
2020-10-28

最近のWikiの更新 (Recent Changes)

2020-11-11
2020-11-01
2020-10-28
2020-09-23
2020-09-21
2020-09-20

Wikiガイド(Guide)

サイドバー (Side Bar)

2019年03月28日

なんで OASYS なの?

不要なところは改行で削除できたり、独特の書き味を持つ上書き入力モードなど。

対象利用者

主要利用者は高齢者に限りません。あるいは高齢者ではないかもしれません。

【技術情報】 OASYS の挿入モードについて

改定履歴

  • ナスタチウムプロジェクトから記事を移行

概要

OASYS の挿入モードは文字を入力するたびに逐次挿入するのではありません。挿入キーを押すと、文字列の間に空白を挿入してから、空白へ文字列の上書き入力を行い実行キーを押すことで文字列が挿入されます(取消キーを押すと挿入モードを取り消します)。さらに挿入モード時は、カーソルを自由に移動て挿入キーが押された位置以外の編集を行うことができ、挿入モードの入れ子 (OASYS Pocket 3 では最大8階層) も許されています。

さて、これを実装しようとすると管理方法に困ると思います。スタック型 (LIFO) のデータ構造のように見えますが、単に文字列の始点・終点を管理しているようにも見えます。さて、どうしたものか……。

本記事では挿入モードについての実装方法を試行錯誤しながら検証していきます。

背景

このような実装になっている理由として考えられるのは、当時のワープロ専用で使用されていたハードウェアの処理能力が貧弱であったからです。

実装方法

  • スタック →スタックでは挿入範囲外の編集時の実装が煩雑になりますので違います。
  • 相対的位置指定? : 管理が煩雑ですので違います。
  • フラグまたは属性・レイヤーの使用による挿入モード用編集領域の識別 (ステンシルマスクの応用?) : 違います。メモリをかなり消費しますので、当時の環境では実装できません。
  • 内部制御記号の挿入 : 挿入/挿入 : 字句解析のコストがかかりますが、これが自然だと思います。
  • レイヤーの動的切り替え : 当時の環境ではVRAM は一枚または二枚くらいが限度でしたので、違います。

データ構造

上書き入力モード時、挿入キーを押した後の動作が思いつかない。前に書いたのは間違いだな。 なんで難しいのかというと、いまの基準で考えると「変」なんですよね。

  • 入力方法は上書きのまま。
  • 挿入キーを押すと全角空白文字を一行分挿入する。
  • 挿入モードで挿入キーを押すと挿入モードに入る(入れ子)。
  • 挿入キーを押した位置に関係なく挿入や削除も可能(え?)

というような「かなりややこしい」感じです。 おそらく、スタックやリストでは無理で、ツリー構造ではないかなと思うんですが。 再検証は開発再開後ですね。

挿入キーが押されたときの挙動 (OASYS 40AS で確認)

  • 実行、取消、終了キーを使用。
  • 挿入キーが押された直後に実行または終了キーを押すと挿入モードを終了する。
  • 編集可能領域の判定 (まだ文字が入力されていない位置ならばエラーを表示して挿入モードを一つ抜ける)
  • 挿入モード開始時に現在位置から右方向へ一行分の空文字列またはを挿入(一行あたりの最大文字数が40文字ならば、その分の空文字列を挿入)

編集可能領域の判定方法

  • 0x00H (NULL) またはレイヤー番号で判定…だと思います。

参考文献

  • なし

追記 - 再考察 (2020/05/29)

2019年01月16日

環境整備

しばらく開発環境整備について記録を残していく方針です。といっても、一行メモです。  

開発版のキーアサイン

なるべく OASYS Pocket 3 キーアサインを継承したいとは考えていますが、ファンクションキーの再現には無理がある(キーアサインを切り替えたりプログラミングできるゲーミングキーボードなら可能かもしれませんが、そういう特別なハードを要求すると実務家かセミプロしか使わなくなる懸念がある)ので当面は AD401 / 405 を採用します。

ただ、どうしてもというのであれば、妥協案となりますが「機能」 を押したあとにファンクションキーまたは機能のコード番号を入力(コマンド入力型ランチャー)、実行キーを押すことで擬似的なファンクションキーを実装することも検討しています。  この方法ならば手を怪我していても打てますし、 OASYS 以外から移行した方でもすぐ使えるかもしれません。さらに音声認識操作も可能かもしれませんね。

当面の課題定義

当然ですが OASYS 専用機の操作性で文書がきちんと打つことができ、読出、書込ができること 。この段階では罫線、連文節変換、装飾機能は実装しません (ありえたかもしれない富士通版ポメラというか)。