macOS 8bitdo キーボード マッピング変更

8BitDo macOS Default KeySets

先日、家にあったダンボールを整理していたときに、随分前に買った 8bitdoというゲームコントローラーを発掘しました。この8bitdo キーボードとしてBluetooth接続できるものです。macOS以外にもWindows やAndroid / iOSにも対応しているようです。

8bitdo
8bitdo

新品でまったく使っていませんでしたが、macOS Montereyで試したところキーボードとして認識できました。説明書も何も捨ててなかったのですが (恐らく後継機)Zero2の説明書がサイトにありました。[SELECT]を長押しするとBluetoothベアリングできました。

https://download.8bitdo.com/Manual/Controller/Zero2/Zero2_Manual.pdf

8bitdo Select Button
8bitdo Select Button
8bitdoはキーボードとしてmacOS Montereyで認識できました。
8bitdoはキーボードとしてmacOS Montereyで認識できました。
8bitdo macOS MontereyでBluetoothペアリング成功

再接続するには、Bボタンを押しながらスタートボタンを押すmacOS用キーボードで接続できます。

macOS キーボード接続

キーボードマッピングは下のようになっています。

8bitdo デフォルトキー
8bitdo デフォルトキー

このままだと、使う用途もないのでmacOS側でキーマッピング変換します。

Karabiner-Elementsアプリ でキーマッピング

Karabiner-Elementsというキーマッピング変換できるアプリがあるのでそれを使います。

githabにSourceが上がっているので勉強にもなります

https://github.com/pqrs-org/Karabiner-Elements

Karabiner-Elements設定画面
Karabiner-Elements設定画面

Karabiner-Elementsアプリは、デバイスごとに設定を変えることができます。

キーマッピングを変えたのに普通のキーボードには影響しない

いろんな用途で利用できそうです

Swift スコープ内Finally的なステートメント defer

Swift スコープ内Finally的なステートメント defer

deferはスコープを出る直前に実行できるコードを指定できます。Finally的な使い方ができます。Unsafeなallocate()をdeallocate()する場合に便利です。

public func test() -> Void{
	defer { print("Start defer") }
	print("Start Function")
}

上記コード例の場合結果は下のようになります。

public func test() -> Void{
	defer { print("Start defer 1") }
	defer { print("Start defer 2") }
	print("Start Function")
}

上記コードのようにdeferを複数いれることもできます。

この場合の結果は下記です。

Start Function
Start defer 2
Start defer 1

“Start defer 1”が一番最後に実行されました。

deferは、for などのスコープ内で利用することもできます。

public func test() -> Void{
	for i in [1,2,3] {
		defer { print("Statement defer \(i)") }
		print("Statement \(i)")
	}
	defer { print("Function defer") }
	print("Function Start")
}

上記コードを実行した場合下記のような結果でした。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED