[N810]NOKIA N810のキーボードカスタマイズ
NOKIA N810が届きました(えっ!?)。
やはりキーボードが固いですね。親指の先でなく、親指の腹で押すようにすると少しいいかなという感じがします。
せっかくのキーボードですが、固い上に必要なものがいろいろありません。
Escこそ液晶横のバックボタンで代用できますが、Tab, Esc, "|", "[", "]", "{", "}", "`"などなど。
一般の人はあんまり使わないでしょうが、NOKIA N810を買うようなアレな人は気になるはず。
カスタマイズの方法を探してみると、色男Mike Rowehl氏のブログのエントリ「Adding Pipe and Tab to the N810 Keyboard」にいろいろと書いてありました。
Mike Rowehl氏は「xmodmap」を使う方法を提案していますが、このエントリに寄せられたtajuma氏のコメントにある、以下のファイルを直接編集する"brute force solution"をまねしてみました。
/usr/share/X11/xkb/symbols/nokia_vndr/rx-44
何はともあれosso-xterm
「osso-xterm」をインストールします。
maemoのDownloadページからインストールできたと思います(後で書きます)。
ここで引っかかる人は居ないですよね。
root権限でシェルを実行する準備
「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44」を編集するにはroot権限が必要ですが、標準状態ではroot権限を取得する方法が無いようです。suしようにも以下のようなエラーが出ます。
su: applet requires root privileges!
Linux Zaurusにおけるアイコン長押しに相当する設定方法があるのでしょうか。
sudoするとパスワードを聞かれますが分からず。
検索してもこれというものを見ないので、どうやらrootのパスワードは公開されていないようですね。
正式には「flasher」を使ってR&Dモードにすることによってroot権限を得るそうですが、それには母艦とのUSB接続が必要です。
N810単体でも「becomeroot」というパッケージをインストールすると、root権限のシェルが実行できるようになります。
N810標準のパッケージ管理ツールは「Application manager」ですが、標準状態で登録されている公式のリポジトリだけでは用が足せません。maemoの世界では、野良リポジトリが負う部分が大きいようです。
「becomeroot」を置いているリポジトリをはじめ代表的なリポジトリは、次なる手順で一網打尽的に登録できます。
- N810のブラウザで「http://gronmayer.com/it」にアクセス
- ページの一番下までスクロール、「Select All Repositories.」をクリック
- 「Install Selected」ボタンをクリック
- リポジトリを一つ追加するごとにダイアログが表示されるので、逐一「OK」をクリック
登録を済ませ、「Application manager」を起動し、「Show installable applications>All」とたどると「becomeroot」が現れるはずです。これをインストールします。
以降、「sudo gainroot」でroot権限のシェルが実行できます。
「easyroot」という同目的に使うと思われるパッケージもありますが、「becomeroot」とは排他利用となります。「easyroot」はまだ使ったことがありません。
「sudo gainroot」なんて気持ち悪いコマンドなど使いたくないので、普通に「su」ないし「sudo」できるようにしたいところです。
このリポジトリ登録方法含め「Hacking the Nokia N810」に全部書いてありますが、passwdでrootのパスワードを変更してもsu/sudoできてません。
とりあえず「sudo gainroot」でroot権限のシェルは実行できるので、この問題は後回しにします。
設定ファイルの編集
ここまで来たら、後は「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44」を編集するだけです。
$ sudo gainroot # cd /usr/share/X11/xkb/symbols/nokia_vndr # cp rx-44 rx-44.org # vi rx-44
編集後のファイルをアップしておきます。
「Version: 1.2007.42-19」のものです。バージョンが違う場合は、そのまま使わない方がいいかと思います。
オリジナルはこちら。
編集したのは以下の部分です。
key <AB07> { [ m, M, bar, bar ] };
key <AB08> { [ comma, less, bracketleft, braceleft ] };
key <AB09> { [ period, greater, bracketright, braceright ] };
key <BKSP> { [ BackSpace, BackSpace, Escape, BackSpace ] };
key <SPCE> { [ space, space, Tab, space ] };
key <AC10> { [ semicolon, colon, grave, grave ] };
key <COMP> { [ Control_L, Control_L, Control_L, Multi_key ] };
modifier_map Control { Control_L, Control_R };
オリジナルのファイルのバックアップを取っていなかったので、持っている方がいらしたら都合していただけないでしょうか(笑)。534さんありがとうございました。
編集した後に、以下も実行しておきます。
元ブログのコメントに書いてあるのは「-set」となっていてエラーが出るので注意してください。
gconftool-2 --set -t string "/apps/osso/keybindings/global/osso-global-search" ""
この操作で、Ctrl+Eで検索のダイアログが出なくなるようになります。
これをやっておかないと、例えばxtermを使っている際にCtrl+Eで行末に飛ぼうと思うと検索のダイアログが出てしまうなどという、いただけない状況に舌打ちすることになります。
設定後の効能
設定後、control panel のText input settingsを起動してOKを押すか(Tezさん情報)、電源ボタンを押し「Switch off!」で電源を切り、再起動すると以下のようなキーないしキーコンボで当該文字が入力できるようになっているはずです。
Chr -> Ctrl(Ctrlを左右二つにしたわけです)
Fn + Space → Tab
Fn + BS → Esc
Fn + m → "|"(ユーロをつぶします)
Fn + ; → "`"(ポンドをつぶします)
Fn + , → "["
Fn + . → "]"
Shift + Fn + , -> "{"(Shiftを押してからFn+,)
Shift + Fn + . -> "}"(Shiftを押してからFn+.)
カーリーブレースを割り当てた「Shiftを押してからFn+〜」というのは、Shiftが先でないとダメなので、親指でヒールアンドトゥーをするがごとくに操作をします。
親指タイピングを快適にするため、同時押しでなく、Shift、Fn、Ctrlなどのスペシャルキーを押してから次のキー、という操作ができるよう「sticky toggle latch」などという単語でググってますが、これという情報に当たらないですね。
できるようになる方法をご存知の方がいらしたらぜひ教えてください。
2008.1.24追記:「latchToLock LatchMods setxkbmap」などでググるとどうもそれらしき設定が……。
http://www.charvolant.org/~doug/xkb/
その他設定
標準のシェルである「ash」はショボいし挙動不審なので、「bash3」をインストールしました。
/etc/passwdを編集し、ログインシェルをbashにしました。
user:!:29999:29999::/home/user/:/bin/bash
また、busybox版で不満が残る「vi」は、「vim」で置換しました。
~/.profileに以下のように書いておきました。
alias vi=vim
このvim、UTF-8に対応していて日本語が扱えます。このエントリの一部もN810上のvimで書きました。
« [iPod touch]Mac OS XとiPod touch間で「Touchmods SIP-VoIP」を使って音声チャット! | Main | [N810]NOKIA N810上のEmacsでクリップボードを扱う »


Comments
Emacs(ぼそっ)。
Posted by: maru | 2008.01.20 at 01:39 AM
某所の534です。
とても為になりました。ありがとう!!
http://webtron.org/up/img/306.txt ←オリジナルです。
Posted by: 534 | 2008.01.20 at 03:48 AM
>>maruさん
こないだは楽しかったです。
お時間取っていただいてありがとうございました。
Emacsは2ちゃんでdebian portsのarmel版を入れる手を教えてもらって動きました。lsがBusyBox版なので、やはりdired-modeで問題が出ました。
(setq dired-use-ls-dired nil)
でしのげるということを教えてもらいました。maruさんのパッケージでも対策してあるっておっしゃってましたね。
http://pc11.2ch.net/test/read.cgi/mobile/1192809113/501-
試したのはemacs22-nox版です。
でも、依存関係で問題が出ているような感じです。
「apt-get -f install」すると、削除されてしまいます。
maemoにもありますが、実行ファイルのみある状態です。
https://garage.maemo.org/projects/maemacs
platform independentなファイルは別から取ってきて、こっちを使った方がいいかもしれませんね。まだ試していませんが。
>>534さん
かように、持ちつ持たれつです。お役に立てたのであれば幸いです。
オリジナルファイルありがとうございました。
ページに貼っておきました。
Posted by: moyashi | 2008.01.20 at 06:58 AM
キーボードカスタマイズ参考になりました。
私は以下のようにしてChrを漢字変換のトグルキーとして使っています(<>は本当は半角)。ご参考まで。
key <COMP> {
type="PC_SYSRQ",
symbols[Group1]= [Zenkaku_Hankaku, Kanji ]};
なお、わざわざ再起動しなくてもcontrol panel のText input settingsを起動してOKを押すだけで変更が反映されるはずです。
Posted by: Tez | 2008.01.21 at 11:03 PM
どうもありがとうございます。
Text input settingsの操作だけで反映されるんですね。
ブログに反映しておきます。
xmodmapも試してみましたが、一部うまく動かなかったのでrx-44を直接いじる方に戻りました。
僕も偶然昨日Zenkaku_HankakuをCtlに割り当てる設定を試して、これはいいかも……と思ったのですが、やはりスペシャルキーのロックがかからない現状ではCtlが二つ無いと不便だなあということで、Shift+Spaceにしました(Ctrl+SpaceはEmacsで使うため)。
左のスペシャルキー使う習慣が付いているので、右左の使い分けをしなければならないのが辛いです。
ロックがかかりさえすれば、右のスペシャルキーをつぶして、Zenkaku_HankakuかEsc、もしくはTabを割り当てたいところなんですけどね。
maemo-cjkを入れる前はFn、Shiftのロックが機能するだけに、何とも歯がゆいです。
maemo-cjkの進化に期待、といったところでしょうか。
Posted by: moyashi | 2008.01.22 at 12:37 AM
うーん、ちょっと欲しくなったなあ。
4万ぐらいだったら買いたいけど、さすがにそこまで安くなってないですよね?
emacs22-noX 版は ncurses をダイナミックリンクにしているので、依存関係といえば、そのあたりが問題になりそう。作り直してもいいのですが、N810 specific なやつとなると、Emacs のクロスコンパイルは、一部で実機ダンプが必要になるので、実機がないと作れないしなぁ。
# 今度実機を触らせてくださいね。^^;
# 暇なときにクロスコンパイルの環境作っておこうっと。
Posted by: maru | 2008.01.22 at 11:45 AM
ぜひ、お見せしたいです。
本家Emacsがまあまあ使えるキーボード付き端末としては世界最小でしょうし。動いているのを見ればmaruさんも……。
しかし4万では今は無理ですね。
Vis-aVis: ¥58,800(税/送込)
http://www.visavis.jp/shop/WebObjects/vv.woa/wa/dpp/758478013854/
eXpansys Japan ¥51,185
http://www.expansys.jp/p.aspx?i=158521
pocketgames ¥58,800(税/送込)
http://pocketgames.jp/modules.php?op=modload&name=Shop&file=index&req=viewarticle&artid=697
ヤフオクの業者は¥93,500(税込/送別)って感じです。
どっちか選べ! と言われたら躊躇無くZaurusを取ります。
それは分かっていたんですが、理由は後付けで、という感じですね。
美点として挙げられるのは三つです。大きく、「外でも見える」液晶と、本体の薄さ、128MBのRAM。GekkoベースのブラウザとEmacsを、スワップONにせず同時に使えます。
残念なのは、やはりCFスロットが無いことです。求むるべくもありませんが、これさえあればと思わずにはいられません……。
あとはキーボード。CLIEのキーボードより断然いいですけど、せめてもう少しタッチが軽くならなかったものかと。
本質的な欠点ではないですが、UTF-8オンリーなosso-xtermではSKKの使用に問題が出ていて困ってます。
今はmaemo-cjk同梱のSCIM+Anthyで入力していますが、SKKが恋しいです。
とりあえず単純にosso-xtermからosso-xtermを-cjk_widthを付けて起動してみましたが、正常に起動してません。
osso-xtermがxtermベースならば-cjk_widthを有効にする方法があるかもしれませんが、自分にそこまでできるか……。
mltermのようなエンコードを選べるターミナルが欲しいところですね。
依存関係の問題については、N810に入っているライブラリが、sidから持ってきたemscs22-noXが要求するライブラリのバージョンより古いことに起因しているようです。--unpackで無理矢理入れているので仕方がないです。一度emacsを--unpackで入れると、apt-get -f installで依存関係の修復をしないと(すなわちEmacsを削除しないと)apt-getが使えなくなってしまいます。なんか強制的に使えるようにするオプションがあるかと思いますが。
apt-get install tar
割愛
The following packages have unmet dependencies:
割愛
emacs22-nox: Depends: libc6 (>= 2.7-1) but 2.5.0-1osso7 is to be installed
割愛
Application managerという標準のパッケージ管理ツールからgcc3.4とlibc6 devをインストールできて、すぐセルフコンパイルできます。nkfをセルフコンパイルしてみました。
起動ボリュームである256MBのFlashはjffs2ですが、内蔵の2GB Flashがvfatで、そこからはスクリプト含む実行ファイルの実行すらできないなど、実質データ専用の領域になっていて不便です。ゴリゴリやるには内蔵の2GBをext2などにフォーマットし直し、なおかつそこから起動するような環境を作らないとダメだなぁと思っているところです。N800はいろんなメディアからBOOT MENU経由で起動できる作りになっているので、N810でもそういうことはできると思います。
Posted by: moyashi | 2008.01.22 at 09:05 PM