OS
パソコンのOSごとの記録。
iOS
Network
テザリング
出典:
- iPhoneのテザリングがすぐに途切れてしまいます!? - いまさら聞けないiPhoneのなぜ | マイナビニュース
- iPhoneまたはiPadを使ってMacをインターネットに接続する - Apple サポート (日本)
無通信状態が90秒ほどしばらく続くと省電力設計のため、自動的にオフになる。これが困る。Andriodは自動オフにはならない。
いくつか対策がある。
- [Personal Hotspot] (インターネット共有) 画面の表示を維持。自動ロックも解除しておく。
- USB/Wi-FiではなくBluetooth経由にする。⇢Bluetooth接続はMontary以上で不能。
Bluetooth経由のほうが、範囲が短く、電力消費量も抑えられるので、Bluetoothがよさそう。他にはUSB接続。
Bluetooth接続はできなくなっているので、画面表示か通信しておくしかない。
Instant Hotspot
出典:
- MacからiPhoneの電話回線を利用できる「インターネット共有」のやり方 - iPhoneユーザーのためのMacのトリセツ | マイナビニュース
- Instant Hotspot を使ってパスワードを入力せずにインターネット共有で接続する - Apple サポート (日本)
Bluetoothでのテザリングはできないものの、類似機能のInstant Hotspotで実現できるらしい。
いくつか条件がある。
- iPhone/iPadでインターネット共有 (Personal Hotspot) 対応。
- 全デバイスで同じApple IDでiCloudにログイン。
- 全デバイスでBluetoothオン。
- Wi-Fiオン.
[Personal Hotspot]-[Allow Others to Join] をオンにしなくても自分だけ接続できるのが利点。逆にいうとこれくらい。Bluetoothをオンにしないといけないぶん、余計な通信処理が入る。使わなくていい。
Bluetooth
出典:
MacS v12.1 (Monterey) からiOSでのBluetooth接続が不能になった。
Wi-FiかUSBで接続する。実務的には困らないはず。
Sound
出典: iPhoneの音量を調整する - Apple サポート (日本)。
音量は左サイドボタンで上下できる。左上のスイッチがマナーモードの切替になっている。消音モードと呼んでいる。
「複数アカウントを使いこなす、iPhoneメールアプリの知られざる便利機能 | 日経クロステック(xTECH)」
iPhoneのメールアプリは標準のMailを使うのがよいだろう。K-9がないから。複数アカウントにも対応しているが、設定が若干特殊。アプリ設定からではなく、iOS本体の設定から行う。
App
いくつか必要なアプリがあるので整理する。
Switcher
出典: iPhoneで開いているアプリを切り替える - Apple サポート (日本)。
アプリスイッチャーという機能で、現在実行中のアプリを変更可能。Androidはホームの上スワイプ、右ボタンだった。iOSはホームのダブルクリック。
KeePass
パスワード管理アプリ。iOSは別になる。KeePass XCはQtを使っているからビルドできるはずなんだけど。
「iOS 向けの Keepass クライアントの備忘録 | hyt adversaria」を見る限り、KeePassiumが良さそう。
Camera
出典: iPhoneのカメラ解像度を変更し写真/動画サイズを軽くする便利技 – 格安SIM初心者教室
iPhoneのデフォルトのカメラは解像度が高すぎて写真のファイルサイズがかなり大きい。変更できない。せいぜいインカメラで撮影するくらい。
LINE Cameraが定番のカメラアプリらしい。こちらは解像度を柔軟に設定できる。
[Settings]-[Saving]-[Resolution]-[Medium] に変更。これでデフォルトの半分になる。
「iPhoneのカメラ解像度を変更し写真/動画サイズを軽くする便利技 – 格安SIM初心者教室」はもっと小さい。こちらがいいだろう。
Low Cameraはもっと小さいが、小さすぎて細かい文字が見えなくて困る。調べた。
「2024|無音カメラアプリおすすめランキング11選|無料|高画質 | Good!Apps」が参考になった。
Simple Camがよかった。基本はこの1.2MPか0.3MP。外観だけでいいならLowCameraとか。
rank | OS | name | url | Free | level | MP | resolution px | size KB | square | 備考 |
4 | iOS | LowCamera | Very Low | 0.05 | 144x144 | 25 | x | |||
4 | iOS | LowCamera | Low | 0.1 | 360x360 | 50 | x | |||
4 | iOS | LowCamera | Medium | 0.2 | 480x480 | 100 | x | 画質が低すぎる。 | ||
4 | iOS | LINE Camera | Medium | 2 | 1512x1512 | 1024 | x | 画質をもう少し落としたい。 | ||
2 | iOS | 低画質カメラ | - | 動画のみ。 | ||||||
3 | iOS | 0.3MPCamera | 480x640 | - | いまいち。正方形がない。 | |||||
3 | iOS | 0.3MPCamera | 240x320 | - | いまいち。正方形がない。 | |||||
3 | iOS | 0.3MPCamera | 120x160 | - | いまいち。正方形がない。 | |||||
3 | iOS | default | Photo | 12 | 3024x4032 | 2300 | x | |||
3 | iOS | default | Photo | 9 | 3024x3024 | 2600 | x | |||
3 | iOS | Capera | Max | 12 | 3024x4032 | 2300 | - | 正方形がない。 | ||
3 | iOS | Capera | FullHD | 1920x1080 | - | |||||
3 | iOS | Capera | HD | 1280x720 | - | |||||
3 | iOS | Capera | VGA | 640x720 | - | |||||
3 | iOS | Capera | CIF | 352x288 | - | |||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 192x144 | - | 正方形がない。 | ||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 352x288 | - | 正方形がない。 | ||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 480x360 | - | 正方形がない。 | ||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 640x480 | - | 正方形がない。 | ||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 960x540 | - | 正方形がない。 | ||||
3 | iOS | Lo-Fi Cam | https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 | 1280x720 | - | 正方形がない。 | ||||
5 | iOS | Simple Cam | 0.3 | 480x480 | 100 | x | 必要な範囲を網羅できている。 | |||
5 | iOS | Simple Cam | 1.2 | 960x960 | 200 | x | 必要な範囲を網羅できている。 | |||
5 | iOS | Simple Cam | 1.9 | 1200x1200 | 300 | x | 必要な範囲を網羅できている。 | |||
5 | iOS | Simple Cam | 5 | 1936x1936 | 800 | x | 必要な範囲を網羅できている。 | |||
5 | iOS | Simple Cam | 8 | 2448x2448 | 1500 | x | 必要な範囲を網羅できている。 | |||
5 | iOS | Simple Cam | 12 | x | 必要な範囲を網羅できている。 | |||||
3 | iOS | MiraCamera | 9 | 3024x3024 | 2700 | x | いまいち。 | |||
3 | iOS | Foodie | standard | 3 | 1920x1920 | 1600 | x | いまいち。 | ||
3 | iOS | SODA | standard | 3 | 1920x1920 | 1800 | x | いまいち。 | ||
2 | iOS | Pro Camera | - | x | ||||||
1 | iOS | Q Camera | x | - | ||||||
1 | iOS | AutoCam | x | - | ||||||
2 | iOS | SkyCamera | 0.8 | 750x1000 | - | |||||
2 | iOS | StageCamHD | 1280x720 | x | ||||||
2 | iOS | StageCamHD | 1920x1080 | x | ||||||
2 | iOS | StageCamHD | 3024x3024 | x | ||||||
2 | iOS | StageCamHD | 2592x1936 | x | ||||||
2 | iOS | StageCamHD | 3264x2448 | x | ||||||
2 | iOS | BeautyPlus | x |
QR
Ref: QRコードで開いたWEBサイトの履歴がiPhoneで残らない問題、これで解決 | マイナビニュース.
QRコードを読み取ると、QRコードリーダーアプリ内ブラウザーで開けれて、Safariの履歴に残らない。開いた後に、右下でSafariで開き直すと、タブで開き直せる。基本はすぐ開き直したほうがいい。
いや、標準のQRコードリーダーで開いた後に、Safariで開き直すと、状態が違うのか、吉野家のレシートアンケートなどはエラーになる。サードパーティーアプリを使ったほうがいい。
QRコードアプリおすすめ2選&ランキングTOP10 無料・人気のアプリを編集部が厳選!【2024年】 | iPhone/Androidアプリ - Appliv
QRQRがいい。
Windows
Other
高速スタートアップ
出典:
- Windows シャットダウンしてもバッテリー 減る | cocotiie
- 富士通Q&A - [Windows 11 高速スタートアップを無効にする方法を教えてください。 - FMVサポート : 富士通パソコン]
電源オフにしているのに、バッテリーが何故か減っている。原因は [高速スタートアップ] とのこと。
[コントロールパネル]-[ハードウェアとサウンド]-[電源オプション]-[電源ボタンの動作を選択する]-[現在利用可能ではない設定を変更します]-[シャットダウン設定]-[高速スタートアップを有効にする (推奨)] をオフにする。
勝手にスリープする
システムがすぐにスリープしてしまうのは、「システム無人スリープタイムアウト(System unattended sleep timeout)」機能が働いているためだと考えられる。これは、システムがWOL(Wake On LAN)や何らかのイベントなどで、自発的にスリープから起動した場合、そのまま何も操作せずに放っておくと、一定時間後にまた自動的にスリープ状態に移行するための機能である。
システム無人スリープのタイムアウトを設定する項目を有効化するには、コマンドプロンプトで以下のpowercfgコマンドを実行すればよい。再起動などは必要なく、[電源オプション]にタイムアウトを設定する項目が表示される。
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
これだとダメ。
一応元に戻す。
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 +ATTRIB_HIDE
「Windows10で勝手にスリープになる現象を防ぐための対処法 | TechMemo」
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0
このレジストリーの値を0から2に変更する。
システム無人スリープタイムアウトが表示されるので0にするとなくなる。らしい。
そのほか、ディスプレイの電源を切るのはやはりだめ。パソコンの省エネ機能が働いて、処理が止まる。
Startup
Microsoft TeamsなどOSの起動時に勝手に自動起動するアプリがある。制御する方法がいくつかある。
[設定]-[アプリ]-[スタートアップ] で制御できる。大半はこれで制御できる。
ほかに、Explorerのshell:startupか%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupにショートカットがあると、それでも自動起動する。
Theme
Ref: デスクトップのテーマを変更する方法<Windows 11>|サポート|dynabook(ダイナブック公式).
OSのテーマでデフォルトのライト・ダークが決まる。
[スタート]-[設定]-[個人用設定]
Hardware
Keyboard
Ref: FMV Q&A - [Windows 11 キーを押し続けたときに、同じ文字が連続して入力される速度を調整する方法を教えてください。 - FMVサポート : 富士通パソコン].
[コントロールパネル]-[キーボード]
Mouse
[コントロールパネル]-[マウス]
- ポインター オプション
- ポインターの速度を選択する (デフォルト=左から6 (6/11))
- ☑ポインターを自動的に既定のボタンの上に移動する。
- ☑Ctrlキーを押すとポインターの位置を表示する。
コントロール パネル\すべてのコントロール パネル項目\コンピューターの簡単操作センター\マウスを使いやすくします
- マウスポインター
Explorer
[フォルダーオプション]-[表示]
- ファイルおよびフォルダー
- ☑チェックボックスを使用して項目を選択する。
- ファイルとフォルダーの表示
- ☑隠しファイル、隠しフォルダー、および隠しドライブを表示する。
- □登録されている拡張子は表示しない
Mac
System
Applications
Macの実行ファイルは.appファイル。これは/Applicationsに配置されている。Laucnhpadはこのディレクトリー内を表示している模様。
lanchctl
- Macでの環境変数(environment variables)の設定方法 #MacOSX - Qiita
- launchd, launchctlについて(導入編) · GitHub
- Mac の launchctl ってなんだ? - IT戦記
- LaunchDaemons (launchctl, launchd.plist) の使い方 - maruko2 Note.
Macでシステム起動時の処理を管理する仕組み。Mac OS 10.10以上で導入されている。
GUIなど、システムグローバルで環境変数を反映させたい場合、ここに登録する必要がある。
plistファイルを作成して、それをlanchctl loadして登録になる。unloadで解除になる。
- plistのファイルのパスは、主に以下2通り。
/Library/LaunchAgents/*****.plist
: システム全体で有効になる。~/Library/LaunchAgents/*****.plist
: ログインユーザのみで有効になる。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.M2_HOME</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>M2_HOME</string>
<string>/usr/local/Cellar/maven31/3.1.1/libexec</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
上記のような形式。
配置したら、コマンドで即座に反映できる。
launchctl load ~/Library/LaunchAgents/SSLKEYLOGFILE.plist
値を修正した場合、一度unloadしてからloadする。
VM
Docker
Network
docker network ls
上記コマンドでコンテナーごとのネットワーク識別子を確認できる。コンテナー同士で同一ネットワークにするには、片方のservices.networks:でこのネットワーク識別子を指定する。
Compose
phpのアプリサーバー、DBサーバーを一つのイメージで作ることもできるが、別のイメージにして連動させることもできる。別のイメージ・コンテナーにしたほうが、管理しやすい模様。
docker composeで複数のイメージ・コンテナーを一体に管理できる。その際に、特有の事項がある。
PHPのPDOをDockerコンテナ内で使おうとしたところ、"No such file or directory" エラーが発生した話 #docker-compose - Qiita
docker composeで一体管理しているコンテナー群は、同一ネットワークに参加する。ホスト名はservice名になる。したがって、例えばアプリサーバーからDBサーバーへのアクセス時には、ホスト名に注意する。
Image
PHP
Ref: php - Official Image | Docker Hub.
Dockerの公式PHPイメージを使う場合、いくつかPHP関係のライブラリーや拡張モジュールをインストール・設定するための専用コマンドが用意されている。
RUN pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached
peclの拡張機能インストール時はバージョン指定が推奨される。
phpmyadmin
Ref: phpmyadmin - Official Image | Docker Hub.
以下のdocker-compose.ymlを格納しておいて、networksのところをつなげたいやつにあわせる。
services:
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITARY=1
networks:
- development_default
# - wordpress_default
networks:
wordpress_default:
external: true
development_default:
external: false
特に重要な環境変数。
PMA_ARBITRARY
- when set to 1 connection to the arbitrary server will be allowed- PMA_HOST: デフォルトはdb。servicesがdb以外なら指定必要。
- PMA_USER/PMA_PASSWORD=phpmyadminのデフォルトユーザー。これを指定しておくと、自動ログインする。
MySQL
import
Ref: Import data.sql MySQL Docker Container - Stack Overflow.
docker exec -i mysql-container mysql -uuser -ppassword name_db < data.sql
上記のようなコマンドで取り込む。
Error
connect ENOENT \\.\pipe\errorReporter
https://github.com/docker/for-win/issues/14080
再起動で直るらしい?
インストール時のアカウントの権限があるので、アカウント権限がある状態で再インストールするとOK。
`version` is obsolete
【docker compose】警告`version` is obsoleteの解決法
$ docker compose up time="2024-07-02T09:54:45+09:00" level=warning msg="C:\\Users\\senoo_0901\\project\\main\\GASProj\\docker\\docker-compose.yml: `version` is obsolete"
docker compose v2からversion指令は廃止になった。単純に削除すればいい。
Other
RUN/CMD/ENTRYPOINTの違い
【Docker】Dockerfileで記述するRUNとCMDとENTRYPOINTの違いについて - 自由気ままに書いちゃおう
Dockerfileでコマンドを実行する指令が複数ある。違いを整理する。
- RUN: イメージ作成時=docker build字に実行。ソフトウェアのパッケージインストール、ファイルコピー変更などを行う。
- CMD: コンテナ開始時=docker start、作成時=docker run時に実行される。docker run時のコマンドのデフォルト値。VolumeのバインドはRUN後になるのでCMD/ENTRYPOINTで行う必要がある。
- ENTRYPOINT: コンテナ開始時=docker start、作成時=docker run時に実行される。docker run時に強制実行。上書き不能。
権限設定
Apache HTTP Serverの/var/wwwの権限設定 | GNU social JP Web
Why does chown not work in RUN command in Docker? - DevOps Stack Exchange
バインドボリュームする場合、RUNの後にバインドされるからCMDで設定が必要。
DockerfileにENTRYPOINTもCMDも無い?? | へるぷログ
CMD/ENTRYPOINTを指定しない場合、元イメージのCMD/ENTRYPOINTが実行される模様。apacheだとapache2-foregroundコマンド。
docker-composeでコンテナの初回起動時に特定の処理を行う方法 #Docker - Qiita
初回起動時に処理をする方法もあるが、一時ファイルを生成するなどするもの。権限設定は毎回実行してもOKなものなので、毎回実行する。
umask for non-root users not as expected · Issue #1142 · docker-library/php
/root/.bashrcにumaskを指定する。これがないと、コマンドラインでdocker exec -i で実行した際デフォルトのumask 022でのファイル生成になり、この作業コマンドでログが発生したら、サーバープロセスから追記できない。
FROM php:7.3.23-apache RUN apt update && apt install -y \ ssl-cert RUN docker-php-ext-install pdo_mysql RUN a2enmod rewrite ssl RUN a2ensite default-ssl COPY --from=composer /usr/bin/composer /usr/bin/composer RUN usermod -aG www-data root \ && echo "umask 002" >>/root/.bashrc CMD chgrp -R www-data /var/www && chmod 2775 /var/www \ && find /var/www -type d -exec chmod 2775 {} \; \ && find /var/www -type f -exec chmod 0664 {} \; \ && apache2-foreground
Other
Keybind
App Menu
いわゆる右クリックのコンテキストメニュー。これをショートカットキーで実現する方法一応ある。
Macの場合。「Macの右クリック - Apple サポート (日本)」にあるように、Control-左クリックか、2本指クリック。
- macos - Context Menu (Right Click) keyboard shortcut in Mac OS X - Super User
- Access & Customize Context Menu (Right-click Menu) on Mac
上記にあるように、F12でもできるらしい。ただし事前設定が必要。
[System]-[Accessibility]-[Pointer Control]-[Alternate pointer actions]=[on] にする。これでF12で開ける。右側のオプションボタンで変更もできる。
Key code
Mac
Ref: macos - Where can I find a list of Mac virtual key codes? - Stack Overflow.
以下のコマンドで一覧を確認できる (Mac v14.2.1、MacBook Air (M1, 2020)、 JIS配列)。
grep 'kVK_.*=' /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
一覧。
kVK_ANSI_A = 0x00, kVK_ANSI_S = 0x01, kVK_ANSI_D = 0x02, kVK_ANSI_F = 0x03, kVK_ANSI_H = 0x04, kVK_ANSI_G = 0x05, kVK_ANSI_Z = 0x06, kVK_ANSI_X = 0x07, kVK_ANSI_C = 0x08, kVK_ANSI_V = 0x09, kVK_ANSI_B = 0x0B, kVK_ANSI_Q = 0x0C, kVK_ANSI_W = 0x0D, kVK_ANSI_E = 0x0E, kVK_ANSI_R = 0x0F, kVK_ANSI_Y = 0x10, kVK_ANSI_T = 0x11, kVK_ANSI_1 = 0x12, kVK_ANSI_2 = 0x13, kVK_ANSI_3 = 0x14, kVK_ANSI_4 = 0x15, kVK_ANSI_6 = 0x16, kVK_ANSI_5 = 0x17, kVK_ANSI_Equal = 0x18, kVK_ANSI_9 = 0x19, kVK_ANSI_7 = 0x1A, kVK_ANSI_Minus = 0x1B, kVK_ANSI_8 = 0x1C, kVK_ANSI_0 = 0x1D, kVK_ANSI_RightBracket = 0x1E, kVK_ANSI_O = 0x1F, kVK_ANSI_U = 0x20, kVK_ANSI_LeftBracket = 0x21, kVK_ANSI_I = 0x22, kVK_ANSI_P = 0x23, kVK_ANSI_L = 0x25, kVK_ANSI_J = 0x26, kVK_ANSI_Quote = 0x27, kVK_ANSI_K = 0x28, kVK_ANSI_Semicolon = 0x29, kVK_ANSI_Backslash = 0x2A, kVK_ANSI_Comma = 0x2B, kVK_ANSI_Slash = 0x2C, kVK_ANSI_N = 0x2D, kVK_ANSI_M = 0x2E, kVK_ANSI_Period = 0x2F, kVK_ANSI_Grave = 0x32, kVK_ANSI_KeypadDecimal = 0x41, kVK_ANSI_KeypadMultiply = 0x43, kVK_ANSI_KeypadPlus = 0x45, kVK_ANSI_KeypadClear = 0x47, kVK_ANSI_KeypadDivide = 0x4B, kVK_ANSI_KeypadEnter = 0x4C, kVK_ANSI_KeypadMinus = 0x4E, kVK_ANSI_KeypadEquals = 0x51, kVK_ANSI_Keypad0 = 0x52, kVK_ANSI_Keypad1 = 0x53, kVK_ANSI_Keypad2 = 0x54, kVK_ANSI_Keypad3 = 0x55, kVK_ANSI_Keypad4 = 0x56, kVK_ANSI_Keypad5 = 0x57, kVK_ANSI_Keypad6 = 0x58, kVK_ANSI_Keypad7 = 0x59, kVK_ANSI_Keypad8 = 0x5B, kVK_ANSI_Keypad9 = 0x5C kVK_Return = 0x24, kVK_Tab = 0x30, kVK_Space = 0x31, kVK_Delete = 0x33, kVK_Escape = 0x35, kVK_Command = 0x37, kVK_Shift = 0x38, kVK_CapsLock = 0x39, kVK_Option = 0x3A, kVK_Control = 0x3B, kVK_RightCommand = 0x36, kVK_RightShift = 0x3C, kVK_RightOption = 0x3D, kVK_RightControl = 0x3E, kVK_Function = 0x3F, kVK_F17 = 0x40, kVK_VolumeUp = 0x48, kVK_VolumeDown = 0x49, kVK_Mute = 0x4A, kVK_F18 = 0x4F, kVK_F19 = 0x50, kVK_F20 = 0x5A, kVK_F5 = 0x60, kVK_F6 = 0x61, kVK_F7 = 0x62, kVK_F3 = 0x63, kVK_F8 = 0x64, kVK_F9 = 0x65, kVK_F11 = 0x67, kVK_F13 = 0x69, kVK_F16 = 0x6A, kVK_F14 = 0x6B, kVK_F10 = 0x6D, kVK_F12 = 0x6F, kVK_F15 = 0x71, kVK_Help = 0x72, kVK_Home = 0x73, kVK_PageUp = 0x74, kVK_ForwardDelete = 0x75, kVK_F4 = 0x76, kVK_End = 0x77, kVK_F2 = 0x78, kVK_PageDown = 0x79, kVK_F1 = 0x7A, kVK_LeftArrow = 0x7B, kVK_RightArrow = 0x7C, kVK_DownArrow = 0x7D, kVK_UpArrow = 0x7E kVK_ISO_Section = 0x0A kVK_JIS_Yen = 0x5D, kVK_JIS_Underscore = 0x5E, kVK_JIS_KeypadComma = 0x5F, kVK_JIS_Eisu = 0x66, kVK_JIS_Kana = 0x68
Keyhac
About
Mac版はmac_portブランチ。
Mac
Mac版は英語サイト (craftware - Keyhac) からじゃないとダウンロードできないので注意する。
マニュアル: keyhac: User Manual。
またWindowsと異なり、exeファイルと同じ場所のconfig.pyを読み込んだりはしてくれない。
$HOME/Library/Application Support/Keyhac/に配置する必要がある。
また、そもそもキーコード自体が異なるので、一部は専用に作る必要がある。
Base
config.py内にconfigure(keymap)関数を定義して、この中で設定を記述していく。
引数のkeymapにはKeymapオブジェクトが渡されるのでこれを操作することで設定する。
keymap_global = keymap.defineWindowKeymap()
Keymap.defineWindowKeymapでWindowKeymapオブジェクトを返す。このオブジェクトに対してグローバルキーマップを定義していく。
これが基本。
基本的に全部文字列。キーコードを指定する部分は数値も可能だが、10進数の文字列にしておいたほうがいい。
Modifier
keymap.defineModifierで、Shift/Ctrlのように同時押しに意味のあるキー (modifier) を追加できる。
スペースの左右のキーにShift/Ctrl相当の機能をもたせる上で非常に重要。
# ユーザモディファイアキーの定義 keymap.defineModifier( 235, "User0" )
上記の例では235のキーコードにU0のモディファイアキーを設定している。U0はUser0の短縮表記。ただし、Windows専用。短縮表記は使わない方がいい。
Policy
- スペースの左右のキー (Windows=変換/無変換、Mac=英数/かな) をモディファイアキーに追加。
- LSS/RSSと表記 (Left Side Space/Right Side Space)
- Ctrl/Cmd=CCと表記。
- SpaceはCtrlのワンショットモディファイア。
- LSS=Shift、RSS=U0、Space=CC。
hjklのVimのキー移動を定義したいから、RSSはU0。これは確定。
U0の操作にShiftを組み合わせたいことがあるからLSS=Shiftがいい。
キーの違いで、Windows/Macで共有と独立部分がある?