人生シーケンスブレイク

シーケンスブレイク(Sequence breaking、シークエンスブレイクとも)とは、テレビゲームにおいて開発が想定している攻略ルートを逸脱し、ショートカットする行為のことである。

Ubuntu, Windows10をUEFIでデュアルブートにした

要件

普通にデュアルブートして利用していたら、ある時を境にUbuntuWindowsも起動せず、Windowsリカバリを試みても復活できない状態になってしまった。 幸いまだ環境構築したばかりだったことと、調べたらUEFIモードでブートした方がよいとのことだったので、再インストールしてみた。

UEFIのメリット

  • 高速なシステム起動/シャットダウン

ぐらいしかなかった。セキュアなブートもあるらしいが、BIOSUEFIブートを選択するとデフォルトでdisableになるし、調べた限りではトラブルの種になるとのことで非推奨だった。

インストール手順

  • BIOS設定で、boot関連の設定から、UEFIモードを選択する
  • Windows10を先にインストールする
  • Ubuntuをインストールしその際にブートローダGRUBを選択する

インストール順を逆にしたらGRUBWindowsが認識されない時があったので、確実に認識されるこの順序にした。

UbuntuUEFIで起動されていることの確認

/sys/firmware/efi/ ディレクトリがあればUEFIで起動されていることらしい。

$ ll /sys/firmware/efi/
Permissions Size User Group Date Modified Name
drwxr-xr-x     - root root  22  4月  0:08 .
drwxr-xr-x     - root root  22  4月  0:08 ..
.r--r--r--  4.1k root root  22  4月  0:53 config_table
drwxr-xr-x     - root root  22  4月  0:08 efivars
drwxr-xr-x     - root root  22  4月  0:10 esrt
.r--r--r--  4.1k root root  22  4月  0:10 fw_platform_size
.r--r--r--  4.1k root root  22  4月  0:53 fw_vendor
.r--r--r--  4.1k root root  22  4月  0:53 runtime
drwxr-xr-x     - root root  22  4月  0:53 runtime-map
.r--------  4.1k root root  22  4月  0:53 systab
drwxr-xr-x     - root root  22  4月  0:53 vars

Windowsによりファイルシステムが破壊されない処置

Windows10の設定で、高速起動とハイバーネート(休止状態)を無効にしておく。

デュアルブート環境でWindowsを触っていたら、1週間も経たない内にUbuntuWindowsも起動できなくなってしまった。 調べてみたところ、他のデュアルブート環境のユーザーでも同様の症状があるらしく、askubuntuではWindowsの高速起動とハイバーネートの無効化が回避策として推奨されていたので、因果関係は不明瞭だが無効にしておくことにした。

その分Windowsの起動が遅くなると思われるが、Windowsはサブなので個人的にはそれで問題ない。

その後

2週間位UEFI環境で利用しているが、今回は大きなトラブルに見舞われていないので恐らく問題なさそう。

参考

HHKBのキーマップ変更ツールはDvorakユーザーには辛い #hhkb

以前 HHKBのキーマップ変更機能が残念だった #hhkb - 人生シーケンスブレイク と書いたけど、購入に至るまでの高揚感とその後の落差でやや感情的な内容だったので、Dvorakユーザーにとっての要点だけ纏めて整理してみた。

f:id:ShineSpark:20200417013926p:plain

Dvorakユーザーの憂鬱と、ハードウェアリマップへの期待

主にソフトウェアリマップで困ることとして、

  • 新しい環境の使い始めにQWERTYになってしまう
  • ホストOSではDvorakなのに、仮想OSでQWERTYになってしまうことがある
    • AWS WorkSpacesとかね
    • iOS Simulatorもか
  • リマップ方法によってはリマップが完全でなく、一部でQWERTYになる
    • 起動直後のログイン画面とか
    • BIOS画面とかセーフティモードとか
  • 人のPCを使う際にQWERTYで困る
    • 設定を変えるわけにもいかないし

ハードウェアリマップならこれらが解決されるのでHHKB HYBRIDにはものすごい期待があった。

それで、購入後、早速キーマップ変更ツールを使ってみた。

デフォルトのキー配列

f:id:ShineSpark:20200417014320p:plain
通常レイヤー

f:id:ShineSpark:20200417014105p:plain
Fnレイヤー

ご存知の通りこうなってますと。

Dvorak配列用にキーマップの変更を試みる

Dvorak配列の Z は右シフトキーの隣。

Z のリマップを試みると、

f:id:ShineSpark:20200417015100p:plain

嫌な予感のするアラートが出て、そのままOKすると、

f:id:ShineSpark:20200417014856p:plain

キーとして長年利用していたキーが として利用できなくなる。

どうすることもできない。
他にFnレイヤーにZキーを割り当てたとしても書き換えられてしまう。

つらい。

この制限についてのアナウンス

公式サイト Happy Hacking Keyboard | HHKB HYBRID | PFU には、

※特別な機能を割り当てられた一部のキーを除く。

としか書いておらず、どのキーのことかどうかが分からない。

HHKBキーマップ変更ツールのヘルプには Q, Z, X キーなどはFnキー押下時のリマップができないよと書いてあるけれども、ツールを起動してHHKB HYBRIDをUSB接続しないとヘルプを閲覧できないので実質購入後でないと分からない。

f:id:ShineSpark:20200417022342p:plain

数万円の出費をしてから気付く。

つらい。

妥協案

ハードウェアリマップが現状つらいので、他のアプローチを取らざるを得ない。

妥協案1. キーの右隣を とする

f:id:ShineSpark:20200417015833p:plain

  • 直感的でなくなる
  • カーソルキーの中で最も利用頻度の高い キーまでの距離が遠くなる
  • 新しいマッピングに慣れる必要がある
  • ソフトウェアリマッピングして利用しているHHKB Classicとカーソルキーの位置が変わってしまう

会社用、自宅用とHHKBを使い分けているので、
ハードウェアリマップできないHHKBとはカーソル配置が変わってしまうことが致命的な為NG

他のキーへの割り当てや、カーソルキー全体をズラすことも考えたけれども、デメリットが多くて辞めた。

妥協案2. ハードウェアリマップを辞めてソフトウェアリマップを使う

ハードウェアリマップによってどの環境でもDvorak配列が利用できると思って買ったDvorakユーザーにとって、ハードウェアリマップできずQWERTYを利用せねばならないのであればHYBRIDを買ったメリットが殆どなくなってしまう。

元々Type-Sを利用していたので、無線になったことぐらいしか恩恵が得られない。
とはいえ、ハードウェアリマップの弊害の方が大きいのでソフトウェアリマップの方がまだデメリットが少ない。

妥協案3. 他のキーボードを使う

結局KINESISキーボードに逆戻りした。

静電容量方式じゃないのが不満だけれども、Dvorak印字モデルが販売されてるぐらいなのでDvorakユーザーにとってとっても使いやすい。

ハードウェアリマップなので接続するだけでどの環境でもDvorakが使える。

PFUへお願い

下記のような対応などで、この問題を解決してくれることを強く希望します。

  • Q,Z,XキーもFnレイヤーの個別リマップができるようにして欲しい

"ペアリング削除"などの操作に使うキーといえど、別に通常レイヤーとFnレイヤーを同じキー配置でなくてもいいのではとユーザーとしては思います。

新型コロナウイルスで大変な時期ではありますが、次回以降のファームウェア更新で改善されることを切に願っております。

Ubuntuでマウスホイールのスクロール速度を上げる

環境

  • Ubuntu 19.10
  • MX Ergo
  • MX Master 3

IMWheel をインストールする

いろいろ調べたら IMWheel で設定するのがセオリーらしいのでこちらをインストールする

$ sudo apt install imwheel

ヘルプを叩いてみた

$ imwheel --help
imwheel 1.0.0pre12 by -=<Long Island Man>=- <jcatki@jcatki.no-ip.org>
imwheel [--auto-repeat|-a delay-rate] [--buttons|-b grab-buttons] [--config|-c] [--debug|-D] [--detach|-d] [--display|-X display-name] [--flip-buttons|-4] [--focus|-f] [--focus-events|-g] [--help|-h] [--key-defaults|-K] [--kill|-k] [--pid|-p] [--root-window|-r] [--quit|-q] [--version|-v]
--auto-repeat|-a  delay-rate   auto repeat until button release (default=250)
--buttons|-b      grab-buttons
                       Specify button remappings (default="4 5 6 7 8 9", 0=skip)
