Hatena::ブログ(Diary)

Wisteria::Diary RSSフィード Twitter

2017/11/11

[] Phase 25e

NISSE のファームウェア側でワンショットモディファイヤを処理するバージョン。

f:id:mobitan:20171111183335p:image

f:id:mobitan:20171111183340p:image

  • 上がキーボード単体、下がのどかを通したあとの仮想キー。見てのとおり、のどかの仕事は非常に少ない。
  • ファームウェア v0.22 で Fn+[ 6 ] = [F6] のようなマッピングをすると Fn+[F6] と見なされて NISSE のモード切り替えが行われてしまう。これを回避するため、Fn 面にファンクションキーを含む割り当てをしないようにした。
  • ファームウェアでは Alt+Tab のエミュレーションができないので Alt+Esc とした。
  • 記号キーの [-_] と [/?] を入れ替えた。

ダウンロード

2017/10/22

[][] エスリル NISSE ファームウェア改造ガイド (5)

エスリル ニューキーボード − NISSE のファームウェアを自分用に改造するメモ。

7. Fn キーをワンショットモディファイヤ化する(続)

NISSE の Fn キーをワンショットモディファイヤ化して、単独で押して放したときは別のキーとして働くようにしたい。具体的には、[左Fn] の単打を [F14] に、[右Fn] の単打を [F13] にしたい。…という話を開発者の岡坂さんに提案したところ、Bluetooth 版の開発に合わせて実装してくださった。というわけで早速(14か月経った今日)この変更を取り込んでみた。Fn 面のマッピングPhase 25c をベースとして若干変更してある。

実は前回の記事で書いたとおり、ワンショットモディファイヤをドライバ側で(のどかを使って)実現することはできているのだが、あの実装には問題があった。たとえば Fn+[ J ] を [←] に、[Fn] の単打を [英数] にマッピングしたとする。このとき、[Fn] を押しながら [ J ] を押したら [←] が入力されてほしい。一方、[ J ] を押しながら(放す前に) [Fn] を押したら [英数] が入力されてほしい。前回の実装では後者の場合にも [←] が入力されてしまい、文章入力中に文字キーと Fn キーがロールオーバーすると意図しない挙動が発生してしばしば混乱した。

今回ワンショットモディファイヤをキーボード側で実装したことでこの問題が解決することを期待していたのだが……、試してみた結果、今回の実装では解決しなかった。ソースを読むと確かに、キーが押された順番を判定するロジックは入っていないようだ。うーむ、ならばいっそ、キーボード側では Fn キーをモディファイヤではない普通のキーにしちゃって、完全にドライバ側だけでモディファイヤ化する作戦の方がスッキリしそうだなぁ…。

11/11 追記

問題を明確にするためにタイミングチャートを描いてみた。「HHKB ProJP+のどか」が理想の挙動、「NISSE v0.19-mobitan+のどか」が前回の実装、「NISSE v0.21 CXモード」が今回の実装だ(v0.22 も同じ挙動)。NISSE は [ J ] を押しながら(放す前に) [Fn] を押したら [←] が入力されてしまうことがわかる。

f:id:mobitan:20171111160543p:image

11/12追記

開発者の岡坂さんに報告したところ、「NISSEのCXモードの実装については、現在の動作が弊社の意図どおりの動作となっております」とのご回答をいただけた。なるほど。

2016/05/24

[] 日本人名にマッチする正規表現

たまに必要になるけど、そのつど書くの面倒なので。

^([kstnhmrgzdbp]?([aiueo]|y[auo])|w[ao]|(sh|ch|j)[aiuo]|(ts|f)u)((?<=o)h|([ksthmrgzdbp]|n['-]?|m[mbp]|kk|ss|tt|gg|zz|dd|bb|pp)?([aiueo]|y[auo])|w[ao]|(s?sh|t?ch|j?j)[aiuo]|(t?ts|f)u|n)* ([kstnhmrgzdbp]?([aiueo]|y[auo])|w[ao]|(sh|ch|j)[aiuo]|(ts|f)u)((?<=o)h|([ksthmrgzdbp]|n['-]?|m[mbp]|kk|ss|tt|gg|zz|dd|bb|pp)?([aiueo]|y[auo])|w[ao]|(s?sh|t?ch|j?j)[aiuo]|(t?ts|f)u|n)*

2016/03/11

[] Phase 25c

その後もいろいろ試行錯誤した結果、NISSE はこの配列に落ち着いた。

f:id:mobitan:20160312000412p:image

  • 内側3個ずつ計6個の親指キーの役割は結局、ほぼ左右対称になった。左右の [Space] は両方とも単独のスペースキーで、日本語入力中は変換キーになる。左右の [Fn/Mod1] は単打でそれぞれ [英数] [かな] となり、日本語入力中に打てば確定操作とモード変更を同時に行う。
  • 左手親指に [BS] を置いていない。15年来の慣習を破った形だ。[Space] か [Fn/Mod1] の位置に [BS] を置ければそれに越したことはないのだが、この2キーは使用頻度上どうしても [Space] と [Fn/Mod1] に割り当てざるをえず、その外側に [BS] が追いやられてしまう。すると、そこまで親指を動かすよりは Fn+[ S ] の方が打ちやすいということになり、左親指に [BS] がなくてもさほど困らないということが分かった。むしろ、単独の [BS], [Enter], [Del] をすべて右手に配置したことで、左手の Fn+[ S ]=[BS], Fn+[ D ]=[Enter], Fn+[ F ]=[Del] と合わせ、どちらの手でも [BS], [Enter], [Del] を打てるようになったことのメリットが大きい。
  • 記号キーの ['"] と [\|] をこっそり入れ替えた。正規表現を手書きする(「\」を多用する)より英語口語文を書く(「'」を多用する)ことが増えたので。

2016/02/01

[] Phase 25a for Keyboardio

4月発送予定(ほんまかいな)の Keyboardioマッピング案もついでに描いてみた。

f:id:mobitan:20160201043032p:image

  • 親指の付け根に Fn キーが独立しているとはいえ、それを含めて64キーってのはさすがにキー数の限界を下方突破してる。Alt キーを左右に置けないどころか、独立した Ctrl キーを置くことすらままならない状況だ。どうすんだこれ…

こうなったらもう、数字キーを Mod2 に追い出してしまおうか。この方がまだ健康で文化的なキー割り当てができる気がするぞ。

f:id:mobitan:20160202040130p:image

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 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |