ユーザ用ツール

サイト用ツール


pocketterm35

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
pocketterm35 [2026/07/02 06:15] – [キーマップ変更] arakipocketterm35 [2026/07/10 05:19] (現在) – [キーマップ変更] araki
行 68: 行 68:
   * ガンガンゲームを楽しみたい人   * ガンガンゲームを楽しみたい人
   * ARM64とx64の違いがイマイチ判ってない人   * ARM64とx64の違いがイマイチ判ってない人
 +  * DTBOがなんなのかわかってない人
  
 画面サイズ640x480しかないので、汎用的なポータブルデバイスを欲しい人には向いていない 画面サイズ640x480しかないので、汎用的なポータブルデバイスを欲しい人には向いていない
行 154: 行 155:
  
 waveshare-35dpi-[345]b.dtbo は /boot/firmware/current/overlay の下においてやればいい waveshare-35dpi-[345]b.dtbo は /boot/firmware/current/overlay の下においてやればいい
 +
 +**カーネルなどの更新を行った場合、新しく /boot/firmware/new/overlayが作られ、その下には waveshare-35dpi-[345]b.dtbo はないので、改めてこれらのファイルをコピーする必要がある**
 +
 +リブートする前なら /boot/firmware/new/overlay の下に、リブート後なら /boot/firmware/current/overlayの下にそれぞれコピーする((いずれも Ubuntu26.04LTSの場合))
  
 <file ini config.txt> <file ini config.txt>
行 761: 行 766:
 原因をまじめに突き止めてもよかったのだが、codexを起動して「steamの設定を日本語にしたが、フォントがないのか□が表示されてしまう」とプロンプトしたらあっという間に設定をなおしてくれたので、どうやったのかはあまりちゃんと把握していないが、とにかく日本語が表示されるようになった 原因をまじめに突き止めてもよかったのだが、codexを起動して「steamの設定を日本語にしたが、フォントがないのか□が表示されてしまう」とプロンプトしたらあっという間に設定をなおしてくれたので、どうやったのかはあまりちゃんと把握していないが、とにかく日本語が表示されるようになった
  
-なので、同じトラブルに見舞われた人がいたら、codexに相談することをお勧めする+なので、同じトラブルに見舞われた人がいたら、codex((claude(Opus4.8)は解決できなかったのでcodex一択である))に相談することをお勧めする
  
-{{ ::pocketterm35:xegraderplus.png?400|}}+{{ ::pocketterm35:xegraderplus_prod.png?400|}}
  
-なお、テストプレイのために XeGrader plus (体験版)を導入して遊んでみた+なお、テストプレイのために XeGrader plusを導入して遊んでみた
  
 カーソルキーとスペースキーで操作できるので、この端末で遊ぶのにはもってこいだ カーソルキーとスペースキーで操作できるので、この端末で遊ぶのにはもってこいだ
行 848: 行 853:
 ジョイパッドとして認識されているわけでもないため、ゲームやPCエミュレータからジョイパッドとしても使えなければ、ゲームで一般的に使われる英字キーでもないので、まったく利用価値がない ジョイパッドとして認識されているわけでもないため、ゲームやPCエミュレータからジョイパッドとしても使えなければ、ゲームで一般的に使われる英字キーでもないので、まったく利用価値がない
  
-これはジョイパッドとして認識されるようにするか、最低でも、単純な英字キーとは別のものに割り当てるべきだろう+<del>これはジョイパッドとして認識されるようにするか、最低でも、単純な英字キーとは別のものに割り当てるべきだろう 
 + 
 +これらの制御は RP2040で行われているようなので、ファームウェアを書き換えることで改善できると思われるので、今後の研究対象のひとつだと思っている</del> 
 + 
 +キーコードの割り当ては、RP2040側にインストールされている CircuitPythonにて行われている 
 + 
 +背面のRP2040リセットのボタンをいい感じに連打していると、CIRCUITPYというUSBメモリデバイスが現れることがある((標準のboot.pyによって、CIRCUITPYが出ないようにされているので、いい感じでRESETを連打することで、boot.pyの実行がキャンセルされることがあるので、そのタイミングでCIRCUITPYが現れる。本当にいい感じで連打してとしかいいようがない))ので、それが出てきたら、中の boot.pyや code.pyを変更したり、追加のライブラリを libフォルダーに入れたりしてカスタムすることができる 
  
-これらの制御は RP2040で行われているようなので、ファームウェアを書き換えることで改善できると思われるので、今後の研究対象のひとつだと思っている 
  
 ==== 電池容量のOS側からの検出 ==== ==== 電池容量のOS側からの検出 ====