--config|-c                    Open configuration helper window imediately
--debug|-D                     Spit out all debugging info (it's a lot!)
--detach|-d                    IMWHeel process doesn't detach from terminal
--display|-X      display-name Sets X display to use
--flip-buttons|-4              Swaps buttons 4 and 5 events (same as -b "5 4")
--focus|-f                     Use event subwindow instead of XGetInputFocus
--focus-events|-g              Disable the use of Focus Events for button grabs
--help|-h                      For this help!  Now you know
--key-defaults|-K              Use the old key style default actions
--kill|-k                      Kills the running imwheel process
--pid|-p                       IMWheel doesn't use or check any pid files
--root-window|-r               Allow wheeling in the root window (no cfg dialog)
--quit|-q                      Don't start imwheel process, after args
--version|-v                   Show version info and exit

IMWheelの設定ファイルを作成する

$HOME.imwheelrc を作成した。

".*"
None,      Up,   Button4, 2
None,      Down, Button5, 2
  • ".*" でどのアプリケーションでもこの設定を適用するように指定している
  • 行末の数字がスクロール量の大きさ。1がデフォルトで大きくする程スクロール量が増える。
    • 個人的にはMX Ergo, MX Master 3ともに2で良かった
  • None はキーボードのModifier Key
    • Shiftなどを定義していないので、この設定ならShiftキーを押しながらスクロールすると従来のスクロール量になってちょうどいい。

下記コマンドでimwheelを起動、再起動できるので、それでスクロール量の挙動を確かめるとよい。

# 起動
$ imwheel

# 再起動
$ imwheel -k

# 停止
$ imwheel -q

自動起動設定

設定が決まったら、systemd用のserviceファイルを作成して.config下に配置する。

[Unit]
Description=IMWheel
Wants=display-manager.service
After=display-manager.service

[Service]
Type=simple
Environment=XAUTHORITY=%h/.Xauthority
ExecStart=/usr/bin/imwheel -d
ExecStop=/usr/bin/pkill imwheel
RemainAfterExit=yes

[Install]
WantedBy=graphical.target

serviceファイル設置後、下記コマンドを順に実行してimwheelの自動起動設定を有効にする

$ sudo chmod +x /usr/bin/imwheel
$ systemctl --user daemon-reload
$ systemctl --user enable --now imwheel
$ journalctl --user --unit imwheel

これでスクロールが快適になった。

2020-04-22追記: back / forwardボタンが効かない場合

imwheel 適用時にMX Ergo や MX Master 3の戻る/進むボタンが効かなくなっていたことに気付いた。

改めてヘルプコマンドを叩いてみたら、

--buttons|-b      grab-buttons
                       Specify button remappings (default="4 5 6 7 8 9", 0=skip)

のように、-b オプションでホイールスクロールの4, 5のみを指定すれば、他のボタンには作用しない。

$ imwheel -b "4 5"

serviceファイルのExecStartも

-ExecStart=/usr/bin/imwheel -d
+ExecStart=/usr/bin/imwheel -b "4 5" -d

とすればOK

参考

  • IMWheel - ArchWiki
    • ホイールスクロールのみ指定する方法がこの通りでなくて少し手間取ってしまった。

Ubuntuでもctrl+hでbackspaceにする(その2)

shinespark.hatenablog.com

で書いた方法は、

  • Japanese(mozc) でctrl+hするとbackspaceとして動作してくれなかった
  • 起動時に自動で読み込むベストプラクティスが思い付かなかった

ことから別のアプローチを模索することとなった。

gtk-key-theme を変更するアプローチ

$ gsettings set org.gnome.desktop.interface gtk-key-theme Emacs

を実行するだけでctrl+hでBackspaceができるようになった。

こちらのやり方なら直接入力でもかな入力中でも認識してくれた。
Super押下時のActivitiesのキー入力など、一部では動作しないケースがあるが諦めた。

こちらは再起動後もそのまま適用してくれるので良さそう....

と思ったが、ブラウジング中などにも ctrl + a で全選択でなく行頭にカーソル移動など、きっちりEmacs寄りのキーバインドになってしまったので独自key-themeを作成することにする。

独自key-themeの作成

$ cp /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css ~/.local/share/themes/<テーマ名>/gtk-3.0/gtk-keys.css して自分好みのキーバインドを定義することにした。

.themes 配下でも .local/share/themes 配下でもどちらでもOK

@binding-set gtk-yourtheme-text-entry
{
  /*
   * Some non-Emacs keybindings people are attached to
   */
  bind "<ctrl>u" { "move-cursor" (paragraph-ends, -1, 0)
                   "delete-from-cursor" (paragraph-ends, 1) };

  bind "<ctrl>h" { "delete-from-cursor" (chars, -1) };
  bind "<ctrl>w" { "delete-from-cursor" (word-ends, -1) };
}

entry {
  -gtk-key-bindings: gtk-yourtheme-text-entry;
}

独自key-themeの適用

$ gsettings set org.gnome.desktop.interface gtk-key-theme <テーマ名>

これでOK.

戻したい時

戻したい時には

$ gsettings set org.gnome.desktop.interface gtk-key-theme Default

とすればOK.

起動時にも適用する

./.config/gtk-3.0/settings.ini に下記のように記述する

[Settings]
gtk-application-prefer-dark-theme = true # 元々あったダークモードの設定
gtk-key-theme-name = <テーマ名>

参考

UbuntuTips/Desktop/GnomeEmacsKeyTheme - Ubuntu Japanese Wiki GTKのキーバインドを変更する | monolithic kernel

鬼滅の刃 1 (ジャンプコミックス)

鬼滅の刃 1 (ジャンプコミックス)

自作PCでBluetoothが不安定だった問題を物理的に解消する

症状

組み立てたばかりの自作PCBluetoothの調子が悪く、キーボード、マウス、トラックボールなどすべてのBluetooth機器との接続が不安定ですぐ切断される。
PCにできる限り近づければかろうじて接続できるものの、少し離しただけでもすぐ切断されてしまい、再接続までストレスを伴う状態。

フルタワーケースの為、スペースや安定性のことを考えるとデスク上にPCを置くのも難しく、有線では全く問題がないので、諦めて有線接続を検討するレベルだった。

環境

Ubuntuだけかと思いきや、Windowsでも同症状。

解決方法

1.マザーボードに同梱されているWi-Fiアンテナを用意します。

マザーボードの箱に入っていたこーゆーやつ。

2.Wi-FiアンテナをPCに接続します。

問題なくWi-Fiは拾えているからと、アンテナを接続していない人も多いはず。
自分はLANケーブルで有線接続メインにしていたため接続していなかった。

3.Bluetooth接続を試みます。

安定して接続できるようになっている(!?)

どうやらマニュアルにも書いてないのですがWi-Fiアンテナと謳われつつも、Bluetoothアンテナも兼ねているようです。 UbuntuWindowsも関係ありませんでした。

知らずにBluetoothドライバやマザーボードのドライバのインストールや設定の思考錯誤を頑張ってました。

悩んでいる人は多いと思うのでこれで解消されるといいですね。

OS上の問題解決方法はこちら

shnsprk.com

Ubuntu GRUB 2で前回起動したOSで起動するようにする

UbuntuWindowsデュアルブートで利用しはじめたが、Windows Update後放置しているとUbuntuが立ち上がっているのってどうなんだろうってことで前回起動したOSで起動したくなった

GRUBのDEFAULT設定を変更する

$ sudo vi /etc/default/grubGRUBの設定を変更する。

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

のように変更すればOK.

選択可能時間を変更する

ちなみにブートローダのOS選択可能時間を変更するにはここをいじる。

GRUB_TIMEOUT=10

設定を変更したら

忘れずに

$ sudo update-grub すること。

しないと反映されない(自戒)

参考

Ubuntu日本語フォーラム / 10.04のGrub2で/etc/default/grubのGRUB_DEFAULT=savedが機能しない場合の対処

Ubuntuのibus-mozcでひらがなをデフォルトにする

いろいろ調べたがソースコードを修正してビルド&インストールするしかないようだ。

環境

2020-05-07 追記:

  • Ubuntu 20.04 LTS でも実現できた

必要なパッケージのインストール

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install build-essential devscripts -y

ibus-mozcのソースを取得

$ sudo apt build-dep ibus-mozc
パッケージリストを読み込んでいます... 完了
E: sources.list に 'ソース' URI を指定する必要があります

ソースリストに無いと言われたので、 $ sudo vi /etc/apt/sources.list して eoan maindeb-src のコメントを外す

 deb http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted
- # deb-src http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted
+ deb-src http://jp.archive.ubuntu.com/ubuntu/ eoan main restricted

apt updateし直すとソースリストが更新され、ソースを取得できるようになる。

$ sudo apt update
$ sudo apt build-dep ibus-mozc
$ apt source ibus-mozc
# 正常に取得できるハズ

OK.

ソース改修

Is there a way to set hiragana as default? · Issue #381 · google/mozc · GitHub で言及されている箇所を改修する。

$ cd mozc-2.23.2815.102+dfsg

# 思い思いのエディタで起動するとよい
$ vi $(find . -name property_handler.cc)

変更した差分はこんな感じになる。

 #if IBUS_CHECK_VERSION(1, 5, 0)
- const bool kActivatedOnLaunch = false;
+ const bool kActivatedOnLaunch = true;
 #else
 const bool kActivatedOnLaunch = true;
 #endif  // IBus>=1.5.0

問題なければビルドしてインストールする

# ビルド
$ dpkg-buildpackage -us -uc -b

# インストール
$ sudo dpkg -i ../mozc*.deb ../ibus-mozc*.deb

Settings > Region & Language > Input Sources で Japanese > Japanese(Mozc) を選択する。

f:id:ShineSpark:20200507225449p:plain

追加した状態。

f:id:ShineSpark:20200507225324p:plain

再起動するとデフォルトがひらがなになっているはず。

参考