setxkbmapをしてもたまに意図せず元に戻ってしまうときの対処法
setxkbmapでキーボードマップ(キーボード配列)を変更しても、ふとしたことで元に戻ってしまうことがある。
例えば、スリープ時。例えば、ターミナルを別ウィンドウに切り替えた時。などなど。
その対処法をここにまとめておく。
この記事のmyswapを
partial modifier_keys
xkb_symbols "swapkeys" {
};
にすることで、元に戻らなくなった。
キーボード配列 変更 キーボードマップ 設定 xkb (ubuntu)
特定のキーと特定のキーを交換させたい、
と思うことがたまにあるので、
その方法をまとめてみました。
# mkdir -p ~/.xkb/keymap ~/.xkb/symbols
# setxkbmap -print > ~/.xkb/keymap/mykbd
# vim ~/.xkb/symbols/myswap
以下をコピペ
partial modifier_keys
xkb_symbols "swapkeys" {
replace key <ESC> {[ A ] };
};
ここでの<ESC>をキーコード、Aをキーシンボルと呼ぶことにする
#vim ~/.xkb/keymap/mykbd
xkb_symbols { include "pc+us+inet(evdev)" };
を
xkb_symbols { include "pc+us+inet(evdev)+myswap(swapkeys)" };
に変更*us(dvorak)のようにusの後にかっこでくくってsetxbkmapの引数を書けばdvorak配列に固定される。
#vim ~/.bashrc
以下を追記
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
# source ~/.bashrc
これで、ESCボタンを押すことで大文字のAが出力されるようになる
これから希望のキーボードマップにするために
myswapのreplaceの行を適宜変更していく
特定のキーコード、キーシンボルを特定する方法
#xev
適宜キーを押下
keycodeに書いてある数字と、keysymの右の右のキー名(かっこの右端の文字列)を控える
この数字がキーコード数値、キー名がキーシンボルである。
Ctrl+Cで終了xev終了
# cat /usr/share/X11/xkb/keycodes/evdev | grep [キーコード数値]
そのキーコード数値と一致するキーコードを控える(<と>で囲まれているもの)
# vim ~/.xkb/symbols/myswap
replaceの行のキーコードとキーシンボルを書き換える
(例)
partial modifier_keys
xkb_symbols "swapkeys" {
replace key <LFSH> {[ Caps_Lock ] };
replace key <CAPS> {[ Shift_L ] };
};
こう書けば左SHIFTとCapsLockが交換される。
terminalのショートカットキー
カーソルの移動系
Ctrl + b : 後退
Ctrl + f : 前進
Ctrl + a : 行頭へ移動
Ctrl + e : 行末へ移動
削除系
Ctrl + h : BactSpace
Ctrl + d : Delete
切り取り、貼り付け
Ctrl + u : 行頭まで切り取り
Ctrl + k : 行末まで切り取り
Ctrl + y : 切り取った内容を挿入
履歴系
Ctrl + p : 一つ前のコマンド履歴
Ctrl + n : 一つ後のコマンド履歴
Ctrl + r : 履歴検索
履歴検索の操作
入力 : 入力した値を含む直近のコマンドを表示
Ctrl + r : 一つ前へ
Enter : 実行
Ctrl + g , Esc : コマンドラインへ戻る
usermod: user * is currently used by process * / Ubuntu usermod エラー
Ubuntuでusermod -l 新ユーザ名 旧ユーザ名 をしてユーザ名を変更しようとしたときに、usermod: user * is currently used by process * というエラーが出て変更できなかったので、その時の対処法を。
# adduser hoge
# gpasswd -a hoge sudo
# reboot
新しく作成したhogeユーザ(名前は何でもよい)でログインしなおす
$ sudo bash
# usermod -l 新ユーザ名 旧ユーザ名
ここでエラーが出る
usermod: user 旧ユーザ名 is currently used by process 1234(4桁のpid(不定))
# kill -3 1234
出てきたpidのプロセスをkillコマンドで止めてあげる
もう一度usermod
>usermod -l 新ユーザ名 旧ユーザ名
またエラーが出る
usermod: user 旧ユーザ名 is currently used by process 5678(4桁のpid(不定))
# kill -3 5678
再びkill、そして再びusermod
usermod -l 新ユーザ名 旧ユーザ名
またエラー。またkill。またusermod。またエラー。またkill。またusermod...を繰り返す。
成功したら、以下の記事を参考に変更するべきところを変更して終了。
Ubuntu ユーザ名 変更
# usermod -l 新ユーザー名 旧ユーザー名
(lはえるです)
usermod: user * is currently used by process *
というエラーが出てしまった場合は
この記事を参考に対処してください。
無事usermodに成功した場合には、
ユーザ名変更に伴って変更すべきところがあるのでそこも変更しましょう。
# cd /home
# mv 旧ユーザ名/ 新ユーザ名/
# cp -a /etc/passwd /etc/passwd.bk
一応バックアップを作成しておく。
# vim /etc/passwd
旧ユーザ名のところを全て新ユーザ名に置換。
一番下を
新ユーザ名:x:1000:1000::/home/新ユーザ名:/bin/bash
にする(1000のところは不定(自由))
# cp -a /etc/group /etc/group.bk
一応バックアップを作成しておく。
# vim /etc/group
旧ユーザ名をすべて新ユーザ名に置換。
終了。
vmware ゲストからホストへのファイル転送
ホストのcmdでbashを開き
scp (-r) [remort_username]@[remort_IP]:[remort_filename] [local_path]