Windowsでキーマップを変更する
Windowsでキーマップを変更する
- Windows PC でキーマップを変更するためのメモ
- PC は Windows 10 Home
- 本ページではレジストリエディタを用いたレジストリ設定を記載しています
- 本ページの内容を参照される際にはすべて自己責任にて実施してください
要件 ( やりたかったこと )
- キーボード上のキーマップを変更 (
CapsLock
を 追加のCtrl
として使う みたいな設定を行う方法のメモ ) - 追加のソフトウェアは使用しない ( OSの機能のみで実現したい )
変更方法
レジストリの設定を作成して変更する
レジストリの変更方法
準備
レジストリの変更を行うには以下の2つの方法がある ※ 変更を反映させるためには再起動が必要
- regedit.exe ( レジストリエディタ ) でて入力する
- regファイルを作成して読み込ませる ( regedit.exe でインポートする )
どちらでやってもそんなに作業量は変わらなさそうだが、今回は regedit で直接入力したほうが楽そうなのでその方法をメモしておく ( reg ファイルは regedit から Export できるので、複数の PC に設定する場合には Export と Inport で対応するのが楽そう )
regedit での設定ファイルの作成
regedit.exe を開き、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
に Scancode Map
を作成
設定内容の作成
設定内容は以下の内容で構成されるらしい
Start offset (in bytes) | Size (in bytes) | Data |
---|---|---|
0 | 4 | Header: Version Information |
4 | 4 | Header: Flags |
8 | 4 | Header: Number of Mappings |
12 | 4 | Individual Mapping |
... | ... | ... |
Last 4 bytes | 4 | Null Terminator (0x00000000) |
※ Microsoft社ドキュメント Hardware Dev Center Keyboard and mouse class drivers より引用
説明や内容を見た感じ各値の意味は以下みたいな感じ また、設定値はリトルエンディアンで記載する
- Version Information
- 4byte の all0
- Flags
- 4byte の all0
- Number of Mappings
- エントリ数 ( nullエントリを含む )
- 設定内容 ( キーマップの変更 ) のエントリ数 + 1 ( nullエントリ )
- Individual Mapping
- 設定内容
- Null Terminator
- 4byte の all0
サンプルなどは Hardware Dev Center Keyboard and mouse class drivers にあるので設定内容全体への詳細記法は省略する
Individual Mapping に関して
この項目は以下の手順で作成していけばいい
- キーボード上のキーを何と入力したいかを決める
- 今回は既出リンク内のサンプルにもある
CAPS LOCK --> Left CTRL key
で記載する
- 今回は既出リンク内のサンプルにもある
- これをキーコードに直す
CAPS LOCK
は0x3A
Left CTRL key
は0x1D
- 変更したい内容をキーコードで表すと
0x3A --> 0x1D
- 上記のキーコードでは
1byte + 1byte = 2byte
なので各種設定値の頭に all0 の 1byte を付与して Individual Mapping のバイト数 ( 4byte ) に合わせる0x003A --> 0x001D
(2byte + 2byte = 4byte
)- 今回は変更したいキーのコードが 1byte だったので頭に0埋めしたが、もともと2byteの場合は0埋め不要
- 上記より作られた値は
0x003A001D
- これをリトルエンディアンにする
- 設定値は
0x1D003A00
となる
- 設定値は
- この値が Individual Mapping ( レジストリエディタに入力するときは
0x
無しで1D003A00
と入力できた )
キーコードに関しては Microsoft Download Center
からdoc形式のドキュメントでダウンロードできる
( 検索したところダウンロードリンクしか見つからなかったが、本記事執筆時現在以下のキーワードで検索すると上位に出てきた )
Keyboard Scan Code Specification - Microsoft Download Center
参考
- Hardware Dev Center Keyboard and mouse class drivers
- Keyboard Scan Code Specification - Microsoft Download Center
macOSでbashをアップデートする
概要
- macOSのbashのバージョンは3.x系から更新されていない ( macOS 10.15.5 )
- macOSのログインシェルにbashを使用し続けると、以下のようなコメントが表示される
- このコメントを消すには
BASH_SILENCE_DEPRECATION_WARNING
に1
を設定すればいい
- このコメントを消すには
The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050.
- コメントを消すことでも今まで通りにつかそうだが、バージョンが古いことなどもあるので、新しいバージョンを使用する
必要なもの
- c言語をビルドすることのできる環境
ソースコードの取得ととインストール
GNUのページ のダウンロード欄からリンクに飛び、バージョンを選んでダウンロードする
tar.gz のファイルを入手できるので解凍する
$ tar zxvf bash-5.0.tar.gz
解凍されたディレクトリに移動してビルドしてテスト、インストールする
$ ./configure $ make $ make tests $ make install
installが完了すると以下のコマンドでバージョンを確認できるようになる
$ /usr/local/bin/bash --version // インストールしたバージョンが表示される
デフォルトシェルの変更
/etc/shells
にこのpathを追加する
sudo sh -c "echo '/usr/local/bin/bash' >> /etc/shells"
デフォルトのログインシェルを変更する
$ chsh -s /usr/local/bin/bash
参考記事
https://qiita.com/key-amb/items/d053ed80590697435650 https://qiita.com/bo-san/items/1b920793aff499667011
Raspberry Pi でPWM信号を使って5Vファンを制御する
Raspberry Pi でPWM信号を使って5Vファンを制御する
※ 自作PCで使うような4pinファンを動かすのではなく、2pin(VDDとGND) ファンを制御するという内容です。
Raspberry Pi でPWM信号使ってLEDの明るさを変更する でPWM信号を使ってLEDを点灯させた。 Raspberry Pi のPWM出力電圧(3.3V) では5Vファンの入力電圧(5V) には届かないため、GPIOの5V電源をトランジスタで制御し、PWM信号として使用した。
部品類
- 5V DC-FAN (D02X-05TS1 02)
- トランジスタ (2SC1815GR)
- 抵抗 (1kΩ)
回路図と配線
PWMを出力するコードを書く
ほとんどLEDの時と同じ
差分としては、LEDの時は10%の出力と100%を繰り返した ( for i in [10, 100, 10, 100]:
) が、
今回使用したファンは10%の出力では始動電力に届かなかったようで動き始めなかったため、20%に変更した ( for i in [20, 100, 20, 100]:
) 。
import RPi.GPIO as GPIO import time def main(): frequency = 200 repeat_count = 600 gpio_pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(gpio_pin, GPIO.OUT) for i in [20, 100, 20, 100]: if 0 == i: on_time = 0 off_time = (1 / frequency) else: on_time = (1 / frequency) * (i / 100) off_time = (1 / frequency) * (1 - (i / 100)) for rc in range(repeat_count): GPIO.output(gpio_pin, True) time.sleep(on_time) GPIO.output(gpio_pin, False) time.sleep(off_time) GPIO.cleanup() if __name__ == '__main__': main()
Raspberry Pi では "vcgencmd" というコマンドでCPU温度などの情報を取得することが可能なようなので、 ○○°Cを超えたらファンの出力を××%に などできそう。
参考記事
Raspberry Pi でPWM信号使ってLEDの明るさを変更する ( software pwm )
Raspberry Pi でPWM信号使ってLEDの明るさを変更する
※ software pwm
PWM信号
周期的にオンとオフが切り替わる信号で、1波長の中でのオンの時間とオフの時間の割合を調整するで、 一連の流れの中での出力を変更できる信号
Raspberry Pi とLEDを接続する
今回はたまたま家にあった赤色LEDをつかった。 電圧は Raspberry Pi からのPWMの3.3Vで足りるため、アノードにそのまま接続。 ( 今回は18番のPINを使用 )
PWMを出力するコードを書く
- 以下のコードでは、10%の出力と100%の出力を約3秒ごとに2回繰り返す
import RPi.GPIO as GPIO import time def main(): frequency = 200 repeat_count = 600 gpio_pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(gpio_pin, GPIO.OUT) for i in [10, 100, 10, 100]: if 0 == i: on_time = 0 off_time = (1 / frequency) else: on_time = (1 / frequency) * (i / 100) off_time = (1 / frequency) * (1 - (i / 100)) for rc in range(repeat_count): GPIO.output(gpio_pin, True) time.sleep(on_time) GPIO.output(gpio_pin, False) time.sleep(off_time) GPIO.cleanup() if __name__ == '__main__': main()
Raspberry Pi の起動メディアを作成する (Raspbian のイメージを microSD に書き込む)
後日追記
現在は Raspberry Pi Imager
なる道具が公式で公開されていてそれを使うのがよさそう
www.raspberrypi.org
Raspberry Pi の起動メディアを作成する
一言で言うと
ただのメモ
環境
Linux か macOS (macOSでのコマンドを貼っているので、Linuxの場合は適宜読み替える必要あり)
作業内容
Raspbianのイメージをダウンロードする
https://www.raspberrypi.org/downloads/raspbian/
ハッシュの確認と解凍
この記事を書いた時には SHA-256 だったので、以下のコマンドで同一の結果になるか確認しておく 問題なければ解凍
$ shasum -a 256 [ファイル名(zip)] $ unzip [ファイル名(zip)]
書き込みなど
// ディスク名を探す (Raspbianを書き込むmicroSDを探す) $ diskutil list // アンマウント $ diskutil unmountDisk /dev/disk3 // フォーマット $ diskutil erasedisk FAT32 BOOT /dev/disk3 // フォーマットが終わると自動でマウントされたので、再度アンマウント $ diskutil list $ diskutil unmountDisk /dev/disk3 // 書き込み // macOSでddしてるので、rdiskを使用している sudo dd bs=1m if=[Raspbianのイメージ (img) へのPATH] of=/dev/rdisk3