行 917: 行 928:
 つまりは、できること・できないことは Adafruit CircuitPython次第ということだ つまりは、できること・できないことは Adafruit CircuitPython次第ということだ
  
-まず、作業を始める前に、スクリーンロックをOFFにするかUSBキーボードを用意する+なお、この部分は大変に長くなるので[[PocketTerm35のキーマップを変更する]]にまとめる 
 + 
 +<del>まず、作業を始める前に、スクリーンロックをOFFにするかUSBキーボードを用意する
  
 スクリーンロックがかかると、CIRCUITPYドライブはアンマウントされてしまうので、万一不具合がある状態だとキー入力ができず、スクリーンロックを解除できず、結果CIRCUITPYを修正できなくなってしまう スクリーンロックがかかると、CIRCUITPYドライブはアンマウントされてしまうので、万一不具合がある状態だとキー入力ができず、スクリーンロックを解除できず、結果CIRCUITPYを修正できなくなってしまう
行 1070: 行 1083:
 </code> </code>
  
 +そして、カスタムのキーコード(負数)を追加する
  
 -112以降の "GAMEPAD_xxx"が追加されたシンボルである -112以降の "GAMEPAD_xxx"が追加されたシンボルである
 +
 <code python> <code python>
 # Define custom function keys using a dictionary # Define custom function keys using a dictionary
