変態キーボードGrabShellレビュー

(2024/6/10 追記)
現在Grabshell公式ページが見られず、VIAのプロファイルも手に入らないらしいので、私が持っているものを公開してみます。[→VIAでの設定方法](#VIAでの設定手順)

(2024/7/14 追記)
効かないキーが出てきた → 故障原因を特定して直した
結論としてはキースイッチが刺さる基盤が外れて陥没しており、キースイッチが刺さっていなかった
こんな単純な故障が出るとなるとさらにおすすめしづらい...
[→故障修理](#故障修理)

![実際に買ったもの](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/40af87f5-23c1-8f5d-7a5e-6daaae07d7fd.png)
![裏面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/a6040413-ad39-2e41-184b-4dc94d02a5cc.jpeg)


# GrabShellってなに？
- [公式サイト](https://grabshell.io/)
- 両手でつかんで使える(変態的)キーボード
    - → 机に縛られないので、VRやARでの仮想デスクトップと相性がいい

# レビューの結論
- **癖は強めだけど、使えるようになってくるとめちゃ楽しいよ**

# レビュー
## 良いところ
- どんな体勢でもタイピングできる
    - VRつけながらyogiboに寝転がってとか
    - 寒いから寝袋に入りながらとか
- 置いとくだけでもかっこいい(光る)
- いろいろなカスタマイズが可能
    - キーキャップ変更可
    - キースイッチ変更可(ホットスワップ)
    - キー配列もプログラマブル(VIAでブラウザ上のGUIで設定可能、裏では多分QMKが動いてる)
        - 当然マクロも設定可能

## 悪いところ
- タイピングは慣れるのに時間がかかる
    - 特殊な形状というより、キー配置が通常のキーボードと違うところに慣れなかった
    - 逆にキーが背面にある構造はそこまで気にならなかった
- カスタマイズが自分用に固まらないと使いづらい

## VIAでの設定手順
- [VIA](https://usevia.app/)に移動
- Settingsタブに移動
- Show design tab を押す
- 新しく表れたdesign tabに移動
- アップロードマークを押す
- 自分のPCにダウンロードしてきたGrabshell用のvia.jsonを選択
- Configureタブに移動
- Grabshellを優先接続してAuthorize deviceをクリック
- あとはGUIでキー配置をいじる

<details><summary>via.json</summary>

```via.json
{
	"name": "GRAB-01",
	"vendorId":"0x369B",
    "productId":"0x0091",
	"firmwareVersion": 0,
  "keycodes": ["qmk_lighting"], 
  "menus": [
      			{
        			"label": "rgb_matrix",
        			"content": [
          						{
            						"label": "rgb_matrix_regulate",
            						"content": [
              									{
													"label": "Brightness",
													"type": "range",
													"options": [0, 255],
													"content": ["id_qmk_rgb_matrix_brightness", 3, 1]
												},
												{
													"label": "Effect",
													"type": "dropdown",
													"content": ["id_qmk_rgb_matrix_effect", 3, 2],
													"options": [
																	["00.NONE",0],                        
																	["01.Solid Color",1],                 
																	["02.Alphas Mods",2],                 
																	["03.Gradient Up/Down",3],            
																	["04.Gradient Left/Right",4],         
																	["05.Breathing",5],                   
																	["06.Band Sat",6],                    
																	["07.Band Val",7], 
																	["08.SPIRAL_VAL",8],
																	["08.Cycle All",9],                  
																	["09.Cycle Left/Right",10],           
																	["11.Cycle Up/Down",11],	
																	["12.Cycle OUT/IN",12],           
																	["13.Cycle OUT/IN DUAL",13]																
																]
												},
												{
													"showIf": "{id_qmk_rgb_matrix_effect} != 0",
													"label": "Effect Speed",
													"type": "range",
													"options": [0, 255],
													"content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
												},
												{
													"showIf": "{id_qmk_rgb_matrix_effect} != 0",
													"label": "Color",
													"type": "color",
													"content": ["id_qmk_rgb_matrix_color", 3, 4]
												}
            								   ]
								}
							   ]
				}      
  			],
	"matrix": {
				"rows": 6,
				"cols": 22
			  },
	"layouts": {
        "keymap":[
					[
						{
							"t":"0"
						},
						{
							"y":0.75,
							"h":1.5					
						},
						"0,0",
						{
							"y":-0.25,
							"h":1					
						},
						"0,1",
						{
							"y":-0.25				
						},
						"0,2",
						{
							"y":-0.25				
						},
						"0,3",
						{
							"y":0.25			
						},
						"0,4",
						{
							"y":0.25				
						},
						"0,5",												
						{
							"x":1,
							"y":4				
						},				
						"0,7",
						"0,8",
						"0,9",	
						{
							"x":1				
						},			
						"0,11",
						"0,12",               
						"0,13",						
						{
							"y":-4,	
							"x":1				
						},
						"0,15",
						{
							"y":-0.25				
						},
						"0,16",
						{
							"y":-0.25				
						},
						"0,17",
						{
							"y":0.25				
						},
						"0,18",
						{
							"y":0.25				
						},
						"0,19",
						{
							"y":0.25,
							"h":1.5				
						},
						"0,20"
					],
					[						
						{
							"y":0.5,
							"h":1.5					
						},
						"1,0",
						{
							"y":-0.75,
							"h":1					
						},
						"1,1",
						{
							"y":-0.25				
						},
						"1,2",
						{
							"y":-0.25				
						},
						"1,3",
						{
							"y":0.25			
						},
						"1,4",
						{
							"y":0.25				
						},
						"1,5",	
						{
							"y":0.25,
							"h":2				
						},
						"1,6",						
						{							
							"y":3.75,
							"w":1.25				
						},
						"1,7",
						{	
							"w":1				
						},
						"1,8",
						"1,9",	
						{
							"x":0.5,
							"w":1				
						},			
						"1,11",
						"1,12", 
						{	
							"w":1.25				
						},              
						"1,13",
						{
							"y":-3.75,
							"h":2				
						},
						"1,14",
						{
							"y":-0.25				
						},
						"1,15",
						{
							"y":-0.25				
						},
						"1,16",
						{
							"y":-0.25				
						},
						"1,17",
						{
							"y":0.25				
						},
						"1,18",
						{
							"y":0.25				
						},
						"1,19",
						{	
							"y":0.75,
							"h":1.5				
						},
						"1,20"						
					],
					[	
						{
							"y":-0.75,
							"x":1,
							"h":1					
						},
						"2,1",
						{
							"y":-0.25				
						},
						"2,2",
						{
							"y":-0.25				
						},
						"2,3",
						{
							"y":0.25			
						},
						"2,4",
						{
							"y":0.25				
						},
						"2,5",											
						{	
							"x":1,						
							"y":4,
							"w":1.5				
						},
						"2,7",
						{	
							"w":1				
						},
						"2,8",
						"2,9",	
						{							
							"w":1				
						},			
						"2,11",
						"2,12", 
						{	
							"w":1.5				
						},              
						"2,13",						
						{
							"x":1,
							"y":-4				
						},
						"2,15",
						{
							"y":-0.25				
						},
						"2,16",
						{
							"y":-0.25				
						},
						"2,17",
						{
							"y":0.25				
						},
						"2,18",
						{
							"y":0.25				
						},
						"2,19"						
					],
					[	
						{
							"x":1,
							"h":1					
						},
						"3,1",
						{
							"y":-0.25				
						},
						"3,2",
						{
							"y":-0.25				
						},
						"3,3",
						{
							"y":0.25			
						},
						"3,4",
						{
							"y":0.25				
						},
						"3,5",											
						{	
							"x":1,						
							"y":4,
							"w":1.25				
						},
						"3,7",											
						{
							"x":4.5,	
							"w":1.25		
						},              
						"3,13",						
						{
							"x":1,
							"y":-4				
						},
						"3,15",
						{
							"y":-0.25				
						},
						"3,16",
						{
							"y":-0.25				
						},
						"3,17",
						{
							"y":0.25				
						},
						"3,18",
						{
							"y":0.25				
						},
						"3,19"						
					],
					[												
						{	
							"x":7,						
							"y":4,
							"w":1.25				
						},
						"4,7",										
						{	
							"x":4.5,	
							"w":1.25		
						},              
						"4,13"
					],
					[												
						{	
							"x":7,
							"w":1				
						},
						"5,7",
						"5,8",
						"5,9",
						"5,10",
						"5,11",
						"5,12",
						"5,13"
					]                                                                         
        		]
    		  }
}
```
</details>

## 私の設定
- ポイントは大きく分けて３つ
    - できるだけ普段のキーボードと同じ(に感じる)キー配列を目指す
    - 持つときのわっかに親指まで入れる
    - キーキャップを薄型に変更

### 普段に近いキー配列
- とりあえず画像で乗せると以下
layer0(基本レイヤー)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/658e8faf-2d64-691e-7d41-f52eaa6b0d19.png)
layer1(レイヤー変更ボタン押してる間だけ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/249d4087-350b-190e-f475-851c5c80a82b.png)
- こだわりとしては、Esc, Ctrl, Shift, Enterなどがいつもの指の位置に近い場所に配置した
- 一方で明らかに通常キーボードよりもキー数が少ないため、VIA(QMK)の機能を活用している
    - 例えばlayer0の左端(つぶれているがMT(MC..)とあるキー)はこのキーとほかのキーを同時押しするとCtrlの機能、単体で押すとTabの機能になるようにしてある
    - 同様にAの下、Zの位置は同時押し: Shift, 単体押し-: Z となっている
- また、Gの右側のキーは同時押し: レイヤー変更, 単体押し: Space
- Hの左のキーは同時押し: レイヤー変更, 単体押し: BackSpace となっている

### わっかに親指までいれる
- 持ってない人にはなんのこっちゃだと思うが、GrabShellは両手でつかんだ時の安定用にわっかがついている(以下の画像のように)

![指をいれるわっか](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/46bb6e3b-a820-49ff-67c2-4c7094acd776.jpeg)


- [公式動画](https://www.youtube.com/watch?v=nE3mJ_30kz0)を見ても、このわっかには親指以外の指を入れて保持するのだが、そうすると指をホームポジションに固定するのが難しかった
    - 重さに負けてわっか内の上部に指が来ると、背面の指がホームポジションからずれてしまう
- この問題を解決するために、私は親指までをこのわっかに入れている
    - こうすることで、親指でわっか上部を押すことでホームポジションから指がずれないようにできる
    - 実際親指まで入れたときには、通常のキーボードと近いスピードでタイピングできる
- この方法は親指側のトラックボールを使いずらくなるという欠点もあるが、わっかを少し緩めにし、すぐに親指を抜けるようにすることで、そこまで気にならなくなる

### キーキャップを薄型に変える
- もともとは普通のキーキャップが付いているが、そのままだと数字の列まで指が届きづらい
    - というか手前のキーを指の腹で押してしまう
- そこで以下の薄型キーキャップに変えたところ、手前のキーを押してしまうことはなくなり、快適になった(オプションで用意してほしいくらい)
    - [Amazon.co.jp: XVX 118キー キーキャップ PBTキーキャップ カスタムキーキャップ ロープロファイル 100%、75%、65%、60%のキーボード対応 ユニバーサルタイプ（ブラック） : パソコン・周辺機器](https://www.amazon.co.jp/gp/product/B0C4SMS3RW/?th=1)
## 設定が固まっていないところ
- テンキー設定したけどあまり使っていない
- 表側のキー、めっちゃあまってるからマクロをいれまくりたい

## 故障修理
- 初期配置でいうと、3,4,5,r,t,g当たりのキーが効かなくなった
- 断線かと思っていたが、なんとなくキースイッチを外してみていた時に、奥の基盤がガタガタ動くことに気が付いた
    - → ガタガタゆえにキースイッチが基盤に刺さっていないのでは？？？
        - 落ちた基盤![基盤落ちた.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/bfc55f86-d611-a79e-fef0-7ee24c9c1cdd.jpeg)
        - 持ち上げた基盤
![基盤もちあげる.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/ca40e1c5-b28b-74ac-19eb-ce495e569bb1.jpeg)

- 分解も簡単にはできないため（隠されたネジがある...）何とか基盤を固定しながらキースイッチを差し込むことを試みる
    - 具体的には基盤の穴に針金を通して引っ張った
        - 針金で引っ張る図![針金固定写真.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538623/2c2775b9-87f4-b97c-bd11-30880b7d6c4c.jpeg)
- 結果としては、すべてのキースイッチが基盤に刺さり、すべてのキーが動作した
- 正直なところ、基盤がガタガタいうようになるのは構造が弱すぎるので、このキーボードはちょっとおすすめしづらくなった
    - (自作キーボードのほうが頑丈まである）

# さいごに
- ガジェットの設定をいじること自体が好きな人は好きかも
    - emacsとかvimをガチガチにカスタマイズしてる人とか好みそう(偏見)
- まちがっても万人にはうけない
- もうちょっと小さくなって持ち運べるようになるとうれしい
- また好きな設定がでてきたときは発表したい