Ubuntu Weekly Recipe

第252回 コンバーチブルPCでUbuntuを使う

この記事を読むのに必要な時間:およそ 6 分

タブレットに変形

CF-AX2は,液晶を360度回転させることで,液晶とキーボードが外側になったタブレット型に変形できます注3⁠。ただの変形なので,Ubuntuもそのまま使用できるのですが,Windows版の挙動や,Windowsキーの位置,サイドのハードウェアキーの位置を考えると,変形時は画面を上下反転して使うことを想定しているようです。

そこでUbuntuでも,画面とタッチスクリーンの座標を反転させてみましょう。

注3
ヒンジ部分はそこそこ固いので,途中で変形を止めて三角形の形で自立させることもできるようです。このような使い方をする場合は画面を反転する必要があります。

画面の回転

画面を回転する方法自体はそれほど難しくありません。システム設定の「ディスプレイ」「回転」「180度」にするだけです。

ただ,後述のタッチ座標の回転と同時に行いたい場合や,何か特定のボタンを押したときに回転させたい場合はスクリプトを使えた方が便利なので,回転するためのコマンドを確認しておきましょう。

180度回転する

$ xrandr --output LVDS1 --rotate inverted

元に戻す

$ xrandr --output LVDS1 --rotate normal

ここでLVDS1は,ノートPC本体のディスプレイです。xrandrをオプションなしで実行すれば,VGA1やHDMI1など他のディスプレイ名も表示されるので,他のディスプレイを操作する場合は参考にしてください。

$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1366x768       60.0*+
   1360x768       59.8     60.0
   1024x768       60.0
   800x600        60.3     56.2
   640x480        59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

rotateオプションにinvertedを指定すれば画面を180度反転します。normalで元に戻ります。

タッチ座標の回転

タッチ座標はxinputコマンドで変更します。なお,12.10のX serverには,座標変更後のリリースイベントを誤認識する不具合があるため,12月2日時点のパッケージだとカーソルキーが意図しない場所に移動します注4⁠。

修正パッケージはproposedでテスト中ですので,数日以内に12.10でも解決するはずです。うまく動作しない場合は,xserver-commonパッケージが,⁠2:1.13.0-0ubuntu6.1」にアップデートされるまで待つようにしてください。

xinputを使うには,まずタッチスクリーンのIDを取得します。⁠eGalax Inc. eGalaxTouch EXC7903-02v10」がタッチスクリーンですので,IDは9となります。

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ eGalax Inc. eGalaxTouch EXC7903-02v10     id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ USB HD Webcam                             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Panasonic Laptop Support                  id=13   [slave  keyboard (3)]

座標変換の際は,高校時代に習った行列演算を思い出しましょう。今回はX座標,Y座標ともに反転させるだけなのでいたってシンプルです。

180度回転する

$ xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" -1, 0, 1, 0, -1, 1, 0, 0, 1

元に戻す

$ xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" 1, 0, 0, 0, 1, 0, 0, 0, 1

xinputの座標変換を使えば,マルチディスプレイ環境でタッチパッドの部分領域をそれぞれのディスプレイに割り当てたり,ディスプレイを90度回転させた状態のためのタッチスクリーンの設定を行うことも可能です。

注4
ちなみにこれは,第246回の問題と原因が同じらしいので,この問題に対応したいくやさんのPPAを導入している場合は発生しないと思います。

キーに割り当てる

逐一これらのコマンドを打つのは面倒なので,回転をトグル式のスクリプトにしてしまい,特定のキーを押したらスクリプトが呼ばれるようにしてしまいましょう。

まず次のようなスクリプトをrotate.shという名前で保存しておきます。

#!/bin/bash

OUTPUT=LVDS1

case $(xrandr | grep $OUTPUT | awk '{print $4}') in
    inverted)
        xrandr --output $OUTPUT --rotate normal
        xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" 1, 0, 0, 0, 1, 0, 0, 0, 1
        ;;
    *)
        xrandr --output $OUTPUT --rotate inverted
        xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" -1, 0, 1, 0, -1, 1, 0, 0, 1
        ;;