行 1134: 行 1149:
     CUSTOM_KEYS["GAMEPAD_UP"              : (gamepad_press_up, gamepad_release_up),     CUSTOM_KEYS["GAMEPAD_UP"              : (gamepad_press_up, gamepad_release_up),
     CUSTOM_KEYS["GAMEPAD_DOWN"            : (gamepad_press_down, gamepad_release_down),     CUSTOM_KEYS["GAMEPAD_DOWN"            : (gamepad_press_down, gamepad_release_down),
-    CUSTOM_KEYS["GAMEPAD_LEFT"            : (gamepad_press_left, gamepad_release_down),+    CUSTOM_KEYS["GAMEPAD_LEFT"            : (gamepad_press_left, gamepad_release_left),
     CUSTOM_KEYS["GAMEPAD_RIGHT"           : (gamepad_press_right, gamepad_release_right),     CUSTOM_KEYS["GAMEPAD_RIGHT"           : (gamepad_press_right, gamepad_release_right),
 } }
行 1170: 行 1185:
 </code> </code>
  
 +キーマップは以下のようになる
 +
 +
 +<code python>
 +# Define the key map for the keyboard matrix
 +KEY_MAP = [
 +    #col0                       col1                                col2                                    col3                                col4                                        col5                                    col6                                    col7                                    col8                        col9
 +    [CUSTOM_KEYS["GAMEPAD_UP"], CUSTOM_KEYS["GAMEPAD_LEFT"],        CUSTOM_KEYS["GAMEPAD_DOWN"],            CUSTOM_KEYS["GAMEPAD_RIGHT"],       CUSTOM_KEYS["GAMEPAD_TOP2"],                CUSTOM_KEYS["GAMEPAD_PINKIE"],          CUSTOM_KEYS["GAMEPAD_TRIGGER"],         CUSTOM_KEYS["GAMEPAD_TOP"],             CUSTOM_KEYS["GAMEPAD_THUMB2"],CUSTOM_KEYS["GAMEPAD_THUMB"]], # row 0
 +    [Keycode.ONE,               Keycode.TWO,                        Keycode.THREE,                          Keycode.FOUR,                       Keycode.FIVE,                               Keycode.SIX,                            Keycode.SEVEN,                          Keycode.EIGHT,                          Keycode.NINE,               Keycode.ZERO],          # row 1
 +    [Keycode.Q,                 Keycode.W,                          Keycode.E,                              Keycode.R,                          Keycode.T,                                  Keycode.Y,                              Keycode.U,                              Keycode.I,                              Keycode.O,                  Keycode.P],             # row 2
 +    [Keycode.A,                 Keycode.S,                          Keycode.D,                              Keycode.F,                          Keycode.G,                                  Keycode.H,                              Keycode.J,                              Keycode.K,                              Keycode.L,                  Keycode.BACKSPACE],     # row 3
 +    [Keycode.Z,                 Keycode.X,                          Keycode.C,                              Keycode.V,                          Keycode.B,                                  Keycode.N,                              Keycode.M,                              Keycode.FORWARD_SLASH,                  Keycode.ENTER,              None],                  # row 4
 +    [Keycode.SHIFT,             Keycode.CAPS_LOCK,                  Keycode.MINUS,                          Keycode.EQUALS,                     Keycode.SEMICOLON,                          Keycode.QUOTE,                          Keycode.COMMA,                          Keycode.PERIOD,                         Keycode.RIGHT_SHIFT,        None],                  # row 5
 +    [CUSTOM_KEYS["FN_KEY"],     Keycode.CONTROL,                    Keycode.LEFT_ALT,                       CUSTOM_KEYS["GAMEPAD_BASE3"],       Keycode.SPACE,                              CUSTOM_KEYS["GAMEPAD_BASE4"],           Keycode.RIGHT_ALT,                      Keycode.WINDOWS,                        CUSTOM_KEYS["FN_KEY"],      None]                   # row 6
 +]
 +
 +</code>
 +
 +あとは、キーを押したり離したりの処理を書けば完成である
 +
 +カーソルキーはゲームパッドでもあり、キーボード上のカーソルキーでもあるので、押すと両方に対してコードを送信している
 +
 +もしこれで何か問題が起きるようであれば、キーマップの方を Keycode.UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROWに戻してしまえばとりあえず不具合は出ないと思われる
 +
 +<code python>
 +def gamepad_press_thumb():
 +    # A button
 +    gp.press_buttons(2)
 +
 +def gamepad_release_thumb():
 +    gp.release_buttons(2)
 +
 +def gamepad_press_thumb2():
 +    # B button
 +    gp.press_buttons(3)
 +
 +def gamepad_release_thumb2():
 +    gp.release_buttons(3)
 +
 +def gamepad_press_trigger():
 +    # X button
 +    gp.press_buttons(1)
 +
 +def gamepad_release_trigger():
 +    gp.release_buttons(1)
 +
 +def gamepad_press_top():
 +    # Y button
 +    gp.press_buttons(4)
 +
 +def gamepad_release_top():
 +    gp.release_buttons(4)
 +
 +def gamepad_press_top2():
 +    # L button
 +    gp.press_buttons(5)
 +
 +def gamepad_release_top2():
 +    gp.release_buttons(5)
 +
 +def gamepad_press_pinkie():
 +    # R button
 +    gp.press_buttons(6)
 +
 +def gamepad_release_pinkie():
 +    gp.release_buttons(6)
 +
 +def gamepad_btn_base3():
 +    # Select button
 +    gp.click_buttons(9)
 +
 +def gamepad_btn_base4():
 +    # Start button
 +    gp.click_buttons(10)
 +
 +def gamepad_press_up():
 +    # Send both Gamepad / Keyboard
 +    gp.move_joysticks(x=0, y=-127)
 +    kbd.press(Keycode.UP_ARROW)
 +
 +def gamepad_release_up():
 +    gp.move_joysticks(x=0,y=0)
 +    kbd.release(Keycode.UP_ARROW)
 +
 +def gamepad_press_down():
 +    # Send both Gamepad / Keyboard
 +    gp.move_joysticks(x=0, y=127)
 +    kbd.press(Keycode.DOWN_ARROW)
 +
 +def gamepad_release_down():
 +    gp.move_joysticks(x=0,y=0)
 +    kbd.release(Keycode.DOWN_ARROW)
 +
 +def gamepad_press_left():
 +    # Send both Gamepad / Keyboard
 +    gp.move_joysticks(x=-127, y=0)
 +    kbd.press(Keycode.LEFT_ARROW)
 +
 +def gamepad_release_left():
 +    gp.move_joysticks(x=0,y=0)
 +    kbd.release(Keycode.LEFT_ARROW)
 +
 +def gamepad_press_right():
 +    # Send both Gamepad / Keyboard
 +    gp.move_joysticks(x=127, y=0)
 +    kbd.press(Keycode.RIGHT_ARROW)
 +
 +def gamepad_release_right():
 +    gp.move_joysticks(x=0,y=0)
 +    kbd.release(Keycode.RIGHT_ARROW)
 +</code>
 +</del>
 <del>boot.pyをいじれば、ゲームパッドなどもついかできそうだが、boot.pyを壊してしまったら CIRCUITPYドライブは現れない <del>boot.pyをいじれば、ゲームパッドなどもついかできそうだが、boot.pyを壊してしまったら CIRCUITPYドライブは現れない
  
pocketterm35.1782972929.txt.gz · 最終更新: by araki