Название: Сканкоды Linux и Windows Отправлено: Dimas от Февраль 26, 2013, 10:19 Написал обработчик нажатия клавиш:
.h Код: void keyPressEvent(QKeyEvent *e); Код: void Dialog::keyPressEvent(QKeyEvent *e) В Windows при нажатии клавиш "a s d f g h" и т.д. получаю в окне debug: Цитировать "Key=a Scan=30" "Key=s Scan=31" "Key=d Scan=32" "Key=f Scan=33" "Key=g Scan=34" В Linux получаю в окне debug: Цитировать "Key=a Scan=38" "Key=s Scan=39" "Key=d Scan=40" "Key=f Scan=41" "Key=g Scan=42" "Key=h Scan=43" Как мне получить одинаковые сканкоды клавиш для кросс платформенной работы с клавиатурой в Windows и Linux? Название: Re: Сканкоды Linux и Windows Отправлено: GreatSnake от Февраль 26, 2013, 10:22 Код
Название: Re: Сканкоды Linux и Windows Отправлено: Dimas от Февраль 26, 2013, 10:29 Да, все работает. Спасибо
Код: qDebug() << QString("text=%1 nativeScanCode=%2 key=%3").arg(e->text()).arg(e->nativeScanCode()).arg(e->key()); windows Цитировать "text=a nativeScanCode=30 key=65" "text=s nativeScanCode=31 key=83" "text=d nativeScanCode=32 key=68" "text=f nativeScanCode=33 key=70" "text=g nativeScanCode=34 key=71" linux Цитировать "text=a nativeScanCode=38 key=65" "text=s nativeScanCode=39 key=83" "text=d nativeScanCode=40 key=68" "text=f nativeScanCode=41 key=70" "text=g nativeScanCode=42 key=71" Название: Re: Сканкоды Linux и Windows Отправлено: GreatSnake от Февраль 26, 2013, 10:37 Тоже не совпадают коды Странное утверждение.Ты уверен, что под linux всё пересобралось? Цитата: assistant These codes are independent of the underlying window system. Название: Re: Сканкоды Linux и Windows Отправлено: carrygun от Февраль 26, 2013, 10:37 Скан коды у windows и linux не совпадают.
Название: Re: Сканкоды Linux и Windows Отправлено: Dimas от Февраль 26, 2013, 10:38 Да, не пересобралось, сейчас все ок.
Название: Re: Сканкоды Linux и Windows Отправлено: Dimas от Февраль 26, 2013, 11:02 Только эти коды отличаются в зависимости от выбранной раскладки клавиатуры.
windows Цитировать "text=ф nativeScanCode=30 key=1060" "text=a nativeScanCode=30 key=65" linux Цитировать "text=ф nativeScanCode=38 key=1060" "text=a nativeScanCode=38 key=65" Как мне кроссплатформенно знать, что нажата допустим клавиша "S" в Linux и Windows? Название: Re: Сканкоды Linux и Windows Отправлено: carrygun от Февраль 26, 2013, 11:17 Код
Название: Re: Сканкоды Linux и Windows Отправлено: Dimas от Февраль 26, 2013, 11:23 Я имел ввиду клавиша на клавиатуре "S" ("Ы"), если будет включена русская раскладка клавиатуры, этот код не сработает. А, если будет еще другой неизвестный язык, я не смогу узнать, что нажата эта клавиша
Название: Re: Сканкоды Linux и Windows Отправлено: carrygun от Февраль 26, 2013, 11:31 Делать свой кеймаппер.
Название: Re: Сканкоды Linux и Windows Отправлено: IGreench от Март 14, 2013, 18:09 Разве не сработает? Я думал всегда, что наоборот - так и работает.
Хотя может с .net'ом путаю... |