diff --git a/.xkb/symbols/chromebook b/.xkb/symbols/chromebook deleted file mode 100644 index 34585ce..0000000 --- a/.xkb/symbols/chromebook +++ /dev/null @@ -1,5 +0,0 @@ -partial modifier_keys -xkb_symbols "swap_lalt_lctrl" { - replace key { [ Control_L, Control_L ] }; - replace key { [ Alt_L, Meta_L ] }; -}; diff --git a/.xkb/symbols/mac_gui b/.xkb/symbols/mac_gui deleted file mode 100644 index 8c19c53..0000000 --- a/.xkb/symbols/mac_gui +++ /dev/null @@ -1,781 +0,0 @@ -// Template -// -// ONE_LEVEL_CTRL -// Base -// Shift -// Alt -// Shift Alt -// Control -// Shift Control -// Super -// Shift Super -// Control Alt -// Super Control -// Super Alt -// Super Control Alt -// -// replace key { -// type[Group1]= "ONE_LEVEL_CTRL", -// symbols[Group1]= [ -// Base, -// Alt, -// Shift Alt, -// Control, -// Shift Control, -// Super, -// Shift Super, -// Control Alt, -// Super Control", -// Super Alt, -// Super Control Alt -// ], -// actions[Group1]= [ -// NoAction(), -// RedirectKey(key=,modifiers=NewMod,clearmods=Mod1), -// RedirectKey(key=,modifiers=NewMod,clearmods=Mod1+Shift), -// RedirectKey(key=,modifiers=NewMod,clearmods=Control), -// RedirectKey(key=,modifiers=NewMod,clearmods=Control+Shift), -// RedirectKey(key=,modifiers=NewMod,clearmods=Super), -// RedirectKey(key=,modifiers=NewMod,clearmods=Super+Shift), -// RedirectKey(key=,modifiers=NewMod,clearmods=Control+Alt), -// RedirectKey(key=,modifiers=NewMod,clearmods=Super+Control), -// RedirectKey(key=,modifiers=NewMod,clearmods=Super+Mod1), -// RedirectKey(key=,modifiers=NewMod,clearmods=Control+Mod1) -// ] -// }; -hidden partial modifier_keys -xkb_symbols "swapescape" { - key { [ Escape ] }; - key { [ Caps_Lock ] }; -}; -hidden partial modifier_keys -xkb_symbols "caps_escape" { - key { [ Escape ] }; -}; -hidden partial modifier_keys -xkb_symbols "caps_shiftlock" { - replace key { [ Shift_Lock ] }; - modifier_map Shift { Shift_Lock }; -}; -hidden partial modifier_keys -xkb_symbols "caps_none" { - key { [ VoidSymbol ] }; -}; -default partial xkb_symbols "mac_levelssym" { - // // Minimize window Cmd + H = Alt + F9 - // // 2 caveats - // // 1 Cmd + H may not pass through on VMs - // // 2 may cause conflicts with apps - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ - // h, - // H, - // h, - // H, - // h - // ], - // actions[Group1]= [ - // NoAction(), - // NoAction(), - // NoAction(), - // NoAction(), - // RedirectKey(key=,modifiers=Super,clearmods=Control) - // ] - // }; - // Maximize Window Ctrl + Cmd + F = Alt+F10 - // Also maps Option + Cmd + F to Control+H for Replace - Sublime - // AD03=e,E - // AC01=a,A - // Ctrl + A - Beginning of Line - replace key { - type[Group1]= "ONE_LEVEL_SUPER", - symbols[Group1]= [ - // Base - a, - // Shift - A, - // Super - NoSymbol, - // Shift Super - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,clearmods=Super) - ] - }; - // Ctrl + E - End of Line - replace key { - type[Group1]= "ONE_LEVEL_SUPER", - symbols[Group1]= [ - // Base - e, - // Shift - E, - // Super - NoSymbol, - // Shift Super - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,clearmods=Super) - ] - }; - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - f, - // Shift - F, - // Alt - f, - // Shift Alt - F, - // Control - f, - // Shift Control - F, - // Super - f, - // Shift Super - F, - // Control Alt - h - // Super Control - // ,F10 // Default maximize - // // Nothing // KDE maximize - // Super Alt - // Super Control Alt - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - NoAction(), - // Shift Alt - NoAction(), - // Control - NoAction(), - // Shift Control - NoAction(), - // Super - NoAction(), - // Shift Super - NoAction(), - // Control Alt - RedirectKey(key=,clearmods=Mod1) - // Super Control - Fullscreen - // ,RedirectKey(key=,modifiers=Mod1,clearmods=Super+Control) // Default maximize - // // Nothing // KDE maximize - // Super Alt - // Super Control Alt - ] - }; - // Close App Cmd + Q = Alt + F4 - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - q, - // Shift - Q, - // Alt - q, - // Shift Alt - Q, - // Control - F4 - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - NoAction(), - // Shift Alt - NoAction(), - // Control - RedirectKey(key=,modifiers=Mod1,clearmods=Control) - ] - }; - // Show Desktop Cmd + F3 = Super + D - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - F3, - // Shift - F3, - // Alt - F3, - // Shift Alt - F3, - // Control - d - ], - actions[Group1]= [ - NoAction(), - NoAction(), - NoAction(), - NoAction(), - RedirectKey(key=,modifiers=Super,clearmods=Control) - ] - }; - // Fix the G key for Sublime Text - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - g, - // Shift - G, - // Alt - g, - // Shift Alt - G, - // Control - g, - // Shift Control - G, - // Super - NoSymbol, - // Shift Super - NoSymbol, - // Control Alt - g, - // Super Control - g, - // Super Alt - g, - // Super Control Alt - g - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Pass G Normally - RedirectKey(key=), - RedirectKey(key=), - // Find Next - RedirectKey(key=,clearmods=Control), - // Find Previous - RedirectKey(key=,clearmods=Control), - // Sublime Goto Line - RedirectKey(key=,modifiers=Control,clearmods=Super), - NoAction(), - // Sublime Quick Find - RedirectKey(key=,clearmods=Mod1), - // Sublime Select All Matches - RedirectKey(key=,modifiers=Mod1,clearmods=Super+Control), - NoAction(), - NoAction() - ] - }; - // LEFT to Begin Line or Beginning of word - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - Left, - // Shift - Left, - // Alt - Left, - // Shift Alt - Left, - // Control - NoSymbol, - // Shift Control - NoSymbol, - // Super - Left - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - Wordwise - RedirectKey(key=,mods=Control,clearmods=Mod1), - // Shift Alt - RedirectKey(key=,mods=Control,clearmods=Mod1), - // Control - RedirectKey(key=,clearmods=Control), - // Shift Control - RedirectKey(key=,clearmods=Control), - // Super - Change workspace - NoAction() - ] - }; - - // Right to End of Line or end of word - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - Right, - // Shift - Right, - // Alt - Right, - // Shift Alt - Right, - // Control - NoSymbol, - // Shift Control - NoSymbol, - // Super - Right - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - Wordwise - RedirectKey(key=,mods=Control,clearmods=Mod1), - // Shift Alt - RedirectKey(key=,mods=Control,clearmods=Mod1), - // Control - RedirectKey(key=,clearmods=Control), - // Shift Control - RedirectKey(key=,clearmods=Control), - // Super - Change workspace - NoAction() - ] - }; - - //Up to Mac Home - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - Up, - // Shift - Up, - // Alt - Up, - // Shift Alt - Up, - // Control - NoSymbol, - // Shift Control - NoSymbol, - // Super - Up, - // Shift Super - Up - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - Wordwise - RedirectKey(key=,clearmods=Mod1), - // Shift Alt - // RedirectKey(key=), // Chromebook multicursor - RedirectKey(key=,clearmods=Mod1), // Default multicursor - // Control - RedirectKey(key=), - // Shift Control - RedirectKey(key=), - // Super - Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - // Shift Super - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - - // Down to Mac End - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - Down, - // Shift - Down, - // Alt - Down, - // Shift Alt - Down, - // Control - NoSymbol, - // Shift Control - NoSymbol, - // Super - Down, - // Shift Super - Down - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - Wordwise - RedirectKey(key=,clearmods=Mod1), - // Shift Alt - RedirectKey(key=,clearmods=Mod1), - // Control - RedirectKey(key=), - // Shift Control - RedirectKey(key=), - // Super - Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - // Shift Super - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - // Alt BKSP to DELETE - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - BackSpace, - BackSpace, - BackSpace - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Mod1) - ] - }; - // // Full Print Screen - // // GalliumOS - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ 3, 3, 3, F5 ], - // actions[Group1]= [ NoAction(), NoAction(), NoAction(), RedirectKey(key=,clearmods=Shift) ] - // }; - // // Region Print Screen - // // GalliumOS - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ 4, 4, 4, F5 ], - // actions[Group1]= [ NoAction(), NoAction(), NoAction(), RedirectKey(key=) ] - // }; - // // Full Print Screen - // // Standard Ubuntu - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ 3, 3, 3, F5 ], - // actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,clearmods=Shift+Control) ] - // }; - // // Region Print Screen - // // Standard Ubuntu - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ 4, 4, 4, F5 ], - // actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=,clearmods=Control) ] - // }; -}; -partial xkb_symbols "mac_appcycle_chromebook" { - // Cycle App and In App Tab Switching - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Tab, - Tab, - Tab, - Tab, - backslash, - backslash, - NoSymbol, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Alt - Redirect(key=,mods=Control,clearmods=Mod1), - // Alt + Shift - Redirect(key=,mods=Control,clearmods=Mod1), - // Control - Redirect(key=), - // Control+Shift - Redirect(key=), - // Super - NoAction(), - // Super + Shift - NoAction() - ] - }; -}; -partial xkb_symbols "mac_appcycle" { - // Cycle App and In App Tab Switching - key { [ F13 ] }; - key { [ F14 ] }; - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - Tab, - Tab, - F14, - F13, - NoSymbol, - NoSymbol - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Control + Shift - Redirect(key=), - // Control - Redirect(key=), - // Super - Redirect(key=,mods=Control,clearmods=Mod4+Super), - // Super + Shift - Redirect(key=,mods=Control,clearmods=Mod4+Super) - ] - }; -}; -partial xkb_symbols "mac_browsers_chromebook" { - // Cycle App and In App Tab Switching - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Tab, - Tab, - NoSymbol, - NoSymbol, - backslash, - backslash, - NoSymbol, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Alt - Redirect(key=,mods=Control,clearmods=Mod1), - // Alt + Shift - Redirect(key=,mods=Control,clearmods=Mod1+Shift), - // Control - Redirect(key=), - // Control+Shift - Redirect(key=), - // Super - NoAction(), - // Super + Shift - NoAction() - ] - }; - //Up to Mac Home - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Up, - Up, - Up, - Up, - NoSymbol, - NoSymbol, - Up - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Wordwise - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=), - RedirectKey(key=), - // Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - // Down to Mac End - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Down, - Down, - Down, - Down, - NoSymbol, - NoSymbol, - Down - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Wordwise - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=), - RedirectKey(key=), - // Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - // Alt BKSP to DELETE - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - BackSpace, - BackSpace, - BackSpace - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Mod1) - ] - }; -}; -partial xkb_symbols "mac_browsers" { - // Cycle App and In App Tab Switching - key { [ F13 ] }; - key { [ F14 ] }; - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - Tab, - Tab, - F14, - F13, - NoSymbol, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - Redirect(key=), - Redirect(key=), - Redirect(key=,mods=Control,clearmods=Mod4+Super), - Redirect(key=,mods=Control,clearmods=Mod4+Super+Shift) - ] - }; - //Up to Mac Home - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Up, - Up, - Up, - Up, - NoSymbol, - NoSymbol, - Up - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Wordwise - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=), - RedirectKey(key=), - // Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - // Down to Mac End - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Down, - Down, - Down, - Down, - NoSymbol, - NoSymbol, - Down - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Wordwise - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=,clearmods=Mod1), - RedirectKey(key=), - RedirectKey(key=), - // Wordwise - Sublime? - RedirectKey(key=,clearmods=Super), - RedirectKey(key=,modifiers=Mod1,clearmods=Super) - ] - }; - // Alt BKSP to DELETE - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - BackSpace, - BackSpace, - BackSpace - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Mod1) - ] - }; -}; -partial xkb_symbols "mac_chrome" { - // Back Button - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Left, - Left, - NoSymbol, - NoSymbol, - Left - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - RedirectKey(key=), - // Alt - RedirectKey(key=), - // Control - RedirectKey(key=,modifiers=Mod1,clearmods=Control) - ] - }; - // Forwards Button - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - // Base - Right, - // Shift - Right, - // Alt - NoSymbol, - // Shift Alt - NoSymbol, - // Control - Right - ], - actions[Group1]= [ - // Base - NoAction(), - // Shift - NoAction(), - // Alt - RedirectKey(key=), - // Shift Alt - RedirectKey(key=), - // Control - RedirectKey(key=,modifiers=Mod1,clearmods=Control) - ] - }; -}; \ No newline at end of file diff --git a/.xkb/symbols/mac_term b/.xkb/symbols/mac_term deleted file mode 100644 index 6a57a0c..0000000 --- a/.xkb/symbols/mac_term +++ /dev/null @@ -1,210 +0,0 @@ -default partial xkb_symbols "mac_apple" { - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Control_L ], - actions[group1]=[ SetMods(modifiers=Control+Shift) ] - }; - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Control_R ], - actions[group1]=[ SetMods(modifiers=Control+Shift) ] - }; -}; -partial xkb_symbols "mac_win" { - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Hyper_L ], - actions[group1]=[ SetMods(modifiers=Shift+Control) ] - }; - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Hyper_R ], - actions[group1]=[ SetMods(modifiers=Shift+Control) ] - }; -}; -partial xkb_symbols "mac_global" { - // // Minimize Window Cmd + H = Alt+F9 - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ - // h, - // H, - // H - // ], - // actions[Group1]= [ - // NoAction(), - // NoAction(), - // RedirectKey(key=,modifiers=Super,clearmods=Control+Shift) - // ] - // }; - - // - // Some sort of glitch occurs on shifting F while this segment is active - // it is like the Control key is being held down when it isn't. - // - // // Maximize Window Ctrl + Cmd + F = Alt+F10 - // replace key { - // type[Group1]= "ONE_LEVEL_CTRL", - // symbols[Group1]= [ - // f, - // F, - // F - // ], - // actions[Group1]= [ - // // Base - // NoAction(), - // // Shift - // NoAction(), - // // Ctrl + Shift - // RedirectKey(key=,modifiers=Mod1,clearmods=Control+Shift) - // ] - // }; - - // Close App Cmd + Q = Alt + F4 - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - q, - Q, - F4 - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,modifiers=Mod1,clearmods=Control+Shift) - ] - }; - - // Show Desktop Cmd + F3 = Super + D - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - F3, - F3, - D - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,modifiers=Super,clearmods=Control+Shift) - ] - }; - - // Cycle App and In App Tab Switching - key { [ F13 ] }; - key { [ F14 ] }; - - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - Tab, - Tab, - // F13 // Default cmdtab - // F13 // KDE cmdtab - // Right // Elementary ecmdtab - ], - actions[Group1]= [ - NoAction(), - NoAction(), - // Redirect(key=) // Default cmdtab - // Redirect(key=,clearmods=Shift) // KDE cmdtab - // Redirect(key=,mods=Control+Shift,clearmods=Mod4+Super) // Elementary cmdtab - ] - }; - - // Page Up - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Up, - Up, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - - // Page Down - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Down, - Down, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // HOME - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - Left, - Left, - NoSymbol, - Left - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control), - RedirectKey(key=,mods=Super,clearmods=Control) - ] - }; - // END - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - Right, - Right, - NoSymbol, - Right - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control), - RedirectKey(key=,mods=Super,clearmods=Control) - ] - }; - // Full Print Screen - // Standard Ubuntu - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - 3, - numbersign, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // Region Print Screen - // Standard Ubuntu - replace key { - type[Group1]= "ONE_LEVEL_CMD", - symbols[Group1]= [ - 4, - dollar, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Control) - ] - }; -}; \ No newline at end of file diff --git a/.xkb/symbols/mac_term_chromebook b/.xkb/symbols/mac_term_chromebook deleted file mode 100644 index 93e1d70..0000000 --- a/.xkb/symbols/mac_term_chromebook +++ /dev/null @@ -1,100 +0,0 @@ -default partial xkb_symbols "mac_levelssym" { - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Hyper_L ], - actions[group1]=[ SetMods(modifiers=Shift+Control) ] - }; - key { - repeat= no, - type= "ONE_LEVEL", - symbols[Group1]= [ Hyper_R ], - actions[group1]=[ SetMods(modifiers=Shift+Control) ] - }; - // Page Up - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Up, - Up, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // Page Down - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Down, - Down, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // HOME - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Left, - Left, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // END - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - Right, - Right, - NoSymbol - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift+Control) - ] - }; - // Full Print Screen - // GalliumOS - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - 3, - numbersign, - F5 - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=,clearmods=Shift) - ] - }; - // Region Print Screen - // GalliumOS - replace key { - type[Group1]= "ONE_LEVEL_CTRL", - symbols[Group1]= [ - 4, - dollar, - F5 - ], - actions[Group1]= [ - NoAction(), - NoAction(), - RedirectKey(key=) - ] - }; -}; diff --git a/.xkb/types/mac_gui b/.xkb/types/mac_gui deleted file mode 100644 index 9c747d0..0000000 --- a/.xkb/types/mac_gui +++ /dev/null @@ -1,53 +0,0 @@ -default partial xkb_types "addmac_levels" { - Virtual_modifiers Super; - type "ONE_LEVEL_CTRL" { - modifiers = Shift+Mod1+Super+Control; - map[Shift] = Level2; - map[Mod1] = Level3; - map[Shift+Mod1] = Level4; - map[Control] = Level5; - map[Shift+Control] = Level6; - map[Super] = Level7; - map[Shift+Super] = Level8; - map[Mod1+Control] = 9; - map[Super+Control] = 10; - map[Super+Mod1] = 11; - map[Super+Mod1+Control] = 12; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Alt"; - level_name[Level4] = "Shift Alt"; - level_name[Level5] = "Control"; - level_name[Level6] = "Shift Control"; - level_name[Level7] = "Super"; - level_name[Level8] = "Shift Super"; - level_name[9] = "Control Alt"; - level_name[10] = "Super Control"; - level_name[11] = "Super Alt"; - level_name[12] = "Super Control Alt"; - }; - type "ONE_LEVEL_CMD" { - modifiers = Shift+Control+Super; - map[Shift] = Level2; - map[Shift+Control] = Level3; - map[Control] = Level4; - map[Super] = Level5; - map[Shift+Super] = Level6; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Control Shift"; - level_name[Level4] = "Control"; - level_name[Level5] = "Super"; - level_name[Level6] = "Super Shift"; - }; - type "ONE_LEVEL_SUPER" { - modifiers = Shift+Super; - map[Shift] = Level2; - map[Super] = Level3; - map[Shift+Super] = Level4; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Super"; - level_name[Level4] = "Super Shift"; - }; -}; diff --git a/.xkb/types/mac_term b/.xkb/types/mac_term deleted file mode 100644 index 10fa367..0000000 --- a/.xkb/types/mac_term +++ /dev/null @@ -1,53 +0,0 @@ -default partial xkb_types "addmac_levels" { - Virtual_modifiers Super; - type "ONE_LEVEL_CTRL" { - modifiers = Shift+Mod1+Super+Control; - map[Shift] = Level2; - map[Shift+Control] = Level3; - // map[Mod1] = Level4; - map[Shift+Mod1] = Level5; - map[Control] = Level6; - map[Super] = Level7; - map[Shift+Super] = Level8; - map[Mod1+Control] = 9; - map[Super+Control] = 10; - map[Super+Mod1] = 11; - map[Super+Mod1+Control] = 12; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Shift Control"; - // level_name[Level4] = "Alt"; - level_name[Level5] = "Shift Alt"; - level_name[Level6] = "Control"; - level_name[Level7] = "Super"; - level_name[Level8] = "Shift Super"; - level_name[9] = "Control Alt"; - level_name[10] = "Super Control"; - level_name[11] = "Super Alt"; - level_name[12] = "Super Control Alt"; - }; - type "ONE_LEVEL_CMD" { - modifiers = Shift+Control+Super; - map[Shift] = Level2; - map[Shift+Control] = Level3; - map[Control] = Level4; - map[Super] = Level5; - map[Shift+Super] = Level6; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Control Shift"; - level_name[Level4] = "Control"; - level_name[Level5] = "Super"; - level_name[Level6] = "Super Shift"; - }; - type "ONE_LEVEL_SUPER" { - modifiers = Shift+Super; - map[Shift] = Level2; - map[Super] = Level3; - map[Shift+Super] = Level4; - level_name[Level1] = "Base"; - level_name[Level2] = "Shift"; - level_name[Level3] = "Super"; - level_name[Level4] = "Super Shift"; - }; -}; diff --git a/kinto_old/defaults.json b/kinto_old/defaults.json deleted file mode 100644 index 4c5ee4b..0000000 --- a/kinto_old/defaults.json +++ /dev/null @@ -1,86 +0,0 @@ -{"defaultapps":[{ - "name":"term", - "appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty" ] - }], - "defaulttypes":["windows","mac","chromebook"], - "defaults":[{ - "id": 1, - "name":"Windows", - "type":"windows", - "active": false, - "description":"Standard Windows 104 Keyboards", - "gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)", - "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)" - }, - { - "id": 2, - "name":"Mac - hid driver (Recommended - Also supports Windows keyboards)", - "type":"mac", - "active": false, - "description":"Standard Mac Keyboards with Apple driver", - "gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)", - "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term(mac_win)+mac_term(mac_global)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)", - "hack": "echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd;echo 'options hid_apple swap_opt_cmd=1' | sudo tee -a /etc/modprobe.d/hid_apple.conf;sudo update-initramfs -u -k all" - }, - { - "id": 3, - "name":"Mac Only (VMs & non-official Apple keyboards)", - "type":"mac", - "active": true, - "description":"Standard Mac Keyboards", - "gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)", - "xkb_symbols_term":"+altwin(alt_super_win)+mac_term(mac_apple)+mac_term(mac_global)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)" - }, - { - "id": 4, - "name":"Chromebook (xfce)", - "type":"chromebook", - "active": false, - "description":"Standard Chromebook Keyboards", - "gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)", - "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)" - }, - { - "id": 5, - "name":"Chromebook (xfce) - Windows", - "type":"chromebook", - "active": false, - "description":"Chromebook with Windows 104 Keyboard", - "gui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen; setxkbmap -device $usbid -option altwin:ctrl_alt_win", - "term":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "fallbackgui":"xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)", - "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)" - }, - { - "id": 6, - "name":"Chromebook (xfce) - Mac", - "type":"chromebook", - "active": false, - "description":"Chromebook with Mac Keyboard", - "gui":"setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY 2>&1 | grep -v XF86FullScreen", - "term":"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.term $DISPLAY 2>&1 | grep -v XF86FullScreen", - "xkb_symbols_gui":"+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)", - "xkb_symbols_term":"+altwin(swap_alt_win)+mac_term_chromebook(mac_levelssym)", - "xkb_types_gui":"+mac_gui(addmac_levels)", - "xkb_types_term":"+mac_term(addmac_levels)" - }] -} \ No newline at end of file diff --git a/kinto_old/keyswap_service.sh b/kinto_old/keyswap_service.sh deleted file mode 100644 index e00af8f..0000000 --- a/kinto_old/keyswap_service.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -systemctl --user stop keyswap >/dev/null 2>&1 -systemctl --user disable keyswap >/dev/null 2>&1 -systemctl --user stop keyswap.timer >/dev/null 2>&1 -systemctl --user disable keyswap.timer >/dev/null 2>&1 -mkdir -p ~/.config/systemd/user -mkdir -p ~/.config/autostart -cp ./system-config/keyswap.service ~/.config/systemd/user/keyswap.service -cp ./system-config/kinto.desktop ~/.config/autostart/kinto.desktop -cp ./system-config/keyswap.timer ~/.config/systemd/user/keyswap.timer -cp ./kintox11/binary/kintox11 ~/.config/kinto/kintox11 -cp ./system-config/xactive.sh ~/.config/kinto/xactive.sh -cp ./system-config/caret_status.sh ~/.config/kinto/caret_status.sh -cp ./system-config/cleanup.sh ~/.config/kinto/cleanup.sh -cp ./system-config/.firefox-nw ~/.config/kinto/.firefox-nw -sed -i "s/{username}/`whoami`/g" ~/.config/systemd/user/keyswap.service -sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/systemd/user/keyswap.service -# if [ "${#DISPLAY}" -gt 2 ] -# then -sed -i "s/#Environment/Environment/g" ~/.config/systemd/user/keyswap.service -# fi -systemctl --user daemon-reload -sed -i "s/ExecStart=/ExecStart=${swapcmd}/g" ~/.config/systemd/user/keyswap.service -systemctl --user enable keyswap.timer -systemctl --user start keyswap diff --git a/kinto_old/kintox11/binary/kintox11 b/kinto_old/kintox11/binary/kintox11 deleted file mode 100644 index ebeb40c..0000000 Binary files a/kinto_old/kintox11/binary/kintox11 and /dev/null differ diff --git a/kinto_old/kintox11/src/Makefile b/kinto_old/kintox11/src/Makefile deleted file mode 100644 index e941cff..0000000 --- a/kinto_old/kintox11/src/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -CFLAGS=-g $(shell pkg-config --cflags json-c xmu) -LDFLAGS=-g $(shell pkg-config --libs json-c xmu) - -all: - $(CC) kintox11.c $(CFLAGS) $(LDFLAGS) -lm -lpthread -o kintox11 diff --git a/kinto_old/kintox11/src/kintox11.c b/kinto_old/kintox11/src/kintox11.c deleted file mode 100644 index 2b0ac82..0000000 --- a/kinto_old/kintox11/src/kintox11.c +++ /dev/null @@ -1,694 +0,0 @@ -// -*- coding:utf-8-unix; mode:c; -*- -// Kinto x11 command line -/* - Reference material - get the active window on X window system - http://k-ui.jp/blog/2012/05/07/get-active-window-on-x-window-system/ - */ -// To compile without static libraries -// gcc kintox11.c -lX11 -lXmu -ljson-c -// -// To compile with static library json-c -// Make sure archive with object files exist ar -t /usr/local/lib/libjson-c.a -// gcc -L/usr/local/lib/ kintox11.c -ljson-c -lXmu -lXt -lX11 -O2 -o kintox11 -// - -#define _GNU_SOURCE 1 -#include -#include -#include -#include -#include -#include -#include -#include -#include // `apt-get install libx11-dev` -#include // `apt-get install libxmu-dev` -#include // `apt install libjson-c-dev` -#include -#include -#include -#ifdef WIN32 -#include -#elif _POSIX_C_SOURCE >= 199309L -#include // for nanosleep -#else -#include // for usleep -#endif - -const char *eventNames[34] = {"None","KeyPress","KeyRelease","ButtonPress","ButtonRelease","MotionNotify","EnterNotify","LeaveNotify","FocusIn","FocusOut","KeymapNotify","Expose","GraphicsExpose","NoExpose","VisibilityNotify","CreateNotify","DestroyNotify","UnmapNotify","MapNotify","MapRequest","ReparentNotify","ConfigureNotify","ConfigureRequest","ResizeRequest","CirculateNotify","CirculateRequest","PropertyNotify","SelectionClear","SelectionRequest","SelectionNotify","ColormapNotify","ClientMessage","MappingNotify"}; - -#define NUM_THREADS 2 -typedef struct threadArgs * ThreadArgs; -struct threadArgs{ - char *run_onInput; - char *run_offInput; -}; - -long long timeInMilliseconds(void) { - struct timeval tv; - - gettimeofday(&tv,NULL); - return (((long long)tv.tv_sec)*1000)+(tv.tv_usec/1000); -} - -bool debug; -bool input_check = 0; -long long int event_ts; -int last_event; - -Display* d; -Window w; -XEvent e; - -// cross-platform sleep function -void sleep_ms(int milliseconds) { - #ifdef WIN32 - Sleep(milliseconds); - #elif _POSIX_C_SOURCE >= 199309L - struct timespec ts; - ts.tv_sec = milliseconds / 1000; - ts.tv_nsec = (milliseconds % 1000) * 1000000; - nanosleep(&ts, NULL); - #else - usleep(milliseconds * 1000); - #endif -} - -char *trimwhitespace(char *str){ - char *end; - // Trim leading space - while(isspace((unsigned char)*str)) str++; - if(*str == 0) // All spaces? - return str; - // Trim trailing space - end = str + strlen(str) - 1; - while(end > str && isspace((unsigned char)*end)) end--; - // Write new null terminator character - end[1] = '\0'; - return str; -} - -int check_caret(){ - int caretint; - char * fpname; - fpname = malloc(sizeof(char)*20); - strcpy(fpname,"/tmp/kinto/caret"); - if( access( fpname, F_OK ) != -1 ) { - char *buffer = NULL; - size_t size = 0; - FILE *fp = fopen(fpname, "r"); - if (fp == NULL){ - return (0); - } - fseek(fp, 0, SEEK_END); - size = ftell(fp); - rewind(fp); - buffer = malloc((size + 1) * sizeof(*buffer)); - fread(buffer, size, 1, fp); - buffer[size] = '\0'; - trimwhitespace(buffer); - caretint = atoi(buffer); - fclose(fp); - if(caretint == 1){ - // printf("caret: %s\n", buffer); - return 1; - } - // printf("found nothing\n"); - return 0; - } - else{ - // printf("file %s does not exist\n",fpname); - return 0; - } -} - -void *inputToggle(void *argStruct) { - ThreadArgs args = argStruct; - - char * onInput; - char * offInput; - onInput = malloc(sizeof(char)*400); - offInput = malloc(sizeof(char)*400); - onInput = args->run_onInput; - offInput = args->run_offInput; - - Bool ran_onInput = 0; - - while(input_check){ - if(check_caret() && ran_onInput == 0){ - if(debug == true){ - printf("run_onInput: %s\n",onInput); - } - system(onInput); - ran_onInput = 1; - } - else if(!check_caret() && ran_onInput == 1){ - if(debug == true){ - printf("run_offInput: %s\n",offInput); - } - system(offInput); - ran_onInput = 0; - } - sleep_ms(100); - } - pthread_exit(NULL); -} - -void *nextPlease(void *threadid) { - long tid; - tid = (long)threadid; - - // printf("Next Please Thread ID, %ld\n", tid); - - // Reference http://www.rahul.net/kenton/xproto/xevents_errors.html - // event type 17 - DestroyNotify - // event type 18 - UnmapNotify - // event type 22 - ConfigureNotify - // Dismiss the following events by initiating another XNextEvent - XNextEvent(d, &e); - while(e.type != ConfigureNotify || (e.type == ConfigureNotify && last_event == ConfigureNotify && timeInMilliseconds()-event_ts < 419)){ - XNextEvent(d, &e); - } - // Unset input thread - input_check = 0; - last_event = e.type; - - if(debug == true){ - printf(" event: %s %d\n",eventNames[e.type-1],e.type); - printf(" duration: %lldms\n",timeInMilliseconds()-event_ts); - } - event_ts = timeInMilliseconds(); - - pthread_exit(NULL); -} - -char * append(char * string1, char * string2){ - char * result = NULL; - asprintf(&result, "%s,%s", string1, string2); - return result; -} - -static int wait_fd(int fd, double seconds){ - struct timeval tv; - fd_set in_fds; - FD_ZERO(&in_fds); - FD_SET(fd, &in_fds); - tv.tv_sec = trunc(seconds); - tv.tv_usec = (seconds - trunc(seconds))*1000000; - return select(fd+1, &in_fds, 0, 0, &tv); -} - -Bool xerror = False; - -int in_int(int a[],int size,int item){ - int i,pos=-1; - for(i=0;i< size;i++) - { - if(a[i]==item) - { - pos=i; - break; - } - } - return pos; -} - -int in(const char **arr, int len, char *target) { - int i; - for(i = 0; i < len; i++) { - if(strncmp(arr[i], target, strlen(target)) == 0) { - return i; - } - } - return -1; -} - -int strcicmp(char const *a, char const *b){ - for (;; a++, b++) { - int d = tolower((unsigned char)*a) - tolower((unsigned char)*b); - if (d != 0 || !*a) - return d; - } -} - -Display* open_display(){ - int i; - Display* d = XOpenDisplay(NULL); - for (i = 0; i < 60; i++) { - if(d == NULL){ - printf("fail to open X server display...\n"); - } - else{ - break; - } - sleep(1); - } - if(d == NULL){ - printf("fail to open X server display for 1 minute...\n"); - printf("Kintox11 is now exiting...\n"); - exit(1); - } - return d; -} - -int handle_error(Display* display, XErrorEvent* error){ - printf("X11 error: type=%d, serial=%lu, code=%d\n", - error->type, error->serial, (int)error->error_code); - xerror = True; - return 1; -} - -Window get_focus_window(Display* d, int etype, char const *eventName, char const *current_app, bool debug){ - Window w; - int revert_to; - - if(debug == true){ - printf("\n get focus window\n"); - } - - if(!(etype == DestroyNotify || etype == UnmapNotify)) { - XGetInputFocus(d, &w, &revert_to); // see man - if(debug == true){ - printf(" -%s: event: %d, window_id: %ld\n",current_app,etype,w); - } - } - - if(xerror){ - printf("*Error getting focused window, e.type: %d, current_app: %s\n",etype,current_app); - exit(1); - }else if(w == None){ - printf("*no focus window, e.type: %d, current_app: %s\n",etype,current_app); - exit(1); - } - - return w; -} - -// get the top window. -// a top window have the following specifications. -// * the start window is contained the descendent windows. -// * the parent window is the root window. -Window get_top_window(Display* d, Window start, int etype, char const *eventName, char const *current_app, bool debug){ - Window w = start; - Window parent = start; - Window root = None; - Window *children; - unsigned int nchildren; - Status s; - char * ws; - char * wstr; - ws = malloc(sizeof(char)*4096); - wstr = malloc(sizeof(char)*100); - // strcpy(wstr,"test,"); - - if(debug == true){ - printf("\n get top window\n"); - } - // Checking for Destroy and Unmap Notify events here too - // Sometimes they still get passed through and if so need - // to be ignored or XQueryTree will cause a segmentation fault - while (parent != root && parent != 0 && !(etype == DestroyNotify || etype == UnmapNotify)) { - w = parent; - - s = XQueryTree(d, w, &root, &parent, &children, &nchildren); // see man - - sprintf(wstr, "%ld", w); - if ((ws != NULL) && (ws[0] == '\0')) { - strcpy(ws,wstr); - } - else{ - ws = append(ws, wstr); - } - - if (s) - XFree(children); - - if(xerror){ - printf("*fail to get top window: %ld, e.type: %d, current_app: %s\n",w,etype,current_app); - break; - } - } - - if(debug == true){ - printf(" -%s: event: %d, window_id: %s\n",current_app,etype,ws); - } - - return w; -} - -// search a named window (that has a WM_STATE prop) -// on the descendent windows of the argment Window. -Window get_named_window(Display* d, Window start, int etype, char const *eventName, char const *current_app, bool debug){ - Window w; - - if(debug == true){ - printf("\n get named window\n"); - } - // printf("getting named window ... "); - w = XmuClientWindow(d, start); // see man - - if(debug == true){ - printf(" -%s: event: %d, window_id: %ld\n\n",current_app,etype,w); - } - // if(w == start) - // printf("fail\n"); - // printf("success (window: %d)\n", (int) w); - return w; -} - -const char * str_window_class(Display* d, Window w, char *prior_app ){ - Status s; - XClassHint* class; - - class = XAllocClassHint(); // see man - if(xerror){ - // printf("ERROR: XAllocClassHint\n"); - } - - s = XGetClassHint(d, w, class); // see man - if(xerror || s){ - char * app_class; - app_class = malloc(sizeof(char)*100); - strcpy(app_class,class->res_class); - // printf("\tname: %s\n\tclass: %s\n", class->res_name, class->res_class); - return app_class; - }else{ - // char * error_msg; - // error_msg = malloc(sizeof(char)*50); - // strcpy(error_msg, "ERROR: XGetClassHint"); - return prior_app; - } -} - -int main(int argc, char *argv[]){ - - XInitThreads(); - - if(argc < 2){ - debug = false; - } - if(argc > 1 && (strcmp(argv[1], "-d") == 0 || strcmp(argv[1], "--debug") == 0 )){ - debug = true; - printf("Running in debug mode\n"); - } - - FILE *fp; - char buffer[10240]; - struct json_object *parsed_json, *config, *config_obj, - *config_obj_name, *config_obj_run, *config_obj_run_oninput, - *config_obj_run_offinput, *config_obj_de, *config_obj_appnames, - *appnames_obj, *init, *de, *de_obj, *de_obj_id, *de_obj_active, - *de_obj_run, *de_obj_runterm,*de_obj_rungui; - - int arraylen; - int appnames_len, init_len, de_len, config_de_len; - int system(const char *command); - - size_t i,n,r; - - printf("Importing user_config.json...\n"); - fp = fopen("user_config.json","r"); - fread(buffer, 10240, 1, fp); - fclose(fp); - - parsed_json = json_tokener_parse(buffer); - - config = json_object_object_get(parsed_json, "config"); - init = json_object_object_get(parsed_json, "init"); - de = json_object_object_get(parsed_json, "de"); - - arraylen = json_object_array_length(config); - init_len = json_object_array_length(init); - de_len = json_object_array_length(de); - - const char *name_array[arraylen]; - const char *run_array[arraylen]; - const char *run_oninput_array[arraylen]; - const char *run_offinput_array[arraylen]; - int init_array[init_len]; - - int de_id_array[de_len]; - Bool de_active_array[de_len]; - const char *de_run_array[de_len]; - const char *de_runterm_array[de_len]; - const char *de_rungui_array[de_len]; - - // Grab all de variable info needed - for (i = 0; i < de_len; i++) { - de_obj = json_object_array_get_idx(de, i); - de_obj_id = json_object_object_get(de_obj, "id"); - de_id_array[i] = json_object_get_int(de_obj_id); - de_obj_active = json_object_object_get(de_obj, "active"); - de_active_array[i] = json_object_get_int(de_obj_active); - de_obj_run = json_object_object_get(de_obj, "run"); - de_run_array[i] = json_object_get_string(de_obj_run); - de_obj_runterm = json_object_object_get(de_obj, "run_term"); - de_runterm_array[i] = json_object_get_string(de_obj_runterm); - de_obj_rungui = json_object_object_get(de_obj, "run_gui"); - de_rungui_array[i] = json_object_get_string(de_obj_rungui); - // printf("de_run_array[%ld]: %s\n",i,de_run_array[i]); - } - // de ends - - int appnames_max = 0; - int config_de_max = 0; - - for (i = 0; i < arraylen; i++) { - config_obj = json_object_array_get_idx(config, i); - config_obj_appnames = json_object_object_get(config_obj, "appnames"); - config_obj_de = json_object_object_get(config_obj, "de"); - - appnames_len = json_object_array_length(config_obj_appnames); - if (appnames_len > appnames_max){ - appnames_max = appnames_len; - } - config_de_len = json_object_array_length(config_obj_de); - if(config_de_len > config_de_max){ - config_de_max = config_de_len; - } - } - - const char *appnames_array[arraylen][appnames_max]; - int config_de_array[arraylen][config_de_max]; - - for (i = 0; i < arraylen; i++) { - config_obj = json_object_array_get_idx(config, i); - - config_obj_name = json_object_object_get(config_obj, "name"); - config_obj_run = json_object_object_get(config_obj, "run"); - config_obj_run_oninput = json_object_object_get(config_obj, "run_onInput"); - config_obj_run_offinput = json_object_object_get(config_obj, "run_offInput"); - - name_array[i] = json_object_get_string(config_obj_name); - run_array[i] = json_object_get_string(config_obj_run); - run_oninput_array[i] = json_object_get_string(config_obj_run_oninput); - run_offinput_array[i] = json_object_get_string(config_obj_run_offinput); - // printf("%s\n%s\n", json_object_get_string(config_obj_name), json_object_get_string(config_obj_run)); - - config_obj_appnames = json_object_object_get(config_obj, "appnames"); - appnames_len = json_object_array_length(config_obj_appnames); - for (n = 0; n < appnames_len; n++) { - // printf("name_array[i]: %s\n",name_array[i]); - if(!strcicmp(name_array[i], "gui")){ - appnames_array[i][n] = NULL; - // printf("%s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]); - } - else{ - appnames_array[i][n] = json_object_get_string(json_object_array_get_idx(config_obj_appnames, n)); - //printf("%s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]); - } - } - if(appnames_max > appnames_len){ - for (n = appnames_len; n < appnames_max; n++){ - appnames_array[i][n] = NULL; - //printf("%s i:%ld n:%ld %s\n",name_array[i],i,n,appnames_array[i][n]); - } - } - - config_obj_de = json_object_object_get(config_obj, "de"); - config_de_len = json_object_array_length(config_obj_de); - for (n = 0; n < config_de_max; n++) { - if(n < config_de_len){ - // printf("de value: %d\n",json_object_get_int(json_object_array_get_idx(config_obj_de, n))); - config_de_array[i][n] = json_object_get_int(json_object_array_get_idx(config_obj_de, n)); - } - else{ - // printf("de -1 value: %d\n",json_object_get_int(json_object_array_get_idx(config_obj_de, n))); - config_de_array[i][n] = -1; - } - - } - } - - printf("Data from user_config.json imported successfully.\n"); - - for (i = 0; i < init_len; i++) { - init_array[i] = json_object_get_int(json_object_array_get_idx(init, i)); - int de_id_idx = in_int(de_id_array, de_len, init_array[i]); - printf("Running init command: %s\n",de_run_array[de_id_idx]); - system(de_run_array[de_id_idx]); - } - - char *name; - - // for XmbTextPropertyToTextList - setlocale(LC_ALL, ""); // see man locale - - d = open_display(); - XSelectInput(d, DefaultRootWindow(d), SubstructureNotifyMask); - XSetErrorHandler(handle_error); - - char * run_normal; - char * run_onInput; - char * run_offInput; - char * prior_app; - char * current_app; - char * prior_category; - char * current_category; - run_onInput = malloc(sizeof(char)*400); - run_offInput = malloc(sizeof(char)*400); - run_normal = malloc(sizeof(char)*400); - prior_app = malloc(sizeof(char)*100); - current_app = malloc(sizeof(char)*100); - prior_category = malloc(sizeof(char)*100); - current_category = malloc(sizeof(char)*100); - strcpy(prior_app,"none"); - strcpy(prior_category,"none"); - - int remap_bool = 2; - - printf("Starting keyswap...\n"); - - // get active window - w = get_focus_window(d, 0, eventNames[0], current_app, debug); - w = get_top_window(d, w, 0, eventNames[0], current_app, debug); - w = get_named_window(d, w, 0, eventNames[0], current_app, debug); - - // XFetchName(d, w, &name); - // printf("window:%#x name:%s\n", w, name); - printf("First window name: %s \n\n",str_window_class(d, w,prior_app)); - - int breakouter; - last_event=0; - event_ts = timeInMilliseconds(); - - for (;;) - { - strcpy(current_app,str_window_class(d, w,prior_app)); - int category_idx; - // printf("current: %s\n",current_app); - breakouter = 0; - - // Cycle through category name array - // printf("%d\n",arraylen); - for(i = 0; i < arraylen; ++i){ - // Cycle through the maximum App name array in each category - for(n = 0; n < appnames_max; ++n){ - if (appnames_array[i][n] != NULL){ - // printf("%s\n",appnames_array[i][n]); - if(strcicmp(appnames_array[i][n], current_app) == 0){ - strcpy(current_category,name_array[i]); - category_idx = i; - // printf("Match found: %s: %s\n",current_category,current_app); - breakouter = 1; - break; - } - } - else if(i == arraylen-1 && breakouter==0){ - // printf("No match found, default to gui"); - strcpy(current_category,"gui"); - category_idx = in(name_array, arraylen, current_category); - // printf("Match found: %s: %s\n",current_category,current_app); - break; - } - else if(appnames_array[i][n] == NULL){ - break; - } - if(breakouter==1){ - break; - } - } - } - if(strcicmp(prior_category, current_category) != 0){ - // printf("prior: %s, current: %s\n",prior_category,current_category); - // printf("%d,%d,%d,%d\n",strcicmp(prior_category, "gui"),strcicmp(current_category, "firefox"),strcicmp(current_category, "gui"),strcicmp(prior_category, "firefox")); - // printf("%d,%d\n",(strcicmp(prior_category, "gui") != 0 && strcicmp(prior_category, "firefox") != 0),(strcicmp(current_category, "gui") != 0 && strcicmp(current_category, "firefox") != 0)); - printf("%s: %s\n",current_category,current_app); - // Make sure we're not switching between 2 GUI keymaps - // Firefox & Standard GUI apps - // strcicmp returns 0 for matches, <>0 for non-match - if((strcicmp(prior_category, "gui") != 0 && strcicmp(prior_category, "firefox") != 0) || (strcicmp(current_category, "gui") != 0 && strcicmp(current_category, "firefox") != 0)){ - if(debug == true){ - printf("run: %s\n",run_array[category_idx]); - } - system(run_array[category_idx]); - } - strcpy(run_normal,run_array[category_idx]); - strcpy(run_onInput,run_oninput_array[category_idx]); - strcpy(run_offInput,run_offinput_array[category_idx]); - system(run_offInput); - for(r = 0; r < config_de_max; r++){ - if(config_de_array[category_idx][r] != -1){ - int de_id_idx = in_int(de_id_array, de_len, config_de_array[category_idx][r]); - if(strcicmp(current_category, "term") == 0){ - if(debug == true){ - printf("Running de term command: %s\n",de_runterm_array[de_id_idx]); - } - system(de_runterm_array[de_id_idx]); - } - else{ - if(debug == true){ - printf("Running de gui command: %s\n",de_rungui_array[de_id_idx]); - } - system(de_rungui_array[de_id_idx]); - } - } - } - } - else if(strcicmp(prior_app, current_app) != 0){ - int indent = strlen(current_category)+2; - printf("%*c%s\n", indent, ' ',current_app); - } - - fflush(stdout); - - strcpy(prior_app,current_app); - strcpy(prior_category,current_category); - - if(strlen(run_onInput) > 0){ - input_check = 1; - } - else{ - input_check = 0; - } - - pthread_t threads[NUM_THREADS]; - int rc; - int i; - ThreadArgs args = (ThreadArgs)malloc(sizeof(struct threadArgs)); - args->run_onInput = run_onInput; - args->run_offInput = run_offInput; - for( i = 0; i < NUM_THREADS; i++ ) { - - if(i==0){ - rc = pthread_create(&threads[i], NULL, inputToggle, args); - } - else{ - rc = pthread_create(&threads[i], NULL, nextPlease, (void *)&i); - } - if (rc) { - printf("Error:unable to create thread, %d\n", rc); - exit(-1); - } - } - // wait for threads to close before continuing - for (int i = 0; i < NUM_THREADS; i++) { - pthread_join(threads[i], NULL); - } - - w = get_focus_window(d, e.type, eventNames[e.type-1], current_app, debug); - w = get_top_window(d, w, e.type, eventNames[e.type-1], current_app, debug); - w = get_named_window(d, w, e.type, eventNames[e.type-1], current_app, debug); - } -} \ No newline at end of file diff --git a/kinto_old/setup.py b/kinto_old/setup.py deleted file mode 100644 index 9501be2..0000000 --- a/kinto_old/setup.py +++ /dev/null @@ -1,631 +0,0 @@ -#!/usr/bin/env python3 -import json, time, os, sys, subprocess, shlex, platform -from shutil import copyfile -from subprocess import PIPE, Popen -from prekinto import * - -homedir = os.path.expanduser("~") -kintotype = 0 - -def windows_setup(): - keymaps = ["Apple keyboard standard", "Windows keyboard standard","Chromebook","IBM - No Super/Win","Uninstall"] - for index, item in enumerate(keymaps): - print(" %i. %s" % (index+1, item)) - default = 0 - while not int(default) in range(1,len(keymaps)+1): - default = int(input("\nPlease enter your desired keymap (1 - " + str(len(keymaps)) + ") : ")) - print("") - # Short DOS path notation - path= cmdline('echo ''%cd%''')[:-1] - if default > 0 and default < 5: - print("Will now install chocolatey and autohotkey with elevated privileges...") - print("This install will fail if you are not running with elevated privileges") - os.system('powershell -executionpolicy bypass ".\\windows\\autohotkey.ps1"') - print("Copying autohotkey combinations for Terminals & Editors...") - os.system('copy /Y "' + path + '\\windows\\kinto.ahk" "' + path + '\\windows\\kinto-new.ahk"') - if default < 3: - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default)(?!( - ST2CODE))(.*)/$2$3$5/g" .\\windows\\kinto-new.ahk') - if default == 1: - kbtype = "mac" - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/g" .\\windows\\kinto-new.ahk') - elif default == 2: - kbtype = "win" - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/g" .\\windows\\kinto-new.ahk') - elif default == 5: - print("Removing any old registry keys from prior versions...") - p = subprocess.Popen(['powershell.exe', "Remove-ItemProperty -Path HKLM:'SYSTEM\CurrentControlSet\Control\Keyboard Layout' -Name 'Scancode Map' -ErrorAction SilentlyContinue"], stdout=sys.stdout) - print("Removing Kinto from Startup folder...") - os.system("(del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\") 2> nul") - os.system('(del "%userprofile%\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs") 2> nul') - print("Ending any running Kinto tasks...") - os.system("(taskkill /IM autohotkey.exe) 2> nul") - print("Removing Kinto from users profile directory...") - os.system('(rd /s /q "%userprofile%\\.kinto") 2> nul') - print("") - print("Uninstall of Kinto is Complete.") - if default == 3: - kbtype = "chrome" - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Chromebook)/$2$3/g" .\\windows\\kinto-new.ahk') - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers/CB)/$2$3/g" .\\windows\\kinto-new.ahk') - if default == 3 or default == 4: - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM)/$2$3/g" .\\windows\\kinto-new.ahk') - if default == 4: - kbtype = "ibm" - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; IBM)/$2$3/g" .\\windows\\kinto-new.ahk') - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers/CB/IBM)/$2$3/g" .\\windows\\kinto-new.ahk') - if default > 0 and default < 5: - stvscode = yn_choice(bcolors.CYELLOW2 + "Would you like to use Sublime Text 3 keymaps in VS Code?\n" + bcolors.ENDC) - print("\nWill now install Ubuntu Termimnal Theme as default...") - os.system('regedit "' + path + '\\windows\\theme_ubuntu.reg"') - os.system('robocopy "'+ path + '\\assets" "%userprofile%\\.kinto\\assets" /E') - if (stvscode and (default > 0 or default < 3)): - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk') - elif (stvscode and (default == 3 or default == 4 )): - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk') - os.system('copy /Y "' + path + '\\windows\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"') - os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/{kbtype}/' + kbtype + '/g" "%userprofile%\\.kinto\\kinto-start.vbs"') - os.system('copy /Y "' + path + '\\windows\\usb.vbs" "%userprofile%\\.kinto\\usb.vbs"') - os.system('copy /Y "' + path + '\\windows\\detectUSB.ahk" "%userprofile%\\.kinto\\detectUSB.ahk"') - os.system('mklink "%userprofile%\\Start Menu\\Programs\\Startup\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"') - os.system('copy /Y "'+ path + '\\windows\\NoShell.vbs" "%userprofile%\\.kinto\\NoShell.vbs"') - os.system('copy /Y "'+ path + '\\windows\\toggle_kb.bat" "%userprofile%\\.kinto\\toggle_kb.bat"') - os.system('copy /Y "'+ path + '\\windows\\kinto-new.ahk" "%userprofile%\\.kinto\\kinto.ahk"') - os.system("del /f .\\windows\\kinto-new.ahk") - os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\" 2> nul") - userpath = cmdline('cmd /c for %A in ("%userprofile%") do @echo %~sA')[:-1] - print('Starting... "' + userpath + '\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs"') - os.system('"' + userpath + '\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs"') - # # print("\nPlease log off and back on for changes to take full effect.") - print("If using WSL then please remember to right click on title bar -> Properties -> Edit Options -> Use Ctrl+Shift+C/V as Copy/Paste and enable it.") - else: - os.system("(del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\") 2> nul") - -def cmdline(command): - process = Popen( - args=command, - stdout=PIPE, - universal_newlines=True, - shell=True - ) - return process.communicate()[0] - -if platform.system() == 'Windows': - print("\nYou are detected as running Windows.") - windows_setup() - sys.exit() - -check_x11 = cmdline("(env | grep -i x11 || loginctl show-session \"$XDG_SESSION_ID\" -p Type) | awk -F= '{print $2}'").strip() - -if len(check_x11) == 0: - if os.name != 'nt': - print("You are not using x11, please logout and back in using x11/Xorg") - sys.exit() - else: - print("\nYou are detected as running Windows.") - windows_setup() - sys.exit() - -distro = cmdline("awk -F= '$1==\"NAME\" { print $2 ;}' /etc/os-release").replace('"','').strip().split(" ")[0] -dename = cmdline("./system-config/dename.sh").replace('"','').strip().split(" ")[0].lower() - -run_pkg = "" - -def requirements(pkgm): - print(bcolors.CYELLOW2 + "You need to install some packages, " +run_pkg+ ", for Kinto to fully remap browsers during input focus.\n" + bcolors.ENDC) - print("sudo " + pkgm + " " + run_pkg + "\n") - run_install = yn_choice(bcolors.CYELLOW2 + "Would you like to run it now? (Will require sudo privileges.)\n" + bcolors.ENDC) - if(run_install): - os.system("sudo " + pkgm + run_pkg) - print("\n") - -def install_ibus(): - global distro - print(bcolors.CYELLOW2 + "You need to set IBus as the default Input Method for full word-wise support and re-run this installer.\n" + bcolors.ENDC) - print(bcolors.CYELLOW2 + "Confirm the IBus Setup by saying Yes and then closing the window.\n" + bcolors.ENDC) - print("ibus-setup\n") - print("im-config -n ibus or im-chooser\n") - run_install = yn_choice(bcolors.CYELLOW2 + "Would you like to run it now? (Will require logoff and logon.)\n" + bcolors.ENDC) - if(run_install): - if distro=="fedora": - os.system("ibus-setup") - os.system("im-chooser") - print("\n") - print("IBus needs to have Input Method set to your language.") - print("im-chooser needs IBus to be selected & closed.") - input("Will need to log off and back on for it take effect...") - else: - os.system("ibus-setup") - os.system("im-config -n ibus") - print("\n") - input("IBus has been set as the default Input Method.\nPress any key to exit and re-run after logoff & logon...") - sys.exit() - -def setShortcuts(): - global distro - distroVersion = cmdline("awk -F= '$1==\"VERSION_ID\" { print $2 ;}' /etc/os-release").replace('"','').strip() - - print("\nIf Kinto is already running it will be stopped...") - print("If you cancel the installer you can re-run Kinto via\n systemctl --user start keyswap") - - cmdline("systemctl --user stop keyswap") - print("\nDetected " + distro + " " + distroVersion.strip() + " DE: " + dename + "\n") - addhotkeys = yn_choice("\nDo you want to apply system level shortcuts?") - if(addhotkeys): - distro = distro.lower() - if dename == "gnome" or dename == "mate" or dename == "budgie": - cmdline('dconf dump /org/gnome/desktop/wm/keybindings/ > keybindings_`date +"%Y.%m.%d-%s"`.conf') - cmdline('dconf dump /org/gnome/mutter/keybindings/ > mutter_`date +"%Y.%m.%d-%s"`.conf') - if(kintotype == 1): - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['Tools','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['Tools','Tab']\"") - else: - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['F13','F13','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['F14','F14','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['h','F9']\"") - # - # Leaving run dialog disabled for now - # Too slow on appearing, compared to the app menu - # - # if dename != "budgie": - cmdline("gsettings reset org.gnome.desktop.wm.keybindings panel-main-menu") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - # else: - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['F1']\"") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-run-dialog \"['Space','Space']\"") - cmdline("gsettings set org.gnome.shell.keybindings toggle-application-view \"['LaunchB']\"") - if dename != "mate": - cmdline("gsettings set org.gnome.mutter overlay-key ''") - if (distro == "ubuntu" and dename == "gnome") or (distro == "ubuntu" and dename == "budgie") or (distro == "linux" and dename == "mate") or (distro == "ubuntu" and dename == "mate"): - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['Up','Left']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['Down','Right']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']") - cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['h','F9']\"") - cmdline("gsettings reset org.gnome.desktop.wm.keybindings panel-main-menu") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - elif distro == "pop!_os" and dename == "gnome": - cmdline("gsettings set org.gnome.desktop.wm.keybindings close \"['F4','w']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings toggle-maximized \"['F10','Up']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['h','F9']\"") - cmdline("gsettings reset org.gnome.desktop.wm.keybindings panel-main-menu") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['Up','Left']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['Down','Right']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']") - elif distro == "elementary" and dename == "gnome": - if(kintotype == 1): - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['Tools','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['Tools','Tab']\"") - else: - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications \"['F13','F13','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward \"['F14','F14','Tab']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings show-desktop \"['d','Down']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings toggle-maximized \"['F10','Up']\"") - cmdline("gsettings reset org.gnome.desktop.wm.keybindings panel-main-menu") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['h','F9']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - if(kintotype == 2): - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Elementary cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term') - cmdline('perl -pi -e "s/(\w.*)(\/\/ Default cmdtab)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_term') - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Elementary cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_gui') - cmdline('perl -pi -e "s/(\w.*)(\/\/ Default cmdtab)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_gui') - # elif distro == "budgie" and dename == "gnome": - # print("Apply budgie shortcuts here") - elif (dename == "xfce"): - print("Applying xfce shortcuts...") - cmdline('cp ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ./xfce4-keyboard-shortcuts_`date +"%Y.%m.%d-%s"`.xml') - # Reset Show desktop - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/d" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/d" --create --type string --set "show_desktop_key"') - # Reset App Cycle - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/backslash" --create --type string --set "cycle_windows_key"') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/backslash" --create --type string --set "cycle_reverse_windows_key"') - # cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/h" --create --type string --set "hide_window_key"') - # Don't need to undo other maps for menu - # cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/space" --create --type string --set "xfce4-popup-whiskermenu"') - # cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/space" --create --type string --set "xfce4-popup-whiskermenu"') - cmdline('xfconf-query --reset --channel xfce4-keyboard-shortcuts --property "/commands/custom/space"') - cmdline('xfconf-query --reset --channel xfce4-keyboard-shortcuts --property "/commands/custom/space"') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/default/Escape" --create --type string --set "xfce4-popup-whiskermenu"') - # Reset move to desktop shortcuts - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Home" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/End" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --reset') - os.system('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --create --type string --set "move_window_prev_workspace_key"') - os.system('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --create --type string --set "move_window_next_workspace_key"') - # Reset Change Workspace - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --reset') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --create --type string --set "left_workspace_key"') - cmdline('xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --create --type string --set "right_workspace_key"') - print("\nYou may need to run these commands manually to make sure they are set, if you want to move windows between desktops.\n") - print(' xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --create --type string --set "move_window_prev_workspace_key"') - print(' xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --create --type string --set "move_window_next_workspace_key"\n') - elif distro == "fedora" and dename == "gnome": - cmdline("gsettings set org.gnome.desktop.wm.keybindings show-desktop \"['d']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up \"['Up','Left']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down \"['Down','Right']\"") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left ['']") - cmdline("gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right ['']") - cmdline("gsettings set org.gnome.desktop.wm.keybindings minimize \"['h','F9']\"") - # cmdline("gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space','Space']\"") - cmdline("gsettings reset org.gnome.desktop.wm.keybindings panel-main-menu") - cmdline("gsettings set org.gnome.mutter.keybindings toggle-tiled-right \"['Right']\"") - cmdline("gsettings set org.gnome.mutter.keybindings toggle-tiled-left \"['Left']\"") - # org.gnome.mutter.keybindings toggle-tiled-right ['Right'] - # org.gnome.mutter.keybindings toggle-tiled-left ['Left'] - elif dename == "kde": - # cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "krunner.desktop" --key "_launch","Alt+Space\tAlt+F2\tSearch,Alt+Space\tAlt+F2\tSearch,KRunner"') - # Remove Alt+F3 Operations Menu - Sublimetext Select-All - cmdline('cp ~/.config/kwinrc ./kwinrc_`date +"%Y.%m.%d-%s"`') - cmdline('cp ~/.config/kglobalshortcutsrc ./kde_kglobalshortcutsrc_`date +"%Y.%m.%d-%s"`') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Switch to Previous Desktop" "Meta+Left,Meta+Left,Switch to Previous Desktop"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Window Operations Menu" "none,Alt+F3,Window Operations Menu"') - if(kintotype == 1): - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows" "Ctrl+Tools,Alt+Tab,Walk Through Windows"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows (Reverse)" "Ctrl+Shift+Tools,Alt+Shift+Backtab,Walk Through Windows (Reverse)"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows of Current Application" "Alt+F6,none,Walk Through Windows of Current Application"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows of Current Application (Reverse)" "Alt+Shift+F6,none,Walk Through Windows of Current Application (Reverse)"') - else: - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows" "Ctrl+F13,Alt+Tab,Walk Through Windows"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows (Reverse)" "Ctrl+Shift+F14,Alt+Shift+Backtab,Walk Through Windows (Reverse)"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Walk Through Windows Alternative" "none,none,Walk Through Windows"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Maximize Window" "none,Meta+PgUp,Maximize Window"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Window Maximize" "Meta+Ctrl+F,Alt+F10,Maximize Window"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Minimize Window" "Meta+h,Meta+PgDown,Minimize Window"') - cmdline('kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" --key "Switch to Next Desktop" "Meta+Right,Meta+Right,Switch to Next Desktop"') - os.system('kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 &') - else: - print('distro: ' + distro + ' de: ' + dename) - print(bcolors.CRED2 + "A supported OS and DE was not found, you may not have full system level shortcuts installed." + bcolors.ENDC) - print(bcolors.CRED2 + "You may want to find your DE or Window Manager settings and manually set Alt-Tab & other OS related shortcuts." + bcolors.ENDC) - if dename == "gnome" or dename == "mate" or dename == "budgie": - # Apply dconf update to make updates survive reboots - cmdline('dconf dump /org/gnome/desktop/wm/keybindings/ > tempkb.conf') - cmdline('dconf dump /org/gnome/mutter/keybindings/ > tempmt.conf') - cmdline('dconf load /org/gnome/desktop/wm/keybindings/ < tempkb.conf') - cmdline('dconf load /org/gnome/mutter/keybindings/ < tempmt.conf') - cmdline('sleep 1 && rm -f ./tempkb.conf;rm -f ./tempmt.conf') - if dename == "budgie": - print('** Make sure to open Keyboard settings & reset "switch applications" to cmd+tab **') - # cmdline('dconf update') - -def Uninstall(): - print("You selected to Uninstall Kinto.\n") - restore = yn_choice("\nYour DE is " + dename + ".\n\nY: Restore hotkeys from backup\nN: Reset OS/DE hotkeys\nWhich option would you prefer?") - print("") - if(restore): - if dename == "gnome": - print("Restoring DE hotkeys...") - wmkeys = cmdline('ls | grep -m1 "keybinding"') - mutterkeys = cmdline('ls | grep -m1 "mutter_"') - if len(wmkeys) > 0: - print('dconf load /org/gnome/desktop/wm/keybindings/ < ' + wmkeys) - cmdline('dconf load /org/gnome/desktop/wm/keybindings/ < ' + wmkeys) - else: - print('Gnome Desktop keybindings backup not found...') - if len(mutterkeys) > 0: - print('dconf load /org/gnome/mutter/keybindings/ < ' + mutterkeys) - cmdline('dconf load /org/gnome/mutter/keybindings/ < ' + mutterkeys) - if len(wmkeys) > 0 or len(mutterkeys) > 0: - print("Gnome hotkeys have been successfully restored.") - elif dename == "kde": - print("Restoring DE hotkeys...") - kwinkeys = cmdline('ls | grep -m1 "kwinrc"').strip() - kdekeys = cmdline('ls | grep -m1 "kglobalshortcutsrc"').strip() - cmdline('cp ./' + kdekeys + ' ~/.config/kglobalshortcutsrc') - cmdline('cp ./' + kwinkeys + ' ~/.config/kwinrc') - elif dename == "xfce": - print("Restoring DE hotkeys...") - xfcekeys = cmdline('ls | grep -m1 "xfce4-keyboard"').strip() - cmdline('cp ./' + xfcekeys + ' ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml') - if dename == "gnome" or dename == "kde" or dename == "xfce": - print("./uninstall.sh\n") - subprocess.check_call(shlex.split("./uninstall.sh")) - print("Done.") - if dename == "kde" or dename == "xfce": - print("Please log off and back on for your original hotkeys to take effect.") - else: - if dename == "gnome": - print("Resetting DE hotkeys...\n") - print("gsettings reset-recursively org.gnome.desktop.wm.keybindings") - cmdline("gsettings reset-recursively org.gnome.desktop.wm.keybindings") - print("gsettings reset-recursively org.gnome.mutter.keybindings") - cmdline("gsettings reset-recursively org.gnome.mutter.keybindings") - print("gsettings set org.gnome.mutter overlay-key 'super'") - cmdline("gsettings set org.gnome.mutter overlay-key 'super'") - cmdline('dconf dump /org/gnome/mutter/ > mutter.conf') - cmdline('dconf load /org/gnome/mutter/ < mutter.conf') - elif dename == "kde": - print("Resetting DE hotkeys...\n") - cmdline('mv ~/.config/kwinrc ~/.config/kwinrc.kinto') - cmdline('mv ~/.config/kglobalshortcutsrc ~/.config/kglobalshortcutsrc.kinto') - elif dename == "xfce": - print("Resetting DE hotkeys...\n") - cmdline('cp /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml') - if dename == "gnome" or dename == "kde" or dename == "xfce": - print("./uninstall.sh\n") - subprocess.check_call(shlex.split("./uninstall.sh")) - print("Done.") - if dename == "kde" or dename == "xfce": - print("Please log off and back on for your original DE hotkeys to take effect.") - -def kintoImpOne(): - - check_xbind = cmdline("\\which xbindkeys 2>/dev/null").strip() - check_xdotool = cmdline("\\which xdotool 2>/dev/null").strip() - check_ibus = cmdline("\\which ibus-setup 2>/dev/null").strip() - - pkgm = cmdline("\\which apt-get 2>/dev/null").strip() - - if len(pkgm) == 0: - pkgm = cmdline("\\which dnf 2>/dev/null").strip() - if len(pkgm) > 0: - pkgm += " check-update;sudo dnf install -y " - else: - pkgm += " install -y " - pkgm += " update; sudo apt-get install -y " - - if len(pkgm) == 0: - pkgm = cmdline("\\which pacman 2>/dev/null").strip() - if len(pkgm) > 0: - pkgm += " -Syy; sudo pacman -S " - - - if len(pkgm) == 0: - print("No supported package manager found. Exiting...") - sys.exit() - - - runpkg = 0 - global run_pkg - - if len(check_xbind) > 0 and len(check_xdotool) > 0 and len(check_ibus) > 0: - print("Xbindkeys, xdotool and IBus requirement is installed.") - if len(check_xbind) == 0: - run_pkg = "xbindkeys" - runpkg = 1 - if len(check_xdotool) == 0: - run_pkg += " xdotool" - runpkg = 1 - if len(check_ibus) == 0: - # may differ with distro, but for now - run_pkg += " ibus" - runpkg = 1 - - if runpkg != 0: - print(runpkg) - requirements(pkgm) - - if not os.path.exists(homedir + '/.config/ibus/bus') and cmdline("ls ~/.config/ibus/bus -1rt") == "": - install_ibus() - -try: - f = open("defaults.json") -except IOError: - print("defaults.json file is missing. Will exit.\n") - exit() -f.close() - -try: - f = open("defaults.json") -except IOError: - print("defaults.json file is missing. Will exit.\n") - exit() -f.close() - -try: - f = open("user_config.json") -except IOError: - print("user_config.json file is missing. Will exit.\n") - exit() -f.close() - -if os.path.isdir(homedir + "/.config/kinto") == False: - os.mkdir(homedir + "/.config/kinto") - time.sleep(0.5) - -with open('defaults.json') as json_file: - data = json.load(json_file) - - -color_arr = [bcolors.CBEIGE,bcolors.CRED2,bcolors.CGREEN,bcolors.CYELLOW ] - -print("\nKinto - Type in Linux like it's a Mac.\n") - -kintotype = int(input(color_arr[2] + - "1) Kinto - xkeysnail (udev/x11) - Recommended\n" + color_arr[0] + - "2) Kinto - Original xkb/x11 implementation\n" + color_arr[3] + - "3) Uninstall Kinto - xkeysnail\n" + - "4) Uninstall Kinto - Original xkb\n\n" - + bcolors.ENDC)) -print("") -if(kintotype == 1): - subprocess.check_call(shlex.split("./xkeysnail_service.sh")) - if os.path.isdir(homedir + "/.config/kinto") == True: - setShortcuts() - subprocess.check_call(shlex.split("./xkeysnail_service.sh budgieUpdate")) - exit() - -if(kintotype == 3): - subprocess.check_call(shlex.split("./xkeysnail_service.sh uninstall")) - exit() - -if(kintotype == 4): - Uninstall() - exit() - -kintoImpOne() - -for index, item in enumerate(data['defaulttypes']): - ossym = "" - if item == "windows": - ossym = u'\u2756' - elif item == "mac": - ossym = u'\u2318' - elif item == "chromebook": - ossym = u'\u2707' - print("%s %i. %s %s %s" % (color_arr[index], index+1, ossym, item.capitalize(), bcolors.ENDC)) - -print("%s %i. Uninstall %s" % (color_arr[3], len(data['defaulttypes'])+1, bcolors.ENDC)) - -default = 0 -while not int(default) in range(1,len(data['defaulttypes'])+2): - default = int(input(bcolors.CYELLOW2 + "\nPlease enter your keyboard type (1 - " + str(len(data['defaulttypes'])) + ") : " + bcolors.ENDC)) -print("") - -if default == len(data['defaulttypes'])+1: - Uninstall() - exit() - -try: - f = open(homedir + "/.config/kinto/user_config.json") - rewrite = yn_choice("~/.config/kinto/user_config.json already exists. Do you want to overwrite it with a new config?") - print("") - if(rewrite): - copyfile("user_config.json", homedir + "/.config/kinto/user_config.json") - else: - exit() -except IOError: - pass - copyfile("user_config.json", homedir + "/.config/kinto/user_config.json") -finally: - f.close() - -keyboardconfigs = [obj for obj in data['defaults'] if(obj['type'] == data['defaulttypes'][default-1])] - -# for k in keyboardconfigs: -for index, k in enumerate(keyboardconfigs): - print(color_arr[default-1] + bcolors.BOLD + str(index+1) + '. ' + k['name'] + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'Description: ' + k['description'] + bcolors.ENDC) - -print("") -defaultkb = 0 -while not int(defaultkb) in range(1,len(keyboardconfigs)+1): - defaultkb = int(input(bcolors.CYELLOW2 + "Please enter your keyboard config (1 - " + str(len(keyboardconfigs)) + ") : " + bcolors.ENDC)) -print("") - -if 'hack' in keyboardconfigs[defaultkb-1]: - print(bcolors.CYELLOW2 + "You have selected a keyboard config that needs the following command to be ran.\n" + bcolors.ENDC) - print(keyboardconfigs[defaultkb-1]['hack'].replace(";", "\n") + "\n") - runhack = yn_choice(bcolors.CYELLOW2 + "Would you like to run it now? (Will require sudo privileges. Will exit on No.)" + bcolors.ENDC) - if(runhack): - os.system(keyboardconfigs[defaultkb-1]['hack']) - -# Setup the selected keyboards config -os.system("cp -TRv ./.xkb ~/.xkb/") -if os.path.isdir(homedir + "/.xkb/keymap") == False: - os.mkdir(homedir + "/.xkb/keymap") - time.sleep(0.5) -os.system('setxkbmap -option') -os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui') -os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.chrome') -os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui.browsers') -os.system('setxkbmap -print > ~/.xkb/keymap/kbd.mac.term') -time.sleep(0.5) - -symbols_line = cmdline("cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_symbols' | cut -f1 -d:").strip() -types_line = cmdline("cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_types' | cut -f1 -d:").strip() - -cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui') -cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui') -cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term') -cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_term'] + '\\"/2" ~/.xkb/keymap/kbd.mac.term') - -# Set chrome file accordingly for chromebooks or normal -if default != 3: - cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)","+mac_gui(mac_levelssym)+mac_gui(mac_browsers)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers') - cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle)","+mac_gui(mac_browsers)+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') -else: - # Fix multicursor in mac_gui - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Chromebook multicursor)/\$2\$3/g" ~/.xkb/symbols/mac_gui') - cmdline('perl -pi -e "s/(\w.*)(\/\/ Default multicursor)/\/\/ \$1\$2/g" ~/.xkb/symbols/mac_gui') - # Fix browsers - cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)","+mac_gui(mac_levelssym)+mac_gui(mac_browsers_chromebook)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers') - cmdline('sed -i '' -e "' + symbols_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_symbols_gui'].replace("+mac_gui(mac_levelssym)+mac_gui(mac_appcycle_chromebook)","+mac_gui(mac_browsers_chromebook)+mac_gui(mac_chrome)") + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') -if dename == "kde": - # Fix maximize shortcut - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ KDE maximize)/\$2\$3/g" ~/.xkb/symbols/mac_gui') - # term app switching - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ KDE cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term') -else: - # Fix maximize shortcut - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Default maximize)/\$2\$3/g" ~/.xkb/symbols/mac_gui') - # term app switching - cmdline('perl -pi -e "s/(\/\/ )(.*)(\/\/ Default cmdtab)/\$2\$3/g" ~/.xkb/symbols/mac_term') -cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.browsers') -cmdline('sed -i '' -e "' + types_line + 's/\\"/' + keyboardconfigs[defaultkb-1]['xkb_types_gui'] + '\\"/2" ~/.xkb/keymap/kbd.mac.gui.chrome') - -setShortcuts() - -user_file = homedir + '/.config/kinto/user_config.json' -with open(user_file, 'r') as f: - user_config = json.load(f) - -onetime = yn_choice("\nOne time initialization tweaks are available. Would you like to view them?") -print("") -if(onetime): - intents = [obj for obj in user_config['de'] if(obj['intent'] == "init")] - - for index, k in enumerate(intents): - print(color_arr[default-1] + bcolors.BOLD + str(index+1) + '. ' + k['name'] + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'Description: ' + k['description'] + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'run: ' + k['run'].replace(";", "\n") + bcolors.ENDC + '\n') - - print(bcolors.CYELLOW2 + "Please enter your init tweak(s) (eg 1 or 1 2 3 - leave blank to skip): " + bcolors.ENDC) - defaultinit = [int(i) for i in input().split()] - if len(defaultinit) != 0: - user_config['init'] = [intents[defaultinit[0]-1]['id']] - -print("\nDynamic shortcut tweaks\n") - -intents = [obj for obj in user_config['de'] if(obj['intent'] == "gui_term")] -tweaks = [] -tweaks_selected = [] - -for index, k in enumerate(intents): - print(color_arr[default-1] + bcolors.BOLD + str(index+1) + '. ' + k['name'] + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'Description: ' + k['description'] + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'run in gui mode: ' + k['run_gui'].replace(";", "\n") + bcolors.ENDC) - print(bcolors.CYELLOW2 + 'run in terminal mode: ' + k['run_term'].replace(";", "\n") + bcolors.ENDC + '\n') - tweaks.append(k['id']) - -print(bcolors.CYELLOW2 + "Please enter your dynamic shortcut tweak(s) (eg 1 or 1 2 3 - leave blank to skip): " + bcolors.ENDC) -defaultde = [int(i) for i in input().split()] - -for d in defaultde: - user_config['de'][tweaks[d-1]]['active'] = True - tweaks_selected.append(tweaks[d-1]) - -if len(defaultde) != 0: - # gui - user_config['config'][0]['de'] = tweaks_selected - # term - user_config['config'][1]['de'] = tweaks_selected - # firefox - user_config['config'][2]['de'] = tweaks_selected - # chrome - user_config['config'][3]['de'] = tweaks_selected - -user_config['config'][0]['run'] = keyboardconfigs[defaultkb-1]['gui'] -user_config['config'][1]['run'] = keyboardconfigs[defaultkb-1]['term'] -user_config['config'][2]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.browsers") -user_config['config'][3]['run'] = keyboardconfigs[defaultkb-1]['gui'].replace("kbd.mac.gui","kbd.mac.gui.chrome") - -os.remove(user_file) -with open(user_file, 'w') as f: - json.dump(user_config, f, indent=4) -print("Saved configuration to ~/.config/kinto/user_config.json\n") -print("Now running keyswap_service.sh to setup the keyswap service...") -print("Keyswap will be configured to run on user login\n") -print("You may start, stop, restart or view the status of the service with following commands\n") -print("systemctl --user start keyswap") -print("systemctl --user stop keyswap") -print("systemctl --user restart keyswap") -print("systemctl --user status keyswap") -os.system("./keyswap_service.sh") \ No newline at end of file diff --git a/kinto_old/system-config/.chrome-nw b/kinto_old/system-config/.chrome-nw deleted file mode 100644 index 7fd0b99..0000000 --- a/kinto_old/system-config/.chrome-nw +++ /dev/null @@ -1,7 +0,0 @@ -"xdotool key --delay 0 --clearmodifiers Alt+Left" - Control + Left + Release - #Home + release - -"xdotool key --delay 0 --clearmodifiers Alt+Right" - Control + Right + Release - #End + release diff --git a/kinto_old/system-config/.chrome-ww b/kinto_old/system-config/.chrome-ww deleted file mode 100644 index 9717ad1..0000000 --- a/kinto_old/system-config/.chrome-ww +++ /dev/null @@ -1,5 +0,0 @@ -"xdotool key --delay 0 --clearmodifiers Home" - Control + Left + Release - -"xdotool key --delay 0 --clearmodifiers End" - Control + Right + Release diff --git a/kinto_old/system-config/.firefox-nw b/kinto_old/system-config/.firefox-nw deleted file mode 100644 index a2f2578..0000000 --- a/kinto_old/system-config/.firefox-nw +++ /dev/null @@ -1,7 +0,0 @@ -#"xte 'keydown Control_L' 'key bracketleft' 'keyup Control_L'" -"xdotool key --delay 0 --clearmodifiers Control_L+bracketleft" - Home + Release - -#"xte 'keydown Control_R' 'key bracketright' 'keyup Control_R'" -"xdotool key --delay 0 --clearmodifiers Control_L+bracketright" - End + Release \ No newline at end of file diff --git a/kinto_old/system-config/budgie-daemon_10.5.1.md5 b/kinto_old/system-config/budgie-daemon_10.5.1.md5 deleted file mode 100644 index 2def76b..0000000 --- a/kinto_old/system-config/budgie-daemon_10.5.1.md5 +++ /dev/null @@ -1 +0,0 @@ -3cd35e15350ca7dac0c3cbfce1c661f7 /usr/bin/budgie-daemon diff --git a/kinto_old/system-config/budgie-desktop_10.5.1.md5 b/kinto_old/system-config/budgie-desktop_10.5.1.md5 deleted file mode 100644 index f759906..0000000 --- a/kinto_old/system-config/budgie-desktop_10.5.1.md5 +++ /dev/null @@ -1 +0,0 @@ -8660c2f8e0a9d3cff896254f6c0f9159 /usr/bin/budgie-desktop diff --git a/kinto_old/system-config/caret_status.sh b/kinto_old/system-config/caret_status.sh deleted file mode 100644 index 375208b..0000000 --- a/kinto_old/system-config/caret_status.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -mkdir -p /tmp/kinto - -IBUSADD=$(cat ~/.config/ibus/bus/`ls ~/.config/ibus/bus -1rt | tail -n1` | awk -F'IBUS_ADDRESS=' '{print $2}' | xargs) -dbus-monitor --address $IBUSADD "path='/org/freedesktop/IBus/Panel',interface='org.freedesktop.IBus.Panel',member='FocusOut'" 2> /dev/null | grep --line-buffered -o -P '(?<=object path \"/org/freedesktop/IBus/InputContext_).*(?=[\"])' | -while read ln -do - printf '%s\n' "$ln" > /tmp/kinto/caret -done diff --git a/kinto_old/system-config/caret_status_xkey.sh b/kinto_old/system-config/caret_status_xkey.sh deleted file mode 100644 index a405c86..0000000 --- a/kinto_old/system-config/caret_status_xkey.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash - -for pid in $(pidof -x caret_status_xkey.sh); do - if [ $pid != $$ ]; then - echo "[$(date)] : caret_status_xkey.sh : Process is already running with PID $pid" - exit 1 - fi -done - -mkdir -p /tmp/kinto/xkeysnail -echo "0" > /tmp/kinto/caret - -millitime=`date +%s%3N` -echo "$millitime" > /tmp/kinto/millitime - -IBUSADD=$(cat ~/.config/ibus/bus/`ls ~/.config/ibus/bus -1rt | tail -n1` | awk -F'IBUS_ADDRESS=' '{print $2}' | xargs) -dbus-monitor --address $IBUSADD "path='/org/freedesktop/IBus/Panel',interface='org.freedesktop.IBus.Panel',member='FocusOut'" 2> /dev/null | grep --line-buffered -o -P '(?<=object path \"/org/freedesktop/IBus/InputContext_).*(?=[\"])' | -while read ln -do - newtime=`date +%s%3N` - difftime=$(( newtime - millitime )) - millitime="$newtime" - echo "$millitime" > /tmp/kinto/millitime - appname=$(xprop -id `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'` | grep "WM_CLASS(STRING)" | awk '{print substr($4,2,length($4)-2)}') - if [ "${ln}" == "1" ]; then - appname=$(xprop -id `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'` | grep "WM_CLASS(STRING)" | awk '{print substr($4,2,length($4)-2)}') - if [ "${appname}" == "Firefox" ]; then - # echo "ff ww" - printf 'ff ww %s\n' "1" > /tmp/kinto/caret - elif [ "${appname}" == "Chromium" ] || [ "${appname}" == "Chromium-browser" ] || [ "${appname}" == "Google-chrome" ] || [ "${appname}" == "Epiphany" ]; then - # echo "chrome ww" - printf 'chrome ww %s\n' "1" > /tmp/kinto/caret - else - echo "reset" > /tmp/kinto/caret - fi - else - if [ "${appname}" == "Firefox" ]; then - # echo "ff nw" - printf 'ff nw\n' > /tmp/kinto/caret - elif [ "${appname}" == "Chromium" ] || [ "${appname}" == "Chromium-browser" ] || [ "${appname}" == "Google-chrome" ] || [ "${appname}" == "Epiphany" ]; then - # echo "chrome nw" - printf 'chrome nw\n' > /tmp/kinto/caret - else - echo "reset" > /tmp/kinto/caret - fi - fi - -done& - -while (true);do - sleep 0.2 - appname2=$(xprop -id `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'` | grep "WM_CLASS(STRING)" | awk '{print substr($4,2,length($4)-2)}') - check=$(cat /tmp/kinto/caret) - millitime=$(cat /tmp/kinto/millitime) - newtime=`date +%s%3N` - difftime=$(( newtime - millitime )) - if (( $difftime > 200 )); then - if [ "${check}" == "ff nw" ] && [ "${lastcheck}" != 1 ]; then - echo "firefox no wordwise" - # Sets new config - perl -pi -e "s/[^\n]\s{3}(K.*)(# Chrome-nw)/ # \$1\$2/g;s/[^\n]\s{3}#\s(K.*)(# Firefox-nw)/ \$1\$2/g;s/[^\n]\s{3}(K.*)(# Beginning of Line)/ # \$1\$2/g;s/[^\n]\s{3}(K.*)(# End of Line)/ # \$1\$2/g" /tmp/kinto/xkeysnail/kinto.py 2>/dev/null - lastcheck=1 - ww=0 - elif [ "${check}" == "chrome nw" ] && [ "${lastcheck}" != 2 ]; then - echo "chrome no wordwise" - # Sets new config - perl -pi -e "s/[^\n]\s{3}(K.*)(# Firefox-nw)/ # \$1\$2/g;s/[^\n]\s{3}(K.*)(# Beginning of Line)/ # \$1\$2/g;s/[^\n]\s{3}(K.*)(# End of Line)/ # \$1\$2/g;s/[^\n]\s{3}#\s(K.*)(# Chrome-nw)/ \$1\$2/g" /tmp/kinto/xkeysnail/kinto.py 2>/dev/null - lastcheck=2 - ww=0 - elif ([ "${check}" != "chrome nw" ] && [ "${check}" != "ff nw" ] && [ "${lastcheck}" != 3 ]) || ([ "${appname2}" != "Firefox" ] && [ "${appname2}" != "Chromium" ] && [ "${appname2}" != "Chromium-browser" ] && [ "${appname2}" != "Google-chrome" ] && [ "${appname2}" != "Epiphany" ] && [ "${check}" == "reset" ] && [ "${lastcheck}" != 3 ]); then - echo "wordwise" - # Sets original config - perl -pi -e "s/[^\n]\s{3}(K.*)(# Firefox-nw)/ # \$1\$2/g;s/[^\n]\s{3}#\s(K.*)(# Beginning of Line)/ \$1\$2/g;s/[^\n]\s{3}#\s(K.*)(# End of Line)/ \$1\$2/g;s/[^\n]\s{3}(K.*)(# Chrome-nw)/ # \$1\$2/g" /tmp/kinto/xkeysnail/kinto.py 2>/dev/null - # cp /home/ryan/.config/kinto/kinto.py /tmp/kinto/xkeysnail/kinto.py - lastcheck=3 - fi - fi -done diff --git a/kinto_old/system-config/cleanup.sh b/kinto_old/system-config/cleanup.sh deleted file mode 100644 index 7165543..0000000 --- a/kinto_old/system-config/cleanup.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -setxkbmap -option -# force command to run silently and report true -killall xbindkeys > /dev/null 2>&1 || : -# rm /tmp/kinto/caret - -gsettings set org.gnome.desktop.wm.keybindings switch-applications "['Tab']" -gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "['Tab']" -pkill -f /.config/kinto/xactive.sh \ No newline at end of file diff --git a/kinto_old/system-config/keyboard.ids b/kinto_old/system-config/keyboard.ids deleted file mode 100644 index f40825a..0000000 --- a/kinto_old/system-config/keyboard.ids +++ /dev/null @@ -1,3630 +0,0 @@ -# -# List of USB Keyboard ID's -# -# Filter: ^((?!eyboard|^[0-9]).)*$ -# -# Maintained by Stephen J. Gowdy -# If you have any new entries, please submit them via -# http://www.linux-usb.org/usb-ids.html -# or send entries as patches (diff -u old new) in the -# body of your email (a bot will attempt to deal with it). -# The latest version can be obtained from -# http://www.linux-usb.org/usb.ids -# -# Version: 2020.06.14 -# Date: 2020-06-14 20:34:07 -# - -# Vendors, devices and interfaces. Please keep sorted. - -# Syntax: -# vendor vendor_name -# device device_name <-- single tab -# interface interface_name <-- two tabs -# - -0001 Fry's Electronics -0002 Ingram -0003 Club Mac -0004 Nebraska Furniture Mart -0011 Unknown -0053 Planex -0078 Microntek -0079 DragonRise Inc. -0080 Unknown -0085 Boeye Technology Co., Ltd. -0102 miniSTREAK -0105 Trust International B.V. -0127 IBP -0145 Unknown -017c MLK -0200 TP-Link -0204 Chipsbank Microelectronics Co., Ltd -0218 Hangzhou Worlde -02ad HUMAX Co., Ltd. -0303 Mini Automation Controller -0324 OCZ Technology Inc -0325 OCZ Technology Inc -0386 LTS -03d9 Shenzhen Sinote Tech-Electron Co., Ltd -03da Bernd Walter Computer Technology -03e7 Intel -03e8 EndPoints, Inc. -03e9 Thesys Microelectronics -03ea Data Broadcasting Corp. -03eb Atmel Corp. - 2015 at90usbkey sample firmware (HID keyboard) - 2042 LUFA Keyboard Demo Application - 204d LUFA Combined Mouse and Keyboard Demo Application - 2061 LUFA Combined Mass Storage and Keyboard Demo Application - 6127 AT91SAM HID Keyboard Demo Application -03ec Iwatsu America, Inc. -03ed Mitel Corp. -03ee Mitsumi - 5609 Japanese Keyboard -03f0 HP, Inc - 0024 KU-0316 Keyboard - 010c Multimedia Keyboard Hub - 0122 HID Internet Keyboard - 020c Multimedia Keyboard - 0324 SK-2885 keyboard - 034a Elite Keyboard - 050c 5219 Wireless Keyboard - 0924 Modular Smartcard Keyboard - 0b0c Wireless Keyboard and Optical Mouse receiver - 0d4a SK-2025 Keyboard - 0f0c Wireless Keyboard and Optical Mouse receiver - 1024 Smart Card Keyboard - 1027 Virtual keyboard and mouse - 1524 Smart Card Keyboard - KR - 1624 Smart Card Keyboard - JP - 2b4a Business Slim Keyboard - 304a Slim Keyboard - 354a Slim Keyboard -03f1 Genoa Technology -03f2 Oak Technology, Inc. -03f3 Adaptec, Inc. -03f4 Diebold, Inc. -03f5 Siemens Electromechanical -03f8 Epson Imaging Technology Center -03f9 KeyTronic Corp. - 0100 KT-2001 Keyboard - 0101 Keyboard - 0102 Keyboard Mouse -03fb OPTi, Inc. -03fc Elitegroup Computer Systems -03fd Xilinx, Inc. -03fe Farallon Comunications -0400 National Semiconductor Corp. -0401 National Registry, Inc. -0402 ALi Corp. -0403 Future Technology Devices International, Ltd - 8371 PS/2 Keyboard And Mouse -0404 NCR Corp. - 0320 5932-USB Keyboard - 0322 5932-USB Enhanced Keyboard - 0323 5932-USB Enhanced Keyboard, Flash-Recovery/Download - 032a K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode -0405 Synopsys, Inc. -0406 Fujitsu-ICL Computers -0407 Fujitsu Personal Systems, Inc. -0408 Quanta Computer, Inc. -0409 NEC Corp. - 0011 PC98 Series Layout Keyboard Mouse - 0014 Japanese Keyboard - 0019 109 Japanese Keyboard with Bus-Powered Hub - 001a PC98 Series Layout Keyboard with Bus-Powered Hub - 0025 Mini Keyboard with Bus-Powered Hub - 0034 109 Japanese Keyboard with One-touch start buttons - 003f Wireless Keyboard with One-touch start buttons - 004f Wireless Keyboard with One-touch start buttons - 0094 Japanese Keyboard with One-touch start buttons - 0095 Japanese Keyboard -040a Kodak Co. -040b Weltrend Semiconductor - 2000 wired Keyboard [Dynex DX-WRK1401] -040c VTech Computers, Ltd -040d VIA Technologies, Inc. -040e MCCI -040f Echo Speech Corp. -0411 BUFFALO INC. (formerly MelCo., Inc.) -0412 Award Software International -0413 Leadtek Research, Inc. -0414 Giga-Byte Technology Co., Ltd -0416 Winbond Electronics Corp. - 551e Keyboard - 551f Keyboard w/ Sys and Media - 5521 Keyboard -0417 Symbios Logic -0418 AST Research -0419 Samsung Info. Systems America, Inc. -041a Phoenix Technologies, Ltd -041b d'TV -041d S3, Inc. -041e Creative Technology, Ltd - 2801 Prodikeys PC-MIDI multifunction keyboard -041f LCS Telegraphics -0420 Chips and Technologies -0421 Nokia Mobile Phones -0422 ADI Systems, Inc. -0423 Computer Access Technology Corp. -0424 Microchip Technology, Inc. (formerly SMSC) -0425 Motorola Semiconductors HK, Ltd - 0101 G-Tech Wireless Mouse & Keyboard -0426 Integrated Device Technology, Inc. -0427 Motorola Electronics Taiwan, Ltd -0428 Advanced Gravis Computer Tech, Ltd -0429 Cirrus Logic -042a Ericsson Austrian, AG -042b Intel Corp. -042c Innovative Semiconductors, Inc. -042d Micronics -042e Acer, Inc. -042f Molex, Inc. -0430 Sun Microsystems, Inc. - 0002 109 Keyboard - 0005 Type 6 Keyboard - 000a 109 Japanese Keyboard - 000b 109 Japanese Keyboard - 0082 109 Japanese Keyboard - 0083 109 Japanese Keyboard - 00a2 Type 7 Keyboard - a111 remote keyboard for P4 chip -0431 Itac Systems, Inc. -0432 Unisys Corp. -0433 Alps Electric, Inc. - abab Keyboard -0434 Samsung Info. Systems America, Inc. -0435 Hyundai Electronics America -0436 Taugagreining HF -0437 Framatome Connectors USA -0438 Advanced Micro Devices, Inc. -0439 Voice Technologies Group -043d Lexmark International, Inc. -043e LG Electronics USA, Inc. -043f RadiSys Corp. -0440 Eizo Nanao Corp. -0441 Winbond Systems Lab. -0442 Ericsson, Inc. -0443 Gateway, Inc. - 000e Multimedia Keyboard - 002e Millennium Keyboard -0445 Lucent Technologies, Inc. -0446 NMB Technologies Corp. - 6781 Keyboard with PS/2 Mouse Port - 6782 Keyboard -0447 Momentum Microsystems -0449 Duta Multi Robotik -044a Shamrock Tech. Co., Ltd -044b WSI -044c CCL/ITRI -044d Siemens Nixdorf AG -044e Alps Electric Co., Ltd - 1104 Japanese Keyboard -044f ThrustMaster, Inc. -0450 DFI, Inc. -0451 Texas Instruments, Inc. - e010 TI SmartPad Keyboard -0452 Mitsubishi Electronics America, Inc. -0453 CMD Technology - 6781 NMB Keyboard - 6783 Chicony Composite Keyboard -0454 Vobis Microcomputer AG -0455 Telematics International, Inc. -0456 Analog Devices, Inc. -0457 Silicon Integrated Systems Corp. -0458 KYE Systems Corp. (Mouse Systems) - 004c Slimstar Pro Keyboard -0459 Adobe Systems, Inc. -045a SONICblue, Inc. -045b Hitachi, Ltd -045d Nortel Networks, Ltd -045e Microsoft Corp. - 000b Natural Keyboard Elite - 001c Internet Keyboard Pro - 001d Natural Keyboard Pro - 002b Internet Keyboard Pro - 002d Internet Keyboard - 0048 Office Keyboard 1.0A - 005c Office Keyboard (106/109) - 005f Wireless MultiMedia Keyboard - 0061 Wireless MultiMedia Keyboard (106/109) - 0063 Wireless Natural MultiMedia Keyboard - 0065 Wireless Natural MultiMedia Keyboard (106/109) - 006d eHome Remote Control Keyboard keys - 0070 Wireless MultiMedia Keyboard - 0071 Wireless MultiMedia Keyboard (106/109) - 0072 Wireless Natural MultiMedia Keyboard - 0073 Wireless Natural MultiMedia Keyboard (106/109) - 0080 Digital Media Pro Keyboard - 00b0 Digital Media Pro Keyboard - 00b4 Digital Media Keyboard 1.0A - 00db Natural Ergonomic Keyboard 4000 V1.0 - 00dd Comfort Curve Keyboard 2000 V1.0 - 071f Mouse/Keyboard 2.4GHz Transceiver V2.0 - 0730 Digital Media Keyboard 3000 - 0750 Wired Keyboard 600 - 0752 Wired Keyboard 400 - 0780 Comfort Curve Keyboard 3000 - 0799 Surface Pro embedded keyboard - 07b6 Comfort Curve Keyboard 3000 - 07b9 Wired Keyboard 200 - 07cd Surface Keyboard - 07f8 Wired Keyboard 600 (model 1576) - 0800 Wireless keyboard (All-in-One-Media) - fff8 Keyboard -0460 Ace Cad Enterprise Co., Ltd -0461 Primax Electronics, Ltd - 0010 HP PR1101U / Primax PMX-KPR1101U Keyboard - 4d01 Comfort Keyboard / Kensington Orbit Elite - 4d8a HP Multimedia Keyboard - 4e04 Lenovo Keyboard KB1021 - 4e6f Acer Wired Keyboard Model KBAY211 -0463 MGE UPS Systems -0464 AMP/Tycoelectronics Corp. -0467 AT&T Paradyne -0468 Wieson Technologies Co., Ltd -046a Cherry GmbH - 0001 Keyboard - 0004 CyBoard Keyboard - 0005 XX33 SmartCard Reader Keyboard - 0008 Wireless Keyboard and Mouse - 0011 G83 (RS 6000) Keyboard - 0023 Keyboard - 0027 CyMotion Master Solar Keyboard - 002a Wireless Mouse & Keyboard - 003c Raptor Gaming Keyboard - 003d Raptor Gaming Keyboard Integrated Hub - 0041 G86 6240 Keyboard - 0081 eHealth Keyboard G87 1504 - 00a1 SmartCard Reader Keyboard KC 1000 SC - 010d MX-Board 3.0 Keyboard - b090 Keyboard -046b American Megatrends, Inc. - 0001 Keyboard - 0101 PS/2 Keyboard, Mouse & Joystick Ports - ff10 Virtual Keyboard and Mouse -046c Toshiba Corp., Digital Media Equipment -046d Logitech, Inc. - 0203 M2452 Keyboard - c221 G11/G15 Keyboard / Keyboard - c222 G15 Keyboard / LCD - c223 G11/G15 Keyboard / USB Hub - c225 G11/G15 Keyboard / G keys - c226 G15 Refresh Keyboard - c227 G15 Refresh Keyboard - c228 G19 Gaming Keyboard - c229 G19 Gaming Keyboard Macro Interface - c22a Gaming Keyboard G110 - c22b Gaming Keyboard G110 G-keys - c22d G510 Gaming Keyboard - c22e G510 Gaming Keyboard onboard audio - c248 G105 Gaming Keyboard - c24d G710 Gaming Keyboard - c301 iTouch Keyboard - c302 iTouch Pro Keyboard - c303 iTouch Keyboard - c305 Internet Keyboard - c307 Internet Keyboard - c308 Internet Navigator Keyboard - c309 Y-BF37 [Internet Navigator Keyboard] - c30b NetPlay Keyboard - c30e UltraX Keyboard (Y-BL49) - c30f Logicool HID-Compliant Keyboard (106 key) - c311 Y-UF49 [Internet Pro Keyboard] - c312 DeLuxe 250 Keyboard - c313 Internet 350 Keyboard - c315 Classic Keyboard 200 - c316 HID-Compliant Keyboard - c317 Wave Corded Keyboard - c318 Illuminated Keyboard - c31b Compact Keyboard K300 - c31c Keyboard K120 - c31d Media Keyboard K200 - c31f Comfort Keyboard K290 - c326 Washable Keyboard K310 - c328 Corded Keyboard K280e - c32b G910 Orion Spark Mechanical Keyboard - c335 G910 Orion Spectrum Mechanical Keyboard - c33a G413 Gaming Keyboard - c503 Cordless Mouse+Keyboard Receiver - c504 Cordless Mouse+Keyboard Receiver - c505 Cordless Mouse+Keyboard Receiver - c509 Cordless Keyboard & Mouse - c529 Logitech Keyboard + Mice - c703 Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) - c714 diNovo Edge Keyboard - c71f diNovo Mini Wireless Keyboard - cab1 Cordless Keyboard for Wii HID Receiver -046e Behavior Tech. Computer Corp. - 0100 Keyboard - 5250 KeyMaestro Multimedia Keyboard - 5273 KeyMaestro Multimedia Keyboard - 5308 KeyMaestro Keyboard - 5408 KeyMaestro Multimedia Keyboard/Hub - 5500 Portable Keyboard 86+9 keys (Model 6100C US) - 6782 BTC 7932 mouse+keyboard -046f Crystal Semiconductor -0471 Philips (or NXP) - 0401 Semiconductors CICT Keyboard - 0402 PS/2 Mouse on Semiconductors CICT Keyboard -0472 Chicony Electronics Co., Ltd - 0065 PFU-65 Keyboard [Chicony] -0473 Sanyo Information Business Co., Ltd -0474 Sanyo Electric Co., Ltd -0475 Relisys/Teco Information System -0476 AESP -0477 Seagate Technology, Inc. -0478 Connectix Corp. -0479 Advanced Peripheral Laboratories -047a Semtech Corp. -047b Silitek Corp. - 0001 Keyboard - 0002 Keyboard and Mouse - 0011 SK-1688U Keyboard - 00f9 SK-1789u Keyboard - 0101 BlueTooth Keyboard and Mouse - 050e Internet Compact Keyboard -047c Dell Computer Corp. -047d Kensington -047e Agere Systems, Inc. (Lucent) -047f Plantronics, Inc. -0480 Toshiba America Inc -0481 Zenith Data Systems -0482 Kyocera Corp. -0483 STMicroelectronics -0484 Specialix -0485 Nokia Monitors -0486 ASUS Computers, Inc. -0487 Stewart Connector -0488 Cirque Corp. -0489 Foxconn / Hon Hai -048a S-MOS Systems, Inc. -048c Alps Electric Ireland, Ltd -048d Integrated Technology Express, Inc. -048f Eicon Tech. -0490 United Microelectronics Corp. -0491 Capetronic -0492 Samsung SemiConductor, Inc. -0493 MAG Technology Co., Ltd -0495 ESS Technology, Inc. -0496 Micron Electronics -0497 Smile International -0498 Capetronic (Kaohsiung) Corp. -0499 Yamaha Corp. - 1054 S90XS Keyboard/Music Synthesizer - 1617 PSR-E353 digital keyboard -049a Gandalf Technologies, Ltd -049b Curtis Computer Products -049c Acer Advanced Labs, Inc. - 0002 Keyboard (???) -049d VLSI Technology -049f Compaq Computer Corp. - 000e Internet Keyboard - 0051 KU-0133 Easy Access Interner Keyboard -04a0 Digital Equipment Corp. -04a1 SystemSoft Corp. -04a2 FirePower Systems -04a3 Trident Microsystems, Inc. -04a4 Hitachi, Ltd -04a5 Acer Peripherals Inc. (now BenQ Corp.) - 0001 Keyboard -04a6 Nokia Display Products -04a7 Visioneer -04a8 Multivideo Labs, Inc. -04a9 Canon, Inc. -04aa DaeWoo Telecom, Ltd -04ab Chromatic Research -04ac Micro Audiometrics Corp. -04ad Dooin Electronics -04af Winnov L.P. -04b0 Nikon Corp. -04b1 Pan International -04b3 IBM Corp. - 3003 Rapid Access III Keyboard - 3004 Media Access Pro Keyboard - 300a Rapid Access IIIe Keyboard - 3016 UltraNav Keyboard Hub - 3018 UltraNav Keyboard - 301b SK-8815 Keyboard - 301c Enhanced Performance Keyboard - 3020 Enhanced Performance Keyboard - 3025 NetVista Full Width Keyboard - 4604 Keyboard w/ Card Reader -04b4 Cypress Semiconductor Corp. - 0101 Keyboard/Hub - 0102 Keyboard with APM - 5201 Combi Keyboard-Hub (Hub) - 5202 Combi Keyboard-Hub (Keyboard) - 8329 USB To keyboard/Mouse Converter -04b5 ROHM LSI Systems USA, LLC -04b6 Hint Corp. -04b7 Compal Electronics, Inc. -04b8 Seiko Epson Corp. -04b9 Rainbow Technologies, Inc. -04ba Toucan Systems, Ltd -04bb I-O Data Device, Inc. -04bd Toshiba Electronics Taiwan Corp. -04be Telia Research AB -04bf TDK Corp. -04c1 U.S. Robotics (3Com) -04c2 Methode Electronics Far East PTE, Ltd -04c3 Maxi Switch, Inc. -04c4 Lockheed Martin Energy Research -04c5 Fujitsu, Ltd -04c6 Toshiba America Electronic Components -04c7 Micro Macro Technologies -04c8 Konica Corp. -04ca Lite-On Technology Corp. - 0020 USB Keyboard - 004b Keyboard - 004f SK-9020 keyboard -04cb Fuji Photo Film Co., Ltd -04cc ST-Ericsson -04cd Tatung Co. Of America -04ce ScanLogic Corp. -04cf Myson Century, Inc. - 0022 OCZ Alchemy Series Elixir II Keyboard -04d0 Digi International -04d1 ITT Canon -04d2 Altec Lansing Technologies -04d3 VidUS, Inc. -04d4 LSI Logic, Inc. -04d5 Forte Technologies, Inc. -04d6 Mentor Graphics -04d7 Oki Semiconductor -04d8 Microchip Technology, Inc. -04d9 Holtek Semiconductor, Inc. - 0006 Wired Keyboard (78/79 key) [RPI Wired Keyboard 5] - 0022 Portable Keyboard - 0348 Keyboard - 1203 Keyboard - 1400 PS/2 keyboard + mouse controller - 1503 Keyboard - 1603 Keyboard - 1702 Keyboard LKS02 - 1818 Keyboard [Diatec Filco Majestouch 2] - 2011 Keyboard [Diatec Filco Majestouch 1] - 2013 Keyboard [Das Keyboard] - 2221 Keyboard - 2323 Keyboard - 4545 Keyboard [Diatec Majestouch 2 Tenkeyless] - a01c wireless multimedia keyboard with trackball [Trust ADURA 17911] - a055 Keyboard - a096 Keyboard -04da Panasonic (Matsushita) -04db Hypertec Pty, Ltd -04dc Huan Hsin Holdings, Ltd -04dd Sharp Corp. -04de MindShare, Inc. -04df Interlink Electronics -04e1 Iiyama North America, Inc. -04e2 Exar Corp. -04e3 Zilog, Inc. -04e4 ACC Microelectronics -04e5 Promise Technology -04e6 SCM Microsystems, Inc. - 5151 SCR338 Keyboard Smart Card Reader -04e7 Elo TouchSystems -04e8 Samsung Electronics Co., Ltd -04e9 PC-Tel, Inc. -04ea Brooktree Corp. -04eb Northstar Systems, Inc. -04ec Tokyo Electron Device, Ltd -04ed Annabooks -04ef Pacific Electronic International, Inc. -04f0 Daewoo Electronics Co., Ltd -04f1 Victor Company of Japan, Ltd -04f2 Chicony Electronics Co., Ltd - 0001 KU-8933 Keyboard - 0002 NT68P81 Keyboard - 0110 KU-2971 Keyboard - 0111 KU-9908 Keyboard - 0112 KU-8933 Keyboard with PS/2 Mouse port - 0116 KU-2971/KU-0325 Keyboard - 0201 Gaming Keyboard KPD0250 - 0402 Genius LuxeMate i200 Keyboard - 0403 KU-0420 keyboard - 0618 RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad - 0760 Acer KU-0760 Keyboard - 0833 KU-0833 Keyboard - 0841 HP Multimedia Keyboard - 1061 HP KG-1061 Wireless Keyboard+Mouse - 1121 Periboard 717 Mini Wireless Keyboard -04f3 Elan Microelectronics Corp. - 0103 ActiveJet K-2024 Multimedia Keyboard - 01a4 Wireless Keyboard -04f4 Harting Elektronik, Inc. -04f5 Fujitsu-ICL Systems, Inc. -04f6 Norand Corp. -04f7 Newnex Technology Corp. -04f8 FuturePlus Systems -04f9 Brother Industries, Ltd -04fa Dallas Semiconductor -04fb Biostar Microtech International Corp. -04fc Sunplus Technology Co., Ltd - 05d8 Wireless keyboard/mouse -04fd Soliton Systems, K.K. -04fe PFU, Ltd - 0006 Happy Hacking Keyboard Lite2 -04ff E-CMOS Corp. -0500 Siam United Hi-Tech - 0001 DART Keyboard Mouse - 0002 DART-2 Keyboard -0501 Fujikura DDK, Ltd -0502 Acer, Inc. -0503 Hitachi America, Ltd -0504 Hayes Microcomputer Products -0506 3Com Corp. -0507 Hosiden Corp. -0508 Clarion Co., Ltd -0509 Aztech Systems, Ltd -050a Cinch Connectors -050b Cable System International -050c InnoMedia, Inc. -050d Belkin Components - 0200 Nostromo SpeedPad n52te Gaming Keyboard -050e Neon Technology, Inc. -050f KC Technology, Inc. -0510 Sejin Electron, Inc. - 0001 Keyboard - 1000 Keyboard with PS/2 Mouse Port -0511 N'Able (DataBook) Technologies, Inc. -0512 Hualon Microelectronics Corp. -0513 digital-X, Inc. -0514 FCI Electronics -0515 ACTC -0516 Longwell Electronics -0517 Butterfly Communications -0518 EzKEY Corp. - 0002 EZ-9900C Keyboard -0519 Star Micronics Co., Ltd -051a WYSE Technology -051b Silicon Graphics -051c Shuttle, Inc. -051d American Power Conversion -051e Scientific Atlanta, Inc. -051f IO Systems (Elite Electronics), Inc. -0520 Taiwan Semiconductor Manufacturing Co. -0521 Airborn Connectors -0522 Advanced Connectek, Inc. -0523 ATEN GmbH -0524 Sola Electronics -0525 Netchip Technology, Inc. -0526 Temic MHS S.A. -0527 ALTRA -0528 ATI Technologies, Inc. -0529 Aladdin Knowledge Systems -052a Crescent Heart Software -052b Tekom Technologies, Inc. -052c Canon Information Systems, Inc. -052d Avid Electronics Corp. -052e Standard Microsystems Corp. -052f Unicore Software, Inc. -0530 American Microsystems, Inc. -0531 Wacom Technology Corp. -0532 Systech Corp. -0533 Alcatel Mobile Phones -0534 Motorola, Inc. -0535 LIH TZU Electric Co., Ltd -0536 Hand Held Products (Welch Allyn, Inc.) -0537 Inventec Corp. -0538 Caldera International, Inc. (SCO) -0539 Shyh Shiun Terminals Co., Ltd -053a PrehKeyTec GmbH -053b Global Village Communication -053c Institut of Microelectronic & Mechatronic Systems -053d Silicon Architect -053e Mobility Electronics -053f Synopsys, Inc. -0540 UniAccess AB -0541 Sirf Technology, Inc. -0543 ViewSonic Corp. -0544 Cristie Electronics, Ltd -0545 Xirlink, Inc. -0546 Polaroid Corp. -0547 Anchor Chips, Inc. -0548 Tyan Computer Corp. -0549 Pixera Corp. -054a Fujitsu Microelectronics, Inc. -054b New Media Corp. -054c Sony Corp. -054d Try Corp. -054e Proside Corp. -054f WYSE Technology Taiwan -0550 Fuji Xerox Co., Ltd -0551 CompuTrend Systems, Inc. -0552 Philips Monitors -0553 STMicroelectronics Imaging Division (VLSI Vision) -0554 Dictaphone Corp. -0555 ANAM S&T Co., Ltd -0556 Asahi Kasei Microsystems Co., Ltd -0557 ATEN International Co., Ltd - 2004 UC-100KM PS/2 Mouse and Keyboard adapter - 2212 Keyboard/Mouse -0558 Truevision, Inc. -0559 Cadence Design Systems, Inc. -055a Kenwood USA -055b KnowledgeTek, Inc. -055c Proton Electronic Ind. -055d Samsung Electro-Mechanics Co. - 0001 Keyboard - 6780 Keyboard V1 - 6781 Keyboard Mouse -055e CTX Opto-Electronics Corp. -055f Mustek Systems, Inc. -0560 Interface Corp. -0561 Oasis Design, Inc. -0562 Telex Communications, Inc. -0563 Immersion Corp. -0564 Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) -0565 Peracom Networks, Inc. -0566 Monterey International Corp. - 3002 Keyboard - 3013 BakkerElkhuizen Wired Keyboard S-board 840 Design - 3020 BakkerElkhuizen Wired Keyboard S-board 840 Design USB-Hub - 3107 Keyboard -0567 Xyratex International, Ltd -0568 Quartz Ingenierie -0569 SegaSoft -056a Wacom Co., Ltd -056b Decicon, Inc. -056c eTEK Labs -056d EIZO Corp. -056e Elecom Co., Ltd -056f Korea Data Systems Co., Ltd -0570 Epson America -0571 Interex, Inc. -0572 Conexant Systems (Rockwell), Inc. -0573 Zoran Co. Personal Media Division (Nogatech) -0574 City University of Hong Kong -0575 Philips Creative Display Solutions -0576 BAFO/Quality Computer Accessories -0577 ELSA -0578 Intrinsix Corp. -0579 GVC Corp. -057a Samsung Electronics America -057b Y-E Data, Inc. -057c AVM GmbH -057d Shark Multimedia, Inc. -057e Nintendo Co., Ltd -057f QuickShot, Ltd -0580 Denron, Inc. -0581 Racal Data Group -0582 Roland Corp. -0583 Padix Co., Ltd (Rockfire) -0584 RATOC System, Inc. -0585 FlashPoint Technology, Inc. -0586 ZyXEL Communications Corp. - 2011 Scorpion-980N keyboard -0587 America Kotobuki Electronics Industries, Inc. -0588 Sapien Design -0589 Victron -058a Nohau Corp. -058b Infineon Technologies -058c In Focus Systems -058d Micrel Semiconductor -058e Tripath Technology, Inc. -058f Alcor Micro Corp. - 2802 Monterey Keyboard - 9410 Keyboard - 9472 Keyboard Hub -0590 Omron Corp. -0591 Questra Consulting -0592 Powerware Corp. -0593 Incite -0594 Princeton Graphic Systems -0595 Zoran Microelectronics, Ltd -0596 MicroTouch Systems, Inc. -0597 Trisignal Communications -0598 Niigata Canotec Co., Inc. -0599 Brilliance Semiconductor, Inc. -059a Spectrum Signal Processing, Inc. -059b Iomega Corp. -059c A-Trend Technology Co., Ltd -059d Advanced Input Devices -059e Intelligent Instrumentation -059f LaCie, Ltd -05a0 Vetronix Corp. -05a1 USC Corp. -05a2 Fuji Film Microdevices Co., Ltd -05a3 ARC International -05a4 Ortek Technology, Inc. - 1000 WKB-1000S Wireless Ergo Keyboard with Touchpad - 2000 WKB-2000 Wireless Keyboard with Touchpad - 9720 Keyboard Mouse - 9722 Keyboard - 9731 MCK-600W/MCK-800USB Keyboard -05a5 Sampo Technology Corp. -05a6 Cisco Systems, Inc. - 0a01 Virtual Keyboard/Mouse -05a7 Bose Corp. -05a8 Spacetec IMC Corp. -05a9 OmniVision Technologies, Inc. -05aa Utilux South China, Ltd -05ab In-System Design -05ac Apple, Inc. - 0201 USB Keyboard [Alps or Logitech, M2452] - 0202 Keyboard [ALPS] - 0205 Extended Keyboard [Mitsumi] - 0206 Extended Keyboard [Mitsumi] - 020b Pro Keyboard [Mitsumi, A1048/US layout] - 020c Extended Keyboard [Mitsumi] - 020d Pro Keyboard [Mitsumi, A1048/JIS layout] - 020e Internal Keyboard/Trackpad (ANSI) - 020f Internal Keyboard/Trackpad (ISO) - 0214 Internal Keyboard/Trackpad (ANSI) - 0215 Internal Keyboard/Trackpad (ISO) - 0216 Internal Keyboard/Trackpad (JIS) - 0217 Internal Keyboard/Trackpad (ANSI) - 0218 Internal Keyboard/Trackpad (ISO) - 0219 Internal Keyboard/Trackpad (JIS) - 021a Internal Keyboard/Trackpad (ANSI) - 021b Internal Keyboard/Trackpad (ISO) - 021c Internal Keyboard/Trackpad (JIS) - 021d Aluminum Mini Keyboard (ANSI) - 021e Aluminum Mini Keyboard (ISO) - 021f Aluminum Mini Keyboard (JIS) - 0220 Aluminum Keyboard (ANSI) - 0221 Aluminum Keyboard (ISO) - 0222 Aluminum Keyboard (JIS) - 0223 Internal Keyboard/Trackpad (ANSI) - 0224 Internal Keyboard/Trackpad (ISO) - 0225 Internal Keyboard/Trackpad (JIS) - 0229 Internal Keyboard/Trackpad (ANSI) - 022a Internal Keyboard/Trackpad (MacBook Pro) (ISO) - 022b Internal Keyboard/Trackpad (MacBook Pro) (JIS) - 0230 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) - 0231 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) - 0232 Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) - 0236 Internal Keyboard/Trackpad (ANSI) - 0237 Internal Keyboard/Trackpad (ISO) - 0238 Internal Keyboard/Trackpad (JIS) - 023f Internal Keyboard/Trackpad (ANSI) - 0240 Internal Keyboard/Trackpad (ISO) - 0241 Internal Keyboard/Trackpad (JIS) - 0242 Internal Keyboard/Trackpad (ANSI) - 0243 Internal Keyboard/Trackpad (ISO) - 0244 Internal Keyboard/Trackpad (JIS) - 0245 Internal Keyboard/Trackpad (ANSI) - 0246 Internal Keyboard/Trackpad (ISO) - 0247 Internal Keyboard/Trackpad (JIS) - 024a Internal Keyboard/Trackpad (MacBook Air) (ISO) - 024d Internal Keyboard/Trackpad (MacBook Air) (ISO) - 024f Aluminium Keyboard (ANSI) - 0250 Aluminium Keyboard (ISO) - 0252 Internal Keyboard/Trackpad (ANSI) - 0253 Internal Keyboard/Trackpad (ISO) - 0254 Internal Keyboard/Trackpad (JIS) - 0259 Internal Keyboard/Trackpad - 025a Internal Keyboard/Trackpad - 0263 Apple Internal Keyboard / Trackpad (MacBook Retina) - 0267 Magic Keyboard A1644 - 0273 Internal Keyboard/Trackpad (ISO) - 1001 Keyboard Hub [ALPS] - 1002 Extended Keyboard Hub [Mitsumi] - 1003 Hub in Pro Keyboard [Mitsumi, A1048] - 1006 Hub in Aluminum Keyboard - 820a Bluetooth HID Keyboard -05ad Y.C. Cable U.S.A., Inc. -05ae Synopsys, Inc. -05af Jing-Mold Enterprise Co., Ltd - 0806 HP SK806A Keyboard - 0809 Wireless Keyboard and Mouse - 3062 Cordless Keyboard -05b0 Fountain Technologies, Inc. -05b1 First International Computer, Inc. -05b4 LG Semicon Co., Ltd -05b5 Dialogic Corp. -05b6 Proxima Corp. -05b7 Medianix Semiconductor, Inc. -05b8 SYSGRATION -05b9 Philips Research Laboratories -05ba DigitalPersona, Inc. -05bb Grey Cell Systems -05bc 3G Green Green Globe Co., Ltd -05bd RAFI GmbH & Co. KG -05be Tyco Electronics (Raychem) -05bf S & S Research -05c0 Keil Software -05c1 Kawasaki Microelectronics, Inc. -05c2 Media Phonics (Suisse) S.A. -05c5 Digi International, Inc. -05c6 Qualcomm, Inc. -05c7 Qtronix Corp. - 2001 Keyboard - 2011 SCorpius Keyboard -05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) -05c9 Semtech Corp. -05ca Ricoh Co., Ltd -05cb PowerVision Technologies, Inc. -05cc ELSA AG -05cd Silicom, Ltd -05ce sci-worx GmbH -05cf Sung Forn Co., Ltd -05d0 GE Medical Systems Lunar -05d1 Brainboxes, Ltd -05d2 Wave Systems Corp. -05d3 Tohoku Ricoh Co., Ltd -05d5 Super Gate Technology Co., Ltd -05d6 Philips Semiconductors, CICT -05d7 Thomas & Betts Corp. -05d8 Ultima Electronics Corp. -05d9 Axiohm Transaction Solutions -05da Microtek International, Inc. -05db Sun Corp. (Suntac?) -05dc Lexar Media, Inc. -05dd Delta Electronics, Inc. -05df Silicon Vision, Inc. -05e0 Symbol Technologies -05e1 Syntek Semiconductor Co., Ltd -05e2 ElecVision, Inc. -05e3 Genesys Logic, Inc. - 000a Keyboard with PS/2 Port - 0504 HID Keyboard Filter -05e4 Red Wing Corp. -05e5 Fuji Electric Co., Ltd -05e6 Keithley Instruments -05e8 ICC, Inc. -05e9 Kawasaki LSI -05eb FFC, Ltd -05ec COM21, Inc. -05ee Cytechinfo Inc. -05ef AVB, Inc. [anko?] -05f0 Canopus Co., Ltd -05f1 Compass Communications -05f2 Dexin Corp., Ltd -05f3 PI Engineering, Inc. - 0007 Kinesis Advantage PRO MPC/USB Keyboard - 0203 Y-mouse Keyboard & Mouse Adapter -05f5 Unixtar Technology, Inc. -05f6 AOC International -05f7 RFC Distribution(s) PTE, Ltd -05f9 PSC Scanning, Inc. - 2206 Gryphon series (keyboard emulation mode) -05fa Siemens Telecommunications Systems, Ltd - 3301 Keyboard with PS/2 Mouse Port - 3302 Keyboard - 3303 Keyboard with PS/2 Mouse Port -05fc Harman -05fd InterAct, Inc. -05fe Chic Technology Corp. -05ff LeCroy Corp. -0600 Barco Display Systems -0601 Jazz Hipster Corp. -0602 Vista Imaging, Inc. -0603 Novatek Microelectronics Corp. - 0002 Sino Wealth keyboard/mouse 2.4 GHz receiver - 00f1 Keyboard (Labtec Ultra Flat Keyboard) - 00f2 Keyboard (Labtec Ultra Flat Keyboard) -0604 Jean Co., Ltd -0605 Anchor C&C Co., Ltd -0606 Royal Information Electronics Co., Ltd -0607 Bridge Information Co., Ltd -0608 Genrad Ads -0609 SMK Manufacturing, Inc. -060a Worthington Data Solutions, Inc. -060b Solid Year - 0001 MacAlly Keyboard - 0230 KSK-8003 UX Keyboard - 0540 DeltaCo TB-106U Keyboard - 1006 Japanese Keyboard - 260U - 2101 Keyboard - 2231 KSK-6001 UELX Keyboard - 2270 Gigabyte K8100 Aivia Gaming Keyboard - 500a Cougar 500k Gaming Keyboard - 5253 Thermaltake MEKA G-Unit Gaming Keyboard - 5811 ACK-571U Wireless Keyboard - 5903 Japanese Keyboard - 595U - 6002 SolidTek USB Keyboard - 6003 Japanese Keyboard - 600HM - 6231 Thermaltake eSPORTS Meka Keyboard -060c EEH Datalink GmbH -060d Auctor Corp. -060e Transmonde Technologies, Inc. -060f Joinsoon Electronics Mfg. Co., Ltd -0610 Costar Electronics, Inc. -0611 Totoku Electric Co., Ltd -0613 TransAct Technologies, Inc. -0614 Bio-Rad Laboratories -0615 Quabbin Wire & Cable Co., Inc. -0616 Future Techno Designs PVT, Ltd -0617 Swiss Federal Insitute of Technology -0618 MacAlly -0619 Seiko Instruments, Inc. -061a Veridicom International, Inc. -061b Promptus Communications, Inc. -061c Act Labs, Ltd -061d Quatech, Inc. -061e Nissei Electric Co. -0620 Alaris, Inc. -0621 ODU-Steckverbindungssysteme GmbH & Co. KG -0622 Iotech, Inc. -0623 Littelfuse, Inc. -0624 Avocent Corp. - 0249 Virtual Keyboard/Mouse - 0402 Cisco Virtual Keyboard and Mouse -0625 TiMedia Technology Co., Ltd -0626 Nippon Systems Development Co., Ltd -0627 Adomax Technology Co., Ltd -0628 Tasking Software, Inc. -0629 Zida Technologies, Ltd -062a MosArt Semiconductor Corp. - 0102 Wireless Keyboard/Mouse Combo [MK1152WC] - 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 - 4101 Wireless Keyboard/Mouse -062b Greatlink Electronics Taiwan, Ltd -062c Institute for Information Industry -062d Taiwan Tai-Hao Enterprises Co., Ltd -062e Mainsuper Enterprises Co., Ltd -062f Sin Sheng Terminal & Machine, Inc. -0631 JUJO Electronics Corp. -0633 Cyrix Corp. -0634 Micron Technology, Inc. -0635 Methode Electronics, Inc. -0636 Sierra Imaging, Inc. -0638 Avision, Inc. -0639 Chrontel, Inc. -063a Techwin Corp. -063b Taugagreining HF -063c Yamaichi Electronics Co., Ltd (Sakura) -063d Fong Kai Industrial Co., Ltd -063e RealMedia Technology, Inc. -063f New Technology Cable, Ltd -0640 Hitex Development Tools -0641 Woods Industries, Inc. -0642 VIA Medical Corp. -0644 TEAC Corp. -0645 Who? Vision Systems, Inc. -0646 UMAX -0647 Acton Research Corp. -0648 Inside Out Networks -0649 Weli Science Co., Ltd -064b Analog Devices, Inc. (White Mountain DSP) -064c Ji-Haw Industrial Co., Ltd -064d TriTech Microelectronics, Ltd -064e Suyin Corp. -064f WIBU-Systems AG -0650 Dynapro Systems -0651 Likom Technology Sdn. Bhd. -0652 Stargate Solutions, Inc. -0653 CNF, Inc. -0654 Granite Microsystems, Inc. -0655 Space Shuttle Hi-Tech Co., Ltd -0656 Glory Mark Electronic, Ltd -0657 Tekcon Electronics Corp. -0658 Sigma Designs, Inc. -0659 Aethra -065a Optoelectronics Co., Ltd - 0001 Opticon OPR-2001 / NLV-1001 (keyboard mode) -065b Tracewell Systems -065e Silicon Graphics -065f Good Way Technology Co., Ltd & GWC technology Inc. -0660 TSAY-E (BVI) International, Inc. -0661 Hamamatsu Photonics K.K. -0662 Kansai Electric Co., Ltd -0663 Topmax Electronic Co., Ltd -0664 ET&T Technology Co., Ltd. -0665 Cypress Semiconductor -0667 Aiwa Co., Ltd -0668 WordWand -0669 Oce' Printing Systems GmbH -066a Total Technologies, Ltd -066b Linksys, Inc. -066d Entrega, Inc. -066e Acer Semiconductor America, Inc. -066f SigmaTel, Inc. -0670 Sequel Imaging -0672 Labtec, Inc. -0673 HCL - 5000 Keyboard -0674 Key Mouse Electronic Enterprise Co., Ltd -0675 DrayTek Corp. -0676 Teles AG -0677 Aiwa Co., Ltd -0678 ACard Technology Corp. -067b Prolific Technology, Inc. -067c Efficient Networks, Inc. -067d Hohner Corp. -067e Intermec Technologies Corp. - 0801 HID Keyboard, Barcode scanner -067f Virata, Ltd -0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) -0681 Siemens Information and Communication Products -0682 Victor Company of Japan, Ltd -0684 Actiontec Electronics, Inc. -0685 ZD Incorporated -0686 Minolta Co., Ltd -068a Pertech, Inc. -068b Potrans International, Inc. -068e CH Products, Inc. -068f Nihon KOHDEN -0690 Golden Bridge Electech, Inc. -0693 Hagiwara Sys-Com Co., Ltd -0694 Lego Group -0698 Chuntex (CTX) -0699 Tektronix, Inc. -069a Askey Computer Corp. -069b Thomson, Inc. -069d Hughes Network Systems (HNS) -069e Welcat Inc. -069f Allied Data Technologies BV -06a2 Topro Technology, Inc. -06a3 Saitek PLC - 8000 Gamers' Keyboard - 8020 Eclipse Keyboard - 8021 Eclipse II Keyboard -06a4 Xiamen Doowell Electron Co., Ltd -06a5 Divio -06a7 MicroStore, Inc. -06a8 Topaz Systems, Inc. -06a9 Westell -06aa Sysgration, Ltd -06ac Fujitsu Laboratories of America, Inc. -06ad Greatland Electronics Taiwan, Ltd -06ae Professional Multimedia Testing Centre -06af Harting, Inc. of North America -06b8 Pixela Corp. -06b9 Alcatel Telecom -06ba Smooth Cord & Connector Co., Ltd -06bb EDA, Inc. -06bc Oki Data Corp. -06bd AGFA-Gevaert NV -06be AME Optimedia Technology Co., Ltd -06bf Leoco Corp. -06c2 Phidgets Inc. (formerly GLAB) -06c4 Bizlink International Corp. -06c5 Hagenuk, GmbH -06c6 Infowave Software, Inc. -06c8 SIIG, Inc. -06c9 Taxan (Europe), Ltd -06ca Newer Technology, Inc. -06cb Synaptics, Inc. -06cc Terayon Communication Systems -06cd Keyspan -06ce Contec -06cf SpheronVR AG -06d0 LapLink, Inc. -06d1 Daewoo Electronics Co., Ltd -06d3 Mitsubishi Electric Corp. -06d4 Cisco Systems -06d5 Toshiba - 4000 Japanese Keyboard -06d6 Aashima Technology B.V. -06d7 Network Computing Devices (NCD) -06d8 Technical Marketing Research, Inc. -06da Phoenixtec Power Co., Ltd -06db Paradyne -06dc Foxlink Image Technology Co., Ltd -06de Heisei Electronics Co., Ltd -06e0 Multi-Tech Systems, Inc. -06e1 ADS Technologies, Inc. -06e4 Alcatel Microelectronics -06e6 Tiger Jet Network, Inc. -06ea Sirius Technologies -06eb PC Expert Tech. Co., Ltd -06ef I.A.C. Geometrische Ingenieurs B.V. -06f0 T.N.C Industrial Co., Ltd -06f1 Opcode Systems, Inc. -06f2 Emine Technology Co. - 0011 KVM Switch Keyboard -06f6 Wintrend Technology Co., Ltd -06f7 Wailly Technology Ltd -06f8 Guillemot Corp. -06f9 ASYST electronic d.o.o. -06fa HSD S.r.L -06fc Motorola Semiconductor Products Sector -06fd Boston Acoustics -06fe Gallant Computer, Inc. -0701 Supercomal Wire & Cable SDN. BHD. -0703 Bvtech Industry, Inc. -0705 NKK Corp. -0706 Ariel Corp. -0707 Standard Microsystems Corp. -0708 Putercom Co., Ltd -0709 Silicon Systems, Ltd (SSL) -070a Oki Electric Industry Co., Ltd -070d Comoss Electronic Co., Ltd -070e Excel Cell Electronic Co., Ltd -0710 Connect Tech, Inc. -0711 Magic Control Technology Corp. - 0260 PS/2 Keyboard and Mouse -0713 Interval Research Corp. -0714 NewMotion, Inc. -0717 ZNK Corp. -0718 Imation Corp. -0719 Tremon Enterprises Co., Ltd -071b Domain Technologies, Inc. -071c Xionics Document Technologies, Inc. -071d Eicon Networks Corp. -071e Ariston Technologies -0720 Keyence Corp. -0723 Centillium Communications Corp. -0726 Vanguard International Semiconductor-America -0729 Amitm -072e Sunix Co., Ltd -072f Advanced Card Systems, Ltd -0731 Susteen, Inc. -0732 Goldfull Electronics & Telecommunications Corp. -0733 ViewQuest Technologies, Inc. -0734 Lasat Communications A/S -0735 Asuscom Network -0736 Lorom Industrial Co., Ltd -0738 Mad Catz, Inc. - a109 S.T.R.I.K.E.7 Keyboard -073a Chaplet Systems, Inc. -073b Suncom Technologies -073c Industrial Electronic Engineers, Inc. -073d Eutron S.p.a. -073e NEC, Inc. -0742 Stollmann -0745 Syntech Information Co., Ltd -0746 Onkyo Corp. -0747 Labway Corp. -0748 Strong Man Enterprise Co., Ltd -0749 EVer Electronics Corp. -074a Ming Fortune Industry Co., Ltd -074b Polestar Tech. Corp. -074c C-C-C Group PLC -074d Micronas GmbH -074e Digital Stream Corp. -0755 Aureal Semiconductor -0757 Network Technologies, Inc. -0758 Carl Zeiss Microscopy GmbH -075b Sophisticated Circuits, Inc. -0763 M-Audio -0764 Cyber Power System, Inc. -0765 X-Rite, Inc. -0766 Jess-Link Products Co., Ltd -0767 Tokheim Corp. -0768 Camtel Technology Corp. -0769 Surecom Technology Corp. -076a Smart Technology Enablers, Inc. -076b OmniKey AG - a011 CCID Smart Card Reader Keyboard -076c Partner Tech -076d Denso Corp. -076e Kuan Tech Enterprise Co., Ltd -076f Jhen Vei Electronic Co., Ltd -0770 Welch Allyn, Inc - Medical Division -0771 Observator Instruments BV -0772 Your data Our Care -0774 AmTRAN Technology Co., Ltd -0775 Longshine Electronics Corp. -0776 Inalways Corp. -0777 Comda Enterprise Corp. -0778 Volex, Inc. -0779 ON Semiconductor (formerly Fairchild) -077a Sankyo Seiki Mfg. Co., Ltd -077b Linksys -077c Forward Electronics Co., Ltd - 0005 NEC Keyboard -077d Griffin Technology -077e Softing AG -077f Well Excellent & Most Corp. -0780 Sagem Monetel GmbH -0781 SanDisk Corp. -0782 Trackerball -0783 C3PO -0784 Vivitar, Inc. -0785 NTT-ME -0789 Logitec Corp. -078b Happ Controls, Inc. -078c GTCO/CalComp -078e Brincom, Inc. -0790 Pro-Image Manufacturing Co., Ltd -0791 Copartner Wire and Cable Mfg. Corp. -0792 Axis Communications AB -0793 Wha Yu Industrial Co., Ltd -0794 ABL Electronics Corp. -0795 RealChip, Inc. -0796 Certicom Corp. -0797 Grandtech Semiconductor Corp. -0798 Optelec -0799 Altera -079b Sagem -079d Alfadata Computer Corp. -07a1 Digicom S.p.A. -07a2 National Technical Systems -07a3 Onnto Corp. -07a4 Be, Inc. -07a6 ADMtek, Inc. -07aa Corega K.K. -07ab Freecom Technologies -07af Microtech -07b0 Trust Technologies -07b1 IMP, Inc. -07b2 Motorola BCS, Inc. -07b3 Plustek, Inc. -07b4 Olympus Optical Co., Ltd -07b5 Mega World International, Ltd -07b6 Marubun Corp. -07b7 TIME Interconnect, Ltd -07b8 AboCom Systems Inc -07bc Canon Computer Systems, Inc. -07bd Webgear, Inc. -07be Veridicom -07c0 Code Mercenaries Hard- und Software GmbH -07c1 Keisokugiken -07c4 Datafab Systems, Inc. -07c5 APG Cash Drawer -07c6 ShareWave, Inc. -07c7 Powertech Industrial Co., Ltd -07c8 B.U.G., Inc. -07c9 Allied Telesyn International -07ca AVerMedia Technologies, Inc. -07cb Kingmax Technology, Inc. -07cc Carry Computer Eng., Co., Ltd -07cd Elektor -07ce Nidec Copal -07cf Casio Computer Co., Ltd - 6802 MIDI Keyboard - 6803 CTK-3500 (MIDI keyboard) -07d0 Dazzle -07d1 D-Link System -07d2 Aptio Products, Inc. -07d3 Cyberdata Corp. -07d5 Radiant Systems -07d7 GCC Technologies, Inc. -07da Arasan Chip Systems -07de Diamond Multimedia -07df David Electronics Co., Ltd -07e0 NCP engineering GmbH -07e1 Ambient Technologies, Inc. -07e2 Elmeg GmbH & Co., Ltd -07e3 Planex Communications, Inc. -07e4 Movado Enterprise Co., Ltd -07e5 QPS, Inc. -07e6 Allied Cable Corp. -07e7 Mirvo Toys, Inc. -07e8 Labsystems -07ea Iwatsu Electric Co., Ltd -07eb Double-H Technology Co., Ltd -07ec Taiyo Electric Wire & Cable Co., Ltd -07ee Torex Retail (formerly Logware) -07ef STSN -07f2 Microcomputer Applications, Inc. -07f6 Circuit Assembly Corp. -07f7 Century Corp. -07f9 Dotop Technology, Inc. -07fa DrayTek Corp. -07fc Thomann - 1113 SWISSONIC EasyKeys61 Midikeyboard -07fd Mark of the Unicorn -07ff Unknown -0801 MagTek - 0001 Mini Swipe Reader (Keyboard Emulation) -0802 Mako Technologies, LLC -0803 Zoom Telephonics, Inc. -0809 Genicom Technology, Inc. -080a Evermuch Technology Co., Ltd -080b Cross Match Technologies -080c Datalogic S.p.A. -080d Teco Image Systems Co., Ltd -0810 Personal Communication Systems, Inc. -0813 Mattel, Inc. -0819 eLicenser -081a MG Logic -081b Indigita Corp. -081c Mipsys -081e AlphaSmart, Inc. -081f Manta -0822 Reudo Corp. -0825 GC Protronics -0826 Data Transit -0827 BroadLogic, Inc. -0828 Sato Corp. -0829 DirecTV Broadband, Inc. (Telocity) -082d Handspring -0830 Palm, Inc. -0832 Kouwell Electronics Corp. -0833 Sourcenext Corp. -0835 Action Star Enterprise Co., Ltd -0836 TrekStor -0839 Samsung Techwin Co., Ltd -083a Accton Technology Corp. -083f Global Village -0840 Argosy Research, Inc. -0841 Rioport.com, Inc. -0844 Welland Industrial Co., Ltd -0846 NetGear, Inc. -084d Minton Optic Industry Co., Inc. -084e KB Gear -084f Empeg -0850 Fast Point Technologies, Inc. -0851 Macronix International Co., Ltd -0852 CSEM -0853 Topre Corporation - 0200 RealForce Compact Keyboard -0854 ActiveWire, Inc. -0856 B&B Electronics -0858 Hitachi Maxell, Ltd -0859 Minolta Systems Laboratory, Inc. -085a Xircom -085c ColorVision, Inc. -0862 Teletrol Systems, Inc. -0863 Filanet Corp. -0864 NetGear, Inc. -0867 Data Translation, Inc. -086a Emagic Soft- und Hardware GmbH -086c DeTeWe - Deutsche Telephonwerke AG & Co. -086e System TALKS, Inc. -086f MEC IMEX, Inc. -0870 Metricom -0871 SanDisk, Inc. -0873 Xpeed, Inc. -0874 A-Tec Subsystem, Inc. -0879 Comtrol Corp. -087c Adesso/Kbtek America, Inc. -087d Jaton Corp. -087e Fujitsu Computer Products of America -087f QualCore Logic Inc. -0880 APT Technologies, Inc. -0883 Recording Industry Association of America (RIAA) -0885 Boca Research, Inc. -0886 XAC Automation Corp. -0887 Hannstar Electronics Corp. -088a TechTools -088b MassWorks, Inc. -088c Swecoin AB -088e iLok -0892 DioGraphy, Inc. -0894 TSI Incorporated -0897 Lauterbach -089c United Technologies Research Cntr. -089d Icron Technologies Corp. -089e NST Co., Ltd -089f Primex Aerospace Co. -08a5 e9, Inc. -08a6 Toshiba TEC -08a8 Andrea Electronics -08a9 CWAV Inc. -08ac Macraigor Systems LLC -08ae Macally (Mace Group, Inc.) -08b0 Metrohm -08b4 Sorenson Vision, Inc. -08b7 NATSU -08b8 J. Gordon Electronic Design, Inc. -08b9 RadioShack Corp. (Tandy) -08bb Texas Instruments -08bd Citizen Watch Co., Ltd -08c3 Precise Biometrics - 0003 100 SC BioKeyboard - 0006 100 A BioKeyboard -08c4 Proxim, Inc. -08c7 Key Nice Enterprise Co., Ltd -08c8 2Wire, Inc. -08c9 Nippon Telegraph and Telephone Corp. -08ca Aiptek International, Inc. -08cd Jue Hsun Ind. Corp. -08ce Long Well Electronics Corp. -08cf Productivity Enhancement Products -08d1 smartBridges, Inc. -08d3 Virtual Ink -08d4 Fujitsu Siemens Computers -08d8 IXXAT Automation GmbH -08d9 Increment P Corp. -08dd Billionton Systems, Inc. -08de ??? -08df Spyrus, Inc. -08e3 Olitec, Inc. -08e4 Pioneer Corp. -08e5 Litronic -08e6 Gemalto (was Gemplus) -08e7 Pan-International Wire & Cable -08e8 Integrated Memory Logic -08e9 Extended Systems, Inc. -08ea Ericsson, Inc., Blue Ridge Labs -08ec M-Systems Flash Disk Pioneers -08ed MediaTek Inc. -08ee CCSI/Hesso -08f0 Corex Technologies -08f1 CTI Electronics Corp. -08f2 Gotop Information Inc. -08f5 SysTec Co., Ltd -08f6 Logic 3 International, Ltd -08f7 Vernier -08f8 Keen Top International Enterprise Co., Ltd -08f9 Wipro Technologies -08fa Caere -08fb Socket Communications -08fc Sicon Cable Technology Co., Ltd -08fd Digianswer A/S -08ff AuthenTec, Inc. -0900 Pinnacle Systems, Inc. -0901 VST Technologies -0906 Faraday Technology Corp. -0908 Siemens AG - 04b3 keyboard front panel Cockpit -0909 Audio-Technica Corp. -090a Trumpion Microelectronics, Inc. -090b Neurosmith -090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) -090d Multiport Computer Vertriebs GmbH -090e Shining Technology, Inc. -090f Fujitsu Devices, Inc. -0910 Alation Systems, Inc. -0911 Philips Speech Processing -0912 Voquette, Inc. -0915 GlobeSpan, Inc. -0917 SmartDisk Corp. -0919 Tiger Electronics -091e Garmin International -0920 Echelon Co. -0921 GoHubs, Inc. -0922 Dymo-CoStar Corp. -0923 IC Media Corp. -0924 Xerox -0925 Lakeview Research -0927 Summus, Ltd -0928 PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) -0929 American Biometric Co. -092a Toshiba Information & Industrial Sys. And Services -092b Sena Technologies, Inc. -092f Northern Embedded Science/CAVNEX -0930 Toshiba Corp. -0931 Harmonic Data Systems, Ltd -0932 Crescentec Corp. -0933 Quantum Corp. -0934 Spirent Communications -0936 NuTesla -0939 Lumberg, Inc. -093a Pixart Imaging, Inc. -093b Plextor Corp. -093c Intrepid Control Systems, Inc. -093d InnoSync, Inc. -093e J.S.T. Mfg. Co., Ltd -093f Olympia Telecom Vertriebs GmbH -0940 Japan Storage Battery Co., Ltd -0941 Photobit Corp. -0942 i2Go.com, LLC -0943 HCL Technologies India Private, Ltd -0944 KORG, Inc. - 010d nanoKEY MIDI keyboard -0945 Pasco Scientific -0948 Kronauer music in digital -094b Linkup Systems Corp. -094d Cable Television Laboratories -094f Yano -0951 Kingston Technology -0954 RPM Systems Corp. -0955 NVIDIA Corp. -0956 BSquare Corp. -0957 Agilent Technologies, Inc. -0958 CompuLink Research, Inc. -0959 Cologne Chip AG -095a Portsmith -095b Medialogic Corp. -095c K-Tec Electronics -095d Polycom, Inc. -0964 BITRAN -0967 Acer NeWeb Corp. -0968 Catalyst Enterprises, Inc. -096e Feitian Technologies, Inc. -0971 Gretag-Macbeth AG -0973 Schlumberger -0974 Datagraphix, a business unit of Anacomp -0975 OL'E Communications, Inc. -0976 Adirondack Wire & Cable -0977 Lightsurf Technologies -0978 Beckhoff GmbH -0979 Jeilin Technology Corp., Ltd -097a Minds At Work LLC -097b Knudsen Engineering, Ltd -097c Marunix Co., Ltd -097d Rosun Technologies, Inc. -097e Biopac Systems Inc. -097f Barun Electronics Co., Ltd -0981 Oak Technology, Ltd -0984 Apricorn -0985 cab Produkttechnik GmbH & Co KG -0986 Matsushita Electric Works, Ltd. -098c Vitana Corp. -098d INDesign -098e Integrated Intellectual Property, Inc. -098f Kenwood TMI Corp. -0993 Gemstar eBook Group, Ltd -0996 Integrated Telecom Express, Inc. -099a Zippy Technology Corp. - 0638 Sanwa Supply Inc. Small Keyboard - 610c EL-610 Super Mini Electron luminescent Keyboard - 6330 SANWA Supply Inc. Slim Keyboard - 713a WK-713 Multimedia Keyboard - 7160 Hyper Slim Keyboard -099e Trimble Navigation, Ltd -09a3 PairGain Technologies -09a4 Contech Research, Inc. -09a5 VCON Telecommunications -09a6 Poinchips -09a7 Data Transmission Network Corp. -09a8 Lin Shiung Enterprise Co., Ltd -09a9 Smart Card Technologies Co., Ltd -09aa Intersil Corp. -09ab Japan Cash Machine Co., Ltd. -09ae Tripp Lite -09b0 Fargo -09b2 Franklin Electronic Publishers, Inc. -09b3 Altius Solutions, Inc. -09b4 MDS Telephone Systems -09b5 Celltrix Technology Co., Ltd -09bc Grundig -09be MySmart.Com -09bf Auerswald GmbH & Co. KG -09c0 Genpix Electronics, LLC -09c1 Arris Interactive LLC -09c2 Nisca Corp. -09c3 HID Global -09c4 ACTiSYS Corp. -09c5 Memory Corp. -09ca BMC Messsysteme GmbH -09cb FLIR Systems -09cc Workbit Corp. -09cd Psion Dacom Home Networks, Ltd -09ce City Electronics, Ltd -09cf Electronics Testing Center, Taiwan -09d1 NeoMagic, Inc. -09d2 Vreelin Engineering, Inc. -09d3 Com One -09d7 NovAtel Inc. -09d8 ELATEC GmbH -09d9 KRF Tech, Ltd -09da A4Tech Co., Ltd. - 0260 KV-300H Isolation Keyboard -09db Measurement Computing Corp. -09dc Aimex Corp. -09dd Fellowes, Inc. -09df Addonics Technologies Corp. -09e1 Intellon Corp. -09e5 Jo-Dan International, Inc. -09e6 Silutia, Inc. -09e7 Real 3D, Inc. -09e8 AKAI Professional M.I. Corp. - 0071 MPK25 MIDI Keyboard - 0076 LPK25 MIDI Keyboard -09e9 Chen-Source, Inc. -09eb IM Networks, Inc. -09ef Xitel -09f3 GoFlight, Inc. -09f5 AresCom -09f6 RocketChips, Inc. -09f7 Edu-Science (H.K.), Ltd -09f8 SoftConnex Technologies, Inc. -09f9 Bay Associates -09fa Mtek Vision -09fb Altera -09ff Gain Technology Corp. -0a00 Liquid Audio -0a01 ViA, Inc. -0a05 Unknown Manufacturer -0a07 Ontrak Control Systems Inc. -0a0b Cybex Computer Products Co. -0a0d Servergy, Inc -0a11 Xentec, Inc. -0a12 Cambridge Silicon Radio, Ltd -0a13 Telebyte, Inc. -0a14 Spacelabs Medical, Inc. -0a15 Scalar Corp. -0a16 Trek Technology (S) PTE, Ltd -0a17 Pentax Corp. -0a18 Heidelberger Druckmaschinen AG -0a19 Hua Geng Technologies, Inc. -0a21 Medtronic Physio Control Corp. -0a22 Century Semiconductor USA, Inc. -0a27 Datacard Group -0a2c AK-Modul-Bus Computer GmbH -0a34 TG3 Electronics, Inc. - 0110 Deck 82-key backlit keyboard -0a35 Radikal Technologies -0a39 Gilat Satellite Networks, Ltd -0a3a PentaMedia Co., Ltd -0a3c NTT DoCoMo, Inc. -0a3d Varo Vision -0a3f Swissonic AG -0a43 Boca Systems, Inc. -0a46 Davicom Semiconductor, Inc. -0a47 Hirose Electric -0a48 I/O Interconnect -0a4a Ploytec GmbH -0a4b Fujitsu Media Devices, Ltd -0a4c Computex Co., Ltd -0a4d Evolution Electronics, Ltd - 008e MK-249C MIDI Keyboard - 00a3 MK-461C MIDI Keyboard -0a4e Steinberg Soft-und Hardware GmbH -0a4f Litton Systems, Inc. -0a50 Mimaki Engineering Co., Ltd -0a51 Sony Electronics, Inc. -0a52 Jebsee Electronics Co., Ltd -0a53 Portable Peripheral Co., Ltd -0a5a Electronics For Imaging, Inc. -0a5b EAsics NV -0a5c Broadcom Corp. - 4502 Keyboard (Boot Interface Subclass) - 5803 BCM5880 Secure Applications Processor with secure keyboard -0a5d Diatrend Corp. -0a5f Zebra -0a62 MPMan -0a66 ClearCube Technology -0a67 Medeli Electronics Co., Ltd -0a68 Comaide Corp. -0a69 Chroma ate, Inc. -0a6b Green House Co., Ltd -0a6c Integrated Circuit Systems, Inc. -0a6d UPS Manufacturing -0a6e Benwin -0a6f Core Technology, Inc. -0a70 International Game Technology -0a71 VIPColor Technologies USA, Inc. -0a72 Sanwa Denshi -0a73 Mackie Designs -0a7d NSTL, Inc. -0a7e Octagon Systems Corp. -0a80 Rexon Technology Corp., Ltd -0a81 Chesen Electronics Corp. - 0101 Keyboard - 0103 Keyboard - 0205 PS/2 Keyboard+Mouse Adapter -0a82 Syscan -0a83 NextComm, Inc. -0a84 Maui Innovative Peripherals -0a85 Idexx Labs -0a86 NITGen Co., Ltd -0a89 Aktiv -0a8d Picturetel -0a8e Japan Aviation Electronics Industry, Ltd -0a90 Candy Technology Co., Ltd -0a91 Globlink Technology, Inc. -0a92 EGO SYStems, Inc. -0a93 C Technologies AB -0a94 Intersense -0aa3 Lava Computer Mfg., Inc. -0aa4 Develco Elektronik -0aa5 First International Digital -0aa6 Perception Digital, Ltd -0aa7 Wincor Nixdorf International GmbH - 0100 POS Keyboard, TA58P-USB - 0101 POS Keyboard, TA85P-USB - 0102 POS Keyboard, TA59-USB - 0103 POS Keyboard, TA60-USB - 0104 SNIkey Keyboard, SNIKey-KB-USB - 0502 Hub SNIKey Keyboard -0aa8 TriGem Computer, Inc. -0aa9 Baromtec Co. -0aaa Japan CBM Corp. -0aab Vision Shape Europe SA -0aac iCompression, Inc. -0aad Rohde & Schwarz GmbH & Co. KG -0aae NEC infrontia Corp. (Nitsuko) -0aaf Digitalway Co., Ltd -0ab0 Arrow Strong Electronics Co., Ltd -0ab1 FEIG ELECTRONIC GmbH -0aba Ellisys -0abe Stereo-Link -0abf Diolan -0ac3 Sanyo Semiconductor Company Micro -0ac4 Leco Corp. -0ac5 I & C Corp. -0ac6 Singing Electrons, Inc. -0ac7 Panwest Corp. -0ac8 Z-Star Microelectronics Corp. -0ac9 Micro Solutions, Inc. -0aca OPEN Networks Ltd -0acc Koga Electronics Co. -0acd ID Tech -0ace ZyDAS -0acf Intoto, Inc. -0ad0 Intellix Corp. -0ad1 Remotec Technology, Ltd -0ad2 Service & Quality Technology Co., Ltd -0ada Data Encryption Systems Ltd. -0ae3 Allion Computer, Inc. -0ae4 Taito Corp. -0ae7 Neodym Systems, Inc. -0ae8 System Support Co., Ltd -0ae9 North Shore Circuit Design L.L.P. -0aea SciEssence, LLC -0aeb TTP Communications, Ltd -0aec Neodio Technologies Corp. -0af0 Option -0af6 Silver I Co., Ltd -0af7 B2C2, Inc. -0af9 Hama, Inc. -0afa DMC Co., Ltd. -0afc Zaptronix Ltd -0afd Tateno Dennou, Inc. -0afe Cummins Engine Co. -0aff Jump Zone Network Products, Inc. -0b00 INGENICO -0b05 ASUSTek Computer, Inc. -0b0b Datamax-O'Neil -0b0c Todos AB -0b0d ProjectLab -0b0e GN Netcom -0b0f AVID Technology -0b10 Pcally -0b11 I Tech Solutions Co., Ltd -0b1e Electronic Warfare Assoc., Inc. (EWA) -0b1f Insyde Software Corp. -0b20 TransDimension, Inc. -0b21 Yokogawa Electric Corp. -0b22 Japan System Development Co., Ltd -0b23 Pan-Asia Electronics Co., Ltd -0b24 Link Evolution Corp. -0b27 Ritek Corp. -0b28 Kenwood Corp. -0b2c Village Center, Inc. -0b30 PNY Technologies, Inc. -0b33 Contour Design, Inc. -0b37 Hitachi ULSI Systems Co., Ltd -0b38 Gear Head - 0003 Keyboard - 0010 107-Key Keyboard -0b39 Omnidirectional Control Technology, Inc. -0b3a IPaxess -0b3b Tekram Technology Co., Ltd -0b3c Olivetti Techcenter -0b3e Kikusui Electronics Corp. -0b41 Hal Corp. -0b43 Play.com, Inc. -0b47 Sportbug.com, Inc. -0b48 TechnoTrend AG -0b49 ASCII Corp. -0b4b Pine Corp. Ltd. -0b4d Graphtec America, Inc. -0b4e Musical Electronics, Ltd -0b50 Dumpries Co., Ltd -0b51 Comfort Keyboard Co. - 0020 Comfort Keyboard -0b52 Colorado MicroDisplay, Inc. -0b54 Sinbon Electronics Co., Ltd -0b56 TYI Systems, Ltd -0b57 Beijing HanwangTechnology Co., Ltd -0b59 Lake Communications, Ltd -0b5a Corel Corp. -0b5f Green Electronics Co., Ltd -0b60 Nsine, Ltd -0b61 NEC Viewtechnology, Ltd -0b62 Orange Micro, Inc. -0b63 ADLink Technology, Inc. -0b64 Wonderful Wire Cable Co., Ltd -0b65 Expert Magnetics Corp. -0b66 Cybiko Inc. -0b67 Fairbanks Scales -0b69 CacheVision -0b6a Maxim Integrated Products -0b6f Nagano Japan Radio Co., Ltd -0b70 PortalPlayer, Inc. -0b71 SHIN-EI Sangyo Co., Ltd -0b72 Embedded Wireless Technology Co., Ltd -0b73 Computone Corp. -0b75 Roland DG Corp. -0b79 Sunrise Telecom, Inc. -0b7a Zeevo, Inc. -0b7b Taiko Denki Co., Ltd -0b7c ITRAN Communications, Ltd -0b7d Astrodesign, Inc. -0b81 id3 Technologies -0b84 Rextron Technology, Inc. -0b85 Elkat Electronics, Sdn., Bhd. -0b86 Exputer Systems, Inc. -0b87 Plus-One I & T, Inc. -0b88 Sigma Koki Co., Ltd, Technology Center -0b89 Advanced Digital Broadcast, Ltd -0b8c SMART Technologies Inc. -0b95 ASIX Electronics Corp. -0b96 Sewon Telecom -0b97 O2 Micro, Inc. -0b98 Playmates Toys, Inc. -0b99 Audio International, Inc. -0b9b Dipl.-Ing. Stefan Kunde -0b9d Softprotec Co. -0b9f Chippo Technologies -0baf U.S. Robotics -0bb0 Concord Camera Corp. -0bb1 Infinilink Corp. -0bb2 Ambit Microsystems Corp. -0bb3 Ofuji Technology -0bb4 HTC (High Tech Computer Corp.) -0bb5 Murata Manufacturing Co., Ltd -0bb6 Network Alchemy -0bb7 Joytech Computer Co., Ltd -0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd -0bb9 Eiger M&C Co., Ltd -0bba ZAccess Systems -0bbb General Meters Corp. -0bbc Assistive Technology, Inc. -0bbd System Connection, Inc. -0bc0 Knilink Technology, Inc. -0bc1 Fuw Yng Electronics Co., Ltd -0bc2 Seagate RSS LLC -0bc3 IPWireless, Inc. -0bc4 Microcube Corp. -0bc5 JCN Co., Ltd -0bc6 ExWAY, Inc. -0bc7 X10 Wireless Technology, Inc. -0bc8 Telmax Communications -0bc9 ECI Telecom, Ltd -0bca Startek Engineering, Inc. -0bcb Perfect Technic Enterprise Co., Ltd -0bd7 Andrew Pargeter & Associates -0bda Realtek Semiconductor Corp. -0bdb Ericsson Business Mobile Networks BV -0bdc Y Media Corp. -0bdd Orange PCS -0be2 Kanda Tsushin Kogyo Co., Ltd -0be3 TOYO Corp. -0be4 Elka International, Ltd -0be5 DOME imaging systems, Inc. -0be6 Dong Guan Humen Wonderful Wire Cable Factory -0bed MEI -0bee LTK Industries, Ltd -0bef Way2Call Communications -0bf0 Pace Micro Technology PLC -0bf1 Intracom S.A. -0bf2 Konexx -0bf6 Addonics Technologies, Inc. -0bf7 Sunny Giken, Inc. -0bf8 Fujitsu Siemens Computers - 100c Keyboard FSC KBPC PX - 1017 Keyboard KB SCR -0bfb Grass Valley Group -0bfd Kvaser AB -0c00 FireFly Mouse Mat -0c04 MOTO Development Group, Inc. -0c05 Appian Graphics -0c06 Hasbro Games, Inc. -0c07 Infinite Data Storage, Ltd -0c08 Agate -0c09 Comjet Information System -0c0a Highpoint Technologies, Inc. -0c0b Dura Micro, Inc. (Acomdata) -0c12 Zeroplus -0c15 Iris Graphics -0c16 Gyration, Inc. -0c17 Cyberboard A/S -0c18 SynerTek Korea, Inc. -0c19 cyberPIXIE, Inc. -0c1a Silicon Motion, Inc. -0c1b MIPS Technologies -0c1c Hang Zhou Silan Electronics Co., Ltd -0c1f Magicard -0c22 Tally Printer Corp. -0c23 Lernout + Hauspie -0c24 Taiyo Yuden -0c25 Sampo Corp. -0c26 Prolific Technology Inc. -0c27 RFIDeas, Inc -0c2e Metrologic Instruments - 0204 Metrologic MS7120 Barcode Scanner (keyboard mode) -0c30 Mutoh Industries Ltd -0c35 Eagletron, Inc. -0c36 E Ink Corp. -0c37 e.Digital -0c38 Der An Electric Wire & Cable Co., Ltd -0c39 IFR -0c3a Furui Precise Component (Kunshan) Co., Ltd -0c3b Komatsu, Ltd -0c3c Radius Co., Ltd -0c3d Innocom, Inc. -0c3e Nextcell, Inc. -0c44 Motorola iDEN -0c45 Microdia - 652f Backlit Gaming Keyboard -0c46 WaveRider Communications, Inc. -0c4a ALGE-TIMING GmbH -0c4b Reiner SCT Kartensysteme GmbH -0c4c Needham's Electronics -0c52 Sealevel Systems, Inc. -0c53 ViewPLUS, Inc. -0c54 Glory, Ltd -0c55 Spectrum Digital, Inc. -0c56 Billion Bright, Ltd -0c57 Imaginative Design Operation Co., Ltd -0c58 Vidar Systems Corp. -0c59 Dong Guan Shinko Wire Co., Ltd -0c5a TRS International Mfg., Inc. -0c5e Xytronix Research & Design -0c60 Apogee Electronics Corp. -0c62 Chant Sincere Co., Ltd -0c63 Toko, Inc. -0c64 Signality System Engineering Co., Ltd -0c65 Eminence Enterprise Co., Ltd -0c66 Rexon Electronics Corp. -0c67 Concept Telecom, Ltd -0c6a ACS -0c6c JETI Technische Instrumente GmbH -0c70 MCT Elektronikladen -0c72 PEAK System -0c74 Optronic Laboratories Inc. -0c76 JMTek, LLC. -0c77 Sipix Group, Ltd -0c78 Detto Corp. -0c79 NuConnex Technologies Pte., Ltd -0c7a Wing-Span Enterprise Co., Ltd -0c86 NDA Technologies, Inc. -0c88 Kyocera Wireless Corp. -0c89 Honda Tsushin Kogyo Co., Ltd -0c8a Pathway Connectivity, Inc. -0c8b Wavefly Corp. -0c8c Coactive Networks -0c8d Tempo -0c8e Cesscom Co., Ltd -0c8f Applied Microsystems -0c94 Cryptera -0c98 Berkshire Products, Inc. -0c99 Innochips Co., Ltd -0c9a Hanwool Robotics Corp. -0c9b Jobin Yvon, Inc. -0c9c Brand Innovators BV -0c9d SemTek -0ca2 Zyfer -0ca3 Sega Corp. -0ca4 ST&T Instrument Corp. -0ca5 BAE Systems Canada, Inc. -0ca6 Castles Technology Co., Ltd -0ca7 Information Systems Laboratories -0caa Allied Telesis KK. -0cad Motorola CGISS -0cae Ascom Business Systems, Ltd -0caf Buslink -0cb0 Flying Pig Systems -0cb1 Innovonics, Inc. -0cb6 Celestix Networks, Pte., Ltd -0cb7 Singatron Enterprise Co., Ltd -0cb8 Opticis Co., Ltd -0cba Trust Electronic (Shanghai) Co., Ltd -0cbb Shanghai Darong Electronics Co., Ltd -0cbc Palmax Technology Co., Ltd -0cbd Pentel Co., Ltd (Electronics Equipment Div.) -0cbe Keryx Technologies, Inc. -0cbf Union Genius Computer Co., Ltd -0cc0 Kuon Yi Industrial Corp. -0cc1 Given Imaging, Ltd -0cc2 Timex Corp. -0cc3 Rimage Corp. -0cc4 emsys GmbH -0cc5 Sendo -0cc6 Intermagic Corp. -0cc8 Technotools Corp. -0cc9 BroadMAX Technologies, Inc. -0cca Amphenol -0ccb SKNet Co., Ltd -0ccc Domex Technology Corp. -0ccd TerraTec Electronic GmbH -0cd4 Bang Olufsen -0cd5 LabJack Corporation -0cd6 Scheidt & Bachmann -0cd7 NewChip S.r.l. -0cd8 JS Digitech, Inc. -0cd9 Hitachi Shin Din Cable, Ltd -0cde Z-Com -0ce5 Validation Technologies International -0ce9 Pico Technology -0cf1 e-Conn Electronic Co., Ltd -0cf2 ENE Technology, Inc. -0cf3 Qualcomm Atheros Communications -0cf4 Fomtex Corp. -0cf5 Cellink Co., Ltd -0cf6 Compucable Corp. -0cf7 ishoni Networks -0cf8 Clarisys, Inc. -0cf9 Central System Research Co., Ltd -0cfa Inviso, Inc. -0cfc Minolta-QMS, Inc. -0cff SAFA MEDIA Co., Ltd. -0d06 telos EDV Systementwicklung GmbH -0d08 UTStarcom -0d0b Contemporary Controls -0d0c Astron Electronics Co., Ltd -0d0d MKNet Corp. -0d0e Hybrid Networks, Inc. -0d0f Feng Shin Cable Co., Ltd -0d10 Elastic Networks -0d11 Maspro Denkoh Corp. -0d12 Hansol Electronics, Inc. -0d13 BMF Corp. -0d14 Array Comm, Inc. -0d15 OnStream b.v. -0d16 Hi-Touch Imaging Technologies Co., Ltd -0d17 NALTEC, Inc. -0d18 coaXmedia -0d19 Hank Connection Industrial Co., Ltd -0d28 NXP -0d2f Andamiro -0d32 Leo Hui Electric Wire & Cable Co., Ltd -0d33 AirSpeak, Inc. -0d34 Rearden Steel Technologies -0d35 Dah Kun Co., Ltd -0d3a Posiflex Technologies, Inc. -0d3c Sri Cable Technology, Ltd -0d3d Tangtop Technology Co., Ltd - 0001 HID Keyboard -0d3e Fitcom, inc. -0d3f MTS Systems Corp. -0d40 Ascor, Inc. -0d41 Ta Yun Terminals Industrial Co., Ltd -0d42 Full Der Co., Ltd -0d46 Kobil Systems GmbH -0d48 Promethean Limited -0d49 Maxtor -0d4a NF Corp. -0d4b Grape Systems, Inc. -0d4c Tedas AG -0d4d Coherent, Inc. -0d4e Agere Systems Netherland BV -0d4f EADS Airbus France -0d50 Cleware GmbH -0d51 Volex (Asia) Pte., Ltd -0d53 HMI Co., Ltd -0d54 Holon Corp. -0d55 ASKA Technologies, Inc. -0d56 AVLAB Technology, Inc. -0d57 Solomon Microtech, Ltd -0d59 TRC Simulators b.v. -0d5c SMC Networks, Inc. -0d5e Myacom, Ltd -0d5f CSI, Inc. -0d60 IVL Technologies, Ltd -0d61 Meilu Electronics (Shenzhen) Co., Ltd -0d62 Darfon Electronics Corp. - 0004 Keyboard - 001b Keyboard - 001c Benq X120 Internet Keyboard Pro - 2021 AM805 Keyboard - 2106 Dell L20U Multimedia Keyboard - 910e HP Business Slim Keyboard -0d63 Fritz Gegauf AG -0d64 DXG Technology Corp. -0d65 KMJP Co., Ltd -0d66 TMT -0d67 Advanet, Inc. -0d68 Super Link Electronics Co., Ltd -0d69 NSI -0d6a Megapower International Corp. -0d6b And-Or Logic -0d70 Try Computer Co., Ltd -0d71 Hirakawa Hewtech Corp. -0d72 Winmate Communication, Inc. -0d73 Hit's Communications, Inc. -0d76 MFP Korea, Inc. -0d77 Power Sentry/Newpoint -0d78 Japan Distributor Corp. -0d7a MARX Datentechnik GmbH -0d7b Wellco Technology Co., Ltd -0d7c Taiwan Line Tek Electronic Co., Ltd -0d7d Phison Electronics Corp. -0d7e American Computer & Digital Components -0d7f Essential Reality LLC -0d80 H.R. Silvine Electronics, Inc. -0d81 TechnoVision -0d83 Think Outside, Inc. -0d87 Dolby Laboratories Inc. -0d89 Oz Software -0d8a King Jim Co., Ltd -0d8b Ascom Telecommunications, Ltd -0d8c C-Media Electronics, Inc. -0d8d Promotion & Display Technology, Ltd -0d8e Global Sun Technology, Inc. -0d8f Pitney Bowes -0d90 Sure-Fire Electrical Corp. -0d96 Skanhex Technology, Inc. -0d97 Santa Barbara Instrument Group -0d98 Mars Semiconductor Corp. -0d99 Trazer Technologies, Inc. -0d9a RTX AS -0d9b Tat Shing Electrical Co. -0d9c Chee Chen Hi-Technology Co., Ltd -0d9d Sanwa Supply, Inc. -0d9e Avaya -0d9f Powercom Co., Ltd -0da0 Danger Research -0da1 Suzhou Peter's Precise Industrial Co., Ltd -0da2 Land Instruments International, Ltd -0da3 Nippon Electro-Sensory Devices Corp. -0da4 Polar Electro Oy -0da7 IOGear, Inc. -0da8 softDSP Co., Ltd -0dab Cubig Group -0dad Westover Scientific -0db0 Micro Star International -0db1 Wen Te Electronics Co., Ltd -0db2 Shian Hwi Plug Parts, Plastic Factory -0db3 Tekram Technology Co., Ltd -0db4 Chung Fu Chen Yeh Enterprise Corp. -0db5 Access IS - 013a Barcode Module - Virtual Keyboard -0db7 ELCON Systemtechnik -0dba Digidesign -0dbc A&D Medical -0dbe Jiuh Shiuh Precision Industry Co., Ltd -0dbf Jess-Link International -0dc0 G7 Solutions (formerly Great Notions) -0dc1 Tamagawa Seiki Co., Ltd -0dc3 Athena Smartcard Solutions, Inc. -0dc4 inXtron, Inc. -0dc5 SDK Co., Ltd -0dc6 Precision Squared Technology Corp. - 2301 Wireless Touchpad Keyboard -0dc7 First Cable Line, Inc. -0dcd NetworkFab Corp. -0dd0 Access Solutions -0dd1 Contek Electronics Co., Ltd -0dd2 Power Quotient International Co., Ltd -0dd3 MediaQ -0dd4 Custom Engineering SPA -0dd5 California Micro Devices -0dd7 Kocom Co., Ltd -0dd8 Netac Technology Co., Ltd -0dd9 HighSpeed Surfing -0dda Integrated Circuit Solution, Inc. -0ddb Tamarack, Inc. -0ddd Datelink Technology Co., Ltd -0dde Ubicom, Inc. -0de0 BD Consumer Healthcare -0de7 USBmicro -0dea UTECH Electronic (D.G.) Co., Ltd. -0ded Novasonics -0dee Lifetime Memory Products -0def Full Rise Electronic Co., Ltd -0df4 NET&SYS -0df6 Sitecom Europe B.V. -0df7 Mobile Action Technology, Inc. -0dfa Toyo Communication Equipment Co., Ltd -0dfc GeneralTouch Technology Co., Ltd -0e03 Nippon Systemware Co., Ltd -0e08 Winbest Technology Co., Ltd -0e0b Amigo Technology Inc. -0e0c Gesytec -0e0d PicoQuant GmbH -0e0f VMware, Inc. - 0006 Virtual Keyboard -0e16 JMTek, LLC -0e17 Walex Electronic, Ltd -0e1a Unisys -0e1b Crewave -0e1e Green Hills Software -0e20 Pegasus Technologies Ltd. -0e21 Cowon Systems, Inc. -0e22 Symbian Ltd. -0e23 Liou Yuane Enterprise Co., Ltd -0e25 VinChip Systems, Inc. -0e26 J-Phone East Co., Ltd -0e30 HeartMath LLC -0e34 Micro Computer Control Corp. -0e35 3Pea Technologies, Inc. -0e36 TiePie engineering -0e38 Stratitec, Inc. -0e39 Smart Modular Technologies, Inc. -0e3a Neostar Technology Co., Ltd -0e3b Mansella, Ltd -0e41 Line6, Inc. -0e44 Sun-Riseful Technology Co., Ltd. -0e48 Julia Corp., Ltd -0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. -0e4c Radica Games, Ltd -0e50 TechnoData Interware -0e55 Speed Dragon Multimedia, Ltd -0e56 Kingston Technology Company, Inc. -0e5a Active Co., Ltd -0e5b Union Power Information Industrial Co., Ltd -0e5c Bitland Information Technology Co., Ltd -0e5d Neltron Industrial Co., Ltd -0e5e Conwise Technology Co., Ltd. -0e66 Hawking Technologies -0e67 Fossil, Inc. -0e6a Megawin Technology Co., Ltd - 02c0 Defender Gaming Keyboard - 030b Truly Ergonomic Computer Keyboard (Device Firmware Update mode) - 030c Truly Ergonomic Computer Keyboard - 6001 GEMBIRD Flexible keyboard KB-109F-B-DE -0e6f Logic3 -0e70 Tokyo Electronic Industry Co., Ltd -0e72 Hsi-Chin Electronics Co., Ltd -0e75 TVS Electronics, Ltd -0e79 Archos, Inc. -0e7b On-Tech Industry Co., Ltd -0e7e Gmate, Inc. -0e82 Ching Tai Electric Wire & Cable Co., Ltd -0e83 Shin An Wire & Cable Co. -0e8c Well Force Electronic Co., Ltd -0e8d MediaTek Inc. -0e8f GreenAsia Inc. - 0021 Multimedia Keyboard Controller - 0022 multimedia keyboard controller -0e90 WiebeTech, LLC -0e91 VTech Engineering Canada, Ltd -0e92 C's Glory Enterprise Co., Ltd -0e93 eM Technics Co., Ltd -0e95 Future Technology Co., Ltd -0e96 Aplux Communications, Ltd -0e97 Fingerworks, Inc. - 0908 Composite HID (Keyboard and Mouse) -0e98 Advanced Analogic Technologies, Inc. -0e99 Parallel Dice Co., Ltd -0e9a TA HSING Industries, Ltd -0e9b ADTEC Corp. -0e9c Streamzap, Inc. -0e9f Tamura Corp. -0ea0 Ours Technology, Inc. -0ea6 Nihon Computer Co., Ltd -0ea7 MSL Enterprises Corp. -0ea8 CenDyne, Inc. -0ead Humax Co., Ltd -0eb0 NovaTech -0eb1 WIS Technologies, Inc. -0eb2 Y-S Electronic Co., Ltd -0eb3 Saint Technology Corp. -0eb7 Endor AG -0eb8 Mettler Toledo -0ebb Thermo Fisher Scientific -0ebe VWeb Corp. -0ebf Omega Technology of Taiwan, Inc. -0ec0 LHI Technology (China) Co., Ltd -0ec1 Abit Computer Corp. -0ec2 Sweetray Industrial, Ltd -0ec3 Axell Co., Ltd -0ec4 Ballracing Developments, Ltd -0ec5 GT Information System Co., Ltd -0ec6 InnoVISION Multimedia, Ltd -0ec7 Theta Link Corp. -0ecd Lite-On IT Corp. -0ece TaiSol Electronics Co., Ltd -0ecf Phogenix Imaging, LLC -0ed1 WinMaxGroup -0ed2 Kyoto Micro Computer Co., Ltd -0ed3 Wing-Tech Enterprise Co., Ltd -0ed5 Fiberbyte -0eda Noriake Itron Corp. -0edf e-MDT Co., Ltd -0ee0 Shima Seiki Mfg., Ltd -0ee1 Sarotech Co., Ltd -0ee2 AMI Semiconductor, Inc. -0ee3 ComTrue Technology Corp. -0ee4 Sunrich Technology, Ltd -0eee Digital Stream Technology, Inc. -0eef D-WAV Scientific Co., Ltd -0ef0 Hitachi Cable, Ltd -0ef1 Aichi Micro Intelligent Corp. -0ef2 I/O Magic Corp. -0ef3 Lynn Products, Inc. -0ef4 DSI Datotech -0ef5 PointChips -0ef6 Yield Microelectronics Corp. -0ef7 SM Tech Co., Ltd (Tulip) -0efd Oasis Semiconductor -0efe Wem Technology, Inc. -0f03 Unitek UPS Systems -0f06 Visual Frontier Enterprise Co., Ltd -0f08 CSL Wire & Plug (Shen Zhen) Co. -0f0c CAS Corp. -0f0d Hori Co., Ltd -0f0e Energy Full Corp. -0f0f Silego Technology Inc -0f11 LD Didactic GmbH -0f12 Mars Engineering Corp. -0f13 Acetek Technology Co., Ltd -0f14 Ingenico -0f18 Finger Lakes Instrumentation -0f19 Oracom Co., Ltd -0f1b Onset Computer Corp. -0f1c Funai Electric Co., Ltd -0f1d Iwill Corp. -0f21 IOI Technology Corp. -0f22 Senior Industries, Inc. -0f23 Leader Tech Manufacturer Co., Ltd -0f24 Flex-P Industries, Snd., Bhd. -0f2d ViPower, Inc. -0f2e Geniality Maple Technology Co., Ltd -0f2f Priva Design Services -0f30 Jess Technology Co., Ltd -0f31 Chrysalis Development -0f32 YFC-BonEagle Electric Co., Ltd -0f37 Kokuyo Co., Ltd -0f38 Nien-Yi Industrial Corp. -0f39 TG3 Electronics - 0404 Recreated ZX Spectrum Keyboard - 0876 Keyboard [87 Francium Pro] - 1086 DK2108SZ Keyboard [Ducky Zero] -0f3d Airprime, Incorporated -0f41 RDC Semiconductor Co., Ltd -0f42 Nital Consulting Services, Inc. -0f44 Polhemus -0f49 Evolis SA -0f4b St. John Technology Co., Ltd -0f4c WorldWide Cable Opto Corp. -0f4d Microtune, Inc. -0f4e Freedom Scientific -0f52 Wing Key Electrical Co., Ltd -0f53 Dongguan White Horse Cable Factory, Ltd -0f54 Kawai Musical Instruments Mfg. Co., Ltd -0f55 AmbiCom, Inc. -0f5c Prairiecomm, Inc. -0f5d NewAge International, LLC -0f5f Key Technology Corp. -0f60 NTK, Ltd -0f61 Varian, Inc. -0f62 Acrox Technologies Co., Ltd -0f63 LeapFrog Enterprises -0f68 Kobe Steel, Ltd -0f69 Dionex Corp. -0f6a Vibren Technologies, Inc. -0f6e INTELLIGENT SYSTEMS -0f73 DFI -0f78 Guntermann & Drunck GmbH -0f7c DQ Technology, Inc. -0f7d NetBotz, Inc. -0f7e Fluke Corp. -0f88 VTech Holdings, Ltd -0f8b Yazaki Corp. -0f8c Young Generation International Corp. -0f8d Uniwill Computer Corp. -0f8e Kingnet Technology Co., Ltd -0f8f Soma Networks -0f97 CviLux Corp. -0f98 CyberBank Corp. -0f9c Hyun Won, Inc. -0f9e Lucent Technologies -0fa3 Starconn Electronic Co., Ltd -0fa4 ATL Technology -0fa5 Sotec Co., Ltd -0fa7 Epox Computer Co., Ltd -0fa8 Logic Controls, Inc. -0faf Winpoint Electronic Corp. -0fb0 Haurtian Wire & Cable Co., Ltd -0fb1 Inclose Design, Inc. -0fb2 Juan-Chern Industrial Co., Ltd -0fb6 Heber Ltd -0fb8 Wistron Corp. -0fb9 AACom Corp. -0fba San Shing Electronics Co., Ltd -0fbb Bitwise Systems, Inc. -0fc1 Mitac Internatinal Corp. -0fc2 Plug and Jack Industrial, Inc. -0fc5 Delcom Engineering -0fc6 Dataplus Supplies, Inc. -0fca Research In Motion, Ltd. -0fce Sony Ericsson Mobile Communications AB -0fcf Dynastream Innovations, Inc. -0fd0 Tulip Computers B.V. -0fd1 Giant Electronics Ltd. -0fd2 Seac Banche -0fd4 Tenovis GmbH & Co., KG -0fd5 Direct Access Technology, Inc. -0fd9 Elgato Systems GmbH -0fda Quantec Networks GmbH -0fdc Micro Plus -0fde Oregon Scientific -0fe0 Osterhout Design Group -0fe2 Air Techniques -0fe4 IN-Tech Electronics, Ltd -0fe5 Greenconn (U.S.A.), Inc. -0fe6 ICS Advent -0fe9 DVICO -0fea United Computer Accessories -0feb CRS Electronic Co., Ltd -0fec UMC Electronics Co., Ltd -0fed Access Co., Ltd -0fee Xsido Corp. -0fef MJ Research, Inc. -0ff6 Core Valley Co., Ltd -0ff7 CHI SHING Computer Accessories Co., Ltd -0ffc Clavia DMI AB -0ffd EarlySense -0fff Aopen, Inc. -1000 Speed Tech Corp. -1001 Ritronics Components (S) Pte., Ltd -1003 Sigma Corp. -1004 LG Electronics, Inc. -1005 Apacer Technology, Inc. -1006 iRiver, Ltd. -1009 Emuzed, Inc. -100a AV Chaseway, Ltd -100b Chou Chin Industrial Co., Ltd -100d Netopia, Inc. -1010 Fukuda Denshi Co., Ltd -1011 Mobile Media Tech. -1012 SDKM Fibres, Wires & Cables Berhad -1013 TST-Touchless Sensor Technology AG -1014 Densitron Technologies PLC -1015 Softronics Pty., Ltd -1016 Xiamen Hung's Enterprise Co., Ltd -1017 Speedy Industrial Supplies, Pte., Ltd -1019 Elitegroup Computer Systems (ECS) -1020 Labtec - 0006 Wireless Keyboard - 0106 Wireless Optical Mouse/Keyboard -1022 Shinko Shoji Co., Ltd -1025 Hyper-Paltek -1026 Newly Corp. -1027 Time Domain -1028 Inovys Corp. -1029 Atlantic Coast Telesys -102a Ramos Technology Co., Ltd -102b Infotronic America, Inc. -102c Etoms Electronics Corp. -102d Winic Corp. -1031 Comax Technology, Inc. -1032 C-One Technology Corp. -1033 Nucam Corp. -1038 SteelSeries ApS -1039 devolo AG -103a PSA -103d Stanton -1043 iCreate Technologies Corp. -1044 Chu Yuen Enterprise Co., Ltd -1046 Winbond Electronics Corp. [hex] -1048 Targus Group International -104b Mylex / Buslogic -104c AMCO TEC International, Inc. -104d Newport Corporation -104f WB Electronics -1050 Yubico.com -1053 Immanuel Electronics Co., Ltd -1054 BMS International Beheer N.V. -1055 Complex Micro Interconnection Co., Ltd -1056 Hsin Chen Ent Co., Ltd -1057 ON Semiconductor -1058 Western Digital Technologies, Inc. -1059 Giesecke & Devrient GmbH -105b Foxconn International, Inc. -105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd -105d Delkin Devices, Inc. -105e Valence Semiconductor Design, Ltd -105f Chin Shong Enterprise Co., Ltd -1060 Easthome Industrial Co., Ltd -1063 Motorola Electronics Taiwan, Ltd [hex] -1065 CCYU Technology -1068 Micropi Elettronica -106a Loyal Legend, Ltd -106c Curitel Communications, Inc. -106d San Chieh Manufacturing, Ltd -106e ConectL -106f Money Controls -1076 GCT Semiconductor, Inc. -107b Gateway, Inc. -107d Arlec Australia, Ltd -107e Midoriya Electric Co., Ltd -107f KidzMouse, Inc. -1082 Shin-Etsukaken Co., Ltd -1083 Canon Electronics, Inc. -1084 Pantech Co., Ltd -108a Chloride Power Protection -108b Grand-tek Technology Co., Ltd - 0005 HID Keyboard/Mouse PS/2 Translator -108c Robert Bosch GmbH -108e Lotes Co., Ltd. -1091 Numerik Jena -1099 Surface Optics Corp. -109a DATASOFT Systems GmbH -109b Hisense -109f eSOL Co., Ltd -10a0 Hirotech, Inc. -10a3 Mitsubishi Materials Corp. -10a9 SK Teletech Co., Ltd -10aa Cables To Go -10ab USI Co., Ltd -10ac Honeywell, Inc. -10ae Princeton Technology Corp. -10af Liebert Corp. -10b5 Comodo (PLX?) -10b8 DiBcom -10bb TM Technology, Inc. -10bc Dinging Technology Co., Ltd -10bd TMT Technology, Inc. -10bf SmartHome -10c3 Universal Laser Systems, Inc. -10c4 Silicon Labs -10c5 Sanei Electric, Inc. -10c6 Intec, Inc. -10cb Eratech -10cc GBM Connector Co., Ltd -10cd Kycon, Inc. -10ce Silicon Labs -10cf Velleman Components, Inc. -10d1 Hottinger Baldwin Measurement -10d2 RayComposer - R. Adams -10d4 Man Boon Manufactory, Ltd -10d5 Uni Class Technology Co., Ltd - 5552 KVM Human Interface Composite Device (Keyboard/Mouse ports) -10d6 Actions Semiconductor Co., Ltd -10de Authenex, Inc. -10df In-Win Development, Inc. -10e0 Post-Op Video, Inc. -10e1 CablePlus, Ltd -10e2 Nada Electronics, Ltd -10ec Vast Technologies, Inc. -10f0 Nexio Co., Ltd -10f1 Importek -10f5 Turtle Beach -10f8 Cesys GmbH -10fb Pictos Technologies, Inc. -10fd Anubis Electronics, Ltd -10fe Thrane & Thrane -1100 VirTouch, Ltd -1101 EasyPass Industrial Co., Ltd -1108 Brightcom Technologies, Ltd -110a Moxa Technologies Co., Ltd. -1110 Analog Devices Canada, Ltd (Allied Telesyn) -1111 Pandora International Ltd. -1112 YM ELECTRIC CO., Ltd -1113 Medion AG -111e VSO Electric Co., Ltd -112a RedRat -112e Master Hill Electric Wire and Cable Co., Ltd -112f Cellon International, Inc. -1130 Tenx Technology, Inc. -1131 Integrated System Solution Corp. -1132 Toshiba Corp., Digital Media Equipment [hex] -1136 CTS Electronincs -113c Arin Tech Co., Ltd -113d Mapower Electronics Co., Ltd -113f Integrated Biometrics, LLC -1141 V One Multimedia, Pte., Ltd -1142 CyberScan Technologies, Inc. -1145 Japan Radio Company -1146 Shimane SANYO Electric Co., Ltd. -1147 Ever Great Electric Wire and Cable Co., Ltd -114b Sphairon Access Systems GmbH -114c Tinius Olsen Testing Machine Co., Inc. -114d Alpha Imaging Technology Corp. -114f Wavecom -115b Salix Technology Co., Ltd. -1162 Secugen Corp. -1163 DeLorme Publishing, Inc. -1164 YUAN High-Tech Development Co., Ltd -1165 Telson Electronics Co., Ltd -1166 Bantam Interactive Technologies -1167 Salient Systems Corp. -1168 BizConn International Corp. -116e Gigastorage Corp. -116f Silicon 10 Technology Corp. -1175 Shengyih Steel Mold Co., Ltd -117d Santa Electronic, Inc. -117e JNC, Inc. -1182 Venture Corp., Ltd -1183 Compaq Computer Corp. [hex] (Digital Dream ??) -1184 Kyocera Elco Corp. -1188 Bloomberg L.P. -1189 Acer Communications & Multimedia -118f You Yang Technology Co., Ltd -1190 Tripace -1191 Loyalty Founder Enterprise Co., Ltd -1196 Yankee Robotics, LLC -1197 Technoimagia Co., Ltd -1198 StarShine Technology Corp. -1199 Sierra Wireless, Inc. -119a ZHAN QI Technology Co., Ltd -119b ruwido austria GmbH - 0400 Infrared Keyboard V2.01 -11a0 Chipcon AS -11a3 Technovas Co., Ltd -11aa GlobalMedia Group, LLC -11ab Exito Electronics Co., Ltd -11ac Nike -11b0 ATECH FLASH TECHNOLOGY -11be R&D International NV -11c0 Betop -11c5 Inmax -11c9 Nacon -11ca VeriFone Inc -11db Topfield Co., Ltd. -11e6 K.I. Technology Co. Ltd. -11f5 Siemens AG -11f6 Prolific -11f7 Alcatel (?) -1203 TSC Auto ID Technology Co., Ltd -1209 Generic - 0cbd Andrzej Szombierski kuku.eu.org keyboard - 2201 Dygma Shortcut Keyboard - 2300 Keyboardio Model 01 Bootloader - 2301 Keyboardio Model 01 - 2328 K.T.E.C. Keyboard Device - 345c kinX Keyboard Controller - a1e5 Atreus Keyboards Atreus Keyboard - bb00 keyplus split keyboard firmware - bb02 keyplus nRF24 wireless keyboard dongle -120e Hudson Soft Co., Ltd -120f Magellan -1210 DigiTech -121e Jungsoft Co., Ltd -121f Panini S.p.A. -1220 TC Electronic -1221 Unknown manufacturer -1222 TiPro - faca programmable keyboard -1223 SKYCABLE ENTERPRISE. CO., LTD. -1228 Datapaq Limited -1230 Chipidea-Microelectronica, S.A. -1233 Denver Electronics -1234 Brain Actuated Technologies -1235 Focusrite-Novation - 0012 Nocturn Keyboard -1241 Belkin - 0504 Wireless Trackball Keyboard - 1503 Keyboard - 1603 Keyboard - f767 Keyboard -1243 Holtek Semiconductor, Inc. - e000 Unique NFC/RFID reader (keyboard emulation) -124a AirVast -124b Nyko (Honey Bee) -124c MXI - Memory Experts International, Inc. -125c Apogee Inc. -125d JMicron -125f A-DATA Technology Co., Ltd. -1260 Standard Microsystems Corp. -1264 Covidien Energy-based Devices -1266 Pirelli Broadband Solutions -1267 Logic3 / SpectraVideo plc - 0103 G-720 Keyboard -126c Aristocrat Technologies -126d Bel Stewart -126e Strobe Data, Inc. -126f TwinMOS -1274 Ensoniq -1275 Xaxero Marine Software Engineering, Ltd. -1278 Starlight Xpress -1283 zebris Medical GmbH -1286 Marvell Semiconductor, Inc. -1291 Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. -1292 Innomedia -1293 Belkin Components [hex] - 2101 104-key keyboard -1294 RISO KAGAKU CORP. -1297 DekTec -129b CyberTAN Technology -12a7 Trendchip Technologies Corp. -12ab Honey Bee Electronic International Ltd. -12b8 Zhejiang Xinya Electronic Technology Co., Ltd. -12b9 E28 -12ba Licensed by Sony Computer Entertainment America -12bd Gembird -12c4 Autocue Group Ltd -12cf DEXIN -12d1 Huawei Technologies Co., Ltd. -12d2 LINE TECH INDUSTRIAL CO., LTD. -12d3 LINAK -12d6 EMS Dr. Thomas Wuensche -12d7 BETTER WIRE FACTORY CO., LTD. -12d8 Araneus Information Systems Oy -12e6 Waldorf Music GmbH -12ef Tapwave, Inc. -12f2 ViewPlus Technologies, Inc. -12f5 Dynamic System Electronics Corp. -12f7 Memorex Products, Inc. -12fd AIN Comm. Technology Co., Ltd -12ff Fascinating Electronics, Inc. -1306 FM20 Barcode Scanner -1307 Transcend Information, Inc. -1308 Shuttle, Inc. -1310 Roper -1312 ICS Electronics -1313 ThorLabs -131d Natural Point -1325 ams AG -132a Envara Inc. -132b Konica Minolta -133e Kemper Digital GmbH -1342 Mobility - 0201 EasiDock 200 Keyboard and Mouse Port -1343 Citizen Systems -1345 Sino Lite Technology Corp. -1347 Moravian Instruments -1348 Katsuragawa Electric Co., Ltd. -134c PanJit International Inc. -134e Digby's Bitpile, Inc. DBA D Bit -1357 P&E Microcomputer Systems -135e Insta GmbH -135f Control Development Inc. -1366 SEGGER -136b STEC -136e Andor Technology Ltd. -1370 Swissbit -1371 CNet Technology Inc. -1376 Vimtron Electronics Co., Ltd. -1377 Sennheiser electronic GmbH & Co. KG -137b SCAPS GmbH -137c YASKAWA ELECTRIC CORP. -1385 Netgear, Inc -138a Validity Sensors, Inc. -138e Jungo LTD -1390 TOMTOM B.V. -1391 IdealTEK, Inc. -1395 Sennheiser Communications -1397 BEHRINGER International GmbH -1398 Q-tec -13ad Baltech -13b0 PerkinElmer Optoelectronics -13b1 Linksys -13b2 Alesis -13b3 Nippon Dics Co., Ltd. -13ba PCPlay - 0017 PS/2 Keyboard+Mouse Adapter -13be Ricoh Printing Systems, Ltd. -13ca JyeTai Precision Industrial Co., Ltd. -13cf Wisair Ltd. -13d0 Techsan Electronics Co., Ltd. -13d1 A-Max Technology Macao Commercial Offshore Co. Ltd. -13d2 Shark Multimedia -13d3 IMC Networks -13d7 Guidance Software, Inc. -13dc ALEREON, INC. -13dd i.Tech Dynamic Limited -13e1 Kaibo Wire & Cable (Shenzhen) Co., Ltd. -13e5 Rane -13e6 TechnoScope Co., Ltd. -13ea Hengstler -13ec Zydacron -13ee MosArt -13fd Initio Corporation -13fe Kingston Technology Company Inc. -1400 Axxion Group Corp. -1402 Bowe Bell & Howell -1403 Sitronix -1404 Fundamental Software, Inc. -1409 IDS Imaging Development Systems GmbH -140e Telechips, Inc. -1410 Novatel Wireless -1415 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. -1419 ABILITY ENTERPRISE CO., LTD. -1421 Sensor Technology -1424 Posnet Polska S.A. -1429 Vega Technologies Industrial (Austria) Co. -142a Thales E-Transactions -142b Arbiter Systems, Inc. -1430 RedOctane -1431 Pertech Resources, Inc. -1435 Wistron NeWeb -1436 Denali Software, Inc. -143c Altek Corporation -1443 Digilent -1446 X.J.GROUP -1451 Force Dimension -1452 Dai Nippon Printing, Inc -1453 Radio Shack -1456 Extending Wire & Cable Co., Ltd. -1457 First International Computer, Inc. -145f Trust - 0176 Isla Keyboard - 01e5 Keyboard [GXT 830] -1460 Tatung Co. -1461 Staccato Communications -1462 Micro Star International -146b BigBen Interactive -1472 Huawei-3Com -147a Formosa Industrial Computing, Inc. -147e Upek -147f Hama GmbH & Co., KG -1482 Vaillant -1484 Elsa AG [hex] -1485 Silicom -1487 DSP Group, Ltd. -148e EVATRONIX SA -148f Ralink Technology, Corp. -1491 Futronic Technology Co. Ltd. -1493 Suunto -1497 Panstrong Company Ltd. -1498 Microtek International Inc. -149a Imagination Technologies -14aa WideView Technology Inc. -14ad CTK Corporation -14ae Printronix Inc. -14af ATP Electronics Inc. -14b0 StarTech.com Ltd. -14b2 Ralink Technology, Corp. -14c0 Rockwell Automation, Inc. -14c2 Gemlight Computer, Ltd -14c8 Zytronic -14cd Super Top -14d8 JAMER INDUSTRIES CO., LTD. -14dd Raritan Computer, Inc. -14e0 WiNRADiO Communications -14e1 Dialogue Technology Corp. -14e5 SAIN Information & Communications Co., Ltd. -14ea Planex Communications -14ed Shure Inc. -14f7 TechniSat Digital GmbH -1500 Ellisys -1501 Pine-Tum Enterprise Co., Ltd. -1504 Bixolon CO LTD -1509 First International Computer, Inc. -1513 medMobile -1514 Actel -1516 CompUSA -1518 Cheshire Engineering Corp. -1519 Comneon -151f Opal Kelly Incorporated -1520 Bitwire Corp. -1524 ENE Technology Inc -1527 Silicon Portals -1529 UBIQUAM Co., Ltd. -152a Thesycon Systemsoftware & Consulting GmbH -152b MIR Srl -152d JMicron Technology Corp. / JMicron USA Technology Corp. -152e LG (HLDS) -1532 Razer USA, Ltd - 0023 Gaming Keyboard [TRON] - 002b Gaming Keyboard [Star Wars: The Old Republic] - 004a RZ03-0133 Gaming Lapboard, Keyboard Mouse Combo, Dongle [Turret Dongle] - 0102 Tarantula Keyboard - 0103 Gaming Keyboard [Reclusa] - 0105 Gaming Keyboard [ProType] - 0106 Gaming Keyboard [ProType] - 0109 Lycosa Keyboard - 010b Gaming Keyboard [Arctosa] - 0118 RZ03-0080, Gaming Keyboard [Deathstalker Essential] - 0119 Gaming Keyboard [Lycosa] - 011e Gaming Keyboard Dock [Edge Keyboard Dock] - 0200 Gaming Keyboard [Reclusa] - 020d Cynosa Pro keyboard (Cynosa Pro Bundle) - 021b Gaming Keyboard [BlackWidow X Tournament Edition] - 0221 RZ03-0203 Gaming Keyboard [BlackWidow Chroma V2] - 023f RZ03-0274 Gaming Keyboard [Cynosa Lite] - 0904 R201-0282 Gaming Keyboard, Mouse Combination [Turret For Xbox One] -153b TerraTec Electronic GmbH -1546 U-Blox AG -1547 SG Intec Ltd & Co KG -154a Celectronic GmbH -154b PNY -154d ConnectCounty Holdings Berhad -154e D&M Holdings, Inc. (Denon/Marantz) -154f SNBC CO., Ltd -1554 Prolink Microsystems Corp. -1557 OQO -1568 Sunf Pu Technology Co., Ltd -156f Quantum Corporation -1570 ALLTOP TECHNOLOGY CO., LTD. -157b Ketron SRL -157e TRENDnet -1582 Fiberline -1587 SMA Technologie AG -158d Oakley Inc. -158e JDS Uniphase Corporation (JDSU) -1598 Kunshan Guoji Electronics Co., Ltd. -15a2 Freescale Semiconductor, Inc. -15a4 Afatech Technologies, Inc. -15a8 Teams Power Limited -15a9 Gemtek -15aa Gearway Electronics (Dong Guan) Co., Ltd. -15ad VMware Inc. -15ba Olimex Ltd. - 003c TERES Keyboard+Touchpad -15c0 XL Imaging -15c2 SoundGraph Inc. -15c5 Advance Multimedia Internet Technology Inc. (AMIT) -15c6 Laboratoires MXM -15c8 KTF Technologies -15c9 D-Box Technologies -15ca Textech International Ltd. -15d5 Coulomb Electronics Ltd. -15d9 Trust International B.V. -15dc Hynix Semiconductor Inc. -15e0 Seong Ji Industrial Co., Ltd. -15e1 RSA -15e4 Numark -15e8 SohoWare -15e9 Pacific Digital Corp. -15ec Belcarra Technologies Corp. -15f4 HanfTek -1604 Tascam -1605 ACCES I/O Products, Inc. -1606 Umax -1608 Inside Out Networks [hex] -160a VIA Technologies, Inc. -160e INRO -1614 Amoi Electronics -1617 Sony Corp. -1619 L & K Precision Technology Co., Ltd. -161c Digitech Systems -1621 Wionics Research -1628 Stonestreet One, Inc. -162a Airgo Networks Inc. -162f WiQuest Communications, Inc. -1630 2Wire, Inc. -1631 Good Way Technology -1633 AIM GmbH -1645 Entrega [hex] -1649 SofTec Microsystems -164a ChipX -164c Matrix Vision GmbH -1657 Struck Innovative Systeme GmbH -165b Frontier Design Group -165c Kondo Kagaku -1660 Creatix Polymedia GmbH -1667 GIGA-TMS INC. - 0005 PCR330A RFID Reader (125 kHz, keyboard emulation) -1668 Actiontec Electronics, Inc. [hex] -1669 PiKRON Ltd. [hex] -166a Clipsal -1677 China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) -1679 Total Phase -167b Pure Digital Technologies, Inc. -1680 Golden Bridge Electech Inc. -1681 Prevo Technologies, Inc. -1682 Maxwise Production Enterprise Ltd. -1684 Godspeed Computer Corp. -1685 Delock -1686 ZOOM Corporation -1687 Kingmax Digital Inc. -1688 Saab AB -1689 Razer USA, Ltd -168c Atheros Communications -1690 Askey Computer Corp. [hex] -1696 Hitachi Video and Information System, Inc. -1697 VTec Test, Inc. -16a5 Shenzhen Zhengerya Cable Co., Ltd. -16a6 Unigraf -16ab Global Sun Technology -16ac Dongguan ChingLung Wire & Cable Co., Ltd. -16b4 iStation -16b5 Persentec, Inc. -16c0 Van Ooijen Technische Informatica - 047c Teensy Keyboard - 047d Teensy Keyboard+Debug - 0482 Teensyduino Keyboard+Mouse+Joystick - 0487 Teensyduino Serial+Keyboard+Mouse+Joystick - 05df HID device except mice, keyboards, and joysticks - 27d9 HID device except mice, keyboards, and joysticks - 27db Keyboard -16ca Wireless Cables, Inc. -16cc silex technology, Inc. -16d0 MCS -16d1 Suprema Inc. -16d3 Frontline Test Equipment, Inc. -16d5 AnyDATA Corporation -16d6 JABLOCOM s.r.o. -16d8 CMOTECH Co., Ltd. -16dc Wiener, Plein & Baus -16de Telemecanique -16df King Billion Electronics Co., Ltd. -16f0 GN ReSound A/S -16f5 Futurelogic Inc. -1702 FDI-MATELEC -1706 BlueView Technologies, Inc. -1707 ARTIMI -170b Swissonic -170d Avnera -1711 Leica Microsystems -1724 Meyer Instruments (MIS) -1725 Vitesse Semiconductor -1726 Axesstel, Inc. -172f Waltop International Corp. -1733 Cellink Technology Co., Ltd -1736 CANON IMAGING SYSTEM TECHNOLOGIES INC. -1737 802.11g Adapter [Linksys WUSB54GC v3] -173a Roche -173d QSENN - 0002 GP-K7000 keyboard -1740 Senao -1743 General Atomics -1748 MQP Electronics -174c ASMedia Technology Inc. -174f Syntek -1753 GERTEC Telecomunicacoes Ltda. -1756 ENENSYS Technologies -1759 LucidPort Technology, Inc. -1761 ASUSTek Computer, Inc. (wrong ID) -1770 MSI - ff00 steel series rgb keyboard -1772 System Level Solutions, Inc. -1776 Arowana -1777 Microscan Systems, Inc. -177f Sweex -1781 Multiple Vendors -1782 Spreadtrum Communications Inc. -1784 TopSeed Technology Corp. -1787 ATI AIB -1788 ShenZhen Litkconn Technology Co., Ltd. -178e ASUSTek Computer, Inc. (wrong ID) -1796 Printrex, Inc. -1797 JALCO CO., LTD. -1799 Thales Norway A/S -179d Ricavision International, Inc. -17a0 Samson Technologies Corp. -17a4 Concept2 -17a5 Advanced Connection Technology Inc. -17a7 MICOMSOFT CO., LTD. -17a8 Kamstrup A/S -17b3 Grey Innovation -17b5 Lunatone -17ba SAURIS GmbH -17c3 Singim International Corp. -17cc Native Instruments -17cf Hip Hing Cable & Plug Mfy. Ltd. -17d0 Sanford L.P. -17d3 Korea Techtron Co., Ltd. -17e9 DisplayLink -17eb Cornice, Inc. -17ef Lenovo - 6007 Smartcard Keyboard - 6009 ThinkPad Keyboard with TrackPoint - 6014 Mini Wireless Keyboard N5901 - 6022 Ultraslim Plus Wireless Keyboard and Mouse - 602d Black Silk Keyboard - 6032 Wireless Dongle for Keyboard and Mouse - 6047 ThinkPad Compact Keyboard with TrackPoint - 609b Professional Wireless Keyboard and Mouse Combo - 609c Professional Wireless Keyboard - b000 Virtual Keyboard and Mouse - b003 Virtual Keyboard and Mouse / Mass Storage -17f4 WaveSense -17f5 K.K. Rocky -17f6 Unicomp, Inc. - 0709 Model M Keyboard - 0822 Ruffian 6 Keyboard v3 [Model M] -1809 Advantech -1822 Twinhan -1831 Gwo Jinn Industries Co., Ltd. -1832 Huizhou Shenghua Industrial Co., Ltd. -183d VIVOphone -1843 Vaisala -1849 ASRock Incorporation -184f K2L GmbH -1852 GYROCOM C&C Co., LTD -1854 Memory Devices Ltd. -185b Compro -1861 Tech Technology Industrial Company -1862 Teridian Semiconductor Corp. -1870 Nexio Co., Ltd -1871 Aveo Technology Corp. -1873 Navilock -187c Alienware Corporation -187f Siano Mobile Silicon -1892 Vast Technologies, Inc. -1894 Topseed -1897 Evertop Wire Cable Co. -189f 3Shape A/S -18a4 CSSN -18a5 Verbatim, Ltd -18b1 Petalynx -18b4 e3C Technologies -18b6 Mikkon Technology Limited -18b7 Zotek Electronic Co., Ltd. -18c5 AMIT Technology, Inc. -18cd Ecamm -18d1 Google Inc. -18d5 Starline International Group Limited -18d9 Kaba -18dc LKC Technologies, Inc. -18dd Planon System Solutions Inc. -18e3 Fitipower Integrated Technology Inc -18e8 Qcom -18ea Matrox Graphics, Inc. -18ec Arkmicro Technologies Inc. -18ef ELV Elektronik AG -18f8 [Maxxter] -18fb Scriptel Corporation -18fd FineArch Inc. -1901 GE Healthcare -1908 GEMBIRD -190d Motorola GSG -1914 Alco Digital Devices Limited -1915 Nordic Semiconductor ASA -191c Innovative Technology LTD -1923 FitLinxx -1926 NextWindow -1928 Proceq SA -192f Avago Technologies, Pte. -1930 Shenzhen Xianhe Technology Co., Ltd. -1931 Ningbo Broad Telecommunication Co., Ltd. -1934 Feature Integration Technology Inc. (Fintek) -1935 Elektron Music Machines -1938 Meinberg Funkuhren GmbH & Co. KG -1941 Dream Link -1943 Sensoray Co., Inc. -1949 Lab126, Inc. -194f PreSonus Audio Electronics, Inc. -1951 Hyperstone AG -1953 Ironkey Inc. -1954 Radiient Technologies -195d Itron Technology iONE - 7777 Scorpius wireless keyboard -1965 Uniden Corporation -1967 CASIO HITACHI Mobile Communications Co., Ltd. -196b Wispro Technology Inc. -1970 Dane-Elec Corp. USA -1975 Dongguan Guneetal Wire & Cable Co., Ltd. -1976 Chipsbrand Microelectronics (HK) Co., Ltd. -1977 T-Logic -197d Leuze electronic -1989 Nuconn Technology Corp. -198f Beceem Communications Inc. -1990 Acron Precision Industrial Co., Ltd. -1995 Trillium Technology Pty. Ltd. -1996 PixeLINK -199b MicroStrain, Inc. -199e The Imaging Source Europe GmbH -199f Benica Corporation -19a8 Biforst Technology Inc. -19ab Bodelin -19af S Life -19b2 Batronix -19b4 Celestron -19b5 B & W Group -19b6 Infotech Logistic, LLC -19b9 Data Robotics -19c2 Futuba -19ca Mindtribe -19cf Parrot SA -19d2 ZTE WCDMA Technologies MSM -19db KFI Printers -19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. -19e8 Industrial Technology Research Institute -19ef Pak Heng Technology (Shenzhen) Co., Ltd. -19f7 RODE Microphones -19fa Gampaq Co.Ltd -19ff Dynex -1a08 Bellwood International, Inc. -1a0a USB-IF non-workshop -1a12 KES Co., Ltd. -1a1d Veho -1a25 Amphenol East Asia Ltd. -1a2a Seagate Branded Solutions -1a2c China Resource Semico Co., Ltd - 0021 Keyboard - 0024 Multimedia Keyboard -1a32 Quanta Microsystems, Inc. -1a34 ACRUX -1a36 Biwin Technology Ltd. -1a40 Terminus Technology Inc. -1a41 Action Electronics Co., Ltd. -1a44 VASCO Data Security International -1a4a Silicon Image -1a4b SafeBoot International B.V. -1a5a Tandberg Data -1a61 Abbott Diabetes Care -1a6a Spansion Inc. -1a6d SamYoung Electronics Co., Ltd -1a6e Global Unichip Corp. -1a6f Sagem Orga GmbH -1a72 Physik Instrumente -1a79 Bayer Health Care LLC -1a7b Lumberg Connect GmbH & Co. KG -1a7c Evoluent -1a81 Holtek Semiconductor, Inc. -1a86 QinHeng Electronics -1a89 Dynalith Systems Co., Ltd. -1a8b SGS Taiwan Ltd. -1a8d BandRich, Inc. -1a98 Leica Camera AG -1aa4 Data Drive Thru, Inc. -1aa5 UBeacon Technologies, Inc. -1aa6 eFortune Technology Corp. -1aad KeeTouch -1ab1 Rigol Technologies -1acb Salcomp Plc -1acc Midiplus Co, Ltd. -1ad1 Desay Wire Co., Ltd. -1ad4 APS -1adb SEL C662 Serial Cable -1ae4 ic-design Reinhard Gottinger GmbH -1ae7 X-TENSIONS -1aed High Top Precision Electronic Co., Ltd. -1aef Conntech Electronic (Suzhou) Corporation -1af1 Connect One Ltd. -1afe A. Eberle GmbH & Co. KG -1b04 Meilhaus Electronic GmbH -1b0e BLUTRONICS S.r.l. -1b1c Corsair - 0a60 Vengeance K60 Keyboard - 1b04 Raptor K50 Keyboard - 1b07 Vengeance K65 Gaming Keyboard - 1b08 Vengeance K95 Keyboard - 1b09 Vengeance K70R keyboard - 1b11 K95 RGB Mechanical Gaming Keyboard - 1b13 Vengeance K70RGB keyboard -1b1f eQ-3 Entwicklung GmbH -1b20 MStar Semiconductor, Inc. -1b22 WiLinx Corp. -1b26 Cellex Power Products, Inc. -1b27 Current Electronics Inc. -1b28 NAVIsis Inc. -1b32 Ugobe Life Forms, Inc. -1b36 ViXS Systems, Inc. -1b3b iPassion Technology Inc. -1b3f Generalplus Technology Inc. -1b47 Energizer Holdings, Inc. -1b48 Plastron Precision Co., Ltd. -1b52 ARH Inc. -1b59 K.S. Terminals Inc. -1b5a Chao Zhou Kai Yuan Electric Co., Ltd. -1b65 The Hong Kong Standards and Testing Centre Ltd. -1b71 Fushicai -1b72 ATERGI TECHNOLOGY CO., LTD. -1b73 Fresco Logic -1b75 Ovislink Corp. -1b76 Legend Silicon Corp. -1b80 Afatech -1b86 Dongguan Guanshang Electronics Co., Ltd. -1b88 ShenMing Electron (Dong Guan) Co., Ltd. -1b8c Altium Limited -1b8d e-MOVE Technology Co., Ltd. -1b8e Amlogic, Inc. -1b8f MA LABS, Inc. -1b96 N-Trig -1b98 YMax Communications Corp. -1b99 Shenzhen Yuanchuan Electronic -1ba1 JINQ CHERN ENTERPRISE CO., LTD. -1ba2 Lite Metals & Plastic (Shenzhen) Co., Ltd. -1ba4 Ember Corporation -1ba6 Abilis Systems -1ba8 China Telecommunication Technology Labs -1bad Harmonix Music -1bae Vuzix Corporation -1bbb T & A Mobile Phones -1bc4 Ford Motor Co. -1bc5 AVIXE Technology (China) Ltd. -1bc7 Telit Wireless Solutions -1bce Contac Cable Industrial Limited -1bcf Sunplus Innovation Technology Inc. - 05c5 SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] - 05cf Micro keyboard & mouse receiver -1bd0 Hangzhou Riyue Electronic Co., Ltd. -1bd5 BG Systems, Inc. -1bde P-TWO INDUSTRIES, INC. -1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd -1bf0 RealVision Inc. -1bf5 Extranet Systems Inc. -1bf6 Orient Semiconductor Electronics, Ltd. -1bfd TouchPack -1c02 Kreton Corporation -1c04 QNAP System Inc. -1c0c Ionics EMS, Inc. -1c0d Relm Wireless -1c10 Lanterra Industrial Co., Ltd. -1c13 ALECTRONIC LIMITED -1c1a Datel Electronics Ltd. -1c1b Volkswagen of America, Inc. -1c1f Goldvish S.A. -1c20 Fuji Electric Device Technology Co., Ltd. -1c21 ADDMM LLC -1c22 ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. -1c26 Shanghai Haiying Electronics Co., Ltd. -1c27 HuiYang D & S Cable Co., Ltd. -1c29 Elster GmbH -1c31 LS Cable Ltd. -1c34 SpringCard -1c37 Authorizer Technologies, Inc. -1c3d NONIN MEDICAL INC. -1c3e Wep Peripherals -1c40 EZPrototypes -1c49 Cherng Weei Technology Corp. -1c4f SiGma Micro - 0002 Keyboard TRACER Gamma Ivory - 000e Genius KB-120 Keyboard - 0026 Keyboard -1c6b Philips & Lite-ON Digital Solutions Corporation -1c6c Skydigital Inc. -1c73 AMT -1c77 Kaetat Industrial Co., Ltd. -1c78 Datascope Corp. -1c79 Unigen Corporation -1c7a LighTuning Technology Inc. -1c7b LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. -1c83 Schomaecker GmbH -1c87 2N TELEKOMUNIKACE a.s. -1c88 Somagic, Inc. -1c89 HONGKONG WEIDIDA ELECTRON LIMITED -1c8e ASTRON INTERNATIONAL CORP. -1c98 ALPINE ELECTRONICS, INC. -1c9e OMEGA TECHNOLOGY -1ca0 ACCARIO Inc. -1ca1 Symwave -1cac Kinstone -1cb3 Aces Electronic Co., Ltd. -1cb4 OPEX CORPORATION -1cb6 IdeaCom Technology Inc. -1cbe Luminary Micro Inc. -1cbf FORTAT SKYMARK INDUSTRIAL COMPANY -1cc0 PlantSense -1cca NextWave Broadband Inc. -1ccd Bodatong Technology (Shenzhen) Co., Ltd. -1cd4 adp corporation -1cd5 Firecomms Ltd. -1cd6 Antonio Precise Products Manufactory Ltd. -1cde Telecommunications Technology Association (TTA) -1cdf WonTen Technology Co., Ltd. -1ce0 EDIMAX TECHNOLOGY CO., LTD. -1ce1 Amphenol KAE -1cf1 Dresden Elektronik -1cfc ANDES TECHNOLOGY CORPORATION -1cfd Flextronics Digital Design Japan, LTD. -1d03 iCON -1d07 Solid-Motion -1d08 NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. -1d09 TechFaith Wireless Technology Limited -1d0a Johnson Controls, Inc. The Automotive Business Unit -1d0b HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. -1d0f Sonix Technology Co., Ltd. -1d14 ALPHA-SAT TECHNOLOGY LIMITED -1d17 C-Thru Music Ltd. - 0001 AXiS-49 Harmonic Table MIDI Keyboard -1d19 Dexatek Technology Ltd. -1d1f Diostech Co., Ltd. -1d20 SAMTACK INC. -1d27 ASUS -1d34 Dream Cheeky -1d45 Touch -1d4d PEGATRON CORPORATION -1d50 OpenMoko, Inc. - 6027 Key64 Keyboard - 6028 Teensy 2.0 Development Board [ErgoDox Keyboard] - 6033 frobiac / adnw keyboard - 609c antiAFK keyboard - 60a3 keyboard (bootloader) - 60e8 Alpen Clack keyboard - 60e9 keyman64 keyboard itercepter -1d57 Xenta - 0005 Wireless Receiver (Keyboard and Mouse) - 32da 2.4GHz Receiver (Keyboard and Mouse) - ac01 Wireless Receiver (Keyboard and Mouse) -1d5b Smartronix, Inc. -1d5c Fresco Logic -1d6b Linux Foundation -1d90 Citizen -1d9d Sigma Sport -1de1 Actions Microelectronics Co. -1e0e Qualcomm / Option -1e10 Point Grey Research, Inc. -1e17 Mirion Technologies Dosimetry Services Division -1e1d Kanguru Solutions -1e1f INVIA -1e29 Festo AG & Co. KG -1e3d Chipsbank Microelectronics Co., Ltd -1e41 Cleverscope -1e4e Cubeternet -1e54 TypeMatrix - 2030 2030 USB Keyboard -1e68 TrekStor GmbH & Co. KG -1e71 NZXT -1e74 Coby Electronics Corporation -1e7d ROCCAT - 30d4 Arvo Keyboard -1ea7 SHARKOON Technologies GmbH - 0066 [Mediatrack Edge Mini Keyboard] - 2007 SHARK ZONE K30 Illuminated Gaming Keyboard -1ebb NuCORE Technology, Inc. -1eda AirTies Wireless Networks -1edb Blackmagic design -1ee8 ONDA COMMUNICATION S.p.a. -1ef6 EADS Deutschland GmbH -1f28 Cal-Comp -1f3a Onda (unverified) -1f44 The Neat Company -1f48 H-TRONIC GmbH -1f4d G-Tek Electronics Group -1f6f Aliph -1f75 Innostor Technology Corporation -1f82 TANDBERG -1f84 Alere, Inc. -1f87 Stantum -1f9b Ubiquiti Networks, Inc. -1fab Samsung Opto-Electroncs Co., Ltd. -1fbd Delphin Technology AG -1fc9 NXP Semiconductors -1fde ILX Lightwave Corporation -1fe7 Vertex Wireless Co., Ltd. -1ff7 CVT Electronics.Co.,Ltd -1fff Ideofy Inc. -2001 D-Link Corp. -2002 DAP Technologies -2003 detectomat -200c Reloop -2013 PCTV Systems -2019 PLANEX -203d Encore Electronics Inc. -2040 Hauppauge -2047 Texas Instruments -2058 Nano River Technology -2077 Taicang T&W Electronics Co. Ltd -2080 Barnes & Noble -2086 SIMPASS -2087 Cando -20a0 Clay Logic -20b1 XMOS Ltd -20b3 Hanvon -20b7 Qi Hardware -20ce Minicircuits -20df Simtec Electronics -20f1 NET New Electronic Technology GmbH -20f4 TRENDnet -20f7 XIMEA -2100 RT Systems -2101 ActionStar -2109 VIA Labs, Inc. -2113 Softkinetic -2149 Advanced Silicon S.A. -2162 Creative (?) -2184 GW Instek -21a1 Emotiv Systems Pty. Ltd. -21d6 Agecodagis SARL -2207 Fuzhou Rockchip Electronics Company -2222 MacAlly - 0004 iWebKey Keyboard -2227 SAMWOO Enterprise -2232 Silicon Motion -2233 RadioShack Corporation -2237 Kobo Inc. -224f APDM -225d Morpho -228d 8D Technologies inc. -22a6 Pie Digital, Inc. -22b8 Motorola PCS -22b9 eTurboTouch Technology, Inc. -22ba Technology Innovation Holdings, Ltd -22c9 StepOver GmbH -22cd Kinova Robotics Inc. -22e0 secunet Security Networks AG -2304 Pinnacle Systems, Inc. -2318 Shining Technologies, Inc. [hex] -2341 Arduino SA -2357 TP-Link -2373 Pumatronix Ltda -2375 Digit@lway, Inc. -2406 SANHO Digital Electronics Co., Ltd. -2443 Aessent Technology Ltd -2478 Tripp-Lite -248a Maxxter -249c M2Tech s.r.l. -24e1 Paratronic -2516 Cooler Master Co., Ltd. - 0004 Storm QuickFire Rapid Mechanical Keyboard - 0020 QuickFire Rapid-i Keyboard -2548 Pulse-Eight -25b5 FlatFrog -2632 TwinMOS -2639 Xsens -2650 Electronics For Imaging, Inc. [hex] -2659 Sundtek -2676 Basler AG -2717 Xiaomi Inc. -2730 Citizen -2735 DigitalWay -273f Hughski Limited -2770 NHJ, Ltd -27b8 ThingM -27c6 Shenzhen Goodix Technology Co.,Ltd. -2821 ASUSTek Computer Inc. -2899 Toptronic Industrial Co., Ltd -289b Dracal/Raphnet technologies - 000a Dreamcast (Keyboard mode) - 000b Gamecube/N64 controller v2.9 (Keyboard mode) -28de Valve Software -2931 Jolla Oy -2939 Zaber Technologies Inc. -2a03 dog hunter AG -2a37 RTD Embedded Technologies, Inc. -2a45 Meizu Corp. -2ac7 Ultrahaptics Ltd. -2b24 KeepKey LLC -2c02 Planex Communications -2c1a Dolphin Peripherals -2c23 Supermicro Computer Incorporated -2c7c Quectel Wireless Solutions Co., Ltd. -2cdc Sea & Sun Technology GmbH -2dcf Dialog Semiconductor -2fb2 Fujitsu, Ltd -3016 Boundary Devices, LLC -30a4 Blues Wireless -30c2 UNPARALLEL Innovation, Lda -30c9 Luxvisions Innotech Limited -30ee Fujitsu Connected Technologies Limited -3125 Eagletron -3136 Navini Networks -3176 Whanam Electronics Co., Ltd -3195 Link Instruments -3275 VidzMedia Pte Ltd -3333 InLine -3334 AEI -3340 Yakumo -3344 Leaguer Microelectronics (LME) -3504 Micro Star -3538 Power Quotient International Co., Ltd -3579 DIVA -357d Sharkoon -3636 InVibro -3838 WEM -3923 National Instruments Corp. -40bb I-O Data -4101 i-rocks -4102 iRiver, Ltd. -413c Dell Computer Corp. - 0000 DRAC 5 Virtual Keyboard and Mouse - 1001 Keyboard Hub - 1002 Keyboard Hub - 1003 Keyboard Hub - 1005 Multimedia Pro Keyboard Hub - 2001 Keyboard HID Support - 2002 SK-8125 Keyboard - 2003 Keyboard - 2005 RT7D50 Keyboard - 2010 Keyboard - 2011 Multimedia Pro Keyboard - 2100 SK-3106 Keyboard - 2101 SmartCard Reader Keyboard - 2105 Model L100 Keyboard - 2106 Dell QuietKey Keyboard - 8157 Integrated Keyboard - 8161 Integrated Keyboard -4146 USBest Technology -4168 Targus -4242 USB Design by Example -4255 GoPro -4317 Broadcom Corp. -4348 WinChipHead -4572 Shuttle, Inc. -4586 Panram -4670 EMS Production -4752 Miditech -4757 GW Instek -4766 Aceeca -4855 Memorex -4971 SimpleTech -4d46 Musical Fidelity -5032 Grandtec -5041 Linksys (?) -50c2 Averatec (?) -5173 Sweex -5219 I-Tetra -5345 Owon -534c SatoshiLabs -5354 Meyer Instruments (MIS) -544d Transmeta Corp. -5543 UC-Logic Technology Corp. -5555 Epiphan Systems Inc. -55aa OnSpec Electronic, Inc. -5654 Gotview -5656 Uni-Trend Group Limited -595a IRTOUCHSYSTEMS Co. Ltd. -5986 Acer, Inc -59e3 Nonolith Labs -5a57 Zinwell -6000 Beholder International Ltd. -601a Ingenic Semiconductor Ltd. -6189 Sitecom -6244 LightingSoft AG -6253 TwinHan Technology Co., Ltd -636c CoreLogic, Inc. -6472 Unknown (Sony?) -6547 Arkmicro Technologies Inc. -6615 IRTOUCHSYSTEMS Co. Ltd. -6666 Prototype product Vendor ID -6677 WiseGroup, Ltd. -6891 3Com -695c Opera1 -6993 Yealink Network Technology Co., Ltd. -6a75 Shanghai Jujo Electronics Co., Ltd -7104 CME (Central Music Co.) - 2202 UF5/UF6/UF7/UF8 MIDI Master Keyboard -726c StackFoundry LLC -734c TBS Technologies China -7373 Beijing STONE Technology Co. Ltd. -7392 Edimax Technology Co., Ltd -8086 Intel Corp. - 0dad Cherry MiniatureCard Keyboard -8087 Intel Corp. -80ee VirtualBox -8282 Keio -8341 EGO Systems, Inc. -8564 Transcend Information, Inc. -8644 Intenso GmbG -8e06 CH Products, Inc. -9016 Sitecom -9022 TeVii Technology Ltd. -9148 GeoLab, Ltd -9710 MosChip Semiconductor -9849 Bestmedia CD Recordable GmbH & Co. KG -9999 Odeon -99fa Grandtec -9ac4 J. Westhues -9e88 Marvell Semiconductor, Inc. - 01 Keyboard - 01 Keyboard - 006 Keyboard -HUT 07 Keyboard - 001 Keyboard ErrorRollOver - 002 Keyboard POSTfail - 003 Keyboard Error Undefined - 032 # and ~ (Hash and Tilde, Non-US Keyboard near right shift) - 064 \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift) - 065 Keyboard Application (Windows Key for Win95 or Compose) \ No newline at end of file diff --git a/kinto_old/system-config/keyswap.service b/kinto_old/system-config/keyswap.service deleted file mode 100644 index 38a1fce..0000000 --- a/kinto_old/system-config/keyswap.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=keyswap for Terminal and GUI -PartOf=graphical-session.target - -[Service] -Type=simple -Restart=always -# eg DISPLAY=:0.0 -#Environment=DISPLAY={displayid} -RestartSec=1 -WorkingDirectory={homedir}/.config/kinto -ExecStart=/bin/bash -c "{homedir}/.config/kinto/xactive.sh carrots" -ExecStop=/bin/bash {homedir}/.config/kinto/cleanup.sh - -[Install] -WantedBy=default.target diff --git a/kinto_old/system-config/keyswap.timer b/kinto_old/system-config/keyswap.timer deleted file mode 100644 index e2232c1..0000000 --- a/kinto_old/system-config/keyswap.timer +++ /dev/null @@ -1,11 +0,0 @@ -# keyswap.timer -[Unit] -Description=Runs the keyswap.service 5 seconds after boot up - -[Timer] -#OnBootSec=5s -OnActiveSec=5s -Unit=keyswap.service - -[Install] -WantedBy=default.target diff --git a/kinto_old/system-config/keyswap_toggle.sh b/kinto_old/system-config/keyswap_toggle.sh deleted file mode 100644 index 4e2bb8a..0000000 --- a/kinto_old/system-config/keyswap_toggle.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# Manual keyswap -systemtype=$1 -internalid=$2 -usbid=$3 -swapbehavior=$4 - -swapcmd_term="setxkbmap -option;setxkbmap -option altwin:swap_alt_win" -fallbackcmd_gui="" -if [[ "$systemtype" == "windows" || "$systemtype" == "mac" ]]; then - swapcmd_gui="setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY" -elif [[ "$systemtype" == "mac_only" ]]; then - swapcmd_gui="setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY" -# Chromebook keyboard options -elif [[ "$swapbehavior" == "both_mac" ]]; then - swapcmd_gui="setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl; xkbcomp -w0 -i $internalid -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY" - swapcmd_term="setxkbmap -option;setxkbmap -device $internalid -option 'altwin:swap_alt_win'" -elif [[ "$swapbehavior" == "both_win" ]]; then - swapcmd_gui="setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY; setxkbmap -device $usbid -option altwin:ctrl_alt_win" - fallbackcmd_gui="setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY" -elif [[ "$swapbehavior" == "none" ]]; then - swapcmd_gui="setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY" -fi - -if [[ "$systemtype" == "mac_only" ]]; then - check=`setxkbmap -query | grep -c 'alt_super_win'` -elif [[ "$swapbehavior" == "both_win" ]]; then - check=`setxkbmap -query | grep -q 'ctrl_alt_win'; echo $?` -else - check=`setxkbmap -query | grep -c 'swap_alt_win'` -fi - -echo $check -if [ $check -eq 0 ]; then - echo "internal gui to term" - eval "$swapcmd_term" -else - echo "internal term to gui" - eval "$swapcmd_gui" -fi \ No newline at end of file diff --git a/kinto_old/system-config/kinto.desktop b/kinto_old/system-config/kinto.desktop deleted file mode 100644 index 9bb45fb..0000000 --- a/kinto_old/system-config/kinto.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Name=Kinto -GenericName=Kinto -Comment=Make Linux Type Like it's a Mac -Exec=/bin/bash -c "/bin/sleep 5 && /usr/bin/systemctl --user start keyswap" -Terminal=false -Type=Application -X-GNOME-Autostart-enabled=true \ No newline at end of file diff --git a/kinto_old/system-config/xactive.sh b/kinto_old/system-config/xactive.sh deleted file mode 100644 index bf6de8f..0000000 --- a/kinto_old/system-config/xactive.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -if [ $# -eq 0 ] - then - # No arguments - ./kintox11 -else - ./caret_status.sh & - ./kintox11 -fi diff --git a/kinto_old/user_config.json b/kinto_old/user_config.json deleted file mode 100644 index 2727077..0000000 --- a/kinto_old/user_config.json +++ /dev/null @@ -1,76 +0,0 @@ -{"config":[{ - "name":"gui", - "run":"", - "run_onInput":"", - "run_offInput": "killall xbindkeys > /dev/null 2>&1", - "symbols":"", - "types":"", - "de":[], - "appnames":[ "" ] - }, - { - "name":"term", - "run":"", - "run_onInput":"", - "run_offInput": "killall xbindkeys > /dev/null 2>&1", - "symbols":"", - "types":"", - "de":[], - "appnames":[ "Gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty","alacritty","mate-terminal","tilix","xfce4-terminal" ] - }, - { - "name": "firefox", - "run": "", - "run_onInput": "pkill -f ~/.config/kinto/.firefox-nw", - "run_offInput": "xbindkeys -f $HOME/.config/kinto/.firefox-nw", - "symbols": "", - "types": "", - "de": [], - "appnames": [ "Firefox" ] - }, - { - "name": "chrome", - "run": "", - "run_onInput": "xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY", - "run_offInput": "xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui.chrome $DISPLAY", - "symbols": "", - "types": "", - "de": [], - "appnames": [ "Chromium","Chromium-browser","Google-chrome","Epiphany" ] - }], - "init": [], - "detypes":["gnome2","gnome3","kde4","kde5","xfce","i3wm"], - "de":[{ - "id": 1, - "type": ["gnome3"], - "active": false, - "intent":"init", - "name":"gnome-init", - "description":"Gnome - Remove Superkey Overlay keybinding to Activities Overview", - "run":"gsettings set org.gnome.mutter overlay-key ''", - "run_term":"", - "run_gui":"" - }, - { - "id": 2, - "type": ["gnome3"], - "active": false, - "intent":"gui_term", - "name":"Gnome Activities Overview", - "description":"Cmd+Space activates Activities Overview", - "run":"", - "run_term":"gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space']\"", - "run_gui":"gsettings set org.gnome.desktop.wm.keybindings panel-main-menu \"['Space']\"" - }, - { - "id": 3, - "type": ["kde5"], - "active": false, - "intent":"init", - "name":"kde-init", - "description":"KDE Plasma 5 - Removes Superkey Overlay from the Launcher Menu", - "run":"kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta \"\";qdbus org.kde.KWin /KWin reconfigure", - "run_term":"", - "run_gui":"" - }] -} diff --git a/kinto_old/xkeysnail_service.sh b/kinto_old/xkeysnail_service.sh deleted file mode 100755 index f002ce1..0000000 --- a/kinto_old/xkeysnail_service.sh +++ /dev/null @@ -1,508 +0,0 @@ -#!/bin/bash - -# set about:config?filter=ui.key.menuAccessKeyFocuses -# to false for wordwise to work in Firefox - -typeset -l distro -distro=$(awk -F= '$1=="NAME" { print $2 ;}' /etc/os-release) -typeset -l dename -dename=$(./system-config/dename.sh | cut -d " " -f1) - -function uninstall { - - while true; do - read -rep $'\nPress R to restore your original shortcuts.\nPress F to reset to factory shortcuts. (f/r)\n' yn - case $yn in - [Ff]* ) yn="f"; break;; - [Rr]* ) yn="r";break;; - * ) echo "Please answer yes or no.";; - esac - done - - if [ "$yn" == "f" ];then - echo "Reset to factory shortcuts" - if [ "$dename" == "gnome" ];then - echo "Resetting DE hotkeys..." - echo "gsettings reset-recursively org.gnome.desktop.wm.keybindings" - gsettings reset-recursively org.gnome.desktop.wm.keybindings - echo "gsettings reset-recursively org.gnome.mutter.keybindings" - gsettings reset-recursively org.gnome.mutter.keybindings - echo "gsettings set org.gnome.mutter overlay-key 'super'" - gsettings set org.gnome.mutter overlay-key 'super' - dconf dump /org/gnome/mutter/ > mutter.conf - dconf load /org/gnome/mutter/ < mutter.conf - elif [ "$dename" == "kde" ];then - echo "Resetting DE hotkeys..." - mv ~/.config/kwinrc ~/.config/kwinrc.kinto - mv ~/.config/kglobalshortcutsrc ~/.config/kglobalshortcutsrc.kinto - elif [ "$dename" == "xfce" ];then - echo "Resetting DE hotkeys..." - cp /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml - fi - elif [ "$yn" == "r" ]; then - echo "Restore original user shortcuts" - if [ "$dename" == "gnome" ]; then - echo "Restoring DE hotkeys..." - wmkeys=$(ls | grep -m1 "keybinding") - mutterkeys=$(ls | grep -m1 "mutter_") - if [[ ${#wmkeys} > 0 ]]; then - echo "dconf load /org/gnome/desktop/wm/keybindings/ < $wmkeys" - dconf load /org/gnome/desktop/wm/keybindings/ < "$wmkeys" - else - echo "Gnome Desktop keybindings backup not found..." - fi - if [[ ${#mutterkeys} > 0 ]]; then - echo "dconf load /org/gnome/mutter/keybindings/ < $mutterkeys" - dconf load /org/gnome/mutter/keybindings/ <"$mutterkeys" - fi - if [[ ${#wmkeys} > 0 ]] || [[ ${#mutterkeys} > 0 ]]; then - echo "Gnome hotkeys have been successfully restored." - fi - elif [ "$dename" == "kde" ]; then - echo "Restoring DE hotkeys..." - kwinkeys=$(ls | grep -m1 "kwinrc") - kdekeys=$(ls | grep -m1 "kglobalshortcutsrc") - cp ./"$kdekeys" ~/.config/kglobalshortcutsrc - cp ./"$kwinkeys" ~/.config/kwinrc - elif [ "$dename" == "xfce" ]; then - echo "Restoring DE hotkeys..." - xfcekeys=$(ls | grep -m1 "xfce4-keyboard") - cp ./"$xfcekeys" ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml - fi - fi -} - -function removeAppleKB { - # Undo Apple keyboard cmd & alt swap - if test -f "/sys/module/hid_apple/parameters/swap_opt_cmd" && [ `cat /sys/module/hid_apple/parameters/swap_opt_cmd` == "1" ]; then - echo '0' | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd - echo 'options hid_apple swap_opt_cmd=0' | sudo tee /etc/modprobe.d/hid_apple.conf - sudo update-initramfs -u -k all - fi - if test -f "/sys/module/applespi/parameters/swap_opt_cmd" && [ `cat /sys/module/applespi/parameters/swap_opt_cmd` == "1" ]; then - echo '0' | sudo tee /sys/module/applespi/parameters/swap_opt_cmd - echo 'options applespi swap_opt_cmd=0' | sudo tee /etc/modprobe.d/applespi.conf - sudo update-initramfs -u -k all - fi -} - -function trayApp { - if [ -f /usr/bin/budgie-desktop ];then - while true; do - read -rep $'Would you like to install the Kinto Budgie Applet? (y/n)\n(You will need log off & back on and go to Budgie Desktop Settings & add Kinto to your top panel.)\n' yn - case $yn in - [Yy]* ) yn="y"; break;; - [Nn]* ) yn="n";break;; - * ) echo "Please answer yes or no.";; - esac - done - if [ "$yn" == "y" ]; then - cd ./xkeysnail-config/trayapps/BudgieApplet/ - sudo ./install-applet.sh - cd ../../../ - echo "Please logoff and back on for the Applet to be available for the top panel." - sudo /usr/local/bin/logoff.sh $USER $DISPLAY& - fi - else - while true; do - read -rep $'Would you like to install the Kinto Gnome/XFCE System Tray? (y/n)\n' yn - case $yn in - [Yy]* ) yn="y"; break;; - [Nn]* ) yn="n";break;; - * ) echo "Please answer yes or no.";; - esac - done - if [ "$yn" == "y" ]; then - echo "Kinto Gnome/XFCE System Tray Installed." - fi - fi -} - -function budgieUninstall { - if [ -f /usr/bin/budgie-desktop ];then - read -n 1 -s -r -p "Your system may log you off immediately during the restoration of budgie-daemon. Press any key to continue..." - bdmd5="$(md5sum /usr/bin/budgie-daemon | awk '{ print $1 }')" - oldbdmd5=$(md5sum ./budgie-daemon_10.5.1.bak | awk '{ print $1 }') - if [ "$bdmd5" != "$oldbdmd5" ]; then - echo -e "\nReplacing budgie-daemon with backup..." - sudo pkill budgie-daemon && sudo cp ./budgie-daemon_10.5.1.bak /usr/bin/budgie-daemon - else - echo -e "\nBudgie-daemon is already an original." - fi - fi -} - -function budgieUpdate { - # Check for budgie and install App Switching hack - if [ -f /usr/bin/budgie-desktop ];then - while true; do - read -rep $'Would you like to update Budgie to support proper App Switching? (y/n)\n(Your system may immediately log you out after this runs.)\n' yn - case $yn in - [Yy]* ) yn="y"; break;; - [Nn]* ) yn="n";break;; - * ) echo "Please answer yes or no.";; - esac - done - if [ "$yn" == "y" ]; then - budgieVersion="$(/usr/bin/budgie-desktop --version | awk '{ print $2; }' | head -n1)" - if [ "$budgieVersion" == "10.5.1" ]; then - if ! [ -f ./system-config/budgie-daemon_10.5.1 ]; then - wget https://github.com/rbreaves/budgie-desktop/blob/binaries/binaries/budgie-daemon_10.5.1?raw=true -O ./system-config/budgie-daemon_10.5.1 - fi - bdmd5=$(md5sum /usr/bin/budgie-daemon | awk '{ print $1 }') - newbdmd5=$(md5sum ./system-config/budgie-daemon_10.5.1 | awk '{ print $1 }') - if [ "$bdmd5" != "$newbdmd5" ]; then - cp /usr/bin/budgie-daemon ./budgie-daemon_"$budgieVersion".bak - sudo pkill budgie-daemon && sudo cp ./system-config/budgie-daemon_10.5.1 /usr/bin/budgie-daemon - echo "Updated Budgie to use App Switching Patch" - else - echo "Budgie-daemon already patched, skipping replacement." - fi - else - echo "Your Budgie version was $budgieVersion and the patch is for 10.5.1." - while true; do - read -rep $'Would you like to replace it any ways? (y/n)\n(A backup will be made)\n' yn - case $yn in - [Yy]* ) yn="y"; break;; - [Nn]* ) yn="n";break;; - * ) echo "Please answer yes or no.";; - esac - done - if [ "$yn" == "y" ]; then - if ! [ -f ./system-config/budgie-daemon_10.5.1 ]; then - wget https://github.com/rbreaves/budgie-desktop/raw/43d3b44243b0bcaee3262a79818024a651475b58/binaries/budgie-daemon_10.5.1 -O ./system-config/budgie-daemon_10.5.1 - fi - cp /usr/bin/budgie-daemon ./budgie-daemon_"$budgieVersion".bak - sudo pkill budgie-daemon && sudo cp ./system-config/budgie-daemon_10.5.1 /usr/bin/budgie-daemon - echo "Updated Budgie to use App Switching Patch" - fi - fi - fi - fi -} - -if [ $# -eq 0 ]; then - echo "Install Kinto - xkeysnail (udev)" - echo " 1) Windows & Mac (HID driver) - Most Standard keyboards (& 1st party usb/bt Apple keyboards)" - echo " 2) Mac Only & VMs on Macbooks - 3rd & 1st party Apple keyboards" - echo " 3) Chromebook - Chromebook running Linux" - echo " 4) IBM M - Keyboards w/o Super/Win keys" - # echo " 5) Uninstall" - - read n - - set "$n" -fi - -# Kinto tray -installtray=false -# multi-language -rightalt=false -# VS code remap -vssublime=false - -if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "4" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" || $1 == "ibm" ]]; then - if [[ $dename == "gnome" || $dename == "budgie" || $dename == "mate" || $dename == "xfce" ]];then - installtray=true - while true; do - read -rep $'\nWould you like to install the Kinto System Tray (AppInidcator)? (Y/n)\n' yn - case $yn in - [Nn]* ) installtray=false; break;; - * ) break;; - esac - done - if [[ $dename == "gnome" ]]; then - echo "Please install KStatusNotifierItem for AppIndicators to show up." - echo "https://extensions.gnome.org/extension/615/appindicator-support/" - echo "Note: This may still fail. If so use the Kinto gui app instead." - read -p "Press enter to continue" - fi - fi - - while true; do - read -rep $'\nDo you want multi-language on Right Alt key? (y/N)\naka Left side remaps, right side doesn\'t\n' yn - case $yn in - [Yy]* ) rightalt=true; break;; - * ) break;; - esac - done - while true; do - read -rep $'\nWould you like to give VS Code Sublime Text keymaps? (y/N)\n' yn - case $yn in - [Yy]* ) vssublime=true; break;; - * ) break;; - esac - done - # branch=$(git rev-parse --abbrev-ref HEAD) - # if [ "$branch" == "dev" ] || [ "$branch" == "alpha" ];then - # while true; do - # read -rep $'\nExperimental Support for Firefox/Chrome Back/Forward hotkeys (Cmd+Left/Right)?\n(Keys could get stuck, switch windows or press ctrl &/or super to release) (y/n)\n' yn - # case $yn in - # [Yy]* ) exp='/sbin/runuser -l {username} -c "export DISPLAY={displayid};{homedir}/.config/kinto/caret_status_xkey.sh\&";'; expsh='"{homedir}/.config/kinto/caret_status_xkey.sh"'; break;; - # [Nn]* ) exp=" "; expsh=" " break;; - # # * ) echo "Please answer yes or no.";; - # esac - # done - # else - # echo -e "\nSupport for Firefox/Chrome Back/Forward hotkeys (Cmd+Left/Right) disabled on $branch w/ xkeysnail \n" - exp=" " - expsh=" " - # fi - sudo systemctl enable xkeysnail >/dev/null 2>&1 - # if ! [ -x "$(command -v inotifywait)" ]; then - # echo "Will need to install inotify-tools to restart key remapper live for config file changes..." - # sudo ./system-config/unipkg.sh inotify-tools - # fi - if ! [ -x "$(command -v pip3)" ]; then - echo "Will need to install python3-pip..." - sudo ./system-config/unipkg.sh python3-pip - fi - if ! [ -x "$(command -v python3-config)" ]; then - if [ "$distro" == "ubuntu" ] || [ "$distro" == "debian" ] || [ "$distro" == '"linux mint"' ]; then - pydev="python3-dev" - elif [ "$distro" == "fedora" ]; then - pydev="python3-devel" - fi - if [ "$distro" == "gnome" ] || [ "$distro" == "fedora" ] || [ "$distro" == "debian" ] || [ "$distro" == '"linux mint"' ]; then - echo "Will need to install $pydev..." - sudo ./system-config/unipkg.sh "$pydev" - fi - fi - if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then - if [ "$distro" == "\"manjaro linux\"" ]; then - sudo ./system-config/unipkg.sh "xorg-xhost gcc" - fi - fi - if [ "$distro" == '"linux mint"' ]; then - pip3 install setuptools - fi - - # echo "Transferring files..." - mkdir -p ~/.config/kinto - - # KDE xhost fix - # mkdir -p ~/.kde/Autostart - # echo -e '#!/bin/sh\rxhost +SI:localuser:root' > ~/.kde/Autostart/kintohost.sh - # chmod +x ~/.kde/Autostart/kintohost.sh - - # KDE startup - xhost fix - mkdir -p ~/.config/autostart - yes | cp -rf ./xkeysnail-config/xkeysnail.desktop ~/.config/autostart/xkeysnail.desktop - - # yes | cp -rf ./xkeysnail-config/xkeystart.sh ~/.config/kinto/xkeystart.sh - - # *** More testing needing, universal way of killing kinto on user log out? *** - # yes | sudo cp -rf xkeysnail-config/root_logoff.sh /usr/local/bin/logoff.sh - # sudo chown root:root /usr/local/bin/logoff.sh - # sudo chmod u+rwx /usr/local/bin/logoff.sh - # sudo chmod go-w+rx /usr/local/bin/logoff.sh - # *** End universal killing of kinto - if $installtray ; then - yes | sudo cp -rf xkeysnail-config/gnome_logoff.sh ~/.config/kinto/logoff.sh - fi - - yes | cp -rf ./xkeysnail-config/kinto.py ./xkeysnail-config/kinto.py.new - yes | cp -rf ./xkeysnail-config/limitedadmins ./xkeysnail-config/limitedadmins.new - yes | cp -rf ./xkeysnail-config/killdups.sh ~/.config/kinto/killdups.sh - yes | cp -rf ./xkeysnail-config/appleKB.sh ~/.config/kinto/appleKB.sh - yes | cp -rf ./xkeysnail-config/trayapps/appindicator/kintotray.py ~/.config/kinto/kintotray.py - yes | cp -rf ./xkeysnail-config/trayapps/appindicator/kintotray.desktop ~/.config/kinto/kintotray.desktop - yes | cp -rf ./xkeysnail-config/trayapps/BudgieApplet/icons/kinto-color-16.svg ~/.config/kinto/kinto-color.svg - yes | cp -rf ./xkeysnail-config/trayapps/BudgieApplet/icons/kinto-invert-16.svg ~/.config/kinto/kinto-invert.svg - yes | cp -rf ./xkeysnail-config/trayapps/BudgieApplet/icons/kinto-solid-16.svg ~/.config/kinto/kinto-solid.svg - # yes | cp -rf ./system-config/caret_status_xkey.sh ~/.config/kinto/caret_status_xkey.sh - yes | cp -rf ./xkeysnail-config/xkeysnail.service ./xkeysnail-config/xkeysnail.service.new - # yes | cp -rf ./xkeysnail-config/xkeysnail.timer ~/.config/systemd/user/xkeysnail.timer - sed -i "s#{experimental-caret}#$exp#g" ./xkeysnail-config/xkeysnail.service.new - if [ "$expsh" != " " ];then - sed -i "s#{kill-caret}#/usr/bin/pkill -f $expsh#g" ./xkeysnail-config/xkeysnail.service.new - else - sed -i "s#{kill-caret}#$expsh#g" ./xkeysnail-config/xkeysnail.service.new - fi - sed -i "s/{username}/`whoami`/g" ./xkeysnail-config/xkeysnail.service.new - sed -i "s#{homedir}#`echo "$HOME"`#g" ./xkeysnail-config/xkeysnail.service.new - sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/kintotray.desktop - sed -i "s#{xhost}#`\\which xhost`#g" ./xkeysnail-config/xkeysnail.service.new - sed -i "s/{username}/`whoami`/g" ./xkeysnail-config/limitedadmins.new - sed -i "s#{systemctl}#`\\which systemctl`#g" ./xkeysnail-config/limitedadmins.new - sed -i "s#{pkill}#`\\which pkill`#g" ./xkeysnail-config/limitedadmins.new - sed -i "s#{xkeysnail}#/usr/local/bin/xkeysnail#g" ./xkeysnail-config/limitedadmins.new - sudo chown root:root ./xkeysnail-config/limitedadmins.new - sudo mv ./xkeysnail-config/limitedadmins.new /etc/sudoers.d/limitedadmins - sed -i "s#{systemctl}#`\\which systemctl`#g" ~/.config/autostart/xkeysnail.desktop - yes | cp -rf ~/.config/kinto/kintotray.desktop ~/.config/autostart/kintotray.desktop - if $installtray ; then - sed -i "s#-c \"grep#-c \"python3 {homedir}/.config/kinto/kintotray.py;grep#g" ~/.config/autostart/xkeysnail.desktop - sed -i "s#xkeysnail\"#xkeysnail;{homedir}/.config/kinto/logoff.sh\"#g" ~/.config/autostart/xkeysnail.desktop - fi - sed -i "s#{xhost}#`\\which xhost`#g" ~/.config/autostart/xkeysnail.desktop - sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/autostart/xkeysnail.desktop - # sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/prexk.sh - sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ./xkeysnail-config/xkeysnail.service.new - # sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/kinto/prexk.sh - - if $vssublime ; then - perl -pi -e "s/(# )(.*)(- Sublime)/\$2\$3/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1 - fi -fi - -if [[ $dename == "gnome" || dename == "budgie" ]]; then - perl -pi -e "s/(# )(.*)(# gnome)/\$2\$3/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1 -fi -if [[ $dename == "kde" ]]; then - echo "Applying Cmd-Space to open App Launcher for KDE..." - perl -pi -e "s/(# )(.*)(#.*kde)/\$2\$3/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1 -fi - -if [[ $1 == "1" || $1 == "winmac" ]]; then - if ls /sys/module | grep hid_apple >/dev/null 2>&1 ; then - echo '1' | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd;echo 'options hid_apple swap_opt_cmd=1' | sudo tee /etc/modprobe.d/hid_apple.conf;sudo update-initramfs -u -k all - fi - if ls /sys/module | grep applespi >/dev/null 2>&1 ; then - echo '1' | sudo tee /sys/module/applespi/parameters/swap_opt_cmd;echo 'options applespi swap_opt_cmd=1' | sudo tee /etc/modprobe.d/applespi.conf;sudo update-initramfs -u -k all - fi - if ! ls /sys/module | grep apple ; then - removeAppleKB - fi - perl -pi -e "s/(# )(.*)(# WinMac)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - if [[ $dename == "xfce" ]]; then - perl -pi -e "s/(# )(.*)(# xfce4)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s/(\w.*)(# Default not-xfce4)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new - fi -elif [[ $1 == "2" || $1 == "mac" ]]; then - removeAppleKB - perl -pi -e "s/(# )(.*)(# Mac)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - if [[ $dename == "xfce" ]]; then - perl -pi -e "s/(# )(.*)(# xfce4)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s/(\w.*)(# Default not-xfce4)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new - fi -elif [[ $1 == "3" || $1 == "chromebook" ]]; then - perl -pi -e "s/(# )(.*)(# Chromebook)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s/(# )(.*)(# xfce4)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s/(\w.*)(# Default)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new -elif [[ $1 == "4" || $1 == "ibm" ]]; then - perl -pi -e "s/(# )(.*)(# IBM)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s=(# )(.*)(# Chromebook/IBM)=\$2\$3=g" ./xkeysnail-config/kinto.py.new - # perl -pi -e "s/(# )(.*)(# xfce4)/\$2\$3/g" ./xkeysnail-config/kinto.py.new - perl -pi -e "s/(\w.*)(# Default)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new -fi -if [[ $dename == "xfce" ]] && ls /etc/apt/sources.list.d/enso* 1> /dev/null 2>&1; then - echo "enso OS detected, applying Cmd-Space for Launchy..." - perl -pi -e "s/(K\(\"RC-Space)(.*)(# )(xfce4)/\$3\$1\$2\$3\$4/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1 - xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/space" --create --type string --set "launchy" -fi - -if $rightalt ; then - perl -pi -e "s/(\w.*)(Multi-language)/# \$1\$2/g" ./xkeysnail-config/kinto.py.new >/dev/null 2>&1 -fi - -if [[ $1 == "1" || $1 == "2" || $1 == "3" || $1 == "winmac" || $1 == "mac" || $1 == "chromebook" ]]; then - mv ./xkeysnail-config/kinto.py.new ~/.config/kinto/kinto.py - git describe --tags | perl -ne "print \"\$1 build `git rev-parse --short HEAD`\n\" for m/\b(.*)-\w+-\w{8}/" > ~/.config/kinto/version - # if [ "$distro" == "fedora" ];then - sudo rm /etc/systemd/system/xkeysnail.service - if [ -d /usr/lib/systemd/system ];then - xkeypath="/usr/lib/systemd/system/" - elif [ -d /lib/systemd/system ];then - xkeypath="/lib/systemd/system/" - fi - sudo mv ./xkeysnail-config/xkeysnail.service.new "$xkeypath"xkeysnail.service && echo "Service file added to "$xkeypath"xkeysnail.service" - sudo chown -R root:root "$xkeypath"xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..." - sudo chmod 644 "$xkeypath"xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..." - sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Created soft symlink..." || echo "Failed to create soft symlink..." - sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Created soft symlink for graphical target..." || echo "Failed to create soft symlink for graphical target..." - xhost +SI:localuser:root - git clone --depth 10 https://github.com/rbreaves/xkeysnail.git || git pull --depth 10 - cd xkeysnail - git checkout 51c369084e0045a8410d227bab52411bf84fb65b - giturl=$(git ls-remote --get-url) - if [ "$giturl" != "https://github.com/rbreaves/xkeysnail.git" ];then - echo -e "\nreplacing xkeysnail with fork...\n" - cd .. - rm -rf ./xkeysnail - git clone --depth 10 https://github.com/rbreaves/xkeysnail.git - cd xkeysnail - git checkout 51c369084e0045a8410d227bab52411bf84fb65b - fi - sudo pip3 install --upgrade . - cd .. - sudo systemctl daemon-reload - sudo systemctl disable xkeysnail - # sudo systemctl --state=not-found --all | grep xkeysnail - # if [ "$distro" == "fedora" ];then - # systemctl enable xkeysnail.service - # else - # sudo systemctl enable xkeysnail.service - # fi - sudo systemctl restart xkeysnail - sudo pkill -f kintotray >/dev/null 2>&1 - nohup python3 ~/.config/kinto/kintotray.py& >/dev/null 2>&1 - - echo -e "Adding xhost fix...\n" - - LINE='xhost +SI:localuser:root' - - if [ ! -e "~/.xprofile" ]; then - # Ubuntu xhost fix - echo "$LINE" > ~/.xprofile - # echo "$LINE" > ~/.xinitrc - fi - # Ubuntu xhost fix - grep -qF -- "$LINE" ~/.xprofile || echo "$LINE" >> ~/.xprofile - # KDE xhost fix - # grep -qF -- "$LINE" ~/.bashrc || echo "$LINE" >> ~/.bashrc - # grep -qF -- "$LINE" ~/.xinitrc || echo "$LINE" >> ~/.xinitrc - - # remove kintox11 login startup - if test -f "~/.config/autostart/kinto.desktop"; then - rm ~/.config/autostart/kinto.desktop - fi - - echo -e "Kinto install is \e[1m\e[32mcomplete\e[0m.\n" - if `sudo systemctl is-active --quiet xkeysnail`;then - echo -e "Kinto \e[1m\e[32mxkeysnail service is running\e[0m.\n" - echo "Commands for controlling Kinto's xkeysnail service" - echo "sudo systemctl restart xkeysnail" - echo "sudo systemctl stop xkeysnail" - echo "sudo systemctl start xkeysnail" - echo "sudo systemctl status xkeysnail" - else - echo -e "Kinto \e[1m\e[91mxkeysnail service has failed.\e[0m" - echo "You can run 'sudo systemctl status xkeysnail' for more info" - echo "You can also run 'sudo journalctl -u xkeysnail'" - fi - echo "" - if $vssublime ; then - echo -e "\e[1m\e[32mEnabled\e[0m VS Code Sublime Text remap." - fi - if $rightalt ; then - echo -e "\e[1m\e[32mEnabled\e[0m mutli-language support." - fi - - # trayApp - -elif [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then - echo "Uninstalling Kinto - xkeysnail (udev)" - uninstall - removeAppleKB - pkill -f kintotray >/dev/null 2>&1 - sudo systemctl stop xkeysnail >/dev/null 2>&1 - sudo systemctl disable xkeysnail >/dev/null 2>&1 - sudo rm /etc/sudoers.d/limitedadmins - rm ~/.config/autostart/xkeysnail.desktop - rm -rf ~/.config/kinto - sudo rm /etc/systemd/system/xkeysnail.service >/dev/null 2>&1 - sudo rm /etc/systemd/system/graphical.target.wants/xkeysnail.service >/dev/null 2>&1 - sudo rm /usr/lib/systemd/system/xkeysnail.service >/dev/null 2>&1 - if [ -f /usr/local/bin/logoff.sh ];then - sudo rm /usr/local/bin/logoff.sh - fi - sudo systemctl daemon-reload - sudo systemctl --state=not-found --all | grep xkeysnail - budgieUninstall - exit 0 -elif [[ $1 == "budgieUpdate" ]]; then - budgieUpdate -else - echo "Expected argument was not provided" -fi diff --git a/references/app-configs/sublime-text3/linux.sublime-keybinds.chromebook b/references/app-configs/sublime-text3/linux.sublime-keybinds.chromebook deleted file mode 100644 index e4d0be2..0000000 --- a/references/app-configs/sublime-text3/linux.sublime-keybinds.chromebook +++ /dev/null @@ -1,705 +0,0 @@ -[ -/* -Custom macOS keymap for Kinto keymap -*/ - { "keys": ["ctrl+shift+n"], "command": "new_window" }, - { "keys": ["ctrl+shift+w"], "command": "close_window" }, - { "keys": ["ctrl+o"], "command": "prompt_open" }, - { "keys": ["ctrl+shift+t"], "command": "reopen_last_file" }, - { "keys": ["ctrl+super+up"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "hh", "h", "ipp", "inl", "m", "mm"]} }, - { "keys": ["ctrl+n"], "command": "new_file" }, - { "keys": ["ctrl+s"], "command": "save" }, - { "keys": ["ctrl+shift+s"], "command": "prompt_save_as" }, - { "keys": ["ctrl+super+s"], "command": "save_all" }, - { "keys": ["ctrl+w"], "command": "close" }, - - { "keys": ["ctrl+k", "ctrl+b"], "command": "toggle_side_bar" }, - { "keys": ["ctrl+alt+f"], "command": "toggle_full_screen" }, - { "keys": ["ctrl+alt+shift+f"], "command": "toggle_distraction_free" }, - - { "keys": ["ctrl+z"], "command": "undo" }, - { "keys": ["ctrl+shift+z"], "command": "redo" }, - { "keys": ["ctrl+y"], "command": "redo_or_repeat" }, - { "keys": ["ctrl+u"], "command": "soft_undo" }, - { "keys": ["ctrl+shift+u"], "command": "soft_redo" }, - - { "keys": ["ctrl+x"], "command": "cut" }, - { "keys": ["ctrl+c"], "command": "copy" }, - { "keys": ["ctrl+v"], "command": "paste" }, - { "keys": ["ctrl+shift+v"], "command": "paste_and_indent" }, - { "keys": ["ctrl+k", "ctrl+v"], "command": "paste_from_history" }, - { "keys": ["ctrl+option+v"], "command": "paste_from_history" }, - - { "keys": ["alt+super+left"], "command": "move", "args": {"by": "subwords", "forward": false} }, - { "keys": ["alt+super+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} }, - { "keys": ["alt+super+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} }, - { "keys": ["alt+super+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} }, - - { "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} }, - { "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} }, - { "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} }, - { "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} }, - - { "keys": ["alt+super+up"], "command": "scroll_lines", "args": {"amount": 1.0} }, - { "keys": ["alt+super+down"], "command": "scroll_lines", "args": {"amount": -1.0} }, - - { "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} }, - { "keys": ["alt+shift+down"], "command": "select_lines", "args": {"forward": true} }, - - { "keys": ["ctrl+shift+["], "command": "prev_view" }, - { "keys": ["ctrl+shift+]"], "command": "next_view" }, - { "keys": ["ctrl+super+left"], "command": "prev_view" }, - { "keys": ["ctrl+super+right"], "command": "next_view" }, - - { "keys": ["alt+tab"], "command": "next_view_in_stack" }, - { "keys": ["alt+shift+tab"], "command": "prev_view_in_stack" }, - - { "keys": ["ctrl+a"], "command": "select_all" }, - { "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" }, - { "keys": ["escape"], "command": "single_selection", "context": - [ - { "key": "num_selections", "operator": "not_equal", "operand": 1 } - ] - }, - { "keys": ["escape"], "command": "clear_fields", "context": - [ - { "key": "has_next_field", "operator": "equal", "operand": true } - ] - }, - { "keys": ["escape"], "command": "clear_fields", "context": - [ - { "key": "has_prev_field", "operator": "equal", "operand": true } - ] - }, - { "keys": ["escape"], "command": "hide_panel", "args": {"cancel": true}, - "context": - [ - { "key": "panel_visible", "operator": "equal", "operand": true } - ] - }, - { "keys": ["escape"], "command": "hide_overlay", "context": - [ - { "key": "overlay_visible", "operator": "equal", "operand": true } - ] - }, - { "keys": ["escape"], "command": "hide_popup", "context": - [ - { "key": "popup_visible", "operator": "equal", "operand": true } - ] - }, - { "keys": ["escape"], "command": "hide_auto_complete", "context": - [ - { "key": "auto_complete_visible", "operator": "equal", "operand": true } - ] - }, - - { "keys": ["ctrl+]"], "command": "indent" }, - { "keys": ["ctrl+["], "command": "unindent" }, - - { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} }, - { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false}, - "context": - [ - { "key": "setting.tab_completion", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true }, - ] - }, - { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context": - [ - { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" }, - { "key": "setting.tab_completion", "operator": "equal", "operand": true } - ] - }, - { "keys": ["tab"], "command": "reindent", "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true }, - { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true } - ] - }, - { "keys": ["tab"], "command": "indent", "context": - [ - { "key": "text", "operator": "regex_contains", "operand": "\n" } - ] - }, - { "keys": ["tab"], "command": "next_field", "context": - [ - { "key": "has_next_field", "operator": "equal", "operand": true } - ] - }, - { "keys": ["tab"], "command": "commit_completion", "context": - [ - { "key": "auto_complete_visible" }, - { "key": "setting.auto_complete_commit_on_tab" } - ] - }, - - { "keys": ["shift+tab"], "command": "insert", "args": {"characters": "\t"} }, - { "keys": ["shift+tab"], "command": "unindent", "context": - [ - { "key": "setting.shift_tab_unindent", "operator": "equal", "operand": true } - ] - }, - { "keys": ["shift+tab"], "command": "unindent", "context": - [ - { "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" } - ] - }, - { "keys": ["shift+tab"], "command": "unindent", "context": - [ - { "key": "text", "operator": "regex_contains", "operand": "\n" } - ] - }, - { "keys": ["shift+tab"], "command": "prev_field", "context": - [ - { "key": "has_prev_field", "operator": "equal", "operand": true } - ] - }, - - { "keys": ["ctrl+l"], "command": "expand_selection", "args": {"to": "line"} }, - { "keys": ["ctrl+d"], "command": "find_under_expand" }, - { "keys": ["ctrl+k", "ctrl+d"], "command": "find_under_expand_skip" }, - { "keys": ["ctrl+shift+space"], "command": "expand_selection", "args": {"to": "scope"} }, - { "keys": ["alt+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} }, - { "keys": ["alt+m"], "command": "move_to", "args": {"to": "brackets"} }, - { "keys": ["ctrl+shift+j"], "command": "expand_selection", "args": {"to": "indentation"} }, - { "keys": ["ctrl+shift+a"], "command": "expand_selection", "args": {"to": "tag"} }, - - { "keys": ["ctrl+super+."], "command": "close_tag" }, - - { "keys": ["alt+q"], "command": "toggle_record_macro" }, - { "keys": ["alt+shift+q"], "command": "run_macro" }, - - { "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line.sublime-macro"} }, - { "keys": ["ctrl+shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line Before.sublime-macro"} }, - { "keys": ["enter"], "command": "commit_completion", "context": - [ - { "key": "auto_complete_visible" }, - { "key": "setting.auto_complete_commit_on_tab", "operand": false } - ] - }, - - { "keys": ["ctrl+t"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} }, - { "keys": ["ctrl+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} }, - { "keys": ["ctrl+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} }, - { "keys": ["ctrl+alt+p"], "command": "prompt_select_workspace" }, - { "keys": ["ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} }, - { "keys": ["alt+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} }, - { "keys": ["f12"], "command": "goto_definition" }, - { "keys": ["ctrl+super+down"], "command": "goto_definition" }, - { "keys": ["ctrl+shift+r"], "command": "goto_symbol_in_project" }, - { "keys": ["alt+minus"], "command": "jump_back" }, - { "keys": ["alt+shift+minus"], "command": "jump_forward" }, - - { "keys": ["ctrl+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse": false} }, - { "keys": ["ctrl+shift+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse": true} }, - { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "find", "reverse": false} }, - { "keys": ["ctrl+super+f"], "command": "show_panel", "args": {"panel": "replace", "reverse": false} }, - { "keys": ["ctrl+super+e"], "command": "replace_next" }, - { "keys": ["ctrl+g"], "command": "find_next" }, - { "keys": ["ctrl+shift+g"], "command": "find_prev" }, - { "keys": ["ctrl+e"], "command": "slurp_find_string" }, - { "keys": ["ctrl+shift+e"], "command": "slurp_replace_string" }, - - { "keys": ["super+ctrl+g"], "command": "find_under" }, - { "keys": ["shift+super+ctrl+g"], "command": "find_under_prev" }, - { "keys": ["alt+ctrl+g"], "command": "find_all_under" }, - - { "keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} }, - { "keys": ["f4"], "command": "next_result" }, - { "keys": ["shift+f4"], "command": "prev_result" }, - - { "keys": ["f6"], "command": "toggle_setting", "args": {"setting": "spell_check"} }, - { "keys": ["alt+f6"], "command": "next_misspelling" }, - { "keys": ["alt+shift+f6"], "command": "prev_misspelling" }, - - { "keys": ["alt+ctrl+up"], "command": "swap_line_up" }, - { "keys": ["alt+ctrl+down"], "command": "swap_line_down" }, - - { "keys": ["alt+backspace"], "command": "delete_word", "args": { "forward": false, "sub_words": true } }, - { "keys": ["alt+delete"], "command": "delete_word", "args": { "forward": true, "sub_words": true } }, - - { "keys": ["ctrl+forward_slash"], "command": "toggle_comment", "args": { "block": false } }, - { "keys": ["ctrl+super+forward_slash"], "command": "toggle_comment", "args": { "block": true } }, - - { "keys": ["ctrl+j"], "command": "join_lines" }, - { "keys": ["ctrl+shift+d"], "command": "duplicate_line" }, - - { "keys": ["alt+backquote"], "command": "show_panel", "args": {"panel": "console", "toggle": true} }, - - { "keys": ["alt+space"], "command": "auto_complete" }, - { "keys": ["alt+space"], "command": "replace_completion_with_auto_complete", "context": - [ - { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" }, - { "key": "auto_complete_visible", "operator": "equal", "operand": false }, - { "key": "setting.tab_completion", "operator": "equal", "operand": true } - ] - }, - - { "keys": ["ctrl+super+p"], "command": "show_scope_name" }, - { "keys": ["alt+shift+p"], "command": "show_scope_name" }, - - { "keys": ["f7"], "command": "build" }, - { "keys": ["ctrl+b"], "command": "build" }, - { "keys": ["ctrl+shift+b"], "command": "build", "args": {"select": true} }, - - { "keys": ["alt+c"], "command": "cancel_build" }, - - { "keys": ["alt+t"], "command": "transpose" }, - - { "keys": ["f5"], "command": "sort_lines", "args": {"case_sensitive": false} }, - { "keys": ["alt+f5"], "command": "sort_lines", "args": {"case_sensitive": true} }, - - // Auto-pair quotes - { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair single quotes - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair brackets - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - - // Auto-pair square brackets - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - - // Auto-pair curly brackets - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true } - ] - }, - { "keys": ["{"], "command": "wrap_block", "args": {"begin": "{", "end": "}"}, "context": - [ - { "key": "indented_block", "match_all": true }, - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }, - ] - }, - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "auto_indent_tag", "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair single quotes - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair brackets - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - - // Auto-pair square brackets - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - - // Auto-pair curly brackets - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true } - ] - }, - { "keys": ["{"], "command": "wrap_block", "args": {"begin": "{", "end": "}"}, "context": - [ - { "key": "indented_block", "match_all": true }, - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }, - ] - }, - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "auto_indent_tag", "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair single quotes - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair brackets - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - - // Auto-pair square brackets - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - - // Auto-pair curly brackets - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true } - ] - }, - { "keys": ["{"], "command": "wrap_block", "args": {"begin": "{", "end": "}"}, "context": - [ - { "key": "indented_block", "match_all": true }, - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }, - ] - }, - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "auto_indent_tag", "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair single quotes - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true }, - { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true } - ] - }, - { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true }, - { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true }, - { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }, - ] - }, - - // Auto-pair brackets - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true } - ] - }, - - // Auto-pair square brackets - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true } - ] - }, - { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true } - ] - }, - - // Auto-pair curly brackets - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true } - ] - }, - { "keys": ["{"], "command": "wrap_block", "args": {"begin": "{", "end": "}"}, "context": - [ - { "key": "indented_block", "match_all": true }, - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }, - ] - }, - { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true } - ] - }, - { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context": - [ - { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true } - ] - }, - - { "keys": ["enter"], "command": "auto_indent_tag", "context": - [ - { "key": "setting.auto_indent", "operator": "equal", "operand": true }, - { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^$", "match_all": true }, - { "key": "following_text", "operator": "regex_contains", "operand": "^" - else: - if window_class: - win_class = window_class.value.split('\x00')[1] - if isinstance(win_class, bytes): - # Apparently COMPOUND_TEXT is so arcane that this is how - # tools like xprop deal with receiving it these days - win_class = win_class.split('\x00')[1].decode('latin1', 'replace') - return win_class - else: - title = "" - - return "{} (XID: {})".format(title, win_obj.id) - -def get_window_class(win_id): - """Look up the window name for a given X11 window ID""" - if not win_id: - last_seen['title'] = "" - return last_seen['title'] - - title_changed = False - with window_obj(win_id) as wobj: - if wobj: - win_title = _get_window_class_inner(wobj) - title_changed = (win_title != last_seen['title']) - last_seen['title'] = win_title - - return last_seen['title'], title_changed - -def handle_xevent(event): - # Loop through, ignoring events until we're notified of focus/title change - if event.type != Xlib.X.PropertyNotify: - return - - changed = False - if event.atom == NET_ACTIVE_WINDOW: - if get_active_window()[1]: - changed = changed or get_window_class(last_seen['xid'])[1] - elif event.atom in (NET_WM_CLASS, WM_CLASS): - changed = changed or get_window_class(last_seen['xid'])[1] - - if changed: - handle_change(last_seen) - -def handle_change(new_state): - """Replace this with whatever you want to actually do""" - print(new_state['title']) - -if __name__ == '__main__': - # Listen for _NET_ACTIVE_WINDOW changes - root.change_attributes(event_mask=Xlib.X.PropertyChangeMask) - - # Prime last_seen with whatever window was active when we started this - get_window_class(get_active_window()[0]) - handle_change(last_seen) - - while True: # next_event() sleeps until we get an event - handle_xevent(disp.next_event()) \ No newline at end of file diff --git a/references/old-files/chromebook.sh b/references/old-files/chromebook.sh deleted file mode 100755 index 8b2d666..0000000 --- a/references/old-files/chromebook.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -mkdir -p ~/.xkb/{keymap,symbols,types} -cp ./.xkb/symbols/chromebook ~/.xkb/symbols/chromebook -cp ./.xkb/symbols/mac_gui ~/.xkb/symbols/mac_gui -cp ./.xkb/types/mac_gui ~/.xkb/types/mac_gui -setxkbmap -option -setxkbmap -print > ~/.xkb/keymap/kbd.chromebook.gui -setxkbmap -print > ~/.xkb/keymap/kbd.chromebook.term -line=$(cat ~/.xkb/keymap/kbd.chromebook.gui | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+chromebook(swap_lalt_lctrl)+mac_gui(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.chromebook.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.chromebook.gui | grep -n 'xkb_types' | cut -f1 -d:) -sed -ie "${line}s/\"/+mac_gui(addmac_levels)\"/2" ~/.xkb/keymap/kbd.chromebook.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.chromebook.term | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+altwin(swap_alt_win)+mac_term(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.chromebook.term diff --git a/references/old-files/install.py b/references/old-files/install.py deleted file mode 100755 index 3252d54..0000000 --- a/references/old-files/install.py +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/env python3 -import os, platform, sysconfig, sys, subprocess, time - -yellow = "\033[1;33m" -green = "\033[0;32m" -red = "\033[1;31m" -italic = "\033[3m" -reset = "\033[0;0m" - -platform_name = platform.system() -# print sysconfig.get_platform() - -sys.stdout.write(yellow) -cloud = '\u2601' -circleo = '\u25CE' -clocko = '\u2B6E' -syme = '\u0250' -syma = '\u0251' -# bang = '\u1F589'.decode('unicode-escape') - -internalid = 0 -usbid = 0 - -def keyboard_detect(): - global internalid, usbid, chromeswap, system_type - internal_kbname = "" - usb_kbname = "" - - # If chromebook - if system_type == "2": - print() - print("Looking for keyboards...") - print() - result = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | grep -o -P "(?<=↳).*(?=id\=)";exit 0', shell=True).decode('utf-8') - if result != "": - internal_kbname = result.strip() - internalid = subprocess.check_output('xinput list | grep -iv "Virtual\|USB" | grep -i "keyboard.*keyboard" | cut -d "=" -f 2- | awk \'{print $1}\' | tail -1;exit 0', shell=True).decode('utf-8') - print("Internal Keyboard\nName: " + internal_kbname + "\nID: " + internalid) - - result = subprocess.check_output('udevadm info -e | grep -o -P "(?<=by-id/usb-).*(?=-event-kbd)" | head -1;exit 0', shell=True).decode('utf-8') - if result != "": - usb_kbname = result.strip() - - # Loop the following to ensure the id is picked up after 5-10 tries - usbid = "" - usbcount=0 - while usbid == "": - usbid = subprocess.check_output('udevadm info -e | stdbuf -oL grep -o -P "(?<=event-kbd /dev/input/by-path/pci-0000:00:).*(?=.0-usb) | head -n 1";exit 0', shell=True).decode('utf-8') - if usbid == "": - usbcount += 1 - # print('usbid not found '+ str(usbcount)) - if usbcount == 5: - usbid = "0" - time.sleep(1) - print("\nUSB Keyboard\n" + "Name: " + usb_kbname + "\nID: " + usbid) - - if system_type == "1": - system_type = "windows" - elif system_type == "2": - system_type = "chromebook" - elif system_type == "3": - result = subprocess.check_output('lsmod | grep hid_apple 1>/dev/null; echo $?', shell=True).decode('utf-8') - if result.strip() == "0": - system_type = "mac" - else: - system_type = "mac_only" - print("Apple hid_apple driver is not loaded, a keymap that is specific for only Apple keyboards will be used.") - - if system_type == "windows" or system_type == "mac": - subprocess.check_output('/bin/bash -c ./mac_wordwise.sh', shell=True).decode('utf-8') - cmdgui = '"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY"' - elif system_type == "mac_only": - subprocess.check_output('/bin/bash -c ./mac_only.sh', shell=True).decode('utf-8') - cmdgui = '"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY"' - elif system_type == "chromebook": - subprocess.check_output('/bin/bash -c ./chromebook.sh', shell=True).decode('utf-8') - cmdgui = '"setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY"' - - # password = getpass("Please enter your password to complete the keyswap: ") - # proc = Popen("echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd".split(), stdin=PIPE, stdout=PIPE, stderr=PIPE) - # proc.communicate(password.encode()) - - if swap_behavior == 1: - print("Setting up " + system_type + " keyswap as a service.") - print("You can disable and remove the service by using the following command in the Kinto directory.") - print("./uninstall.sh") - - keyswapcmd = '/bin/bash -c "./keyswap_service.sh 1 0 ' + system_type + ' ' + str(internalid).strip() + ' ' + str(usbid).strip() + ' ' + str(chromeswap) + '"' - # print(keyswapcmd) - subprocess.check_output(keyswapcmd, shell=True).decode('utf-8') - else: - print("Setting up " + system_type + " keyswap inside your profiles ~/.Xsession file.") - print("You can modify or remove the file if you want you want to remove the modification.") - keyswapcmd = '/bin/bash -c \'./keyswap_service.sh 0 ' + cmdgui + '\'' - subprocess.check_output(keyswapcmd, shell=True).decode('utf-8') - - if system_type == "mac": - print() - print("An Apple keyboard with the hid_apple driver was detected.") - print("Please run the following commands to swap alt/option and Command.") - print("Your Kinto keymapping will not work right on Apple keyboards without it.") - print() - print("echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd") - print('echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf') - print('sudo update-initramfs -u -k all') - - - -def os_detect(): - print() - print("Checking for OS and system information...") - print() - print("OS Type") - # print(" Platform: " + platform_name) - if platform_name == 'Linux': - result = subprocess.check_output("lsb_release -a | grep -v LSB ", shell=True).decode('ascii') - print(result) - -def hwinfo(): - print("Requires user password to display hardware information...") - result = subprocess.check_output('sudo dmidecode | grep -A 9 "System Information" | grep -v "UUID\|Serial\|SKU\|Wake"', shell=True).decode('ascii') - print(result) - -def kblist(): - result = subprocess.check_output('xinput list', shell=True).decode('ascii') - print(result) - -print() -print() -print(" Kint" + circleo) -sys.stdout.write(reset) -print(italic + " - F!x the d" + syma + "mn k" + syme + "yb" + circleo + syma + "rd. - ") -sys.stdout.write(reset) -print() -input("Press Enter to begin...") - -system_type = input("\nWhat type of keyboard are you using? (If Mac and Windows then select Mac)\n\ - 1) Windows\n\ - 2) Chromebook\n\ - 3) Mac\n") - -swap_behavior = 1 -chromeswap = 0 -# Chromebook -if system_type == "2": - if not input("\nWould you like to swap Alt to Super/Win and Search key to Ctrl when using terminal applications? (y/n)\n\ -Note: For a more mac like experience & less issues with terminal based interactions y is recommended.\n").lower().strip()[:1] == "y": - swap_behavior = 0 -# Windows -if system_type == "1": - if not input("\nWould you like to swap Alt to Super/Win and Ctrl key back to Ctrl when using terminal applications? (y/n)\n\ -Note: For a more mac like experience & less issues with terminal based interactions y is recommended.\n").lower().strip()[:1] == "y": - swap_behavior = 0 -# Mac -if system_type == "3": - if not input("\nWould you like to swap Command back to Super/Win and Ctrl key back to Ctrl when using terminal applications? (y/n)\n\ -Note: For a more mac like experience & less issues with terminal based interactions y is recommended.\n").lower().strip()[:1] == "y": - swap_behavior = 0 - -if int(system_type) == 2 and swap_behavior == 1: - chromeswap = input("\nIf the keyswap is applied on a chromebook with both an internal and external Apple keyboard\n\ -you may need to press a key on the external Apple keyboard any time you switch between the terminal and gui based apps.\n\ -Are you ok with that, or would you like to only apply the keyswap on one keyboard type?\n\ - 1) Built-in\n\ - 2) Both - (Chromebook & Windows)\n\ - 3) Both - (Chromebook & Mac)\n\ - 4) USB External - (Mac)\n") - - if chromeswap == "1": - chromeswap = "none" - elif chromeswap == "2": - chromeswap = "both_win" - elif chromeswap == "3" or chromeswap == "4": - chromeswap = "both_mac" - -keyboard_detect() diff --git a/references/old-files/mac_only.sh b/references/old-files/mac_only.sh deleted file mode 100755 index 0ebd002..0000000 --- a/references/old-files/mac_only.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -mkdir -p ~/.xkb/{keymap,symbols,types} -cp ./.xkb/symbols/mac_gui ~/.xkb/symbols/mac_gui -cp ./.xkb/types/mac_gui ~/.xkb/types/mac_gui -setxkbmap -option -setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui -setxkbmap -print > ~/.xkb/keymap/kbd.mac.term -line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+ctrl(swap_lwin_lctl)+ctrl(swap_rwin_rctl)+mac_gui(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.mac.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_types' | cut -f1 -d:) -sed -ie "${line}s/\"/+mac_gui(addmac_levels)\"/2" ~/.xkb/keymap/kbd.mac.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.mac.term | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+altwin(alt_super_win)+mac_term(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.mac.term diff --git a/references/old-files/mac_wordwise.sh b/references/old-files/mac_wordwise.sh deleted file mode 100755 index 684a9d8..0000000 --- a/references/old-files/mac_wordwise.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -mkdir -p ~/.xkb/{keymap,symbols,types} -cp ./.xkb/symbols/mac_gui ~/.xkb/symbols/mac_gui -cp ./.xkb/types/mac_gui ~/.xkb/types/mac_gui -setxkbmap -option -setxkbmap -print > ~/.xkb/keymap/kbd.mac.gui -setxkbmap -print > ~/.xkb/keymap/kbd.mac.term -line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+altwin(ctrl_alt_win)+mac_gui(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.mac.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.mac.gui | grep -n 'xkb_types' | cut -f1 -d:) -sed -ie "${line}s/\"/+mac_gui(addmac_levels)\"/2" ~/.xkb/keymap/kbd.mac.gui -sleep 1 -line=$(cat ~/.xkb/keymap/kbd.mac.term | grep -n 'xkb_symbols' | cut -f1 -d:) -sed -ie "${line}s/\"/+altwin(swap_alt_win)+mac_term(mac_levelssym)\"/2" ~/.xkb/keymap/kbd.mac.term diff --git a/references/old-files/old_uninstall.sh b/references/old-files/old_uninstall.sh deleted file mode 100755 index 1b3eec0..0000000 --- a/references/old-files/old_uninstall.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -systemctl --user stop keyswap -systemctl --user disable keyswap -rm -rf ~/.config/autostart/keyswap.sh -rm -rf ~/.config/xactive.sh -rm -rf ~/.xkb - -sed -i '/xkb/d' ~/.Xsession \ No newline at end of file diff --git a/references/old-files/test.py b/references/old-files/test.py deleted file mode 100755 index b7a848c..0000000 --- a/references/old-files/test.py +++ /dev/null @@ -1,316 +0,0 @@ -# pip3 install pynput -# pip3 install --no-deps pynput - -from pynput.keyboard import Key, Listener -import sys, subprocess - -uitype=sys.argv[1] -apply_rules=sys.argv[2] -windows=sys.argv[3] -chromebook=sys.argv[4] -mac=sys.argv[5] - -class color: - PURPLE = '\033[95m' - CYAN = '\033[96m' - DARKCYAN = '\033[36m' - BLUE = '\033[94m' - GREEN = '\033[92m' - YELLOW = '\033[93m' - RED = '\033[91m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - END = '\033[0m' - -def on_press(key): - print('{0} pressed'.format(key)) - -def on_release(key): - # print('{0} release'.format(key)) - if key == Key.esc: - # Stop listener - return False - -def is_ctrl_winchrome(key): - if key == Key.ctrl: - # print(str(key).replace("Key.", "").title() +' successfully mapped to physical Alt key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Alt is now Ctrl') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Alt key.'.format(key)) - return False - -def is_ctrl_mac(key): - if key == Key.ctrl: - # print(str(key).replace("Key.", "").title() +' successfully mapped to physical Alt key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Command is now Ctrl') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Command key.'.format(key)) - return False - -def is_ctrl_terminal(key): - if key == Key.ctrl: - # print(str(key).replace("Key.", "").title() +' successfully mapped to physical Ctrl key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Ctrl remains Ctrl,\nwhile in terminal apps.') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Ctrl key.'.format(key)) - return False - -def is_alt_chromebook(key): - if key == Key.alt: - # print(str(key).replace("Key.", "").title() +' successfully mapped to the physical Ctrl key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Ctrl is now Alt') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Ctrl key.'.format(key)) - return False - -def is_alt_windows(key): - if key == Key.alt: - # print(str(key).replace("Key.", "").title() +' successfully mapped to the physical Ctrl key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Win/Super is now Alt') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Win/Super key.'.format(key)) - return False - -def is_alt_mac(key): - if key == Key.alt: - # print(str(key).replace("Key.", "").title() +' successfully mapped to the physical Ctrl key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Alt remains Alt') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Alt key.'.format(key)) - return False - -def is_alt_chromebook_terminal(key): - if key == Key.alt: - # print(str(key).replace("Key.", "").title() +' successfully mapped to the physical Search key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Search is now Alt,\nwhile in terminals apps.') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Search key.'.format(key)) - return False - -def is_super_winmac(key): - if key == Key.cmd: - # print('Super/Win successfully mapped to the physical Search key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Ctrl key is Super/Win') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Ctrl key.'.format(key)) - return False - -def is_super_chromebook(key): - if key == Key.cmd: - # print('Super/Win successfully mapped to the physical Search key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Search key is Super/Win') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Search key.'.format(key)) - return False - -def is_super_terminal(key): - if key == Key.cmd: - # print('Super/Win successfully mapped to the physical Alt key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Alt is now Super/Win,\nwhile in terminal apps.') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Alt key.'.format(key)) - return False - -def is_super_mac_terminal(key): - if key == Key.cmd: - # print('Super/Win successfully mapped to the physical Alt key.'.format(key)) - print(color.GREEN + 'Success' + color.END + ' Command is now Super/Win,\nwhile in terminal apps.') - return False - elif key == Key.esc: - return False - else: - print('keymap failure, ' + str(key).replace("Key.", "").title() + ' may have been mapped to the physical Command key.'.format(key)) - return False - -def chromebook_keys_gui(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm the new keymapping to Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_winchrome) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm the new keymapping to Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_chromebook) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Search" + color.END + " key to confirm the new keymapping to Super/Win..") - with Listener( - # on_press=on_press, - on_release=is_super_chromebook) as listener: - listener.join() - -def chromebook_keys_terminal(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm the new keymapping to Super/Win..") - with Listener( - # on_press=on_press, - on_release=is_super_terminal) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm the new keymapping to Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_terminal) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Search" + color.END + " key to confirm the new keymapping to Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_chromebook_terminal) as listener: - listener.join() - -def windows_keys_gui(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm the new keymapping to Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_winchrome) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Win/Super" + color.END + " key to confirm the new keymapping to Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_windows) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm the new keymapping to Win/Super..") - with Listener( - # on_press=on_press, - on_release=is_super_winmac) as listener: - listener.join() - -def windows_keys_terminal(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm the new keymapping to Super/Win..") - with Listener( - # on_press=on_press, - on_release=is_super_terminal) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Win/Super" + color.END + " key to confirm the new keymapping to Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_windows) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm the new keymapping to Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_terminal) as listener: - listener.join() - -def mac_keys_gui(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Command" + color.END + " key to confirm the new keymapping to Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_mac) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm it remains Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_mac) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm the new keymapping to Win/Super..") - with Listener( - # on_press=on_press, - on_release=is_super_winmac) as listener: - listener.join() - -def mac_keys_terminal(): - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Command" + color.END + " key to confirm the new keymapping to Super/Win..") - with Listener( - # on_press=on_press, - on_release=is_super_mac_terminal) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Alt" + color.END + " key to confirm it remains Alt..") - with Listener( - # on_press=on_press, - on_release=is_alt_mac) as listener: - listener.join() - print() - print(color.UNDERLINE + color.YELLOW + "Press the physical Ctrl" + color.END + " key to confirm it remains Ctrl..") - with Listener( - # on_press=on_press, - on_release=is_ctrl_terminal) as listener: - listener.join() - -if uitype == 'gui': - if chromebook == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.chromebook.gui $DISPLAY', shell=True).decode('utf-8') - print() - print("Testing chromebook - GUI apps - Kinto keymapping...") - chromebook_keys_gui() - - if windows == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY', shell=True).decode('utf-8') - print() - print ("Testing windows keyboard - GUI apps - Kinto keymapping...") - windows_keys_gui() - - if mac == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/kbd.mac.gui $DISPLAY', shell=True).decode('utf-8') - print ("Testing mac keyboard - GUI apps - Kinto keymapping...") - mac_keys_gui() - -if uitype == 'term': - if chromebook == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;setxkbmap -option altwin:swap_lalt_lwin', shell=True).decode('utf-8') - print("Testing chromebook - terminal - Kinto keymapping...") - chromebook_keys_terminal() - - if windows == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;setxkbmap -option altwin:swap_alt_win', shell=True).decode('utf-8') - print ("Testing windows keyboard - terminal - Kinto keymapping...") - windows_keys_terminal() - - if mac == '1': - if apply_rules == '1': - subprocess.check_output('setxkbmap -option;setxkbmap -option altwin:swap_alt_win', shell=True).decode('utf-8') - print ("Testing mac keyboard - terminal - Kinto keymapping...") - mac_keys_terminal() - -if apply_rules == '1': - subprocess.run('setxkbmap -option', shell=True) \ No newline at end of file diff --git a/references/shortcuts b/references/shortcuts deleted file mode 100644 index 698a9eb..0000000 --- a/references/shortcuts +++ /dev/null @@ -1,75 +0,0 @@ -# GalliumOS Notes - -xfconf-query -c xfce4-keyboard-shortcuts -lv | grep "show_desktop_key\|cycle_windows_key\|cycle_reverse_windows_key\|close_window_key\|maximize_window_key\|xfce4-popup-whiskermenu\|move_window_next_workspace_key\|move_window_prev_workspace_key\|hide" | grep -v "default\|m" - -# Show Desktop -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/d" --create --type string --set "show_desktop_key" - -# Undo show desktop -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/d" --reset - -# GUI Alt Tab - Window Switching -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --set "cycle_reverse_windows_key" -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --set "cycle_windows_key" - -# Term Alt Tab - Window Switching -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --set "cycle_windows_key" -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Tab" --set "cycle_reverse_windows_key" - -# Hide/minimize Window -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/h" --create --type string --set "hide_window_key" - -# Spotlight -xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/space" --create --type string --set "xfce4-popup-whiskermenu" - -# Change workspace to left -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Left" --create --type string --set "move_window_prev_workspace_key" - -# Change workspace to right -xfconf-query --channel xfce4-keyboard-shortcuts --property "/xfwm4/custom/Right" --create --type string --set "move_window_next_workspace_key" - -# PopOS - -# Close App Alt+F4 (Super+w) -gsettings set org.gnome.desktop.wm.keybindings close "['F4','w']" -# Undo -gsettings set org.gnome.desktop.wm.keybindings close "['w']" - -# Maximize Window -gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['F10','Up']" -# Undo -gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['Up']" - -# Ubuntu 19.10 -# Change Workspace -gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['Left','Left']" -gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['Right','Right']" - -# ElementaryOS -# Show Desktop -gsettings set org.gnome.desktop.wm.keybindings show-desktop "['d','Down']" -# Maximize Window -gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['F10','Up']" -# Spotlight -gsettings set org.gnome.desktop.wm.keybindings panel-main-menu "['Space','Space']" - -# Fedora 31 -# Show Desktop -gsettings set org.gnome.desktop.wm.keybindings show-desktop "['d']" -# Change Workspace -gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['Left','Left']" -gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['Right','Right']" - -# Manjaro/Arch KDE -# Maximize -kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \ ---key "Maximize Window" "Alt+F10,Meta+PgUp,Maximize Window" -# Minimize -kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \ ---key "Minimize Window" "Meta+h,Meta+PgDown,Minimize Window" -# Switch Desktops -kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \ ---key "Switch to Next Desktop" "Meta+Right,Meta+Right,Switch to Next Desktop" -kwriteconfig5 --file "$HOME/.config/kglobalshortcutsrc" --group "kwin" \ ---key "Switch to Previous Desktop" "Meta+Left,Meta+Left,Switch to Previous Desktop" -kquitapp5 kglobalaccel && sleep 2s && kglobalaccel5 & \ No newline at end of file diff --git a/references/symbol_names.txt b/references/symbol_names.txt deleted file mode 100644 index e07ff75..0000000 --- a/references/symbol_names.txt +++ /dev/null @@ -1,1411 +0,0 @@ -name[Group1]=English (US) -TLDE=grave,asciitilde -AE01=1,exclam -AE02=2,at -AE03=3,numbersign -AE04=4,dollar -AE05=5,percent -AE06=6,asciicircum -AE07=7,ampersand -AE08=8,asterisk -AE09=9,parenleft -AE10=0,parenright -AE11=minus,underscore -AE12=equal,plus -AD01=q,Q -AD02=w,W -AD03=e,E -AD04=r,R -AD05=t,T -AD06=y,Y -AD07=u,U -AD08=i,I -AD09=o,O -AD10=p,P -AD11=bracketleft,braceleft -AD12=bracketright,braceright -AC01=a,A -AC02=s,S -AC03=d,D -AC04=f,F -AC05=g,G -AC06=h,H -AC07=j,J -AC08=k,K -AC09=l,L -AC10=semicolon,colon -AC11=apostrophe,quotedbl -AB01=z,Z -AB02=x,X -AB03=c,C -AB04=v,V -AB05=b,B -AB06=n,N -AB07=m,M -AB08=comma,less -AB09=period,greater -AB10=slash,question -BKSL=backslash,bar - -hidden partial alphanumeric_keys -xkb_symbols=media_common -I01=XF86AudioMedia -I10=XF86AudioPrev -I19=XF86AudioNext -I20=XF86AudioMute -I22=XF86AudioPlay, XF86AudioPause -I24=XF86AudioStop, XF86Eject -I2E=XF86AudioLowerVolume -I30=XF86AudioRaiseVolume -K5A=XF86Eject -K6C=XF86Eject - -hidden partial alphanumeric_keys -xkb_symbols=nav_common -I21=XF86Calculator -I32=XF86WWW -I65=XF86Search -I66=XF86Favorites -I67=XF86Reload -I68=XF86Stop -I69=XF86Forward -I6A=XF86Back -I6B=XF86MyComputer -I6C=XF86Mail -I6D=XF86AudioMedia - -hidden partial alphanumeric_keys -xkb_symbols=acpi_common -I5E=XF86PowerOff -I5F=XF86Standby -I63=XF86WakeUp -I74=XF86Battery -I76=XF86WLAN -I16=XF86Sleep - -partial alphanumeric_keys -xkb_symbols=evdev -MUTE=XF86AudioMute -VOL-=XF86AudioLowerVolume -VOL+=XF86AudioRaiseVolume -POWR=XF86PowerOff -STOP=Cancel -AGAI=Redo -PROP=SunProps -UNDO=Undo -FRNT=SunFront -COPY=XF86Copy -OPEN=XF86Open -PAST=XF86Paste -FIND=Find -CUT=XF86Cut -HELP=Help -LNFD=Linefeed - - -HKTG=Hiragana_Katakana -HENK=Henkan -MUHE=Muhenkan -KATA=Katakana -HIRA=Hiragana -RO=Romaji - -HNGL=Hangul -HJCV=Hangul_Hanja -FK21=XF86TouchpadToggle -FK22=XF86TouchpadOn -FK23=XF86TouchpadOff -FK20=XF86AudioMicMute -I126=plusminus -I128=XF86LaunchA -I147=XF86MenuKB -I148=XF86Calculator -I150=XF86Sleep -I151=XF86WakeUp -I152=XF86Explorer -I153=XF86Send -I155=XF86Xfer -I156=XF86Launch1 -I157=XF86Launch2 -I158=XF86WWW -I159=XF86DOS -I160=XF86ScreenSaver -I161=XF86RotateWindows -I162=XF86TaskPane -I163=XF86Mail -I164=XF86Favorites -I165=XF86MyComputer -I166=XF86Back -I167=XF86Forward -I169=XF86Eject -I170=XF86Eject, XF86Eject -I171=XF86AudioNext -I172=XF86AudioPlay, XF86AudioPause -I173=XF86AudioPrev -I174=XF86AudioStop, XF86Eject -I175=XF86AudioRecord -I176=XF86AudioRewind -I177=XF86Phone -I179=XF86Tools -I180=XF86HomePage -I181=XF86Reload -I182=XF86Close -I185=XF86ScrollUp -I186=XF86ScrollDown -I187=parenleft -I188=parenright -I189=XF86New -I190=Redo -I192=XF86LaunchA -I193=XF86LaunchC -I194=XF86LaunchD -I195=XF86LaunchE -I196=XF86LaunchF -I208=XF86AudioPlay -I209=XF86AudioPause -I210=XF86Launch3 -I211=XF86Launch4 -I212=XF86LaunchB -I213=XF86Suspend -I214=XF86Close -I215=XF86AudioPlay -I216=XF86AudioForward -I218=Print -I220=XF86WebCam -I223=XF86Mail -I225=XF86Search -I227=XF86Finance -I229=XF86Shop -I231=Cancel -I232=XF86MonBrightnessDown -I233=XF86MonBrightnessUp -I234=XF86AudioMedia -I235=XF86Display -I239=XF86Send -I240=XF86Reply -I241=XF86MailForward -I242=XF86Save -I243=XF86Documents -I244=XF86Battery -I245=XF86Bluetooth -I246=XF86WLAN -FK13=XF86Tools -FK14=XF86Launch5 -FK15=XF86Launch6 -FK16=XF86Launch7 -FK17=XF86Launch8 -FK18=XF86Launch9 - - - -partial alphanumeric_keys -xkb_symbols=airkey -I13=XF86AudioNext -I15=XF86AudioPlay, XF86AudioPause -I16=XF86Mail -I18=XF86AudioPrev -I19=XF86AudioMute -I24=XF86WWW -I26=XF86AudioLowerVolume -I2D=XF86AudioRaiseVolume -I2F=XF86Terminal -I31=XF86AudioStop, XF86Eject - -partial alphanumeric_keys -xkb_symbols=acer_c300 -I17=F14 -I1F=F13 -I20=XF86AudioMute -I2E=XF86AudioLowerVolume -I30=XF86AudioRaiseVolume -I5E=XF86Launch2 -I75=Help -IR7C=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=acer_ferrari4k -I24=dollar -I25=EuroSign -I26=XF86Display -I70=Help -I71=XF86Launch1 -I72=XF86Launch2 -I73=XF86Launch3 -I74=XF86Launch4 - -partial alphanumeric_keys -xkb_symbols=acer_laptop - - - - - -partial alphanumeric_keys -xkb_symbols=azonaRF2300 -I02=XF86HomePage -I17=XF86AudioStop -I1E=XF86AudioRaiseVolume -I1F=XF86AudioPlay, XF86AudioPause -I22=XF86AudioNext -I24=XF86AudioPrev -I25=XF86AudioLowerVolume -I26=XF86AudioMute -I3C=XF86Copy -I78=XF86Cut - - - -partial alphanumeric_keys -xkb_symbols=brother -I10=XF86ScrollUp -I12=XF86AudioPlay, XF86AudioPause -I17=XF86AudioPrev -I18=XF86ScrollDown -I19=XF86ZoomOut -I1E=XF86AudioMute -I21=XF86WWW -I22=Menu -I23=XF86AudioStop -I24=XF86Calculator -I25=XF86Xfer -I26=XF86Mail -I2E=XF86AudioNext -I30=XF86AudioRaiseVolume -I32=XF86ZoomIn -I68=XF86AudioLowerVolume - - - -partial alphanumeric_keys -xkb_symbols=btc5113rf -I10=XF86AudioStop -I12=XF86AudioMute -I19=XF86AudioPlay, XF86AudioPause -I1E=XF86AudioRaiseVolume -I20=XF86Favorites -I21=XF86Eject -I22=XF86AudioPrev -I24=XF86AudioNext -I25=XF86AudioLowerVolume -I26=XF86Back -I30=XF86WWW -I32=XF86Search - -partial alphanumeric_keys -xkb_symbols=btc9000 -I10=XF86AudioStop -I12=XF86AudioMute -I19=XF86AudioPlay, XF86AudioPause -I1E=XF86AudioRaiseVolume -I20=XF86Favorites -I21=XF86AudioMedia -I22=XF86AudioPrev -I24=XF86AudioNext -I25=XF86AudioLowerVolume -I26=XF86Reload -I2E=XF86Mail -I30=XF86HomePage -I32=XF86Search - -partial alphanumeric_keys -xkb_symbols=btc9000a -I10=XF86AudioStop -I12=XF86AudioMute -I19=XF86AudioPlay, XF86AudioPause -I1E=XF86AudioRaiseVolume -I20=XF86Favorites -I21=XF86Eject -I22=XF86AudioPrev -I24=XF86AudioNext -I25=XF86AudioLowerVolume -I26=XF86HomePage -I2E=Help -I30=XF86WWW -I32=XF86Search - -xkb_symbols=btc9001ah -I02=XF86HomePage -I17=XF86AudioStop -I1E=XF86AudioRaiseVolume -I1F=XF86AudioPlay, XF86AudioPause -I22=XF86AudioNext -I24=XF86AudioPrev -I25=XF86AudioLowerVolume -I26=XF86AudioMute -I6C=XF86Mail -RWIN=XF86Eject - -partial alphanumeric_keys -xkb_symbols=btc5090 -I26=XF86Start -I33=XF86Eject - -partial alphanumeric_keys -xkb_symbols=btc9019u -FK17=XF86Search -I02=XF86HomePage - - - -partial alphanumeric_keys -xkb_symbols=cherryblue -FK16=XF86Reload -I02=XF86HomePage -I17=XF86AudioStop -I1E=XF86AudioRaiseVolume -I1F=XF86AudioPlay, XF86AudioPause -I22=XF86AudioNext -I24=XF86AudioPrev -I25=XF86AudioLowerVolume -I26=XF86AudioMute -I63=XF86Standby -PRSC=XF86Terminal -IR7C=XF86Go - -partial alphanumeric_keys -xkb_symbols=cherryblueb -FK16=XF86Reload -I02=XF86HomePage -I07=XF86Forward -I08=XF86Back -I0A=XF86Copy -I0B=XF86ScrollUp -I12=XF86ScrollDown -I17=XF86Cut -I18=XF86Paste -I1E=XF86AudioRaiseVolume -I25=XF86AudioLowerVolume -I26=XF86AudioMute -I2C=XF86Book -I32=XF86Finance -I63=XF86Standby -I67=XF86AudioRewind -I70=XF86Eject -I71=XF86Book -I72=XF86Book -PRSC=XF86Terminal -IR7C=XF86Go - -partial alphanumeric_keys -xkb_symbols=cherrybluea -I6D=XF86Go - -partial alphanumeric_keys -xkb_symbols=cherrycyboard -FK17=XF86Search -I02=XF86HomePage -K67=XF86Terminal -IR7C=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=cherrycmexpert -FK15=XF86Mail - - - -partial alphanumeric_keys -xkb_symbols=chicony -I12=XF86AudioMute -I17=XF86Mail -I19=XF86AudioLowerVolume -I1E=XF86Forward -I20=XF86AudioNext -I21=XF86AudioPlay, XF86AudioPause -I22=XF86AudioPrev -I23=XF86AudioRaiseVolume -I24=XF86AudioStop -I25=XF86Back -I26=XF86LaunchB -I2E=XF86LaunchC -I30=XF86LaunchA -I32=XF86WWW -I5F=XF86ContrastAdjust -I63=XF86BrightnessAdjust - -partial alphanumeric_keys -xkb_symbols=chicony0108 - -partial alphanumeric_keys -xkb_symbols=chicony0420 -I01=XF86AudioMedia -K67=XF86MyComputer - -partial alphanumeric_keys -xkb_symbols=chicony9885 -I12=XF86AudioMute -I17=XF86Mail -I19=XF86AudioLowerVolume -I1E=XF86Forward -I20=XF86AudioNext -I21=XF86AudioPlay, XF86AudioPause -I22=XF86AudioPrev -I23=XF86AudioRaiseVolume -I24=XF86AudioStop -I25=XF86Back -I26=XF86LaunchB -I2E=XF86LaunchC -I30=XF86LaunchA -I32=XF86WWW - - - -partial alphanumeric_keys -xkb_symbols=compaqeak8 -I13=XF86Community -I14=XF86Market -I15=XF86Meeting -I1A=XF86Search -I1B=XF86News -I1E=XF86Mail -I1F=XF86HomePage -I23=XF86WWW - -partial alphanumeric_keys -xkb_symbols=compaqik7 -I12=XF86LightBulb -I1E=XF86Mail -I21=XF86Search -I23=Help -I25=XF86VendorHome -I26=XF86HomePage -I32=XF86Shop - -partial alphanumeric_keys -xkb_symbols=compaqik13 -I1E=XF86Mail -I1F=XF86Go -I21=XF86Search -I23=XF86WWW -I32=XF86Shop - -partial alphanumeric_keys -xkb_symbols=compaqik18 -I12=XF86LightBulb -I18=XF86Eject -I1E=XF86Mail -I1F=XF86Go -I21=XF86Search -I23=XF86WWW -I25=XF86VendorHome -I26=XF86Community -I32=XF86Shop -I68=Print - -partial alphanumeric_keys -xkb_symbols=armada -I1A=XF86Search -I1E=XF86Mail -I1F=XF86HomePage -I23=XF86WWW -I6F=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=presario -I14=XF86Q -I18=XF86Launch2 -I1E=XF86Mail -I1F=XF86Launch1 -I23=XF86WWW -I32=XF86Shop -I75=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=ipaq -FK16=XF86Shop -I02=XF86Standby -I65=XF86Search -I66=XF86Travel -I69=XF86BackForward -I6A=XF86Q -I6C=XF86Mail - - - -partial alphanumeric_keys -xkb_symbols=dell -I12=XF86Mail -I1E=XF86Search -I26=XF86HomePage - -partial alphanumeric_keys -xkb_symbols=dellm65 -I04=XF86PowerOff -LWIN=Super_L - -partial alphanumeric_keys -xkb_symbols=inspiron -I02=XF86AudioStop -I04=XF86AudioNext -I21=XF86Eject -I56=XF86Display -IR7D=XF86AudioPrev -IR7C=XF86AudioPlay, XF86AudioPause - -partial alphanumeric_keys -xkb_symbols=dellusbmm -I02=XF86HomePage -K67=XF86MyComputer -IR7C=XF86AudioMedia - - - -partial alphanumeric_keys -xkb_symbols=diamond -I6D=XF86Go - - - -partial alphanumeric_keys -xkb_symbols=ennyah_dkb1008 -IR7C=XF86AudioMedia - - - -partial alphanumeric_keys -xkb_symbols=genius -I12=XF86AudioRaiseVolume -I17=XF86Calculator -I19=XF86AudioLowerVolume -I1E=XF86Forward -I21=XF86AudioNext -I23=XF86AudioPrev -I25=XF86Back -I26=XF86ScreenSaver -I2E=XF86Mail -I30=XF86Eject -I32=XF86WWW - -partial alphanumeric_keys -xkb_symbols=geniuscomfy2 -I23=Return - - - -partial alphanumeric_keys -xkb_symbols=gyration -FK16=XF86Reload -I02=XF86HomePage -I17=XF86AudioStop -I1E=XF86AudioRaiseVolume -I1F=XF86AudioPlay, XF86AudioPause -I22=XF86AudioNext -I24=XF86AudioPrev -I25=XF86AudioLowerVolume -I26=XF86AudioMute - - - -partial alphanumeric_keys -xkb_symbols=hpi6 -I02=XF86HomePage -I12=XF86Search -I14=XF86VendorHome -I15=XF86Community -I16=XF86AudioMedia -I18=XF86Eject -I1E=XF86Shop -I1F=XF86Launch1 -I26=Help -I27=XF86Finance -I39=Print -I75=Help - -partial alphanumeric_keys -xkb_symbols=hp250x -I12=XF86Tools -I17=XF86Search -I18=XF86Eject -I1E=XF86Mail -I20=XF86AudioMute -I21=XF86Launch5 -I22=XF86Launch3 -I23=XF86Launch2 -I24=XF86Launch4 -I25=XF86Standby -I26=Help -I2E=XF86AudioLowerVolume -I30=XF86AudioRaiseVolume -I32=XF86WWW - -partial alphanumeric_keys -xkb_symbols=hpxe3gc -I71=Help -I72=XF86Launch1 -I73=XF86WWW -I74=XF86Mail - -partial alphanumeric_keys -xkb_symbols=hpxe3gf -I73=Help -I74=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hpxt1000 -I71=XF86Launch3 -I72=Help -I73=XF86Launch2 -I74=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hpzt11xx -I71=XF86Launch3 -I72=Help -I73=XF86Launch2 -I74=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hpdv5 -I12=XF86ScreenSaver -I32=XF86WWW -I75=Help -K6D=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hpxe4xxx -I70=Help -I71=XF86Launch2 -I73=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hp500fa -I73=Help -I74=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=hp5xx -I73=Help -I74=XF86Launch1 - - - -partial alphanumeric_keys -xkb_symbols=honeywell_euroboard -I10=XF86Game -I12=XF86AudioPrev -I17=XF86Eject -I18=XF86Launch2 -I19=XF86AudioPlay, XF86AudioPause -I1E=XF86Launch1 -I20=XF86AudioMute -I22=XF86AudioNext -I23=XF86AudioStop -I24=XF86Mail -I25=XF86ScreenSaver -I26=XF86Calculator -I2E=XF86AudioLowerVolume -I30=XF86AudioRaiseVolume -I32=XF86WWW - - - -partial alphanumeric_keys -xkb_symbols=rapidaccess -I12=XF86AudioMute -I17=XF86Launch2 -I1E=XF86AudioLowerVolume -I20=XF86AudioRaiseVolume -I21=XF86AudioNext -I22=XF86AudioPause -I22=XF86AudioPlay, XF86AudioPause -I23=XF86AudioPrev -I24=XF86AudioStop -I25=XF86Standby -I26=Help -I2E=XF86Launch4 -I30=XF86Launch3 -I32=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=rapidaccess2 -I12=XF86AudioNext -I17=XF86Favorites -I1E=XF86AudioMute -I20=XF86AudioStop -I21=XF86AudioLowerVolume -I22=XF86AudioPlay, XF86AudioPause -I23=XF86AudioRaiseVolume -I24=XF86AudioPrev -I25=XF86HomePage -I26=XF86Shop -I2E=XF86Search -I30=XF86MyComputer -I32=XF86VendorHome - -partial alphanumeric_keys -xkb_symbols=thinkpad60 -I1F=XF86VendorHome - -partial alphanumeric_keys -xkb_symbols=ibm_spacesaver -NMLK=type="ONE_LEVEL", -symbols[Group1]= [ Num_Lock ] - - - - -hidden partial alphanumeric_keys -xkb_symbols=logitech_base -I02=XF86HomePage -I15=XF86Community -I16=XF86ScrollClick -I21=XF86VendorHome -I3B=XF86New -I3C=XF86Reply -I43=XF86MyComputer -I44=XF86Documents -I57=XF86Pictures -I58=XF86Music - -hidden partial alphanumeric_keys -xkb_symbols=logitech_set3 -I17=XF86AudioStop -I1E=XF86AudioRaiseVolume -I1F=XF86AudioPlay, XF86AudioPause -I22=XF86AudioNext -I24=XF86AudioPrev -I25=XF86AudioLowerVolume -I26=XF86AudioMute -I69=XF86Go -IR7C=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=logiaccess -FK13=XF86MailForward -FK14=XF86Send -I11=XF86Messenger -I12=XF86WebCam - -partial alphanumeric_keys -xkb_symbols=logicda - -partial alphanumeric_keys -xkb_symbols=logicink -I11=XF86Shop -I12=XF86VendorHome -I13=XF86Finance -I14=XF86Start - -partial alphanumeric_keys -xkb_symbols=logiex110 - -partial alphanumeric_keys -xkb_symbols=logiinkse -I11=XF86Messenger -I12=XF86WebCam -I13=XF86VendorHome -I14=XF86Shop - -partial alphanumeric_keys -xkb_symbols=logiinkseusb - -partial alphanumeric_keys -xkb_symbols=logiitc -I2F=XF86AudioRaiseVolume - -I30=XF86Launch1 - -partial alphanumeric_keys -xkb_symbols=logiik -I12=Find -I17=Print -I18=XF86Favorites -I19=XF86Reload -I1E=XF86Search -I20=XF86HotLinks -I22=XF86Forward -I23=XF86HomePage -I24=XF86Stop -I25=XF86OpenURL -I26=XF86AddFavorite -I32=XF86History -I7A=XF86WWW - -partial alphanumeric_keys -xkb_symbols=itouch -I1F=XF86AudioMute -I2B=XF86AudioLowerVolume -I2D=XF86AudioRaiseVolume - -partial alphanumeric_keys -xkb_symbols=logiultraxc -FK16=XF86AudioMute -FK17=XF86AudioLowerVolume -I2B=XF86AudioNext -I2D=XF86AudioPrev -I2C=XF86AudioPlay, XF86AudioPause -KPDC=XF86AudioRaiseVolume - -partial alphanumeric_keys -xkb_symbols=logidinovo -I02=XF86HomePage -I12=XF86Standby -I17=XF86Search -I21=XF86AudioRaiseVolume -K66=XF86AudioLowerVolume -KPDC=XF86AudioMute -IR7C=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=logidinovoedge -I02=XF86HomePage -I6C=XF86Mail -FK17=XF86Search -IR7C=XF86AudioMedia - -partial alphanumeric_keys -xkb_symbols=logitech_g15 -AE13=XF86Messenger -HKTG=XF86Launch7 -key