esac

次にシステム設定の「キーボード」のショートカットタブを開きます。⁠独自のショートカット」でプラスボタンを押し,名前は任意に,コマンドにrotate.shを指定して「適用」ボタンを押してください。

「無効」と表示されているところをクリックしてショートカットにしたいキー入力を押せば設定完了です。次の図では,⁠Ctrl+無変換」に設定しています。

図5 名前を「回転」にして,Ctrl+無変換で回転するように設定

図5 名前を「回転」にして,Ctrl+無変換で回転するように設定

これで「Ctrl+無変換」を押してディスプレイの回転し,タッチスクリーン座標が期待通りの動作をするなら成功です。

Unityのマルチタッチ機能を使う

Unityはマルチタッチ機能にも対応しており,例えば4本指でタップするとDashが開きます。せっかくマルチタッチスクリーンがついているのだから,これを活用しない手はありません。操作方法については公式のドキュメントにも掲載されていますので,ここで紹介しておきましょう。

  • 4本指タップ:Dashを開く
  • 4本指で左右にスワイプ:Launcherが隠れているなら表示する
  • 3本指タップ:ウィンドウの移動やサイズ変更のハンドルを表示する(一定時間後に消える)
  • 3本指でピンチイン,ピンチアウト:ウィンドウを通常サイズ化,最大化する
  • 3本指で押し続けたあとに移動:ウィンドウを移動する
  • 3本指でダブルタップ:一つ前に表示していたウィンドウに切り替える
  • 3本指でタップしたあとに再度押し続けながら移動する:ウィンドウスイッチャーを表示,選択する
  • 上記の状態で指を離す:選択したアイコンのウィンドウを表示
  • 3本指でタップしたあともう一度プレスして指を離す:ウィンドウスイッチャーを表示する

なかなか覚えるのも,使いこなすのも難しいラインナップです。ウィンドウのサイズ変更や移動は便利なので,まずはそのあたりから覚えるのが良いでしょう。

マルチタッチではありませんが,Launcherのアイコンをシングルタップしてウィンドウを切り替える操作などは,慣れてしまうとかなり便利なので,おすすめです。

なお,12.10のUnityはマルチタッチイベントを常に奪ってしまうらしく,ToucheggやGinnといったマルチタッチの設定ツールが使えません注5⁠。これらを使いたい場合は,他のデスクトップ環境に切り替えてください。

注5
このあたりは,Nexus 7のようなタブレット対応が進む13.04になれば,ある程度改善されるかもしれません。

スクリーンキーボードを使う

タブレット型にすると通常のキーボードは使い辛いため,スクリーンキーボード(Onboard)を表示させましょう。システム設定の「ユニバーサルアクセス」からタイピングタブを表示し,⁠タイピング支援」をオンにしてください。

スクリーンキーボードは常にが表示されますので,邪魔な場合は右上の閉じるボタンで非表示にしてしまいましょう。再度表示する場合はインジケーターを使います。

タブレット化時に画面の回転と同時にオン/オフを行いたいなら,次のコマンドをrotate.shに組み込むと良いでしょう。

スクリーンキーボード起動

$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true

スクリーンキーボード終了

$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false

タッチスクリーンを使う場合,右クリックを入力する術がありません。ユニバーサルアクセスの「副ボタンの代替」はタッチ入力には影響しないからです。しかしスクリーンキーボードにはカーソル入力モードがあります。

スクリーンキーボードの右上の閉じるボタンの左下にあるマウスカーソルを押すと,マウスクリックの入力欄が表示されます。上から2つ目が右クリックボタンになりますので,これを押してから右クリックしたい領域を再度タッチすることで,右クリックを入力できます。

図6 スクリーンキーボードを使えばマウス入力もできる

図6 スクリーンキーボードを使えばマウス入力もできる

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。