[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2955] Re: 親指シフトキー



  こんにちは、川合です。


I.Tak. さんは 2002/01/18 14:07:51 の「[OSASK 2951] Re: 親指シフ
トキー」で書きました:

(TOWNSの冷遇)
> そう、不安になります(^_^; 心配しすぎも確かにありますが、私には
>セミハイレゾとか、クリッピングとか、そういう過去が……(^^;;;
>386|DOS-extender環境では開発できませんし(ASKAをなんとかしたい)。

  セミハイレゾへの対応が遅れたのは、僕がセミハイレゾを知らなかっ
たからです。・・・これはTOWNSユーザーとしては情けないことなのか
もしれません。すみません。アスキーの赤本に書いてあれば、すぐに対
応したんですが・・・。

  マウスのクリッピングについては、TOWNSを特におろそかにしていた
というわけではありません。AT版も同レベルでした。単に僕の至らな
さです。

  386|DOS-extender環境で開発できないというのはもっともですが、そ
れは単に僕がTOWNSで開発していないからです。いつ必要になるか分か
らないもののために、開発を遅らせてはいけないと思ったので・・・。
だってPC-9801のDOS上や、MacOS上で開発したいと思っている人もいる
かもしれませんが、それを全部僕が解決しなければいけないとしたら、
きりがないじゃないですかあ〜(笑)。

  それとこんな言い訳が許されるとは思っていませんが、ASKAの処理系
を作ったのは僕じゃないです。ASKAを平凡なC言語に移植すれば、他の
環境でも使えるようになる道が開けるのではないかと思いますが・・・
。

>>>アプリはどうでもいいのですが、左右の親指シフトキーが区別されません。
>>  いいえ、ちゃんと区別できますよ。
> ええっ。どうやるんですか?是非教えてください。

    lib_definesignal1p0(0, 0x0100, 0x007010f8, window, 16);
    lib_definesignal1p0(0, 0x0100, 0x007020f8, window, 20);

これで、左の親指シフトが16、右が20のシグナルを返します。リピート
には対応していませんし、他のシフトキーとの併用時も無視されます。
・・・これらの点を自由に制御したければ、lib_definesignal1p0()の
拡張設定を一通りマスターしてください(introcのkeytstc0が詳しいで
す)。これはメイクしか拾っていませんが、ブレイクコードを拾うこと
もできます。

  なお、0x00002000のビットの意味については以下を参考にしてくださ
い。上からそれぞれ、第一拡張、第二拡張、第三拡張です。

#define	DEFSIG_EXT1    0x00001000
#define	DEFSIG_EXT2    0x00002000
#define	DEFSIG_EXT3    0x00003000

  第二、第三というのは、第一とは違うキーを示すために使うものです
。たとえば第一拡張の'1'はフルキーの「1」を意味しますが、第二拡張
の'1'はテンキーの「1」を意味するわけです。同じくTOWNSにおいては
第一拡張の0xf8は左親指シフト、第二拡張の0xf8は右親指シフトです。

> 質問しない裏には、極秘裏に開発を進めて驚かせたいというのもあり
>ます。この際ばらしますが、OSASK初の日本語入力は親指で、という野望が
>あるのです。かな入力は親指、漢字はT-CODE。おおっ最速。是非とも
>自分で開発したくなるツールでしょう?

  おお、これは小柳さんのあの漢字入力アプリへのライバルかもしれま
せん。・・・でも小柳さんは別に「最初」を狙っているわけではなさそ
うですが。

  入力の方はいいんですが、「漢字はT-CODE」っていうのはどういうこ
とでしょう?TOWNSのコードってことですか?それはかえって表示処理
が面倒なような・・・。いや、別にいいんですが。

  それに、これはアプリケーションとして作っているんですか?それと
もシステム食い込ませるんですか?システムに食い込ませるのはかまい
ませんが、僕が採用しない可能性が・・・。

  僕が考えているFEPシステムは、アプリケーションとFEPタスクが情報
を交換し合って入力を遂行するものです。つまり現在サポートしている
キー入力とまだサポートしていない文字列入力を概念上から分離し、文
字列が欲しいならそれ相応の手続きで行うというものです。文字列の入
力に際して、メイク・ブレイクなどはどうでもいいことですから。それ
にシグナルでのみやり取りするのはおかしいと思いますし(文字列は非
常に長くなりうるので)。

(同時打鍵のハードウェア監視機能)
> ということは、親指キーボード専用の機能をカーネルが持つのでしょう
>か。かなり先になりますよね?他のキーボードでは役に立ちませんから。
>というより、親指キーボードを持ってない人にも親指を広めるためには
>自前で処理するしかないのです。エミュレーションができない限り。

  もちろんカーネル・・・というか、シェルが親指シフトキーボードに
配慮した設計を採用するということもありえますが、僕はそのことを言
っているのではなくて、たとえばこういうことです。

  あるキーと親指シフトが同時に押されたら、ハードウェアはキーコー
ドを送信する際に、特定のビットで同時打鍵を通知してくれるのです。
今はこのビットを無条件に捨てています。しかしこのビットが立ってい
るのに該当する親指シフトのメイクがまだ来てないなんてこともあるで
しょう。その場合、それを通知するような仮想キーコードを勝手に決め
て、それをシェルやアプリに通知するようにもできるわけです。これの
いいところは、キー入力処理で親指シフトの同時打鍵をアプリやシェル
が見張らなくてよくなることです(必ずシフトコードが先行する)。

  しかし、ご指摘の通り、この方法はTOWNSの親指シフトキーボードで
しか通用しない方法です。もし他のキーボードでも同じ入力方法をやら
せてあげたいということなら、このハードウェア監視機能に頼るべきで
はありません。

  ところで「親指キーボードを持ってない人にも親指を広める」のは、
かなりつらそうです。というのは刻印が違うからですが・・・。秋葉原
などで売っている無地のキーボードを買ってきて書き込んだりすればい
いのかもしれませんが・・・。

> 親指仲間! d(^^

  仲間っていうほどではないですよ。親指シフトキーボードを学校で使
った事があるだけで、持っているわけではありませんから。まあこんな
僕でも仲間に数えてくれるなら嬉しいですがね(笑)。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/