Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |

2005-06-24(Fri)

今日は何の日?

6月24日は全世界的にUFOの日……、いえ新ザウルスの発売日。

てなわけで、SL-C3100レビューがちらほらと出始めていますね。やはりアプリフラッシュに移動させて起動とかが速くなったみたいですなぁ。ちょと羨ましかったりして(笑) いやこれくらいの違いでは買い換えてはいけない、我慢がまん。。。

ビュースタイル - ペンを使わずに閲覧

ビュースタイルでの使用時にペンを使用しないでアプリの操作や情報の閲覧ができないか実験してみました。

ビュースタイルで使用できるキーは、[OK][Cancel]とシャトルキーによる[Up][Down]だけです。これでいろいろな機能を実現させるにはどうしたらよいでしょうか? 思いつくのはKeyHelperのメニューランチャーを呼び出して項目を選択する方法です。そこで[Cancel]でメニューを呼び出すようにしてみました(ただし欠点あり) 設定にはKeyHelperとInputHelperを使用します。

今回はNetFrontで実験しましたが、どのアプリでも可能なはずです。

keyheloer.xmlの設定

まずkeyhelper.confで[Cancel]のみの1キーでランチャーが起動する[Launch2_app]セクションが使用できるようにします。

<extensions>

	<define key="All" kind="launch2"/>

</extensions>

次にメニューランチャーを表示させる為の仮のキーアサインを決めます。ここでは通常使用しないキーの組合せを選択する必要があります。今回は[Shift]+[Ctrl]+[A]とし、keyhelper.conf上のセクション名は[Menu50]としました。

<extensions>

	<define key="A" kind="menu50">
		<modifier Shift="On"/>
		<modifier Control="On"/>
	</define>

</extensions>

複数のアプリでそれぞれ異なるメニューランチャーを表示させたい場合は、上の"A"を"B","C"……のように、"menu50"の部分を"menu51","menu52"……の様に割り当てていけば良いと思います。

keyhelper.xmlを変更した場合はリロードする必要があります。

$ khctl reload


keyhelper.confの設定

NetFront使用時に[Cancel]でメニューランチャー[Menu50]を表示させるため、ローレベルキーイベントで[Shift]+[Ctrl]+[A]を押すように設定する。

[Launch2_netfront3]
Escape = @qcop(TAB)QPE/InputHelper key(QString) "click A+CTRL+SHIFT 0 1"

実際に表示させるメニューランチャー[Menu50]の項目

[Menu50]
01_NextPage = @qcop(TAB)QPE/InputHelper key(QString) "click Right"
02_PrevPage = @qcop(TAB)QPE/InputHelper key(QString) "click Left"
03_Cancel = @qcop(TAB)QPE/InputHelper key(QString) "click Escape"
04_Home = @qcop(TAB)QPE/InputHelper key(QString) "click F12"
05_Task = @qcop(TAB)QPE/InputHelper key(QString) "click F12+SHIFT 0 1"
06_Menu = @qcop(TAB)QPE/InputHelper key(QString) "click F11"

ここでは必要最小限と思われる項目を設定してみました。

  • Next(Prev)Page:次(前)画面表示、NetFrontブラウザ設定の基本タブでカーソルキーを“リンク選択(スクロール)”を選択、“左右キーを戻る/進むに割り当てる”にチェック有りが前提の設定です。
  • Cancel:[Cancel]をメニューランチャー表示に割り当てたので、本来のCancelを行う。
  • Home:ホーム画面を表示、他のアプリを起動するときに使用。
  • Task:複数アプリ起動時にTaskSelectorを表示させる。ここでは起動キーを[Shift]+[Menu](F12)でTaskSelector表示にしているので、これをローレベルキーイベントで実現している。
  • Menu:“ファイル”メニューを表示、ブックマークはここから選択。


実際に操作してみます。

  • ホーム画面からシャトルキーでNetFrontを選択、[OK]で起動
  • ネットワークに接続しますか”と訊かれるのでシャトルキーで“はい”を選択、[OK]
  • 接続したら“接続中”のダイアログを[Cancel]→メニューから“Cancel”で消す。
  • [Cancel]→メニューから“Menu”選択して[OK]、さらに“ブックマーク”選択し[OK]で好きなページを開く

といった操作手順になります。

もっと実用度を上げるにはタブ切替の操作などもメニューに追加する必要があると思います。とりあえず試した感じでは思っていたよりも操作性は良いと感じました。ただしSL-C3000は図体がでかいので手の大きさによっては物理的に操作しにくいというのはありますね(^^; SL-C860以前の機種だともっと操作し易いんだろうなぁ。



最後に大きな欠点として、[Cansel]をメニュランチャー起動に割り当てているのでインプットスタイル使用時も当然メニューランチャーが表示します。この辺はconfファイルを2つ用意して適当タイミングで切り替えるしかないですね。

$ khctl config conffile(.conf無し)

インプットスタイルとビュースタイルの切り替わりを検出できる方法があれば、そのタイミングで自動で切替できそうな気がします。

(追記)10月15日の日記にて切替検出を記述しました。



参考サイト

続・自動で配置させる

Ruby/Qte勉強 その8

QHBoxやQVBoxを使用してもう少し複雑に配置をさせる方法。

昨日のスクリプトで使用したテキストボックスの集合h1とv1を更に縦に並べてみる。

v =  QVBox.new(self)
setCentralWidget(v)     #これがないと上手くいかない
   h1 =  QHBox.new(v)   #カッコ内がselfでなくv
   v1 =  QVBox.new(v)   #  同上

このように組み合わせていけば、複雑な配置もできる(かもしれない)

#!/usr/bin/env ruby

require "qte"
require "qpe"
include Qte
include Qpe


class SampleWindow < QMainWindow
   def initialize()
      super()
      setCaption(tr("サンプル"))

      v = QVBox.new(self)
      setCentralWidget(v)     #これがないと上手くいかない
         h1 =  QHBox.new(v)   #カッコ内がselfでなくv
            @ebox1 = QMultiLineEdit.new(h1)
            @ebox2 = QMultiLineEdit.new(h1)
            @ebox3 = QMultiLineEdit.new(h1)
         v1 =  QVBox.new(v)   #カッコ内がselfでなくv
            @ebox4 = QMultiLineEdit.new(v1)
            @ebox5 = QMultiLineEdit.new(v1)
            @ebox6 = QMultiLineEdit.new(v1)

      @ebox1.setText(tr("テキストボックス1"))
      @ebox2.setText(tr("テキストボックス2"))
      @ebox3.setText(tr("テキストボックス3"))
      @ebox4.setText(tr("テキストボックス4"))
      @ebox5.setText(tr("テキストボックス5"))
      @ebox6.setText(tr("テキストボックス6"))
   end
end

$defaultCodec = QTextCodec.codecForName("utf8")
app = QPEApplication.new([$0]+ARGV)
app.setDefaultCodec($defaultCodec)
QApplication.setFont(QFont.new("lcfont",18))
app.showMainWidget(SampleWindow.new)
app.exec