引用(Happy Hacking Keyboard ホームページ)
RealForce? > リベルタッチ > Buffalo ゲーミングキーボード > Magestouch
種類 | 価格 | 打鍵感 | 静音性 | 備考 |
メンブレン | ◎ | △ | ◯ | 打鍵感がいまいちの場合が多い |
パンタグラフ | ◎ | △ | △ | 薄型のためノートPCなどに多く採用される |
メカニカル | △ | ◎ | ☓ | 音がうるさい |
静電容量無接点方式 | ☓ | ◎ | ◎ | 価格が高い(2万円位)。打鍵感は最高 |
正直、あまり書きたくなかったのですが(面倒なので(笑)、これを書かないとメカニカルキーボードは語れないと思い、備忘録も含めて書こうと思いました。
レジストリを変更するなどPCの再起動が必要なツール
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layout
フォーマット
DWORD ヘッダ:バージョン情報 (All 0) DWORD ヘッダ:フラグ (All 0) DWORD マッピングとターミネータのデータ長 = 変えたいキーボード・キーの数+1 DWORD マッピング = 元のスキャンコード(1 byte) と 新しく割り当てたいスキャンコード(1 byte) ・・・ (マッピングの繰り返し) DWORD ターミネータ (All 0)
Scancode Map例
変更したいキーボード配列の数が4 データ長は 4+1=5 マッピング例 マッピング1 CapsLock (0x3A) ⇒ 左Ctrl (0x1D) マッピング2 左Ctrl (0x1D) ⇒ CapsLock (0x3A) マッピング3 全角/半角 (0x29) ⇒ 無変換 (0x7B) マッピング4 無変換 (0x7B) ⇒ 全角/半角 (0x29)) レジストリにセットする値 ヘッダ 0000 0000 ヘッダ 0000 0000 データ長 0500 0000 マッピング1 1D00 3A00 マッピング2 3A00 1D00 マッピング3 7B00 2900 マッピング4 2900 7B00 ターミネータ 0000 0000
0000 00 00 00 00 00 00 00 00 0008 05 00 00 00 1D 00 3A 00 0010 3A 00 1D 00 7B 00 29 00 0018 29 00 7B 00 00 00 00 00
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layout
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,3a,00,1d,00,\ 36,00,79,00,00,00,00,00
;無変換 + j -> 左矢印キー sc07b & j:: send,{Blind}{Left} return
;無変換 + j -> 左矢印キー sc07b & j:: send,{Left} return挙動
キー入力:「Shiftキー」 + 「無変換」 + 「j」 変換されたキー出力:Shiftキー(Down) -> 無変換(Down) -> j(Down) -> Shiftキー(Up) -> 左矢印(Down) -> 左矢印(Up) -> Shift(Down) -> j(Up) -> 無変換(Up) -> Shift(Up)変換されたキー(矢印キー)が入力される前に修飾キーがアップされる。よって、文字列などは選択で出来ない。
;無変換 + j -> 左矢印キー sc07b & j:: send,{Blind}{Left} return挙動
キー入力:「Shiftキー」 + 「無変換」 + 「j」 変換されたキー出力:Shiftキー(Down) -> 無変換(Down) -> j(Down) -> 左矢印(Down) -> 左矢印(Up) -> j(Up) -> 無変換(Up) -> Shift(Up)シフト、無変換、jと綺麗に押しっぱなしになっているので、文字列などを選択できる。
;OneNoteへ入力する時だけに適用される設定 #IfWinActive, ahk_class Framework::CFrame sc07b & u::dllcall("keybd_event", int, 0x26, int, 0, int, 1, int, 0) ;Up sc07b & m::dllcall("keybd_event", int, 0x28, int, 0, int, 1, int, 0) ;Down #IfWinActive
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. #Warn ; Enable warnings to assist with detecting common errors. ;sendMode Input ; Recommended for new scripts due to its superior speed and reliability. ;SendMode Play ; Recommended for new scripts due to its superior speed and reliability. SendMode Event ; Recommended for new scripts due to its superior speed and reliability. ;SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. ;#InstallKeybdHook on ;#InstallKeybdHook off ;#UseHook on ;#UseHook off #HotkeyModifierTimeout 200 ;無変換 sc07b & j:: send,{Blind}{Left} send,{sc07b Up} return sc07b & k:: send,{Blind}{Right} send,{sc07b Up} return sc07b & h:: send,{Blind}{BackSpace} send,{sc07b Up} return sc07b & u:: send,{Blind}{SC148} send,{sc07b Up} return sc07b & m:: send,{Blind}{Down} send,{sc07b Up} return sc07b & i:: send,{Blind}{Home} send,{sc07b Up} return sc07b & o:: send,{Blind}{End} send,{sc07b Up} return sc07b & p:: send,{Blind}{Insert} send,{sc07b Up} return sc07b & ,:: send,{Blind}{PgUp} send,{sc07b Up} return sc07b & .:: send,{Blind}{PgDn} send,{sc07b Up} return sc07b & y:: send,{Blind}{Delete} send,{sc07b Up} return sc07b & n:: send,{Blind}{Enter} send,{sc07b Up} return ;OneNoteへ入力する時だけに適用される設定 #IfWinActive, ahk_class Framework::CFrame sc07b & u::dllcall("keybd_event", int, 0x26, int, 0, int, 1, int, 0) ;Up sc07b & m::dllcall("keybd_event", int, 0x28, int, 0, int, 1, int, 0) ;Down #IfWinActive ;変換キー ;sc079 & j:: ; send,{Blind}{Home} ; return ;sc079 & k:: ; send,{Blind}{End} ; return ;かな(不安定) ;sc070 & j:: ; send,{Blind}{Home} ; return ;sc070 & k:: ; send,{Blind}{End} ; return ;^j::Home ;^k::End ;sc07b up:: ; send,{LCtrl up} ; return ;sc07b:: ; send,{LCtrl down} ; return ; ;+sc07b:: ; send,{CapsLock} ; return ;#HotkeyModifierTimeout 200 ;SetKeyDelay, 200 ;#InstallKeybdHook off ;#UseHook off ;#HotkeyModifierTimeout 200 ;SetKeyDelay, 200 ;Capslock::Ctrl ;sc03a:: ; Send {Blind}{sc03a} ; Send {Blind}{sc03a Up}{LCtrl DownTemp} ; Send {Lctrl Up}{LCtrl DownTemp} ; Send {LCtrl DownTemp}{Lctrl Up} ; Send {LCtrl} ; Send {Lctrl Up} ; return ;sc03a:: ; Send {Blind}{sc03a} ; Send {Blind}{sc03a Up}{LCtrl DownTemp} ; return ;sc03a down:: ; send,{LCtrl down} ; send,{LCtrl up} ; return
xmodmap ~/.xmodmap
xev
vi .xmodmap
以下を追加(! はコメントアウト)!keycode 49 = Zenkaku_Hankaku Kanji Zenkaku_Hankaku Kanji keycode 49 = Super_L NoSymbol Super_L !keycode 133 = Super_L NoSymbol Super_L keycode 133 = Zenkaku_Hankaku Kanji Zenkaku_Hankaku Kanji
clear Lock clear Control !clear mod5 remove Control = Mode_switch !remove mod1 !remove mod5 = Mode_switch !Muhenkan !左コントロール -> CapsLock keycode 37 = Caps_Lock !英数 -> Control_L keycode 66 = Control_L !無変換 -> Mode_switch keycode 102 = Mode_switch !無変換 + j -> 左矢印 keycode 44 = j J Left Left !無変換 + k -> 右矢印 keycode 45 = k K Right Right !無変換 + u -> 上矢印 keycode 30 = u U Up Up !無変換 + m -> 下矢印 keycode 58 = m M Down Down !無変換 + i -> Home keycode 31 = i I Home Home !無変換 + o -> End keycode 32 = o O End End !無変換 + , -> PageUp keycode 59 = comma less Prior Prior !無変換 + . -> PageDown keycode 60 = period greater Next Next !無変換 + h -> BackSpace keycode 43 = h H BackSpace BackSpace !無変換 + y -> Delete keycode 29 = y Y Delete Delete !無変換 + n -> Enter keycode 57 = n N Return Return add Control = Control_L Control_R !add mod1 = Alt_L !add mod5 = Mode_switch
XKBOPTIONS="ctrl:nocaps"
# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="jp" XKBVARIANT="" #XKBOPTIONS="" XKBOPTIONS="ctrl:nocaps" BACKSPACE="guess"
1.「KDE システム設定」 -> 「入力デバイス」
2.「キーボード」 -> 「詳細」
3.「ctrlキーの位置」 -> 「Ctrl と Caps Lock を入れ替える」にチェック
4.Ctrl + Space で IME On,Off
- Linux
- 「入力メソッドの設定」で Ctrl + Space でオン・オフを設定
xmodmap が少し古い技術なって、XKBの方が望ましいとのことなので、この際調べてみました(^^)
~/.xkb/
.xkb ├── compat │ └── mycompat ├── keymap │ └── mykbd ├── symbols │ └── mysymbols └── types └── mytypes
mkdir -p ~/.xkb/compat mkdir -p ~/.xkb/keymap mkdir -p ~/.xkb/symbols mkdir -p ~/.xkb/types
xkb_compatibility "muhenkan" { interpret Muhenkan { action = SetMods(modifiers=Mod5); }; };
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete+mytypes(muhenkan)" }; xkb_compat { include "complete+japan+mycompat(muhenkan)" }; xkb_symbols { include "pc+jp+inet(evdev)+mysymbols(muhenkankeys)+ctrl(swapcaps)" }; xkb_geometry { include "pc(pc105)" }; };
xkb_symbols "muhenkankeys" { key.type = "MUHENKAN"; // key <AE01> { [ 1, exclam ] }; // key <AE02> { [ 2, quotedbl ] }; // key <AE03> { [ 3, numbersign ] }; // key <AE04> { [ 4, dollar ] }; // key <AE05> { [ 5, percent ] }; // key <AE06> { [ 6, ampersand ] }; // key <AE07> { [ 7, apostrophe ] }; // key <AE08> { [ 8, parenleft ] }; // key <AE09> { [ 9, parenright ] }; // key <AE11> { [ minus, equal ] }; // key <AE12> { [ asciicircum, asciitilde] }; // key <AD01> { [ q, Q ] }; // key <AD02> { [ w, W ] }; // key <AD03> { [ e, E, Escape ] }; // key <AD04> { [ r, R ] }; // key <AD05> { [ t, T ] }; // key <AD06> { [ y, Y ] }; key <AD06> { [ y, Y, Delete ] }; // key <AD07> { [ u, U ] }; key <AD07> { [ u, U, Up ] }; key <AD08> { [ i, I, Home ] }; // key <AD09> { [ o, O ] }; key <AD09> { [ o, O, End ] }; // key <AD10> { [ p, P, Up ] }; // key <AD11> { [ at, grave ] }; // key <AD12> { [ bracketleft, braceleft ] }; // key <CAPS> { [ Eisu_toggle, Caps_Lock ] }; // key <AC01> { [ a, A ] }; // key <AC02> { [ s, S ] }; // key <AC03> { [ d, D ] }; // key <AC04> { [ f, F ] }; // key <AC05> { [ g, G ] }; key <AC06> { [ h, H, BackSpace] }; key <AC07> { [ j, J, Left ] }; key <AC08> { [ k, K, Right ] }; // key <AC09> { [ l, L, Right ] }; // key <AC10> { [ semicolon, plus, End ] }; // key <AC11> { [ colon, asterisk, Delete ] }; // key <AB01> { [ z, Z, Return ] }; // key <AB02> { [ x, X, BackSpace ] }; // key <AB03> { [ c, C, Delete ] }; // key <AB04> { [ v, V ] }; // key <AB05> { [ b, B ] }; // key <AB06> { [ n, N, Down ] }; key <AB06> { [ n, N, Return ] }; // key <AB07> { [ m, M, Return ] }; key <AB07> { [ m, M, Down ] }; key <AB08> { [ comma, less, Prior ] }; key <AB09> { [ period, greater, Next ] }; // key <AB10> { [ slash, question ] }; // key <AB11> { [ backslash, underscore] }; key <HENK> { [ Shift_L, Shift_L] }; };
xkb_types "muhenkan" { type "MUHENKAN" { modifiers = Shift+Control+Mod5; map[Shift] = Level2; map[Mod5] = Level3; map[Mod5+Control] = Level3; map[Mod5+Shift] = Level3; map[Mod5+Shift+Control] = Level3; preserve[Mod5+Control] = Control; preserve[Mod5+Shift] = Shift; preserve[Mod5+Shift+Control] = Shift+Control; level_name[Level1] = "Base"; level_name[Level2] = "Shift"; level_name[Level3] = "Muhenkan"; }; };
dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:swapcaps', 'caps:ctrl_modifier','ctrl:nocaps']"
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
/usr/share/X11/xkb/symbols/jp
setxkbmap -print
~/.config/Code/User/settings.json
"keyboard.dispatch": "keyCode"
{ "workbench.startupEditor": "newUntitledFile", "git.ignoreLegacyWarning": true, "phpGettersSetters.templatesDir": "/home/hogehoge/.config/Code/User/phpGettersSetters", "explorer.confirmDelete": false, "keyboard.dispatch": "keyCode", }
メンブレンキーボードで安価(2000円位)で、比較的軽いキーと
打鍵感が良い、また音が静かなのが特徴。
この値段でこのクオリティーは凄い。
お店でたまたま展示品があり、キータッチに惹かれ購入しました。
性能は、キーの重さ、打鍵感、静かさなど実用十分であり、
自分は家と会社の2台体制で2年位使いました。
特に不満は無いのですが、会社で Happy Hacking Keyboard Lite2 が
発掘されて以来、キーボードについて調べているうちに道を踏み外しました(^^;)
今でもこのキーボードの評価は変わっておらず、良いキーボードと思います。
ただし、RealForce? のような2万円のキーボードを使ってみると少し粗が目立ちますが、
値段ほどの差はもちろんありません。このキーボードが2千円なら
RealForce? は3千円くらいでもいいと思います(性能差1.5倍程度と感じます)
※以下は amazon リンク
ジャンル的には「変態配列キーボード」に分類されると思う
以下3つのうちどれかに当てはまる場合は厳しい。
しかしながら、通常キーボードで、Ctrl と CapsLock? を切り替えるのは
作業効率的に有効かもしれない。
-> リモートデスクトップ先で CpasLock?(英数) を Ctrl キーとして扱う方法が無い。
これが Happy Hacking Keyboard を使う上で克服できない致命的な事象でした。
リモートデスクトップ | PC画面 | |
USBキーボード | Ctrl と CapsLock? の入れ替えが可能 | Ctrl と CapsLock? の入れ替えが可能 |
ノートPCキーボード | Ctrl と CapsLock? の入れ替えが可能 | Ctrl と CapsLock? の入れ替えが可能 |
メカニカルキーボードの老舗、Filco が出している Majestouch。
種類はメカニカルで Cherry社製のスイッチ(茶軸)を採用。
値段は1万円くらいでした。
音がうるさすぎて会社では使えませんでした。
このキーボードでタイピングしているとみんなが振り返るレベルです。
家でも同居人が居る場合は絶対うるさいです。
1キーを入力するごとに硬いプラスチック同士がぶつかる甲高い音が響きます。
メカニカルキーボード、打鍵感と反応は最高なのですが、
この音が致命的にうるさいので、家専用で会社使用は出来ませんでした。。。
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. ;SendMode event ; Recommended for new scripts due to its superior speed and reliability. SendMode input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. #InstallKeybdHook #UseHook ;「全角半角」キー(キーボード表記)が押された時、200msの間、同時に押されたキーを記憶し送る。 ;なぜか「全角半角」(キーボード表記)が押された時、先に Up が来て、あとに Down が来るので ;下記で入れ替えてる。 SetKeyDelay, 200 sc029 up:: sendEvent,{blind}{LWin down} return sc029:: sendEvent,{blind}{LWin up} return ;変換キー+j で BackSpace sc079 & j:: sendEvent,{BackSpace} return ;変換キー+k で Delete sc079 & k:: sendEvent,{Delete} return ;変換キー ;sc079 & j:: ; send,{Blind}{Home} ; return ;sc079 & k:: ; send,{Blind}{End} ; return ;かな(不安定) ;sc070 & j:: ; send,{Blind}{Home} ; return ;sc070 & k:: ; send,{Blind}{End} ; return ;^j::Home ;^k::End ;sc07b up:: ; send,{LCtrl up} ; return ;sc07b:: ; send,{LCtrl down} ; return ; ;+sc07b:: ; send,{CapsLock} ; return ;#HotkeyModifierTimeout 200 ;SetKeyDelay, 200 ;#InstallKeybdHook off ;#UseHook off ;#HotkeyModifierTimeout 200 ;SetKeyDelay, 200 ;Capslock::Ctrl ;sc03a:: ; Send {Blind}{sc03a} ; Send {Blind}{sc03a Up}{LCtrl DownTemp} ; Send {Lctrl Up}{LCtrl DownTemp} ; Send {LCtrl DownTemp}{Lctrl Up} ; Send {LCtrl} ; Send {Lctrl Up} ; return ;sc03a:: ; Send {Blind}{sc03a} ; Send {Blind}{sc03a Up}{LCtrl DownTemp} ; return ;sc03a down:: ; send,{LCtrl down} ; send,{LCtrl up} ; return