ubuntuのキーボード配列を日本語・英語に変更する
背景
最近英語配列のキーボードを買ったので、英語配列に戻そうとしたところ、意外と日本語から英語配列に戻す記事がなく辛かった。
環境
ubuntu18,04.2 LTS
操作
sudo dpkg-reconfigure keyboard-configuration
を打つと画面が出るので、いい感じに選択する。設定後は再起動を忘れずに。
どれを選べばいいのか
日本語
Generic 105-key PC (Intl)
japanese
japanese
英語
Generic 104-key PC (Intl)
english(us)
english(us)
まとめ
分かりにくい。いつも混乱する。
おまけ(追記:2019/07/15)
M5Stack grayの libraries を眺める
きっかけ
m5stack 無線通信関係のモジュールの使い方が公式サイトのdocumentから探しても中々見つからない。
そこで、ArduinoData/packages/esp32/hardware/esp32/1.0.2/libraries
の中身を読み漁って、雑にまとめることにする。
m5stackが出来ることの整理に役立ちそう。
続きを読むM5Stack grayを眺める
m5stackという面白そうな製品を見かけたので、勢いで買いました。
m5stackとは?
雑に表現すると、ボタンやディスプレイ・バッテリー・TFカードリーダ*1等が載ったArduino(ハードウェアはArduinoとは異なる)。 Arduino IDEを経由して、プログラミングしたり、書き込んだり出来る。
m5stackは、coreとmoduleがある。 coreは2つに分割出来て、そのcoreの間にmoduleを積み重ねることで、レゴの端子・無線モジュール・イヤホンジャック等の機能を簡単に拡張することができる。 moduleを買わなくても、GPIOやi2cは用意されている。
arduino はイタリアですが、m5stackは中国。
m5stack gray
GREY Development Kit ESP32 Mpu9250 9Axies Motion Sensorm5stack.com
m5stackに加速度、ジャイロ、磁気センサーを載せたもの。
ボタン3つしか無いし、入力デバイスは多い方がアイデアは膨らみますよね。
*1:SDカードリーダ互換
0桁埋めした文字列を返す関数
/** * 0埋めしたdigit桁の文字列を返す。 * @param {number} n 非負整数 * @param {number} digit 正整数 */ function zeroPadding(n, digit) { return "0".repeat(digit).concat(n).slice(-digit); }
他に無いらしい。時刻を指定したフォーマットで文字列に変換するメソッドが欲しかっただけなのに。
function dateToFormat(date, format = "y/m/d H:M:S") { let txt = ""; for (let chr of format) { if (chr === 'y') txt = txt.concat(zeroPadding(date.getFullYear(), 4)); else if (chr === 'm') txt = txt.concat(zeroPadding(date.getMonth(), 2)); else if (chr === 'd') txt = txt.concat(zeroPadding(date.getDate(), 2)); else if (chr === 'H') txt = txt.concat(zeroPadding(date.getHours(), 2)); else if (chr === 'M') txt = txt.concat(zeroPadding(date.getMinutes(), 2)); else if (chr === 'S') txt = txt.concat(zeroPadding(date.getSeconds(), 2)); else txt = txt.concat(chr); } return txt; }
N 秒間だけ処理を実行する c++ のコード
処理を実行するのは、メインスレッドでない別のスレッド。
メインスレッドは、sleep_for
で待機して、時間になったら atomic_bool
で通知する。
#include "bits/stdc++.h" using namespace std; int main(){ atomic_bool halt(false); long long counter = 0; thread t([&halt, &counter](){ while (!halt){ ++counter; } }); this_thread::sleep_for(chrono::seconds(1)); halt = true; t.join(); cout << "counter: " << counter << endl; return 0; }
若干遠回りの方法だけれども、むしろこっちの方が有利な点もあるかと思う。
std::chrono::system_clock
がボトルネックになる場合は使えるかも。